Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(560)

Side by Side Diff: recipe_modules/bot_update/resources/bot_update.py

Issue 1663493005: bot_update: make location of git cache configurable (Closed) Base URL: https://chromium.googlesource.com/chromium/tools/depot_tools.git@master
Patch Set: roll recipes.cfg Created 4 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « recipe_modules/bot_update/example.expected/tryjob_v8.json ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 #!/usr/bin/env python 1 #!/usr/bin/env python
2 # Copyright 2014 The Chromium Authors. All rights reserved. 2 # Copyright 2014 The Chromium Authors. All rights reserved.
3 # Use of this source code is governed by a BSD-style license that can be 3 # Use of this source code is governed by a BSD-style license that can be
4 # found in the LICENSE file. 4 # found in the LICENSE file.
5 5
6 # TODO(hinoka): Use logging. 6 # TODO(hinoka): Use logging.
7 7
8 import cStringIO 8 import cStringIO
9 import codecs 9 import codecs
10 import collections 10 import collections
(...skipping 334 matching lines...) Expand 10 before | Expand all | Expand 10 after
345 345
346 346
347 # How many times to try before giving up. 347 # How many times to try before giving up.
348 ATTEMPTS = 5 348 ATTEMPTS = 5
349 349
350 # Find deps2git 350 # Find deps2git
351 DEPS2GIT_DIR_PATH = path.join(SCRIPTS_DIR, 'tools', 'deps2git') 351 DEPS2GIT_DIR_PATH = path.join(SCRIPTS_DIR, 'tools', 'deps2git')
352 DEPS2GIT_PATH = path.join(DEPS2GIT_DIR_PATH, 'deps2git.py') 352 DEPS2GIT_PATH = path.join(DEPS2GIT_DIR_PATH, 'deps2git.py')
353 S2G_INTERNAL_PATH = path.join(SCRIPTS_DIR, 'tools', 'deps2git_internal', 353 S2G_INTERNAL_PATH = path.join(SCRIPTS_DIR, 'tools', 'deps2git_internal',
354 'svn_to_git_internal.py') 354 'svn_to_git_internal.py')
355
356 # ../../cache_dir aka /b/build/slave/cache_dir
357 GIT_CACHE_PATH = path.join(DEPOT_TOOLS_DIR, 'git_cache.py') 355 GIT_CACHE_PATH = path.join(DEPOT_TOOLS_DIR, 'git_cache.py')
358 CACHE_DIR = path.join(SLAVE_DIR, 'cache_dir')
359 # Because we print CACHE_DIR out into a .gclient file, and then later run
360 # eval() on it, backslashes need to be escaped, otherwise "E:\b\build" gets
361 # parsed as "E:[\x08][\x08]uild".
362 if sys.platform.startswith('win'):
363 CACHE_DIR = CACHE_DIR.replace('\\', '\\\\')
364 356
365 # Find the patch tool. 357 # Find the patch tool.
366 if sys.platform.startswith('win'): 358 if sys.platform.startswith('win'):
367 if not BUILD_INTERNAL_DIR: 359 if not BUILD_INTERNAL_DIR:
368 print 'Warning: could not find patch tool because there is no ' 360 print 'Warning: could not find patch tool because there is no '
369 print 'build_internal present.' 361 print 'build_internal present.'
370 PATCH_TOOL = None 362 PATCH_TOOL = None
371 else: 363 else:
372 PATCH_TOOL = path.join(BUILD_INTERNAL_DIR, 'tools', 'patch.EXE') 364 PATCH_TOOL = path.join(BUILD_INTERNAL_DIR, 'tools', 'patch.EXE')
373 else: 365 else:
(...skipping 144 matching lines...) Expand 10 before | Expand all | Expand 10 after
518 else: 510 else:
519 git_executable = 'git' 511 git_executable = 'git'
520 # On windows, subprocess doesn't fuzzy-match 'git' to 'git.bat', so we 512 # On windows, subprocess doesn't fuzzy-match 'git' to 'git.bat', so we
521 # have to do it explicitly. This is better than passing shell=True. 513 # have to do it explicitly. This is better than passing shell=True.
522 if sys.platform.startswith('win'): 514 if sys.platform.startswith('win'):
523 git_executable += '.bat' 515 git_executable += '.bat'
524 cmd = (git_executable,) + args 516 cmd = (git_executable,) + args
525 return call(*cmd, **kwargs) 517 return call(*cmd, **kwargs)
526 518
527 519
528 def get_gclient_spec(solutions, target_os, target_os_only): 520 def get_gclient_spec(solutions, target_os, target_os_only, git_cache_dir):
529 return GCLIENT_TEMPLATE % { 521 return GCLIENT_TEMPLATE % {
530 'solutions': pprint.pformat(solutions, indent=4), 522 'solutions': pprint.pformat(solutions, indent=4),
531 'cache_dir': '"%s"' % CACHE_DIR, 523 'cache_dir': '"%s"' % git_cache_dir,
532 'target_os': ('\ntarget_os=%s' % target_os) if target_os else '', 524 'target_os': ('\ntarget_os=%s' % target_os) if target_os else '',
533 'target_os_only': '\ntarget_os_only=%s' % target_os_only 525 'target_os_only': '\ntarget_os_only=%s' % target_os_only
534 } 526 }
535 527
536 528
537 def check_enabled(master, builder, slave): 529 def check_enabled(master, builder, slave):
538 if master in ENABLED_MASTERS: 530 if master in ENABLED_MASTERS:
539 return True 531 return True
540 builder_list = ENABLED_BUILDERS.get(master) 532 builder_list = ENABLED_BUILDERS.get(master)
541 if builder_list and builder in builder_list: 533 if builder_list and builder in builder_list:
(...skipping 151 matching lines...) Expand 10 before | Expand all | Expand 10 after
693 if scm_dirname != '*': 685 if scm_dirname != '*':
694 prefix = '%s detected in checkout, ' % scm_dirname 686 prefix = '%s detected in checkout, ' % scm_dirname
695 687
696 for filename in os.listdir(build_dir): 688 for filename in os.listdir(build_dir):
697 deletion_target = path.join(build_dir, filename) 689 deletion_target = path.join(build_dir, filename)
698 print '%sdeleting %s...' % (prefix, deletion_target), 690 print '%sdeleting %s...' % (prefix, deletion_target),
699 remove(deletion_target) 691 remove(deletion_target)
700 print 'done' 692 print 'done'
701 693
702 694
703 def gclient_configure(solutions, target_os, target_os_only): 695 def gclient_configure(solutions, target_os, target_os_only, git_cache_dir):
704 """Should do the same thing as gclient --spec='...'.""" 696 """Should do the same thing as gclient --spec='...'."""
705 with codecs.open('.gclient', mode='w', encoding='utf-8') as f: 697 with codecs.open('.gclient', mode='w', encoding='utf-8') as f:
706 f.write(get_gclient_spec(solutions, target_os, target_os_only)) 698 f.write(get_gclient_spec(
699 solutions, target_os, target_os_only, git_cache_dir))
707 700
708 701
709 def gclient_sync(with_branch_heads, shallow): 702 def gclient_sync(with_branch_heads, shallow):
710 # We just need to allocate a filename. 703 # We just need to allocate a filename.
711 fd, gclient_output_file = tempfile.mkstemp(suffix='.json') 704 fd, gclient_output_file = tempfile.mkstemp(suffix='.json')
712 os.close(fd) 705 os.close(fd)
713 gclient_bin = 'gclient.bat' if sys.platform.startswith('win') else 'gclient' 706 gclient_bin = 'gclient.bat' if sys.platform.startswith('win') else 'gclient'
714 cmd = [gclient_bin, 'sync', '--verbose', '--reset', '--force', 707 cmd = [gclient_bin, 'sync', '--verbose', '--reset', '--force',
715 '--ignore_locks', '--output-json', gclient_output_file, 708 '--ignore_locks', '--output-json', gclient_output_file,
716 '--nohooks', '--noprehooks', '--delete_unversioned_trees'] 709 '--nohooks', '--noprehooks', '--delete_unversioned_trees']
(...skipping 118 matching lines...) Expand 10 before | Expand all | Expand 10 after
835 last_known_deps_git_ref = _last_commit_for_file(deps_git_file, repo_base) 828 last_known_deps_git_ref = _last_commit_for_file(deps_git_file, repo_base)
836 merge_base_ref = git('merge-base', last_known_deps_ref, 829 merge_base_ref = git('merge-base', last_known_deps_ref,
837 last_known_deps_git_ref, cwd=repo_base).strip() 830 last_known_deps_git_ref, cwd=repo_base).strip()
838 831
839 # If the merge base of the last DEPS and last .DEPS.git file is not 832 # If the merge base of the last DEPS and last .DEPS.git file is not
840 # equivilent to the hash of the last DEPS file, that means the DEPS file 833 # equivilent to the hash of the last DEPS file, that means the DEPS file
841 # was committed after the last .DEPS.git file. 834 # was committed after the last .DEPS.git file.
842 return last_known_deps_ref != merge_base_ref 835 return last_known_deps_ref != merge_base_ref
843 836
844 837
845 def ensure_deps2git(solution, shallow): 838 def ensure_deps2git(solution, shallow, git_cache_dir):
846 repo_base = path.join(os.getcwd(), solution['name']) 839 repo_base = path.join(os.getcwd(), solution['name'])
847 deps_file = path.join(repo_base, 'DEPS') 840 deps_file = path.join(repo_base, 'DEPS')
848 deps_git_file = path.join(repo_base, '.DEPS.git') 841 deps_git_file = path.join(repo_base, '.DEPS.git')
849 if (not git('ls-files', 'DEPS', cwd=repo_base).strip() or 842 if (not git('ls-files', 'DEPS', cwd=repo_base).strip() or
850 not git('ls-files', '.DEPS.git', cwd=repo_base).strip()): 843 not git('ls-files', '.DEPS.git', cwd=repo_base).strip()):
851 return 844 return
852 845
853 print 'Checking if %s is newer than %s' % (deps_file, deps_git_file) 846 print 'Checking if %s is newer than %s' % (deps_file, deps_git_file)
854 if not need_to_run_deps2git(repo_base, deps_file, deps_git_file): 847 if not need_to_run_deps2git(repo_base, deps_file, deps_git_file):
855 return 848 return
856 849
857 print '===DEPS file modified, need to run deps2git===' 850 print '===DEPS file modified, need to run deps2git==='
858 cmd = [sys.executable, DEPS2GIT_PATH, 851 cmd = [sys.executable, DEPS2GIT_PATH,
859 '--workspace', os.getcwd(), 852 '--workspace', os.getcwd(),
860 '--cache_dir', CACHE_DIR, 853 '--cache_dir', git_cache_dir,
861 '--deps', deps_file, 854 '--deps', deps_file,
862 '--out', deps_git_file] 855 '--out', deps_git_file]
863 if 'chrome-internal.googlesource' in solution['url']: 856 if 'chrome-internal.googlesource' in solution['url']:
864 cmd.extend(['--extra-rules', S2G_INTERNAL_PATH]) 857 cmd.extend(['--extra-rules', S2G_INTERNAL_PATH])
865 if shallow: 858 if shallow:
866 cmd.append('--shallow') 859 cmd.append('--shallow')
867 call(*cmd) 860 call(*cmd)
868 861
869 862
870 def emit_log_lines(name, lines): 863 def emit_log_lines(name, lines):
(...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after
925 # rev_num is really a svn revision number, convert it into a git hash. 918 # rev_num is really a svn revision number, convert it into a git hash.
926 git_ref = get_git_hash(int(revision), branch, folder_name) 919 git_ref = get_git_hash(int(revision), branch, folder_name)
927 else: 920 else:
928 # rev_num is actually a git hash or ref, we can just use it. 921 # rev_num is actually a git hash or ref, we can just use it.
929 git_ref = revision 922 git_ref = revision
930 git('checkout', '--force', git_ref, cwd=folder_name) 923 git('checkout', '--force', git_ref, cwd=folder_name)
931 else: 924 else:
932 ref = branch if branch.startswith('refs/') else 'origin/%s' % branch 925 ref = branch if branch.startswith('refs/') else 'origin/%s' % branch
933 git('checkout', '--force', ref, cwd=folder_name) 926 git('checkout', '--force', ref, cwd=folder_name)
934 927
935 def git_checkout(solutions, revisions, shallow, refs): 928 def git_checkout(solutions, revisions, shallow, refs, git_cache_dir):
936 build_dir = os.getcwd() 929 build_dir = os.getcwd()
937 # Before we do anything, break all git_cache locks. 930 # Before we do anything, break all git_cache locks.
938 if path.isdir(CACHE_DIR): 931 if path.isdir(git_cache_dir):
939 git('cache', 'unlock', '-vv', '--force', '--all', '--cache-dir', CACHE_DIR) 932 git('cache', 'unlock', '-vv', '--force', '--all',
940 for item in os.listdir(CACHE_DIR): 933 '--cache-dir', git_cache_dir)
941 filename = os.path.join(CACHE_DIR, item) 934 for item in os.listdir(git_cache_dir):
935 filename = os.path.join(git_cache_dir, item)
942 if item.endswith('.lock'): 936 if item.endswith('.lock'):
943 raise Exception('%s exists after cache unlock' % filename) 937 raise Exception('%s exists after cache unlock' % filename)
944 first_solution = True 938 first_solution = True
945 for sln in solutions: 939 for sln in solutions:
946 # This is so we can loop back and try again if we need to wait for the 940 # This is so we can loop back and try again if we need to wait for the
947 # git mirrors to update from SVN. 941 # git mirrors to update from SVN.
948 done = False 942 done = False
949 tries_left = 60 943 tries_left = 60
950 while not done: 944 while not done:
951 name = sln['name'] 945 name = sln['name']
952 url = sln['url'] 946 url = sln['url']
953 if url == CHROMIUM_SRC_URL or url + '.git' == CHROMIUM_SRC_URL: 947 if url == CHROMIUM_SRC_URL or url + '.git' == CHROMIUM_SRC_URL:
954 # Experiments show there's little to be gained from 948 # Experiments show there's little to be gained from
955 # a shallow clone of src. 949 # a shallow clone of src.
956 shallow = False 950 shallow = False
957 sln_dir = path.join(build_dir, name) 951 sln_dir = path.join(build_dir, name)
958 s = ['--shallow'] if shallow else [] 952 s = ['--shallow'] if shallow else []
959 populate_cmd = (['cache', 'populate', '--ignore_locks', '-v', 953 populate_cmd = (['cache', 'populate', '--ignore_locks', '-v',
960 '--cache-dir', CACHE_DIR] + s + [url]) 954 '--cache-dir', git_cache_dir] + s + [url])
961 for ref in refs: 955 for ref in refs:
962 populate_cmd.extend(['--ref', ref]) 956 populate_cmd.extend(['--ref', ref])
963 git(*populate_cmd) 957 git(*populate_cmd)
964 mirror_dir = git( 958 mirror_dir = git(
965 'cache', 'exists', '--quiet', '--cache-dir', CACHE_DIR, url).strip() 959 'cache', 'exists', '--quiet',
960 '--cache-dir', git_cache_dir, url).strip()
966 clone_cmd = ( 961 clone_cmd = (
967 'clone', '--no-checkout', '--local', '--shared', mirror_dir, sln_dir) 962 'clone', '--no-checkout', '--local', '--shared', mirror_dir, sln_dir)
968 963
969 try: 964 try:
970 if not path.isdir(sln_dir): 965 if not path.isdir(sln_dir):
971 git(*clone_cmd) 966 git(*clone_cmd)
972 else: 967 else:
973 git('remote', 'set-url', 'origin', mirror_dir, cwd=sln_dir) 968 git('remote', 'set-url', 'origin', mirror_dir, cwd=sln_dir)
974 git('fetch', 'origin', cwd=sln_dir) 969 git('fetch', 'origin', cwd=sln_dir)
975 for ref in refs: 970 for ref in refs:
(...skipping 317 matching lines...) Expand 10 before | Expand all | Expand 10 after
1293 continue 1288 continue
1294 # TODO(hinoka): Catch SVNRevisionNotFound error maybe? 1289 # TODO(hinoka): Catch SVNRevisionNotFound error maybe?
1295 git('fetch', 'origin', cwd=deps_name) 1290 git('fetch', 'origin', cwd=deps_name)
1296 force_revision(deps_name, revision) 1291 force_revision(deps_name, revision)
1297 1292
1298 1293
1299 def ensure_checkout(solutions, revisions, first_sln, target_os, target_os_only, 1294 def ensure_checkout(solutions, revisions, first_sln, target_os, target_os_only,
1300 patch_root, issue, patchset, patch_url, rietveld_server, 1295 patch_root, issue, patchset, patch_url, rietveld_server,
1301 gerrit_repo, gerrit_ref, revision_mapping, 1296 gerrit_repo, gerrit_ref, revision_mapping,
1302 apply_issue_email_file, apply_issue_key_file, buildspec, 1297 apply_issue_email_file, apply_issue_key_file, buildspec,
1303 gyp_env, shallow, runhooks, refs): 1298 gyp_env, shallow, runhooks, refs, git_cache_dir):
1304 # Get a checkout of each solution, without DEPS or hooks. 1299 # Get a checkout of each solution, without DEPS or hooks.
1305 # Calling git directly because there is no way to run Gclient without 1300 # Calling git directly because there is no way to run Gclient without
1306 # invoking DEPS. 1301 # invoking DEPS.
1307 print 'Fetching Git checkout' 1302 print 'Fetching Git checkout'
1308 1303
1309 git_ref = git_checkout(solutions, revisions, shallow, refs) 1304 git_ref = git_checkout(solutions, revisions, shallow, refs, git_cache_dir)
1310 1305
1311 patches = None 1306 patches = None
1312 if patch_url: 1307 if patch_url:
1313 patches = get_svn_patch(patch_url) 1308 patches = get_svn_patch(patch_url)
1314 1309
1315 already_patched = [] 1310 already_patched = []
1316 patch_root = patch_root or '' 1311 patch_root = patch_root or ''
1317 for solution in solutions: 1312 for solution in solutions:
1318 if (patch_root == solution['name'] or 1313 if (patch_root == solution['name'] or
1319 solution['name'].startswith(patch_root + '/')): 1314 solution['name'].startswith(patch_root + '/')):
1320 relative_root = solution['name'][len(patch_root) + 1:] 1315 relative_root = solution['name'][len(patch_root) + 1:]
1321 target = '/'.join([relative_root, 'DEPS']).lstrip('/') 1316 target = '/'.join([relative_root, 'DEPS']).lstrip('/')
1322 if patches: 1317 if patches:
1323 apply_svn_patch(patch_root, patches, whitelist=[target]) 1318 apply_svn_patch(patch_root, patches, whitelist=[target])
1324 already_patched.append(target) 1319 already_patched.append(target)
1325 elif issue: 1320 elif issue:
1326 apply_rietveld_issue(issue, patchset, patch_root, rietveld_server, 1321 apply_rietveld_issue(issue, patchset, patch_root, rietveld_server,
1327 revision_mapping, git_ref, apply_issue_email_file, 1322 revision_mapping, git_ref, apply_issue_email_file,
1328 apply_issue_key_file, whitelist=[target]) 1323 apply_issue_key_file, whitelist=[target])
1329 already_patched.append(target) 1324 already_patched.append(target)
1330 1325
1331 if not buildspec: 1326 if not buildspec:
1332 # Run deps2git if there is a DEPS change after the last .DEPS.git commit. 1327 # Run deps2git if there is a DEPS change after the last .DEPS.git commit.
1333 for solution in solutions: 1328 for solution in solutions:
1334 ensure_deps2git(solution, shallow) 1329 ensure_deps2git(solution, shallow, git_cache_dir)
1335 1330
1336 # Ensure our build/ directory is set up with the correct .gclient file. 1331 # Ensure our build/ directory is set up with the correct .gclient file.
1337 gclient_configure(solutions, target_os, target_os_only) 1332 gclient_configure(solutions, target_os, target_os_only, git_cache_dir)
1338 1333
1339 # Let gclient do the DEPS syncing. 1334 # Let gclient do the DEPS syncing.
1340 # The branch-head refspec is a special case because its possible Chrome 1335 # The branch-head refspec is a special case because its possible Chrome
1341 # src, which contains the branch-head refspecs, is DEPSed in. 1336 # src, which contains the branch-head refspecs, is DEPSed in.
1342 gclient_output = gclient_sync(buildspec or BRANCH_HEADS_REFSPEC in refs, 1337 gclient_output = gclient_sync(buildspec or BRANCH_HEADS_REFSPEC in refs,
1343 shallow) 1338 shallow)
1344 1339
1345 # Now that gclient_sync has finished, we should revert any .DEPS.git so that 1340 # Now that gclient_sync has finished, we should revert any .DEPS.git so that
1346 # presubmit doesn't complain about it being modified. 1341 # presubmit doesn't complain about it being modified.
1347 if (not buildspec and 1342 if (not buildspec and
(...skipping 16 matching lines...) Expand all
1364 elif issue: 1359 elif issue:
1365 apply_rietveld_issue(issue, patchset, patch_root, rietveld_server, 1360 apply_rietveld_issue(issue, patchset, patch_root, rietveld_server,
1366 revision_mapping, git_ref, apply_issue_email_file, 1361 revision_mapping, git_ref, apply_issue_email_file,
1367 apply_issue_key_file, blacklist=already_patched) 1362 apply_issue_key_file, blacklist=already_patched)
1368 elif gerrit_ref: 1363 elif gerrit_ref:
1369 apply_gerrit_ref(gerrit_repo, gerrit_ref, patch_root) 1364 apply_gerrit_ref(gerrit_repo, gerrit_ref, patch_root)
1370 1365
1371 # Reset the deps_file point in the solutions so that hooks get run properly. 1366 # Reset the deps_file point in the solutions so that hooks get run properly.
1372 for sln in solutions: 1367 for sln in solutions:
1373 sln['deps_file'] = sln.get('deps_file', 'DEPS').replace('.DEPS.git', 'DEPS') 1368 sln['deps_file'] = sln.get('deps_file', 'DEPS').replace('.DEPS.git', 'DEPS')
1374 gclient_configure(solutions, target_os, target_os_only) 1369 gclient_configure(solutions, target_os, target_os_only, git_cache_dir)
1375 1370
1376 return gclient_output 1371 return gclient_output
1377 1372
1378 1373
1379 def parse_revisions(revisions, root): 1374 def parse_revisions(revisions, root):
1380 """Turn a list of revision specs into a nice dictionary. 1375 """Turn a list of revision specs into a nice dictionary.
1381 1376
1382 We will always return a dict with {root: something}. By default if root 1377 We will always return a dict with {root: something}. By default if root
1383 is unspecified, or if revisions is [], then revision will be assigned 'HEAD' 1378 is unspecified, or if revisions is [], then revision will be assigned 'HEAD'
1384 """ 1379 """
(...skipping 102 matching lines...) Expand 10 before | Expand all | Expand 10 after
1487 help='Bypass disk detection and never shallow clone. ' 1482 help='Bypass disk detection and never shallow clone. '
1488 'Does not override the --shallow flag') 1483 'Does not override the --shallow flag')
1489 parse.add_option('--no_runhooks', action='store_true', 1484 parse.add_option('--no_runhooks', action='store_true',
1490 help='Do not run hooks on official builder.') 1485 help='Do not run hooks on official builder.')
1491 parse.add_option('--refs', action='append', 1486 parse.add_option('--refs', action='append',
1492 help='Also fetch this refspec for the main solution(s). ' 1487 help='Also fetch this refspec for the main solution(s). '
1493 'Eg. +refs/branch-heads/*') 1488 'Eg. +refs/branch-heads/*')
1494 parse.add_option('--with_branch_heads', action='store_true', 1489 parse.add_option('--with_branch_heads', action='store_true',
1495 help='Always pass --with_branch_heads to gclient. This ' 1490 help='Always pass --with_branch_heads to gclient. This '
1496 'does the same thing as --refs +refs/branch-heads/*') 1491 'does the same thing as --refs +refs/branch-heads/*')
1492 parse.add_option('--git-cache-dir', default=path.join(SLAVE_DIR, 'cache_dir'),
1493 help='Path to git cache directory.')
1497 1494
1498 1495
1499 options, args = parse.parse_args() 1496 options, args = parse.parse_args()
1500 1497
1501 if not options.refs: 1498 if not options.refs:
1502 options.refs = [] 1499 options.refs = []
1503 1500
1504 if options.with_branch_heads: 1501 if options.with_branch_heads:
1505 options.refs.append(BRANCH_HEADS_REFSPEC) 1502 options.refs.append(BRANCH_HEADS_REFSPEC)
1506 del options.with_branch_heads 1503 del options.with_branch_heads
1507 1504
1508 try: 1505 try:
1509 if options.revision_mapping_file: 1506 if options.revision_mapping_file:
1510 if options.revision_mapping: 1507 if options.revision_mapping:
1511 print ('WARNING: Ignoring --revision_mapping: --revision_mapping_file ' 1508 print ('WARNING: Ignoring --revision_mapping: --revision_mapping_file '
1512 'was set at the same time as --revision_mapping?') 1509 'was set at the same time as --revision_mapping?')
1513 with open(options.revision_mapping_file, 'r') as f: 1510 with open(options.revision_mapping_file, 'r') as f:
1514 options.revision_mapping = json.load(f) 1511 options.revision_mapping = json.load(f)
1515 elif options.revision_mapping: 1512 elif options.revision_mapping:
1516 options.revision_mapping = json.loads(options.revision_mapping) 1513 options.revision_mapping = json.loads(options.revision_mapping)
1517 except Exception as e: 1514 except Exception as e:
1518 print ( 1515 print (
1519 'WARNING: Caught execption while parsing revision_mapping*: %s' 1516 'WARNING: Caught execption while parsing revision_mapping*: %s'
1520 % (str(e),) 1517 % (str(e),)
1521 ) 1518 )
1522 1519
1520 # Because we print CACHE_DIR out into a .gclient file, and then later run
1521 # eval() on it, backslashes need to be escaped, otherwise "E:\b\build" gets
1522 # parsed as "E:[\x08][\x08]uild".
1523 if sys.platform.startswith('win'):
1524 options.git_cache_dir = options.git_cache_dir.replace('\\', '\\\\')
1525
1523 return options, args 1526 return options, args
1524 1527
1525 1528
1526 def prepare(options, git_slns, active): 1529 def prepare(options, git_slns, active):
1527 """Prepares the target folder before we checkout.""" 1530 """Prepares the target folder before we checkout."""
1528 dir_names = [sln.get('name') for sln in git_slns if 'name' in sln] 1531 dir_names = [sln.get('name') for sln in git_slns if 'name' in sln]
1529 # If we're active now, but the flag file doesn't exist (we weren't active 1532 # If we're active now, but the flag file doesn't exist (we weren't active
1530 # last run) or vice versa, blow away all checkouts. 1533 # last run) or vice versa, blow away all checkouts.
1531 if bool(active) != bool(check_flag(options.flag_file)): 1534 if bool(active) != bool(check_flag(options.flag_file)):
1532 ensure_no_checkout(dir_names, '*') 1535 ensure_no_checkout(dir_names, '*')
(...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after
1598 apply_issue_email_file=options.apply_issue_email_file, 1601 apply_issue_email_file=options.apply_issue_email_file,
1599 apply_issue_key_file=options.apply_issue_key_file, 1602 apply_issue_key_file=options.apply_issue_key_file,
1600 1603
1601 # For official builders. 1604 # For official builders.
1602 buildspec=buildspec, 1605 buildspec=buildspec,
1603 gyp_env=options.gyp_env, 1606 gyp_env=options.gyp_env,
1604 runhooks=not options.no_runhooks, 1607 runhooks=not options.no_runhooks,
1605 1608
1606 # Finally, extra configurations such as shallowness of the clone. 1609 # Finally, extra configurations such as shallowness of the clone.
1607 shallow=options.shallow, 1610 shallow=options.shallow,
1608 refs=options.refs) 1611 refs=options.refs,
1612 git_cache_dir=options.git_cache_dir)
1609 gclient_output = ensure_checkout(**checkout_parameters) 1613 gclient_output = ensure_checkout(**checkout_parameters)
1610 except GclientSyncFailed: 1614 except GclientSyncFailed:
1611 print 'We failed gclient sync, lets delete the checkout and retry.' 1615 print 'We failed gclient sync, lets delete the checkout and retry.'
1612 ensure_no_checkout(dir_names, '*') 1616 ensure_no_checkout(dir_names, '*')
1613 gclient_output = ensure_checkout(**checkout_parameters) 1617 gclient_output = ensure_checkout(**checkout_parameters)
1614 except PatchFailed as e: 1618 except PatchFailed as e:
1615 if options.output_json: 1619 if options.output_json:
1616 # Tell recipes information such as root, got_revision, etc. 1620 # Tell recipes information such as root, got_revision, etc.
1617 emit_json(options.output_json, 1621 emit_json(options.output_json,
1618 did_run=True, 1622 did_run=True,
(...skipping 125 matching lines...) Expand 10 before | Expand all | Expand 10 after
1744 except Exception: 1748 except Exception:
1745 # Unexpected failure. 1749 # Unexpected failure.
1746 emit_flag(options.flag_file) 1750 emit_flag(options.flag_file)
1747 raise 1751 raise
1748 else: 1752 else:
1749 emit_flag(options.flag_file) 1753 emit_flag(options.flag_file)
1750 1754
1751 1755
1752 if __name__ == '__main__': 1756 if __name__ == '__main__':
1753 sys.exit(main()) 1757 sys.exit(main())
OLDNEW
« no previous file with comments | « recipe_modules/bot_update/example.expected/tryjob_v8.json ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698