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

Side by Side Diff: scripts/slave/bot_update.py

Issue 275303003: Reland: Use real revision mapping in bot_update module (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/tools/build
Patch Set: Fix nits, copy GOT_REVISION_MAPPING sub-dict to avoid modifying the global one. Created 6 years, 7 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 | Annotate | Revision Log
« no previous file with comments | « no previous file | scripts/slave/recipe_modules/android/example.expected/basic.json » ('j') | 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 codecs 8 import codecs
9 import copy 9 import copy
10 import cStringIO 10 import cStringIO
(...skipping 520 matching lines...) Expand 10 before | Expand all | Expand 10 after
531 match = "^git-svn-id: [^ ]*@%s " % revision 531 match = "^git-svn-id: [^ ]*@%s " % revision
532 cmd = ['log', '-E', '--grep', match, '--format=%H', '--max-count=1', 532 cmd = ['log', '-E', '--grep', match, '--format=%H', '--max-count=1',
533 'origin/master'] 533 'origin/master']
534 result = git(*cmd, cwd=sln_dir).strip() 534 result = git(*cmd, cwd=sln_dir).strip()
535 if result: 535 if result:
536 return result 536 return result
537 raise SVNRevisionNotFound('We can\'t resolve svn r%s into a git hash in %s' % 537 raise SVNRevisionNotFound('We can\'t resolve svn r%s into a git hash in %s' %
538 (revision, sln_dir)) 538 (revision, sln_dir))
539 539
540 540
541 def get_revision_mapping(root, addl_rev_map):
542 result = {}
543 if root in GOT_REVISION_MAPPINGS:
544 result.update(GOT_REVISION_MAPPINGS[root])
545 if addl_rev_map:
546 result.update(json.loads(addl_rev_map))
547 return result
548
549
550 def _last_commit_for_file(filename, repo_base): 541 def _last_commit_for_file(filename, repo_base):
551 cmd = ['log', '--format=%H', '--max-count=1', '--', filename] 542 cmd = ['log', '--format=%H', '--max-count=1', '--', filename]
552 return git(*cmd, cwd=repo_base).strip() 543 return git(*cmd, cwd=repo_base).strip()
553 544
554 545
555 def need_to_run_deps2git(repo_base, deps_file, deps_git_file): 546 def need_to_run_deps2git(repo_base, deps_file, deps_git_file):
556 """Checks to see if we need to run deps2git. 547 """Checks to see if we need to run deps2git.
557 548
558 Returns True if there was a DEPS change after the last .DEPS.git update 549 Returns True if there was a DEPS change after the last .DEPS.git update
559 or if DEPS has local modifications. 550 or if DEPS has local modifications.
(...skipping 298 matching lines...) Expand 10 before | Expand all | Expand 10 after
858 patch = ''.join(diffs) 849 patch = ''.join(diffs)
859 850
860 if patch: 851 if patch:
861 print '===Patching files===' 852 print '===Patching files==='
862 for filename, _ in patches: 853 for filename, _ in patches:
863 print 'Patching %s' % filename 854 print 'Patching %s' % filename
864 call(PATCH_TOOL, '-p0', '--remove-empty-files', '--force', '--forward', 855 call(PATCH_TOOL, '-p0', '--remove-empty-files', '--force', '--forward',
865 stdin_data=patch, cwd=patch_root, tries=1) 856 stdin_data=patch, cwd=patch_root, tries=1)
866 857
867 858
868 def apply_rietveld_issue(issue, patchset, root, server, rev_map, revision, 859 def apply_rietveld_issue(issue, patchset, root, server, _rev_map, _revision,
869 whitelist=None, blacklist=None): 860 whitelist=None, blacklist=None):
870 apply_issue_bin = ('apply_issue.bat' if sys.platform.startswith('win') 861 apply_issue_bin = ('apply_issue.bat' if sys.platform.startswith('win')
871 else 'apply_issue') 862 else 'apply_issue')
872 cmd = [apply_issue_bin, 863 cmd = [apply_issue_bin,
873 # The patch will be applied on top of this directory. 864 # The patch will be applied on top of this directory.
874 '--root_dir', root, 865 '--root_dir', root,
875 # Tell apply_issue how to fetch the patch. 866 # Tell apply_issue how to fetch the patch.
876 '--issue', issue, 867 '--issue', issue,
877 '--patchset', patchset, 868 '--patchset', patchset,
878 '--no-auth', 869 '--no-auth',
(...skipping 244 matching lines...) Expand 10 before | Expand all | Expand 10 after
1123 parse.add_option('--patch_url', help='Optional URL to SVN patch.') 1114 parse.add_option('--patch_url', help='Optional URL to SVN patch.')
1124 parse.add_option('--root', help='Repository root.') 1115 parse.add_option('--root', help='Repository root.')
1125 parse.add_option('--rietveld_server', 1116 parse.add_option('--rietveld_server',
1126 default='codereview.chromium.org', 1117 default='codereview.chromium.org',
1127 help='Rietveld server.') 1118 help='Rietveld server.')
1128 parse.add_option('--specs', help='Gcilent spec.') 1119 parse.add_option('--specs', help='Gcilent spec.')
1129 parse.add_option('--master', help='Master name.') 1120 parse.add_option('--master', help='Master name.')
1130 parse.add_option('-f', '--force', action='store_true', 1121 parse.add_option('-f', '--force', action='store_true',
1131 help='Bypass check to see if we want to be run. ' 1122 help='Bypass check to see if we want to be run. '
1132 'Should ONLY be used locally.') 1123 'Should ONLY be used locally.')
1133 parse.add_option('--revision_mapping') 1124 parse.add_option('--revision_mapping',
1134 parse.add_option('--revision-mapping') # Backwards compatability. 1125 help='{"path/to/repo/": "property_name"}')
1126 parse.add_option('--revision_mapping_file',
1127 help=('Same as revision_mapping, except its a path to a json'
1128 ' file containing that format.'))
1129 parse.add_option('--revision-mapping', # Backwards compatability.
1130 help='DEPRECATED, use "revision_mapping" instead')
1135 parse.add_option('--revision', action='append', default=[], 1131 parse.add_option('--revision', action='append', default=[],
1136 help='Revision to check out. Can be an SVN revision number, ' 1132 help='Revision to check out. Can be an SVN revision number, '
1137 'git hash, or any form of git ref. Can prepend ' 1133 'git hash, or any form of git ref. Can prepend '
1138 'root@<rev> to specify which repository, where root ' 1134 'root@<rev> to specify which repository, where root '
1139 'is either a filesystem path, git https url, or ' 1135 'is either a filesystem path, git https url, or '
1140 'svn url. To specify Tip of Tree, set rev to HEAD.') 1136 'svn url. To specify Tip of Tree, set rev to HEAD.')
1141 parse.add_option('--slave_name', default=socket.getfqdn().split('.')[0], 1137 parse.add_option('--slave_name', default=socket.getfqdn().split('.')[0],
1142 help='Hostname of the current machine, ' 1138 help='Hostname of the current machine, '
1143 'used for determining whether or not to activate.') 1139 'used for determining whether or not to activate.')
1144 parse.add_option('--builder_name', help='Name of the builder, ' 1140 parse.add_option('--builder_name', help='Name of the builder, '
1145 'used for determining whether or not to activate.') 1141 'used for determining whether or not to activate.')
1146 parse.add_option('--build_dir', default=os.getcwd()) 1142 parse.add_option('--build_dir', default=os.getcwd())
1147 parse.add_option('--flag_file', default=path.join(os.getcwd(), 1143 parse.add_option('--flag_file', default=path.join(os.getcwd(),
1148 'update.flag')) 1144 'update.flag'))
1149 parse.add_option('--shallow', action='store_true', 1145 parse.add_option('--shallow', action='store_true',
1150 help='Use shallow clones for cache repositories.') 1146 help='Use shallow clones for cache repositories.')
1151 parse.add_option('--gyp_env', action='append', default=[], 1147 parse.add_option('--gyp_env', action='append', default=[],
1152 help='Environment variables to pass into gclient runhooks.') 1148 help='Environment variables to pass into gclient runhooks.')
1153 parse.add_option('--clobber', action='store_true', 1149 parse.add_option('--clobber', action='store_true',
1154 help='Delete checkout first, always') 1150 help='Delete checkout first, always')
1155 parse.add_option('-o', '--output_json', 1151 parse.add_option('-o', '--output_json',
1156 help='Output JSON information into a specified file') 1152 help='Output JSON information into a specified file')
1157 1153
1158 1154
1159 return parse.parse_args() 1155 options, args = parse.parse_args()
1156
1157 try:
1158 if options.revision_mapping_file:
1159 if options.revision_mapping:
1160 print ('WARNING: Ignoring --revision_mapping: --revision_mapping_file '
1161 'was set at the same time as --revision_mapping?')
1162 with open(options.revision_mapping_file, 'r') as f:
1163 options.revision_mapping = json.load(f)
1164 elif options.revision_mapping:
1165 options.revision_mapping = json.loads(options.revision_mapping)
1166 except Exception as e:
1167 print (
1168 'WARNING: Caught execption while parsing revision_mapping*: %s'
1169 % (str(e),)
1170 )
1171
1172 return options, args
1160 1173
1161 1174
1162 def main(): 1175 def main():
1163 # Get inputs. 1176 # Get inputs.
1164 options, _ = parse_args() 1177 options, _ = parse_args()
1165 builder = options.builder_name 1178 builder = options.builder_name
1166 slave = options.slave_name 1179 slave = options.slave_name
1167 master = options.master 1180 master = options.master
1168 1181
1169 # Check if this script should activate or not. 1182 # Check if this script should activate or not.
(...skipping 107 matching lines...) Expand 10 before | Expand all | Expand 10 after
1277 shallow=options.shallow) 1290 shallow=options.shallow)
1278 gclient_output = ensure_checkout(**checkout_parameters) 1291 gclient_output = ensure_checkout(**checkout_parameters)
1279 except GclientSyncFailed: 1292 except GclientSyncFailed:
1280 print 'We failed gclient sync, lets delete the checkout and retry.' 1293 print 'We failed gclient sync, lets delete the checkout and retry.'
1281 ensure_no_checkout(dir_names, '*') 1294 ensure_no_checkout(dir_names, '*')
1282 gclient_output = ensure_checkout(**checkout_parameters) 1295 gclient_output = ensure_checkout(**checkout_parameters)
1283 1296
1284 # Revision is an svn revision, unless its a git master or past flag day. 1297 # Revision is an svn revision, unless its a git master or past flag day.
1285 use_svn_rev = master not in GIT_MASTERS and not FLAG_DAY 1298 use_svn_rev = master not in GIT_MASTERS and not FLAG_DAY
1286 # Take care of got_revisions outputs. 1299 # Take care of got_revisions outputs.
1287 revision_mapping = get_revision_mapping(svn_root, options.revision_mapping) 1300 revision_mapping = dict(GOT_REVISION_MAPPINGS.get(svn_root, {}))
1301 if options.revision_mapping:
1302 revision_mapping.update(options.revision_mapping)
1303
1288 got_revisions = parse_got_revision(gclient_output, revision_mapping, 1304 got_revisions = parse_got_revision(gclient_output, revision_mapping,
1289 use_svn_rev) 1305 use_svn_rev)
1290 1306
1291 if options.output_json: 1307 if options.output_json:
1292 # Tell recipes information such as root, got_revision, etc. 1308 # Tell recipes information such as root, got_revision, etc.
1293 emit_json(options.output_json, 1309 emit_json(options.output_json,
1294 did_run=True, 1310 did_run=True,
1295 root=first_sln, 1311 root=first_sln,
1296 patch_root=options.root, 1312 patch_root=options.root,
1297 step_text=step_text, 1313 step_text=step_text,
(...skipping 15 matching lines...) Expand all
1313 specs=options.specs) 1329 specs=options.specs)
1314 all_threads.append(thr) 1330 all_threads.append(thr)
1315 1331
1316 # Sort of wait for all telemetry threads to finish. 1332 # Sort of wait for all telemetry threads to finish.
1317 for thr in all_threads: 1333 for thr in all_threads:
1318 thr.join(5) 1334 thr.join(5)
1319 1335
1320 1336
1321 if __name__ == '__main__': 1337 if __name__ == '__main__':
1322 sys.exit(main()) 1338 sys.exit(main())
OLDNEW
« no previous file with comments | « no previous file | scripts/slave/recipe_modules/android/example.expected/basic.json » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698