From c9129d90deb7377324b5178a231657e3d8c74019 Mon Sep 17 00:00:00 2001 From: Conley Owens Date: Mon, 1 Oct 2012 16:12:28 -0700 Subject: [PATCH] Update PGP keys during _PostRepoUpgrade in `sync` Previously, if a key was added, a client wouldn't add the key during the sync step. This would cause issues if a new key were added and a subsequent release were signed by that key. Change-Id: I4fac317573cd9d0e8da62aa42e00faf08bfeb26c --- main.py | 18 +++++++++--------- repo | 14 +++++++------- subcmds/sync.py | 8 ++++++-- 3 files changed, 22 insertions(+), 18 deletions(-) diff --git a/main.py b/main.py index d993ee4e..ba40d56b 100755 --- a/main.py +++ b/main.py @@ -23,6 +23,7 @@ if __name__ == '__main__': del magic import getpass +import imp import netrc import optparse import os @@ -167,16 +168,15 @@ def _MyRepoPath(): def _MyWrapperPath(): return os.path.join(os.path.dirname(__file__), 'repo') +_wrapper_module = None +def WrapperModule(): + global _wrapper_module + if not _wrapper_module: + _wrapper_module = imp.load_source('wrapper', _MyWrapperPath()) + return _wrapper_module + def _CurrentWrapperVersion(): - VERSION = None - pat = re.compile(r'^VERSION *=') - fd = open(_MyWrapperPath()) - for line in fd: - if pat.match(line): - fd.close() - exec line - return VERSION - raise NameError, 'No VERSION in repo script' + return WrapperModule().VERSION def _CheckWrapperVersion(ver, repo_path): if not repo_path: diff --git a/repo b/repo index 7942851b..5f328a47 100755 --- a/repo +++ b/repo @@ -28,7 +28,7 @@ if __name__ == '__main__': del magic # increment this whenever we make important changes to this script -VERSION = (1, 17) +VERSION = (1, 18) # increment this if the MAINTAINER_KEYS block is modified KEYRING_VERSION = (1,0) @@ -80,7 +80,7 @@ TACbBS+Up3RpfYVfd63c1cDdlru13pQAn3NQy/SN858MkxN+zym86UBgOad2 GIT = 'git' # our git command MIN_GIT_VERSION = (1, 5, 4) # minimum supported git version repodir = '.repo' # name of repo's private directory -S_repo = 'repo' # special repo reposiory +S_repo = 'repo' # special repo repository S_manifests = 'manifests' # special manifest repository REPO_MAIN = S_repo + '/main.py' # main script @@ -130,7 +130,7 @@ group.add_option('-g', '--groups', metavar='GROUP') group.add_option('-p', '--platform', dest='platform', default="auto", - help='restrict manifest projects to ones with a specified' + help='restrict manifest projects to ones with a specified ' 'platform group [auto|all|none|linux|darwin|...]', metavar='PLATFORM') @@ -196,8 +196,8 @@ def _Init(args): _CheckGitVersion() try: - if _NeedSetupGnuPG(): - can_verify = _SetupGnuPG(opt.quiet) + if NeedSetupGnuPG(): + can_verify = SetupGnuPG(opt.quiet) else: can_verify = True @@ -246,7 +246,7 @@ def _CheckGitVersion(): raise CloneFailure() -def _NeedSetupGnuPG(): +def NeedSetupGnuPG(): if not os.path.isdir(home_dot_repo): return True @@ -264,7 +264,7 @@ def _NeedSetupGnuPG(): return False -def _SetupGnuPG(quiet): +def SetupGnuPG(quiet): if not os.path.isdir(home_dot_repo): try: os.mkdir(home_dot_repo) diff --git a/subcmds/sync.py b/subcmds/sync.py index a4ca344a..a7df7c89 100644 --- a/subcmds/sync.py +++ b/subcmds/sync.py @@ -46,6 +46,7 @@ except ImportError: from git_command import GIT from git_refs import R_HEADS, HEAD +from main import WrapperModule from project import Project from project import RemoteSpec from command import Command, MirrorSafeCommand @@ -537,7 +538,7 @@ uncommitted changes are present' % project.relpath mp.PreSync() if opt.repo_upgraded: - _PostRepoUpgrade(self.manifest) + _PostRepoUpgrade(self.manifest, opt) if not opt.local_only: mp.Sync_NetworkHalf(quiet=opt.quiet, @@ -611,7 +612,10 @@ uncommitted changes are present' % project.relpath if self.manifest.notice: print self.manifest.notice -def _PostRepoUpgrade(manifest): +def _PostRepoUpgrade(manifest, opt): + wrapper = WrapperModule() + if wrapper.NeedSetupGnuPG(): + wrapper.SetupGnuPG(opt.quiet) for project in manifest.projects.values(): if project.Exists: project.PostRepoUpgrade()