summaryrefslogtreecommitdiffstats
path: root/subcmds/sync.py
diff options
context:
space:
mode:
Diffstat (limited to 'subcmds/sync.py')
-rw-r--r--subcmds/sync.py47
1 files changed, 37 insertions, 10 deletions
diff --git a/subcmds/sync.py b/subcmds/sync.py
index 6c903ff4..8fb94885 100644
--- a/subcmds/sync.py
+++ b/subcmds/sync.py
@@ -24,8 +24,24 @@ import socket
24import subprocess 24import subprocess
25import sys 25import sys
26import time 26import time
27import urlparse 27try:
28import xmlrpclib 28 # For python3
29 import urllib.parse
30except ImportError:
31 # For python2
32 import imp
33 import urlparse
34 urllib = imp.new_module('urllib')
35 urllib.parse = urlparse
36try:
37 # For python3
38 import xmlrpc.client
39except ImportError:
40 # For python2
41 import imp
42 import xmlrpclib
43 xmlrpc = imp.new_module('xmlrpc')
44 xmlrpc.client = xmlrpclib
29 45
30try: 46try:
31 import threading as _threading 47 import threading as _threading
@@ -228,6 +244,9 @@ later is required to fix a server side protocol bug.
228 # We'll set to true once we've locked the lock. 244 # We'll set to true once we've locked the lock.
229 did_lock = False 245 did_lock = False
230 246
247 if not opt.quiet:
248 print('Fetching project %s' % project.name)
249
231 # Encapsulate everything in a try/except/finally so that: 250 # Encapsulate everything in a try/except/finally so that:
232 # - We always set err_event in the case of an exception. 251 # - We always set err_event in the case of an exception.
233 # - We always make sure we call sem.release(). 252 # - We always make sure we call sem.release().
@@ -274,6 +293,8 @@ later is required to fix a server side protocol bug.
274 if self.jobs == 1: 293 if self.jobs == 1:
275 for project in projects: 294 for project in projects:
276 pm.update() 295 pm.update()
296 if not opt.quiet:
297 print('Fetching project %s' % project.name)
277 if project.Sync_NetworkHalf( 298 if project.Sync_NetworkHalf(
278 quiet=opt.quiet, 299 quiet=opt.quiet,
279 current_branch_only=opt.current_branch_only, 300 current_branch_only=opt.current_branch_only,
@@ -372,6 +393,13 @@ later is required to fix a server side protocol bug.
372 print('\nerror: Exited sync due to gc errors', file=sys.stderr) 393 print('\nerror: Exited sync due to gc errors', file=sys.stderr)
373 sys.exit(1) 394 sys.exit(1)
374 395
396 def _ReloadManifest(self, manifest_name=None):
397 if manifest_name:
398 # Override calls _Unload already
399 self.manifest.Override(manifest_name)
400 else:
401 self.manifest._Unload()
402
375 def UpdateProjectList(self): 403 def UpdateProjectList(self):
376 new_project_paths = [] 404 new_project_paths = []
377 for project in self.GetProjects(None, missing_ok=True): 405 for project in self.GetProjects(None, missing_ok=True):
@@ -486,7 +514,7 @@ later is required to fix a server side protocol bug.
486 file=sys.stderr) 514 file=sys.stderr)
487 else: 515 else:
488 try: 516 try:
489 parse_result = urlparse.urlparse(manifest_server) 517 parse_result = urllib.parse(manifest_server)
490 if parse_result.hostname: 518 if parse_result.hostname:
491 username, _account, password = \ 519 username, _account, password = \
492 info.authenticators(parse_result.hostname) 520 info.authenticators(parse_result.hostname)
@@ -504,7 +532,7 @@ later is required to fix a server side protocol bug.
504 1) 532 1)
505 533
506 try: 534 try:
507 server = xmlrpclib.Server(manifest_server) 535 server = xmlrpc.client.Server(manifest_server)
508 if opt.smart_sync: 536 if opt.smart_sync:
509 p = self.manifest.manifestProject 537 p = self.manifest.manifestProject
510 b = p.GetBranch(p.CurrentBranch) 538 b = p.GetBranch(p.CurrentBranch)
@@ -513,8 +541,7 @@ later is required to fix a server side protocol bug.
513 branch = branch[len(R_HEADS):] 541 branch = branch[len(R_HEADS):]
514 542
515 env = os.environ.copy() 543 env = os.environ.copy()
516 if (env.has_key('TARGET_PRODUCT') and 544 if 'TARGET_PRODUCT' in env and 'TARGET_BUILD_VARIANT' in env:
517 env.has_key('TARGET_BUILD_VARIANT')):
518 target = '%s-%s' % (env['TARGET_PRODUCT'], 545 target = '%s-%s' % (env['TARGET_PRODUCT'],
519 env['TARGET_BUILD_VARIANT']) 546 env['TARGET_BUILD_VARIANT'])
520 [success, manifest_str] = server.GetApprovedManifest(branch, target) 547 [success, manifest_str] = server.GetApprovedManifest(branch, target)
@@ -542,11 +569,11 @@ later is required to fix a server side protocol bug.
542 else: 569 else:
543 print('error: %s' % manifest_str, file=sys.stderr) 570 print('error: %s' % manifest_str, file=sys.stderr)
544 sys.exit(1) 571 sys.exit(1)
545 except (socket.error, IOError, xmlrpclib.Fault) as e: 572 except (socket.error, IOError, xmlrpc.client.Fault) as e:
546 print('error: cannot connect to manifest server %s:\n%s' 573 print('error: cannot connect to manifest server %s:\n%s'
547 % (self.manifest.manifest_server, e), file=sys.stderr) 574 % (self.manifest.manifest_server, e), file=sys.stderr)
548 sys.exit(1) 575 sys.exit(1)
549 except xmlrpclib.ProtocolError as e: 576 except xmlrpc.client.ProtocolError as e:
550 print('error: cannot connect to manifest server %s:\n%d %s' 577 print('error: cannot connect to manifest server %s:\n%d %s'
551 % (self.manifest.manifest_server, e.errcode, e.errmsg), 578 % (self.manifest.manifest_server, e.errcode, e.errmsg),
552 file=sys.stderr) 579 file=sys.stderr)
@@ -571,7 +598,7 @@ later is required to fix a server side protocol bug.
571 mp.Sync_LocalHalf(syncbuf) 598 mp.Sync_LocalHalf(syncbuf)
572 if not syncbuf.Finish(): 599 if not syncbuf.Finish():
573 sys.exit(1) 600 sys.exit(1)
574 self.manifest._Unload() 601 self._ReloadManifest(opt.manifest_name)
575 if opt.jobs is None: 602 if opt.jobs is None:
576 self.jobs = self.manifest.default.sync_j 603 self.jobs = self.manifest.default.sync_j
577 all_projects = self.GetProjects(args, 604 all_projects = self.GetProjects(args,
@@ -596,7 +623,7 @@ later is required to fix a server side protocol bug.
596 # Iteratively fetch missing and/or nested unregistered submodules 623 # Iteratively fetch missing and/or nested unregistered submodules
597 previously_missing_set = set() 624 previously_missing_set = set()
598 while True: 625 while True:
599 self.manifest._Unload() 626 self._ReloadManifest(opt.manifest_name)
600 all_projects = self.GetProjects(args, 627 all_projects = self.GetProjects(args,
601 missing_ok=True, 628 missing_ok=True,
602 submodules_ok=opt.fetch_submodules) 629 submodules_ok=opt.fetch_submodules)