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

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

Issue 1289233003: Fix various stray bugs in the GN auto-roller, and repair the DEPS file. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: update w/ review feedback Created 5 years, 4 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 | « DEPS ('k') | 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 284 matching lines...) Expand 10 before | Expand all | Expand 10 after
295 print("buildtools git cl land failed: %d" % ret) 295 print("buildtools git cl land failed: %d" % ret)
296 if out: 296 if out:
297 print(out) 297 print(out)
298 if err: 298 if err:
299 print(err) 299 print(err)
300 return ret 300 return ret
301 301
302 # Fetch the revision we just committed so that RollDEPS will find it. 302 # Fetch the revision we just committed so that RollDEPS will find it.
303 self.Call('git fetch', cwd=self.buildtools_dir) 303 self.Call('git fetch', cwd=self.buildtools_dir)
304 304
305 # Reset buildtools to the new commit so that we're not still on the
306 # merged branch.
307 self.Call('git checkout origin/master', cwd=self.buildtools_dir)
308
305 return 0 309 return 0
306 310
307 def RollDEPS(self): 311 def RollDEPS(self):
308 ret, _, _ = self.Call('git new-branch roll_gn_%s' % self.new_gn_version) 312 ret, _, _ = self.Call('git new-branch roll_gn_%s' % self.new_gn_version)
309 if ret: 313 if ret:
310 print('Failed to create a new branch for roll_gn_%s' % 314 print('Failed to create a new branch for roll_gn_%s' %
311 self.new_gn_version) 315 self.new_gn_version)
312 return 1 316 return 1
313 317
314 _, out, _ = self.Call('git rev-parse origin/master', 318 _, out, _ = self.Call('git rev-parse origin/master',
315 cwd=self.buildtools_dir) 319 cwd=self.buildtools_dir)
316 new_buildtools_commitish = out.strip() 320 new_buildtools_commitish = out.strip()
317 321
318 new_deps_lines = [] 322 new_deps_lines = []
319 old_buildtools_commitish = '' 323 old_buildtools_commitish = ''
320 with open(os.path.join(self.chromium_src_dir, 'DEPS')) as fp: 324 with open(os.path.join(self.chromium_src_dir, 'DEPS')) as fp:
321 for l in fp.readlines(): 325 for l in fp.readlines():
322 m = re.match(".*'buildtools_revision':.*'(.+)',", l) 326 m = re.match(".*'buildtools_revision':.*'(.+)',", l)
323 if m: 327 if m:
324 old_buildtools_commitish = m.group(1) 328 old_buildtools_commitish = m.group(1)
325 new_deps_lines.append(" 'buildtools_revision': '%s'," % 329 new_deps_lines.append(" 'buildtools_revision': '%s',\n" %
326 new_buildtools_commitish) 330 new_buildtools_commitish)
327 else: 331 else:
328 new_deps_lines.append(l) 332 new_deps_lines.append(l)
329 333
330 if not old_buildtools_commitish: 334 if not old_buildtools_commitish:
331 print('Could not update DEPS properly, exiting') 335 print('Could not update DEPS properly, exiting')
332 return 1 336 return 1
333 337
334 with open('DEPS', 'w') as fp: 338 with open('DEPS', 'w') as fp:
335 fp.write(''.join(new_deps_lines) + '\n') 339 fp.write(''.join(new_deps_lines) + '\n')
336 340
337 desc = self.GetDEPSRollDesc(old_buildtools_commitish, 341 desc = self.GetDEPSRollDesc(old_buildtools_commitish,
338 new_buildtools_commitish) 342 new_buildtools_commitish)
339 desc_file = tempfile.NamedTemporaryFile(delete=False) 343 desc_file = tempfile.NamedTemporaryFile(delete=False)
340 try: 344 try:
341 desc_file.write(desc) 345 desc_file.write(desc)
342 desc_file.close() 346 desc_file.close()
343 self.Call('git commit -a -F %s' % desc_file.name) 347 self.Call('git commit -a -F %s' % desc_file.name)
344 self.Call('git-cl upload -f --send-mail --use-commit-queue') 348 self.Call('git-cl upload -f --send-mail --use-commit-queue')
345 finally: 349 finally:
346 os.remove(desc_file.name) 350 os.remove(desc_file.name)
351
352 # Intentionally leave the src checkout on the new branch with the roll
353 # since we're not auto-committing it.
354
347 return 0 355 return 0
348 356
349 def GetBuildtoolsDesc(self): 357 def GetBuildtoolsDesc(self):
350 gn_changes = self.GetGNChanges() 358 gn_changes = self.GetGNChanges()
351 return ( 359 return (
352 'Roll gn %s..%s (r%s:r%s)\n' 360 'Roll gn %s..%s (r%s:r%s)\n'
353 '\n' 361 '\n'
354 '%s' 362 '%s'
355 '\n' 363 '\n'
356 'TBR=%s\n' % ( 364 'TBR=%s\n' % (
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after
397 def Call(self, cmd, cwd=None): 405 def Call(self, cmd, cwd=None):
398 proc = subprocess.Popen(cmd, stdout=subprocess.PIPE, shell=True, 406 proc = subprocess.Popen(cmd, stdout=subprocess.PIPE, shell=True,
399 cwd=(cwd or self.chromium_src_dir)) 407 cwd=(cwd or self.chromium_src_dir))
400 out, err = proc.communicate() 408 out, err = proc.communicate()
401 return proc.returncode, out, err 409 return proc.returncode, out, err
402 410
403 411
404 if __name__ == '__main__': 412 if __name__ == '__main__':
405 roller = GNRoller() 413 roller = GNRoller()
406 sys.exit(roller.Roll()) 414 sys.exit(roller.Roll())
OLDNEW
« no previous file with comments | « DEPS ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698