summaryrefslogtreecommitdiffstats
path: root/tools/bisect-builds.py
diff options
context:
space:
mode:
authorthakis@chromium.org <thakis@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-10-25 22:58:31 +0000
committerthakis@chromium.org <thakis@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-10-25 22:58:31 +0000
commitb2fe7f24c7472face4382aa37fc06b0bb6bd205f (patch)
tree5c8dce248768127a26c83abe3bbfc028c747e599 /tools/bisect-builds.py
parent081bbe05c85e687fa0ac78191377c3326a1278ac (diff)
downloadchromium_src-b2fe7f24c7472face4382aa37fc06b0bb6bd205f.zip
chromium_src-b2fe7f24c7472face4382aa37fc06b0bb6bd205f.tar.gz
chromium_src-b2fe7f24c7472face4382aa37fc06b0bb6bd205f.tar.bz2
bisect_builds: Also print the corresponding webkit revision range.
BUG=none TEST=none Review URL: http://codereview.chromium.org/8391018 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@107225 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'tools/bisect-builds.py')
-rwxr-xr-xtools/bisect-builds.py43
1 files changed, 39 insertions, 4 deletions
diff --git a/tools/bisect-builds.py b/tools/bisect-builds.py
index 02ce053..ee24696 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())