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