Chromium Code Reviews| Index: tools/bisect-builds.py |
| diff --git a/tools/bisect-builds.py b/tools/bisect-builds.py |
| index 02ce053dba0202d7910137dd663f1d94b7b5f3d7..d18fd76099c2f95b1983c3969260107963a07e4e 100755 |
| --- a/tools/bisect-builds.py |
| +++ b/tools/bisect-builds.py |
| @@ -22,6 +22,13 @@ BUILD_VIEWVC_URL = 'http://src.chromium.org/viewvc/chrome?view=rev&revision=%d' |
| CHANGELOG_URL = 'http://build.chromium.org/f/chromium/' \ |
| 'perf/dashboard/ui/changelog.html?url=/trunk/src&range=%d:%d' |
| +# DEPS file URL. |
| +DEPS_FILE= 'http://src.chromium.org/viewvc/chrome/trunk/src/DEPS?revision=%d' |
| + |
| +# WebKit Changelogs URL. |
| +WEBKIT_CHANGELOG_URL = 'http://trac.webkit.org/log/' \ |
| + 'trunk/?rev=%d&stop_rev=%d&verbose=on' |
| + |
| ############################################################################### |
| import math |
| @@ -424,6 +431,17 @@ def Bisect(platform, |
| return (revlist[good], revlist[bad]) |
| +def GetWebKitRevisionForChromiumRevision(rev): |
|
Robert Sesek
2011/10/25 20:55:17
Needs """docstring"""
Nico
2011/10/25 20:57:24
Done.
|
| + # . doesn't match newlines without re.DOTALL, so this is safe. |
| + webkit_re = re.compile(r'webkit_revision.:\D*(\d+)') |
| + m = webkit_re.search(urllib.urlopen(DEPS_FILE % rev).read()) |
|
Robert Sesek
2011/10/25 20:55:17
Do you need to close this?
Nico
2011/10/25 20:57:24
It'll be closed when it's garbage collected or whe
Robert Sesek
2011/10/25 20:59:35
OK. But add a comment to that effect because this
|
| + print m.group(0) |
| + if m: |
| + return int(m.group(1)) |
| + else: |
| + raise Exception('Could not get webkit revision for cr rev %d' % rev) |
| + |
| + |
| def main(): |
| usage = ('%prog [options] [-- chromium-options]\n' |
| 'Perform binary search on the snapshot builds.\n' |
| @@ -492,12 +510,27 @@ def main(): |
| (last_known_good_rev, first_known_bad_rev) = Bisect( |
| opts.archive, good_rev, bad_rev, args, opts.profile) |
| + # Get corresponding webkit revisions. |
| + try: |
| + last_known_good_webkit_rev = GetWebKitRevisionForChromiumRevision( |
| + last_known_good_rev) |
| + first_known_bad_webkit_rev = GetWebKitRevisionForChromiumRevision( |
| + first_known_bad_rev) |
| + except Exception, e: |
| + # Silently ignore the failure. |
| + last_known_good_webkit_rev, first_known_bad_webkit_rev = 0, 0 |
| + |
| # We're done. Let the user know the results in an official manner. |
| print('You are probably looking for build %d.' % first_known_bad_rev) |
| - print('CHANGELOG URL:') |
| - print(CHANGELOG_URL % (last_known_good_rev, first_known_bad_rev)) |
| - print('Built at revision:') |
| - print(BUILD_VIEWVC_URL % first_known_bad_rev) |
| + print last_known_good_webkit_rev , first_known_bad_webkit_rev |
| + if last_known_good_webkit_rev != first_known_bad_webkit_rev: |
| + print 'WEBKIT CHANGELOG URL:' |
| + print WEBKIT_CHANGELOG_URL % (first_known_bad_webkit_rev, |
| + last_known_good_webkit_rev) |
| + print 'CHANGELOG URL:' |
| + print CHANGELOG_URL % (last_known_good_rev, first_known_bad_rev) |
| + print 'Built at revision:' |
| + print BUILD_VIEWVC_URL % first_known_bad_rev |
| if __name__ == '__main__': |
| sys.exit(main()) |