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
This commit is contained in:
Conley Owens 2012-10-01 16:12:28 -07:00
parent 57365c98cc
commit c9129d90de
3 changed files with 22 additions and 18 deletions

18
main.py
View File

@ -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:

14
repo
View File

@ -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)

View File

@ -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()