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

Side by Side Diff: cros_mark_as_stable.py

Issue 3516025: Update cros_mark_as_stable.py to also update the private overlay (Closed) Base URL: ssh://git@gitrw.chromium.org:9222/crosutils.git
Patch Set: Fix nits Created 10 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 | Annotate | Revision Log
« no previous file with comments | « no previous file | cros_mark_as_stable_unittest.py » ('j') | 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/python 1 #!/usr/bin/python
2 2
3 # Copyright (c) 2010 The Chromium OS Authors. All rights reserved. 3 # Copyright (c) 2010 The Chromium OS Authors. All rights reserved.
4 # Use of this source code is governed by a BSD-style license that can be 4 # Use of this source code is governed by a BSD-style license that can be
5 # found in the LICENSE file. 5 # found in the LICENSE file.
6 6
7 """This module uprevs a given package's ebuild to the next revision.""" 7 """This module uprevs a given package's ebuild to the next revision."""
8 8
9 9
10 import fileinput 10 import fileinput
(...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after
61 _STABLE_BRANCH_NAME = 'stabilizing_branch' 61 _STABLE_BRANCH_NAME = 'stabilizing_branch'
62 62
63 # ======================= Global Helper Functions ======================== 63 # ======================= Global Helper Functions ========================
64 64
65 65
66 def _Print(message): 66 def _Print(message):
67 """Verbose print function.""" 67 """Verbose print function."""
68 if gflags.FLAGS.verbose: 68 if gflags.FLAGS.verbose:
69 Info(message) 69 Info(message)
70 70
71
72 def _BuildEBuildDictionary(overlays, package_list, commit_id_list):
73 for index in range(len(package_list)):
74 package = package_list[index]
75 commit_id = ''
76 if commit_id_list:
77 commit_id = commit_id_list[index]
78 ebuild = _EBuild(package, commit_id)
79 if ebuild.ebuild_path:
80 for overlay in overlays:
81 if ebuild.ebuild_path.startswith(overlay):
82 overlays[overlay].append(ebuild)
83 break
84 else:
85 Die('No overlay found for %s' % ebuild.ebuild_path)
86 else:
87 Die('No ebuild found for %s' % package)
88
89
71 def _CheckOnStabilizingBranch(): 90 def _CheckOnStabilizingBranch():
72 """Returns true if the git branch is on the stabilizing branch.""" 91 """Returns true if the git branch is on the stabilizing branch."""
73 current_branch = _SimpleRunCommand('git branch | grep \*').split()[1] 92 current_branch = _SimpleRunCommand('git branch | grep \*').split()[1]
74 return current_branch == _STABLE_BRANCH_NAME 93 return current_branch == _STABLE_BRANCH_NAME
75 94
95
76 def _CheckSaneArguments(package_list, commit_id_list, command): 96 def _CheckSaneArguments(package_list, commit_id_list, command):
77 """Checks to make sure the flags are sane. Dies if arguments are not sane.""" 97 """Checks to make sure the flags are sane. Dies if arguments are not sane."""
78 if not command in _COMMAND_DICTIONARY.keys(): 98 if not command in _COMMAND_DICTIONARY.keys():
79 _PrintUsageAndDie('%s is not a valid command' % command) 99 _PrintUsageAndDie('%s is not a valid command' % command)
80 if not gflags.FLAGS.packages and command == 'commit': 100 if not gflags.FLAGS.packages and command == 'commit':
81 _PrintUsageAndDie('Please specify at least one package') 101 _PrintUsageAndDie('Please specify at least one package')
82 if not gflags.FLAGS.board and command == 'commit': 102 if not gflags.FLAGS.board and command == 'commit':
83 _PrintUsageAndDie('Please specify a board') 103 _PrintUsageAndDie('Please specify a board')
84 if not os.path.isdir(gflags.FLAGS.srcroot): 104 if not os.path.isdir(gflags.FLAGS.srcroot):
85 _PrintUsageAndDie('srcroot is not a valid path') 105 _PrintUsageAndDie('srcroot is not a valid path')
(...skipping 124 matching lines...) Expand 10 before | Expand all | Expand 10 after
210 @classmethod 230 @classmethod
211 def _FindEBuildPath(cls, package): 231 def _FindEBuildPath(cls, package):
212 """Static method that returns the full path of an ebuild.""" 232 """Static method that returns the full path of an ebuild."""
213 _Print('Looking for unstable ebuild for %s' % package) 233 _Print('Looking for unstable ebuild for %s' % package)
214 equery_cmd = ( 234 equery_cmd = (
215 'ACCEPT_KEYWORDS="x86 arm amd64" equery-%s which %s 2> /dev/null' 235 'ACCEPT_KEYWORDS="x86 arm amd64" equery-%s which %s 2> /dev/null'
216 % (gflags.FLAGS.board, package)) 236 % (gflags.FLAGS.board, package))
217 path = _SimpleRunCommand(equery_cmd) 237 path = _SimpleRunCommand(equery_cmd)
218 if path: 238 if path:
219 _Print('Unstable ebuild found at %s' % path) 239 _Print('Unstable ebuild found at %s' % path)
220 return path 240 return path.rstrip()
221 241
222 @classmethod 242 @classmethod
223 def _ParseEBuildPath(cls, ebuild_path): 243 def _ParseEBuildPath(cls, ebuild_path):
224 """Static method that parses the path of an ebuild 244 """Static method that parses the path of an ebuild
225 245
226 Returns a tuple containing the (ebuild path without the revision 246 Returns a tuple containing the (ebuild path without the revision
227 string, without the version string, and the current revision number for 247 string, without the version string, and the current revision number for
228 the ebuild). 248 the ebuild).
229 """ 249 """
230 # Get the ebuild name without the revision string. 250 # Get the ebuild name without the revision string.
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after
269 IOError: Error occurred while writing to the new revved ebuild file. 289 IOError: Error occurred while writing to the new revved ebuild file.
270 """ 290 """
271 # TODO(sosa): Change to a check. 291 # TODO(sosa): Change to a check.
272 if not self._ebuild: 292 if not self._ebuild:
273 Die('Invalid ebuild given to EBuildStableMarker') 293 Die('Invalid ebuild given to EBuildStableMarker')
274 294
275 new_ebuild_path = '%s-r%d.ebuild' % (self._ebuild.ebuild_path_no_revision, 295 new_ebuild_path = '%s-r%d.ebuild' % (self._ebuild.ebuild_path_no_revision,
276 self._ebuild.current_revision + 1) 296 self._ebuild.current_revision + 1)
277 297
278 _Print('Creating new stable ebuild %s' % new_ebuild_path) 298 _Print('Creating new stable ebuild %s' % new_ebuild_path)
279 shutil.copyfile('%s-9999.ebuild' % self._ebuild.ebuild_path_no_version, 299 workon_ebuild = '%s-9999.ebuild' % self._ebuild.ebuild_path_no_version
280 new_ebuild_path) 300 if not os.path.exists(workon_ebuild):
301 Die('Missing 9999 ebuild: %s' % workon_ebuild)
302 shutil.copyfile(workon_ebuild, new_ebuild_path)
281 303
282 for line in fileinput.input(new_ebuild_path, inplace=1): 304 for line in fileinput.input(new_ebuild_path, inplace=1):
283 # Has to be done here to get changes to sys.stdout from fileinput.input. 305 # Has to be done here to get changes to sys.stdout from fileinput.input.
284 if not redirect_file: 306 if not redirect_file:
285 redirect_file = sys.stdout 307 redirect_file = sys.stdout
286 if line.startswith('KEYWORDS'): 308 if line.startswith('KEYWORDS'):
287 # Actually mark this file as stable by removing ~'s. 309 # Actually mark this file as stable by removing ~'s.
288 redirect_file.write(line.replace("~", "")) 310 redirect_file.write(line.replace("~", ""))
289 elif line.startswith('EAPI'): 311 elif line.startswith('EAPI'):
290 # Always add new commit_id after EAPI definition. 312 # Always add new commit_id after EAPI definition.
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after
329 except gflags.FlagsError, e : 351 except gflags.FlagsError, e :
330 _PrintUsageAndDie(str(e)) 352 _PrintUsageAndDie(str(e))
331 353
332 package_list = gflags.FLAGS.packages.split() 354 package_list = gflags.FLAGS.packages.split()
333 if gflags.FLAGS.commit_ids: 355 if gflags.FLAGS.commit_ids:
334 commit_id_list = gflags.FLAGS.commit_ids.split() 356 commit_id_list = gflags.FLAGS.commit_ids.split()
335 else: 357 else:
336 commit_id_list = None 358 commit_id_list = None
337 _CheckSaneArguments(package_list, commit_id_list, command) 359 _CheckSaneArguments(package_list, commit_id_list, command)
338 360
339 overlay_directory = '%s/third_party/chromiumos-overlay' % gflags.FLAGS.srcroot 361 overlays = {
362 '%s/private-overlays/chromeos-overlay' % gflags.FLAGS.srcroot: [],
363 '%s/third_party/chromiumos-overlay' % gflags.FLAGS.srcroot: []
364 }
365 _BuildEBuildDictionary(overlays, package_list, commit_id_list)
340 366
341 os.chdir(overlay_directory) 367 for overlay, ebuilds in overlays.items():
368 if not os.path.exists(overlay):
369 continue
370 os.chdir(overlay)
342 371
343 if command == 'clean': 372 if command == 'clean':
344 _Clean() 373 _Clean()
345 elif command == 'commit': 374 elif command == 'push':
346 work_branch = _GitBranch(_STABLE_BRANCH_NAME) 375 _PushChange()
347 work_branch.CreateBranch() 376 elif command == 'commit' and ebuilds:
348 if not work_branch.Exists(): 377 work_branch = _GitBranch(_STABLE_BRANCH_NAME)
349 Die('Unable to create stabilizing branch in %s' % 378 work_branch.CreateBranch()
350 overlay_directory) 379 if not work_branch.Exists():
351 index = 0 380 Die('Unable to create stabilizing branch in %s' % overlay)
352 try: 381 for ebuild in ebuilds:
353 for index in range(len(package_list)): 382 try:
354 # Gather the package and optional commit id to work on. 383 _Print('Working on %s' % ebuild.package)
355 package = package_list[index] 384 worker = EBuildStableMarker(ebuild)
356 commit_id = "" 385 worker.RevEBuild(ebuild.commit_id)
357 if commit_id_list: 386 message = _GIT_COMMIT_MESSAGE % (ebuild.package, ebuild.commit_id)
358 commit_id = commit_id_list[index] 387 worker.CommitChange(message)
359 388 except (OSError, IOError):
360 _Print('Working on %s' % package) 389 Warning('Cannot rev %s\n' % ebuild.package,
361 worker = EBuildStableMarker(_EBuild(package, commit_id)) 390 'Note you will have to go into %s '
362 worker.RevEBuild(commit_id) 391 'and reset the git repo yourself.' % overlay)
363 worker.CommitChange(_GIT_COMMIT_MESSAGE % (package, commit_id)) 392 raise
364
365 except (OSError, IOError), e:
366 Warning('An exception occurred\n'
367 'Only the following packages were revved: %s\n'
368 'Note you will have to go into %s'
369 'and reset the git repo yourself.' %
370 (package_list[:index], overlay_directory))
371 raise e
372 elif command == 'push':
373 _PushChange()
374 393
375 394
376 if __name__ == '__main__': 395 if __name__ == '__main__':
377 main(sys.argv) 396 main(sys.argv)
378 397
OLDNEW
« no previous file with comments | « no previous file | cros_mark_as_stable_unittest.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698