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

Side by Side Diff: tools/gn/bin/roll_gn.py

Issue 1380373002: Fix another bug in the gn_roll script. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 2 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 # Copyright 2014 The Chromium Authors. All rights reserved. 1 # Copyright 2014 The Chromium Authors. All rights reserved.
2 # Use of this source code is governed by a BSD-style license that can be 2 # Use of this source code is governed by a BSD-style license that can be
3 # found in the LICENSE file. 3 # found in the LICENSE file.
4 4
5 """An auto-roller for GN binaries into Chromium. 5 """An auto-roller for GN binaries into Chromium.
6 6
7 This script is used to update the GN binaries that a Chromium 7 This script is used to update the GN binaries that a Chromium
8 checkout uses. In order to update the binaries, one must follow 8 checkout uses. In order to update the binaries, one must follow
9 four steps in order: 9 four steps in order:
10 10
(...skipping 161 matching lines...) Expand 10 before | Expand all | Expand 10 after
172 def MakeDummyDepsChange(self): 172 def MakeDummyDepsChange(self):
173 with open('DEPS') as fp: 173 with open('DEPS') as fp:
174 deps_content = fp.read() 174 deps_content = fp.read()
175 new_deps = deps_content.replace("'buildtools_revision':", 175 new_deps = deps_content.replace("'buildtools_revision':",
176 "'buildtools_revision': ") 176 "'buildtools_revision': ")
177 177
178 with open('DEPS', 'w') as fp: 178 with open('DEPS', 'w') as fp:
179 fp.write(new_deps) 179 fp.write(new_deps)
180 180
181 def WaitForBuildToFinish(self): 181 def WaitForBuildToFinish(self):
182 ret = self.CheckoutBuildBranch()
183 if ret:
184 return ret
185
182 print('Checking build') 186 print('Checking build')
183 results = self.CheckBuild() 187 results = self.CheckBuild()
184 while (len(results) < 3 or 188 while (len(results) < 3 or
185 any(r['state'] in ('pending', 'started') 189 any(r['state'] in ('pending', 'started')
186 for r in results.values())): 190 for r in results.values())):
187 print() 191 print()
188 print('Sleeping for 30 seconds') 192 print('Sleeping for 30 seconds')
189 time.sleep(30) 193 time.sleep(30)
190 print('Checking build') 194 print('Checking build')
191 results = self.CheckBuild() 195 results = self.CheckBuild()
192 196
193 ret = 0 if all(r['state'] == 'success' for r in results.values()) else 1 197 ret = 0 if all(r['state'] == 'success' for r in results.values()) else 1
194 if ret: 198 if ret:
195 print('Build failed.') 199 print('Build failed.')
196 else: 200 else:
197 print('Builds ready.') 201 print('Builds ready.')
198 202
199 # Close the build CL and move off of the build branch back to whatever 203 # Close the build CL and move off of the build branch back to whatever
200 # we were on before. 204 # we were on before.
201 self.Call('git-cl set-close') 205 self.Call('git-cl set-close')
202 self.MoveToLastHead() 206 self.MoveToLastHead()
203 207
204 return ret 208 return ret
205 209
210 def CheckoutBuildBranch(self):
211 ret, out, err = self.Call('git checkout build_gn_%s' % self.new_gn_version)
212 if ret:
213 print('Failed to check out build_gn_%s' % self.new_gn_version)
214 if out:
215 print(out)
216 if err:
217 print(err, file=sys.stderr)
218 return ret
219
206 def CheckBuild(self): 220 def CheckBuild(self):
207 _, out, _ = self.Call('git-cl issue') 221 _, out, _ = self.Call('git-cl issue')
208 222
209 issue = int(out.split()[2]) 223 issue = int(out.split()[2])
210 224
211 _, out, _ = self.Call('git config user.email') 225 _, out, _ = self.Call('git config user.email')
212 email = '' 226 email = ''
213 rpc_server = upload.GetRpcServer(CODE_REVIEW_SERVER, email) 227 rpc_server = upload.GetRpcServer(CODE_REVIEW_SERVER, email)
214 try: 228 try:
215 props = json.loads(rpc_server.Send('/api/%d' % issue)) 229 props = json.loads(rpc_server.Send('/api/%d' % issue))
(...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after
269 print(platform) 283 print(platform)
270 print(' sha1: %s' % r['sha1']) 284 print(' sha1: %s' % r['sha1'])
271 print(' state: %s' % r['state']) 285 print(' state: %s' % r['state'])
272 print(' build: %s' % r['build']) 286 print(' build: %s' % r['build'])
273 print(' url: %s' % r['url']) 287 print(' url: %s' % r['url'])
274 print() 288 print()
275 289
276 return results 290 return results
277 291
278 def RollBuildtools(self): 292 def RollBuildtools(self):
293 ret = self.CheckoutBuildBranch()
294 if ret:
295 return ret
296
279 results = self.CheckBuild() 297 results = self.CheckBuild()
280 if (len(results) < 3 or 298 if (len(results) < 3 or
281 not all(r['state'] == 'success' for r in results.values())): 299 not all(r['state'] == 'success' for r in results.values())):
282 print("Roll isn't done or didn't succeed, exiting:") 300 print("Roll isn't done or didn't succeed, exiting:")
283 return 1 301 return 1
284 302
285 desc = self.GetBuildtoolsDesc() 303 desc = self.GetBuildtoolsDesc()
286 304
287 self.Call('git new-branch roll_buildtools_gn_%s' % self.new_gn_version, 305 self.Call('git new-branch roll_buildtools_gn_%s' % self.new_gn_version,
288 cwd=self.buildtools_dir) 306 cwd=self.buildtools_dir)
(...skipping 145 matching lines...) Expand 10 before | Expand all | Expand 10 after
434 def Call(self, cmd, cwd=None): 452 def Call(self, cmd, cwd=None):
435 proc = subprocess.Popen(cmd, stdout=subprocess.PIPE, shell=True, 453 proc = subprocess.Popen(cmd, stdout=subprocess.PIPE, shell=True,
436 cwd=(cwd or self.chromium_src_dir)) 454 cwd=(cwd or self.chromium_src_dir))
437 out, err = proc.communicate() 455 out, err = proc.communicate()
438 return proc.returncode, out, err 456 return proc.returncode, out, err
439 457
440 458
441 if __name__ == '__main__': 459 if __name__ == '__main__':
442 roller = GNRoller() 460 roller = GNRoller()
443 sys.exit(roller.Roll()) 461 sys.exit(roller.Roll())
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