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

Side by Side Diff: build/build-bisect.py

Issue 205022: build-bisect: minor usability tweaks (Closed)
Patch Set: Created 11 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/python2.5 1 #!/usr/bin/python2.5
2 # Copyright (c) 2009 The Chromium Authors. All rights reserved. 2 # Copyright (c) 2009 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 """Snapshot Build Bisect Tool 6 """Snapshot Build Bisect Tool
7 7
8 This script bisects a snapshot archive using binary search. It starts at 8 This script bisects a snapshot archive using binary search. It starts at
9 a bad revision (it will try to guess HEAD) and asks for a last known-good 9 a bad revision (it will try to guess HEAD) and asks for a last known-good
10 revision. It will then binary search across this revision range by downloading, 10 revision. It will then binary search across this revision range by downloading,
(...skipping 94 matching lines...) Expand 10 before | Expand all | Expand 10 after
105 urllib.urlretrieve(download_url, BUILD_ZIP_NAME) 105 urllib.urlretrieve(download_url, BUILD_ZIP_NAME)
106 except Exception, e: 106 except Exception, e:
107 print("Could not retrieve the download. Sorry.") 107 print("Could not retrieve the download. Sorry.")
108 sys.exit(-1) 108 sys.exit(-1)
109 109
110 # Unzip the file. 110 # Unzip the file.
111 print 'Unzipping ...' 111 print 'Unzipping ...'
112 os.system("unzip -q %s" % BUILD_ZIP_NAME) 112 os.system("unzip -q %s" % BUILD_ZIP_NAME)
113 113
114 # Tell the system to open the app. 114 # Tell the system to open the app.
115 print 'Running %s/%s/%s' % (os.getcwd(), BUILD_DIR_NAME, BUILD_EXE_NAME) 115 flags = '--user-data-dir=profile'
116 print 'Running %s/%s/%s %s' % (os.getcwd(), BUILD_DIR_NAME, BUILD_EXE_NAME,
117 flags)
116 if BUILD_ARCHIVE_TYPE in ('linux', 'linux-64'): 118 if BUILD_ARCHIVE_TYPE in ('linux', 'linux-64'):
117 os.system("%s/%s" % (BUILD_DIR_NAME, BUILD_EXE_NAME)) 119 os.system("%s/%s %s" % (BUILD_DIR_NAME, BUILD_EXE_NAME, flags))
118 elif BUILD_ARCHIVE_TYPE in ('mac'): 120 elif BUILD_ARCHIVE_TYPE in ('mac'):
119 os.system("open %s/%s" % (BUILD_DIR_NAME, BUILD_EXE_NAME)) 121 os.system("open %s/%s %s" % (BUILD_DIR_NAME, BUILD_EXE_NAME, flags))
120 elif BUILD_ARCHIVE_TYPE in ('xp'): 122 elif BUILD_ARCHIVE_TYPE in ('xp'):
121 # TODO(mmoss) Does Windows need 'start' or something? 123 # TODO(mmoss) Does Windows need 'start' or something?
122 os.system("%s/%s" % (BUILD_DIR_NAME, BUILD_EXE_NAME)) 124 os.system("%s/%s %s" % (BUILD_DIR_NAME, BUILD_EXE_NAME, flags))
123 125
124 os.chdir(cwd) 126 os.chdir(cwd)
125 print 'Cleaning temp dir ...' 127 print 'Cleaning temp dir ...'
126 try: 128 try:
127 shutil.rmtree(tempdir, True) 129 shutil.rmtree(tempdir, True)
128 except Exception, e: 130 except Exception, e:
129 pass 131 pass
130 132
131 def AskIsGoodBuild(rev): 133 def AskIsGoodBuild(rev):
132 """Annoyingly ask the user whether build |rev| is good or bad.""" 134 """Annoyingly ask the user whether build |rev| is good or bad."""
133 while True: 135 while True:
134 check = raw_input("\nBuild %d is [(g)ood/(b)ad]: " % int(rev))[0] 136 check = raw_input("\nBuild %d is [(g)ood/(b)ad]: " % int(rev))[0]
135 if (check == "g" or check == "b"): 137 if (check == "g" or check == "b"):
136 return (check == "g") 138 return (check == "g")
137 else: 139 else:
138 print("Just answer the question...") 140 print("Just answer the question...")
139 141
140 def main(): 142 def main():
141 usage = ('%prog [options]\n' 143 usage = ('%prog [options]\n'
142 'Perform binary search on the snapshot builds.') 144 'Perform binary search on the snapshot builds.')
143 parser = optparse.OptionParser(usage=usage) 145 parser = optparse.OptionParser(usage=usage)
146 # Strangely, the default help output doesn't include the choice list.
147 choices = ['mac', 'xp', 'linux', 'linux-64']
144 parser.add_option('-a', '--archive', 148 parser.add_option('-a', '--archive',
145 choices = ['mac', 'xp', 'linux', 'linux-64'], 149 choices = choices,
146 help = 'The buildbot archive to bisect.') 150 help = 'The buildbot archive to bisect [%s].' %
151 '|'.join(choices))
147 parser.add_option('-b', '--bad', type = 'int', 152 parser.add_option('-b', '--bad', type = 'int',
148 help = 'The bad revision to bisect to.') 153 help = 'The bad revision to bisect to.')
149 parser.add_option('-g', '--good', type = 'int', 154 parser.add_option('-g', '--good', type = 'int',
150 help = 'The last known good revision to bisect from.') 155 help = 'The last known good revision to bisect from.')
151 (opts, args) = parser.parse_args() 156 (opts, args) = parser.parse_args()
152 157
153 if opts.archive is None: 158 if opts.archive is None:
154 parser.print_help() 159 parser.print_help()
155 return 1 160 return 1
156 161
(...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after
223 else: 228 else:
224 bad = test 229 bad = test
225 230
226 # We're done. Let the user know the results in an official manner. 231 # We're done. Let the user know the results in an official manner.
227 print("You are probably looking for build %d." % revlist[bad]) 232 print("You are probably looking for build %d." % revlist[bad])
228 print("This is the ViewVC URL for the potential bustage:") 233 print("This is the ViewVC URL for the potential bustage:")
229 print(BUILD_VIEWVC_URL % revlist[bad]) 234 print(BUILD_VIEWVC_URL % revlist[bad])
230 235
231 if __name__ == '__main__': 236 if __name__ == '__main__':
232 sys.exit(main()) 237 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