commit:     244a4021ce58268336fd7b120ab7b9eb09acb26e
Author:     Matthew Thode <mthode <AT> mthode <DOT> org>
AuthorDate: Mon Feb 25 20:14:20 2019 +0000
Commit:     Zac Medico <zmedico <AT> gentoo <DOT> org>
CommitDate: Sun Mar 31 19:29:04 2019 +0000
URL:        https://gitweb.gentoo.org/proj/portage.git/commit/?id=244a4021

repos.conf: add sync-openpgp-keyserver option (bug 680908)

Allowing users to define which keyservers they update from allows them
to work around buggy keyservers. It is also useful for local mirrors
and / or private keyservers.

Bug: https://bugs.gentoo.org/680908
Signed-off-by: Matthew Thode <mthode <AT> mthode.org>
Signed-off-by: Zac Medico <zmedico <AT> gentoo.org>

 lib/portage/repository/config.py | 6 ++++++
 lib/portage/sync/syncbase.py     | 6 +++---
 man/portage.5                    | 5 +++++
 3 files changed, 14 insertions(+), 3 deletions(-)

diff --git a/lib/portage/repository/config.py b/lib/portage/repository/config.py
index 482711c4b..67a6897f7 100644
--- a/lib/portage/repository/config.py
+++ b/lib/portage/repository/config.py
@@ -109,6 +109,7 @@ class RepoConfig(object):
                'sync_allow_hardlinks',
                'sync_depth',
                'sync_hooks_only_on_change',
+               'sync_openpgp_keyserver',
                'sync_openpgp_key_path',
                'sync_openpgp_key_refresh_retry_count',
                'sync_openpgp_key_refresh_retry_delay_exp_base',
@@ -224,6 +225,9 @@ class RepoConfig(object):
                self.sync_allow_hardlinks = repo_opts.get(
                        'sync-allow-hardlinks', 'true').lower() in ('true', 
'yes')
 
+               self.sync_openpgp_keyserver = repo_opts.get(
+                       'sync-openpgp-keyserver', '').strip().lower() or None
+
                self.sync_openpgp_key_path = repo_opts.get(
                        'sync-openpgp-key-path', None)
 
@@ -601,6 +605,7 @@ class RepoConfigLoader(object):
                                                        'sync_allow_hardlinks',
                                                        'sync_depth',
                                                        
'sync_hooks_only_on_change',
+                                                       
'sync_openpgp_keyserver',
                                                        'sync_openpgp_key_path',
                                                        
'sync_openpgp_key_refresh_retry_count',
                                                        
'sync_openpgp_key_refresh_retry_delay_exp_base',
@@ -1047,6 +1052,7 @@ class RepoConfigLoader(object):
                        "main_repo",
                        "priority",
                        "sync_depth",
+                       "sync_openpgp_keyserver",
                        "sync_openpgp_key_path",
                        "sync_openpgp_key_refresh_retry_count",
                        "sync_openpgp_key_refresh_retry_delay_exp_base",

diff --git a/lib/portage/sync/syncbase.py b/lib/portage/sync/syncbase.py
index 83b35c667..ae9ec938e 100644
--- a/lib/portage/sync/syncbase.py
+++ b/lib/portage/sync/syncbase.py
@@ -252,10 +252,10 @@ class SyncBase(object):
                @type openpgp_env: gemato.openpgp.OpenPGPEnvironment
                """
                out = portage.output.EOutput(quiet=('--quiet' in 
self.options['emerge_config'].opts))
-               out.ebegin('Refreshing keys from keyserver')
+               out.ebegin('Refreshing keys from keyserver 
{s}'.format(s=self.repo.sync_openpgp_keyserver))
                retry_decorator = self._key_refresh_retry_decorator()
                if retry_decorator is None:
-                       openpgp_env.refresh_keys()
+                       
openpgp_env.refresh_keys(keyserver=self.repo.sync_openpgp_keyserver)
                else:
                        def noisy_refresh_keys():
                                """
@@ -263,7 +263,7 @@ class SyncBase(object):
                                errors, display errors as soon as they occur.
                                """
                                try:
-                                       openpgp_env.refresh_keys()
+                                       
openpgp_env.refresh_keys(keyserver=self.repo.sync_openpgp_keyserver)
                                except Exception as e:
                                        writemsg_level("%s\n" % (e,),
                                                level=logging.ERROR, 
noiselevel=-1)

diff --git a/man/portage.5 b/man/portage.5
index 1a36e9b86..caf993672 100644
--- a/man/portage.5
+++ b/man/portage.5
@@ -1144,6 +1144,11 @@ Multiplier for the exponential delay.
 .B sync\-openpgp\-key\-refresh\-retry\-overall\-timeout = 1200
 Combined time limit for all refresh attempts, in units of seconds.
 .TP
+.B sync\-openpgp\-keyserver = \fIname\fR
+Pass \fIname\fR as the `gpg \-\-keyserver` argument. Refer to the
+\fBgpg\fR(1) man page for information about the `gpg \-\-keyserver`
+\fIname\fR format.
+.TP
 .B sync-rsync-vcs-ignore = true|false
 Ignore vcs directories that may be present in the repository. It is the
 user's responsibility to set sync-rsync-extra-opts to protect vcs

Reply via email to