diff options
Diffstat (limited to 'subcmds/sync.py')
-rw-r--r-- | subcmds/sync.py | 47 |
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 | |||
24 | import subprocess | 24 | import subprocess |
25 | import sys | 25 | import sys |
26 | import time | 26 | import time |
27 | import urlparse | 27 | try: |
28 | import xmlrpclib | 28 | # For python3 |
29 | import urllib.parse | ||
30 | except ImportError: | ||
31 | # For python2 | ||
32 | import imp | ||
33 | import urlparse | ||
34 | urllib = imp.new_module('urllib') | ||
35 | urllib.parse = urlparse | ||
36 | try: | ||
37 | # For python3 | ||
38 | import xmlrpc.client | ||
39 | except ImportError: | ||
40 | # For python2 | ||
41 | import imp | ||
42 | import xmlrpclib | ||
43 | xmlrpc = imp.new_module('xmlrpc') | ||
44 | xmlrpc.client = xmlrpclib | ||
29 | 45 | ||
30 | try: | 46 | try: |
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) |