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

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

Issue 2283043002: Remove Deps2Git references from bot_update.py (Closed)
Patch Set: Created 4 years, 3 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 | « no previous file | 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 333 matching lines...) Expand 10 before | Expand all | Expand 10 after
344 'client.v8.branches', 344 'client.v8.branches',
345 'client.v8.ports', 345 'client.v8.ports',
346 'tryserver.v8', 346 'tryserver.v8',
347 ] 347 ]
348 GIT_MASTERS += internal_data.get('GIT_MASTERS', []) 348 GIT_MASTERS += internal_data.get('GIT_MASTERS', [])
349 349
350 350
351 # How many times to try before giving up. 351 # How many times to try before giving up.
352 ATTEMPTS = 5 352 ATTEMPTS = 5
353 353
354 # Find deps2git
355 DEPS2GIT_DIR_PATH = path.join(SCRIPTS_DIR, 'tools', 'deps2git')
356 DEPS2GIT_PATH = path.join(DEPS2GIT_DIR_PATH, 'deps2git.py')
357 S2G_INTERNAL_PATH = path.join(SCRIPTS_DIR, 'tools', 'deps2git_internal',
358 'svn_to_git_internal.py')
359 GIT_CACHE_PATH = path.join(DEPOT_TOOLS_DIR, 'git_cache.py') 354 GIT_CACHE_PATH = path.join(DEPOT_TOOLS_DIR, 'git_cache.py')
360 355
361 # Find the patch tool. 356 # Find the patch tool.
362 if sys.platform.startswith('win'): 357 if sys.platform.startswith('win'):
363 if not BUILD_INTERNAL_DIR: 358 if not BUILD_INTERNAL_DIR:
364 print 'Warning: could not find patch tool because there is no ' 359 print 'Warning: could not find patch tool because there is no '
365 print 'build_internal present.' 360 print 'build_internal present.'
366 PATCH_TOOL = None 361 PATCH_TOOL = None
367 else: 362 else:
368 PATCH_TOOL = path.join(BUILD_INTERNAL_DIR, 'tools', 'patch.EXE') 363 PATCH_TOOL = path.join(BUILD_INTERNAL_DIR, 'tools', 'patch.EXE')
(...skipping 435 matching lines...) Expand 10 before | Expand all | Expand 10 after
804 match = "^%s: [^ ]*@%s " % (GIT_SVN_ID_FOOTER_KEY, revision) 799 match = "^%s: [^ ]*@%s " % (GIT_SVN_ID_FOOTER_KEY, revision)
805 ref = branch if branch.startswith('refs/') else 'origin/%s' % branch 800 ref = branch if branch.startswith('refs/') else 'origin/%s' % branch
806 cmd = ['log', '-E', '--grep', match, '--format=%H', '--max-count=1', ref] 801 cmd = ['log', '-E', '--grep', match, '--format=%H', '--max-count=1', ref]
807 result = git(*cmd, cwd=sln_dir).strip() 802 result = git(*cmd, cwd=sln_dir).strip()
808 if result: 803 if result:
809 return result 804 return result
810 raise SVNRevisionNotFound('We can\'t resolve svn r%s into a git hash in %s' % 805 raise SVNRevisionNotFound('We can\'t resolve svn r%s into a git hash in %s' %
811 (revision, sln_dir)) 806 (revision, sln_dir))
812 807
813 808
814 def _last_commit_for_file(filename, repo_base):
815 cmd = ['log', '--format=%H', '--max-count=1', '--', filename]
816 return git(*cmd, cwd=repo_base).strip()
817
818
819 def need_to_run_deps2git(repo_base, deps_file, deps_git_file):
820 """Checks to see if we need to run deps2git.
821
822 Returns True if there was a DEPS change after the last .DEPS.git update
823 or if DEPS has local modifications.
824 """
825 # See if DEPS is dirty
826 deps_file_status = git(
827 'status', '--porcelain', deps_file, cwd=repo_base).strip()
828 if deps_file_status and deps_file_status.startswith('M '):
829 return True
830
831 last_known_deps_ref = _last_commit_for_file(deps_file, repo_base)
832 last_known_deps_git_ref = _last_commit_for_file(deps_git_file, repo_base)
833 merge_base_ref = git('merge-base', last_known_deps_ref,
834 last_known_deps_git_ref, cwd=repo_base).strip()
835
836 # If the merge base of the last DEPS and last .DEPS.git file is not
837 # equivilent to the hash of the last DEPS file, that means the DEPS file
838 # was committed after the last .DEPS.git file.
839 return last_known_deps_ref != merge_base_ref
840
841
842 def ensure_deps2git(solution, shallow, git_cache_dir):
843 repo_base = path.join(os.getcwd(), solution['name'])
844 deps_file = path.join(repo_base, 'DEPS')
845 deps_git_file = path.join(repo_base, '.DEPS.git')
846 if (not git('ls-files', 'DEPS', cwd=repo_base).strip() or
847 not git('ls-files', '.DEPS.git', cwd=repo_base).strip()):
848 return
849
850 print 'Checking if %s is newer than %s' % (deps_file, deps_git_file)
851 if not need_to_run_deps2git(repo_base, deps_file, deps_git_file):
852 return
853
854 print '===DEPS file modified, need to run deps2git==='
855 cmd = [sys.executable, DEPS2GIT_PATH,
856 '--workspace', os.getcwd(),
857 '--cache_dir', git_cache_dir,
858 '--deps', deps_file,
859 '--out', deps_git_file]
860 if 'chrome-internal.googlesource' in solution['url']:
861 cmd.extend(['--extra-rules', S2G_INTERNAL_PATH])
862 if shallow:
863 cmd.append('--shallow')
864 call(*cmd)
865
866
867 def emit_log_lines(name, lines): 809 def emit_log_lines(name, lines):
868 for line in lines.splitlines(): 810 for line in lines.splitlines():
869 print '@@@STEP_LOG_LINE@%s@%s@@@' % (name, line) 811 print '@@@STEP_LOG_LINE@%s@%s@@@' % (name, line)
870 print '@@@STEP_LOG_END@%s@@@' % name 812 print '@@@STEP_LOG_END@%s@@@' % name
871 813
872 814
873 def emit_properties(properties): 815 def emit_properties(properties):
874 for property_name, property_value in sorted(properties.items()): 816 for property_name, property_value in sorted(properties.items()):
875 print '@@@SET_BUILD_PROPERTY@%s@"%s"@@@' % (property_name, property_value) 817 print '@@@SET_BUILD_PROPERTY@%s@"%s"@@@' % (property_name, property_value)
876 818
(...skipping 476 matching lines...) Expand 10 before | Expand all | Expand 10 after
1353 already_patched.append(target) 1295 already_patched.append(target)
1354 elif issue: 1296 elif issue:
1355 apply_rietveld_issue(issue, patchset, patch_root, rietveld_server, 1297 apply_rietveld_issue(issue, patchset, patch_root, rietveld_server,
1356 revision_mapping, git_ref, apply_issue_email_file, 1298 revision_mapping, git_ref, apply_issue_email_file,
1357 apply_issue_key_file, whitelist=[target]) 1299 apply_issue_key_file, whitelist=[target])
1358 already_patched.append(target) 1300 already_patched.append(target)
1359 elif gerrit_ref and gerrit_rebase_patch_ref: 1301 elif gerrit_ref and gerrit_rebase_patch_ref:
1360 apply_gerrit_ref(gerrit_repo, gerrit_ref, patch_root, gerrit_reset, 1302 apply_gerrit_ref(gerrit_repo, gerrit_ref, patch_root, gerrit_reset,
1361 True) 1303 True)
1362 1304
1363 if not buildspec:
1364 # Run deps2git if there is a DEPS change after the last .DEPS.git commit.
1365 for solution in solutions:
1366 ensure_deps2git(solution, shallow, git_cache_dir)
1367
1368 # Ensure our build/ directory is set up with the correct .gclient file. 1305 # Ensure our build/ directory is set up with the correct .gclient file.
1369 gclient_configure(solutions, target_os, target_os_only, git_cache_dir) 1306 gclient_configure(solutions, target_os, target_os_only, git_cache_dir)
1370 1307
1371 # Let gclient do the DEPS syncing. 1308 # Let gclient do the DEPS syncing.
1372 # The branch-head refspec is a special case because its possible Chrome 1309 # The branch-head refspec is a special case because its possible Chrome
1373 # src, which contains the branch-head refspecs, is DEPSed in. 1310 # src, which contains the branch-head refspecs, is DEPSed in.
1374 gclient_output = gclient_sync(buildspec or BRANCH_HEADS_REFSPEC in refs, 1311 gclient_output = gclient_sync(buildspec or BRANCH_HEADS_REFSPEC in refs,
1375 shallow) 1312 shallow)
1376 1313
1377 # Now that gclient_sync has finished, we should revert any .DEPS.git so that 1314 # Now that gclient_sync has finished, we should revert any .DEPS.git so that
(...skipping 420 matching lines...) Expand 10 before | Expand all | Expand 10 after
1798 except Exception: 1735 except Exception:
1799 # Unexpected failure. 1736 # Unexpected failure.
1800 emit_flag(options.flag_file) 1737 emit_flag(options.flag_file)
1801 raise 1738 raise
1802 else: 1739 else:
1803 emit_flag(options.flag_file) 1740 emit_flag(options.flag_file)
1804 1741
1805 1742
1806 if __name__ == '__main__': 1743 if __name__ == '__main__':
1807 sys.exit(main()) 1744 sys.exit(main())
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698