commit: ddbe8bd019552573b3f9c1ef2e5701df2edb4dd6 Author: Frédéric Pierret (fepitre) <frederic.pierret <AT> qubes-os <DOT> org> AuthorDate: Tue Aug 18 15:00:16 2020 +0000 Commit: Zac Medico <zmedico <AT> gentoo <DOT> org> CommitDate: Mon Sep 7 23:31:06 2020 +0000 URL: https://gitweb.gentoo.org/proj/portage.git/commit/?id=ddbe8bd0
syncbase: update with newer Gemato proxy parameter in openpgp env - Handle global proxy setting which is overrided by the one provided in Portage configuration (if exists). Bug: https://bugs.gentoo.org/740904 Closes: https://github.com/gentoo/portage/pull/607 See: https://github.com/mgorny/gemato/commit/9980de271de4f8f5e993e2b634d0e8d7753e382f Signed-off-by: Frédéric Pierret (fepitre) <frederic.pierret <AT> qubes-os.org> Signed-off-by: Zac Medico <zmedico <AT> gentoo.org> lib/portage/sync/modules/git/git.py | 14 ++++++-------- lib/portage/sync/modules/rsync/rsync.py | 7 ++----- lib/portage/sync/modules/webrsync/webrsync.py | 4 ++-- lib/portage/sync/syncbase.py | 21 +++++++++++++++++++++ 4 files changed, 31 insertions(+), 15 deletions(-) diff --git a/lib/portage/sync/modules/git/git.py b/lib/portage/sync/modules/git/git.py index d87f1a601..8065fff33 100644 --- a/lib/portage/sync/modules/git/git.py +++ b/lib/portage/sync/modules/git/git.py @@ -207,19 +207,17 @@ class GitSync(NewBase): 'sync-git-verify-commit-signature', 'false').lower() not in ('true', 'yes')): return True - if self.repo.sync_openpgp_key_path is not None: - if gemato is None: - writemsg_level("!!! Verifying against specified key requires gemato-11.0+ installed\n", + if self.repo.sync_openpgp_key_path is not None and gemato is None: + writemsg_level("!!! Verifying against specified key requires gemato-14.5+ installed\n", level=logging.ERROR, noiselevel=-1) - return False - openpgp_env = gemato.openpgp.OpenPGPEnvironment() - else: - openpgp_env = None + return False + + openpgp_env = self._get_openpgp_env(self.repo.sync_openpgp_key_path) try: out = EOutput() env = None - if openpgp_env is not None: + if openpgp_env is not None and self.repo.sync_openpgp_key_path is not None: try: out.einfo('Using keys from %s' % (self.repo.sync_openpgp_key_path,)) with io.open(self.repo.sync_openpgp_key_path, 'rb') as f: diff --git a/lib/portage/sync/modules/rsync/rsync.py b/lib/portage/sync/modules/rsync/rsync.py index 35d1461e4..54e285d88 100644 --- a/lib/portage/sync/modules/rsync/rsync.py +++ b/lib/portage/sync/modules/rsync/rsync.py @@ -133,10 +133,7 @@ class RsyncSync(NewBase): if self.verify_metamanifest and gemato is not None: # Use isolated environment if key is specified, # system environment otherwise - if self.repo.sync_openpgp_key_path is not None: - openpgp_env = gemato.openpgp.OpenPGPEnvironment() - else: - openpgp_env = gemato.openpgp.OpenPGPSystemEnvironment() + openpgp_env = self._get_openpgp_env(self.repo.sync_openpgp_key_path) try: # Load and update the keyring early. If it fails, then verification @@ -361,7 +358,7 @@ class RsyncSync(NewBase): # if synced successfully, verify now if exitcode == 0 and self.verify_metamanifest: if gemato is None: - writemsg_level("!!! Unable to verify: gemato-11.0+ is required\n", + writemsg_level("!!! Unable to verify: gemato-14.5+ is required\n", level=logging.ERROR, noiselevel=-1) exitcode = 127 else: diff --git a/lib/portage/sync/modules/webrsync/webrsync.py b/lib/portage/sync/modules/webrsync/webrsync.py index 20cc25a2c..cc0dbc4a9 100644 --- a/lib/portage/sync/modules/webrsync/webrsync.py +++ b/lib/portage/sync/modules/webrsync/webrsync.py @@ -75,11 +75,11 @@ class WebRsync(SyncBase): return (1, False) if gemato is None: - writemsg_level("!!! Verifying against specified key requires gemato-11.0+ installed\n", + writemsg_level("!!! Verifying against specified key requires gemato-14.5+ installed\n", level=logging.ERROR, noiselevel=-1) return (1, False) - openpgp_env = gemato.openpgp.OpenPGPEnvironment() + openpgp_env = self._get_openpgp_env(self.repo.sync_openpgp_key_path) out = portage.output.EOutput(quiet=quiet) try: diff --git a/lib/portage/sync/syncbase.py b/lib/portage/sync/syncbase.py index 8e83b94fb..6493741c2 100644 --- a/lib/portage/sync/syncbase.py +++ b/lib/portage/sync/syncbase.py @@ -20,6 +20,12 @@ from portage.util.futures.retry import retry from portage.util.futures.executor.fork import ForkExecutor from . import _SUBMODULE_PATH_MAP +try: + import gemato.openpgp +except ImportError: + gemato = None + + class SyncBase: '''Base Sync class for subclassing''' @@ -294,6 +300,21 @@ class SyncBase: loop.run_until_complete(decorated_func()) out.eend(0) + def _get_openpgp_env(self, openpgp_key_path=None): + if gemato is not None: + # Override global proxy setting with one provided in emerge configuration + if 'http_proxy' in self.spawn_kwargs['env']: + proxy = self.spawn_kwargs['env']['http_proxy'] + else: + proxy = None + + if openpgp_key_path: + openpgp_env = gemato.openpgp.OpenPGPEnvironment(proxy=proxy) + else: + openpgp_env = gemato.openpgp.OpenPGPSystemEnvironment(proxy=proxy) + + return openpgp_env + class NewBase(SyncBase): '''Subclasses Syncbase adding a new() and runs it