| Index: tools/bisect-builds.py
|
| diff --git a/tools/bisect-builds.py b/tools/bisect-builds.py
|
| index 02ce053dba0202d7910137dd663f1d94b7b5f3d7..ee246969fd73cb3b4a590ac2732f87aca9bf3216 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,20 @@ def Bisect(platform,
|
| return (revlist[good], revlist[bad])
|
|
|
|
|
| +def GetWebKitRevisionForChromiumRevision(rev):
|
| + """Returns the webkit revision that was in chromium's DEPS file at
|
| + chromium revision |rev|."""
|
| + # . doesn't match newlines without re.DOTALL, so this is safe.
|
| + webkit_re = re.compile(r'webkit_revision.:\D*(\d+)')
|
| + url = urllib.urlopen(DEPS_FILE % rev)
|
| + m = webkit_re.search(url.read())
|
| + url.close()
|
| + 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 +513,26 @@ 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)
|
| + 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())
|
|
|