OLD | NEW |
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 378 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
389 | 389 |
390 class EBuildStableMarker(object): | 390 class EBuildStableMarker(object): |
391 """Class that revs the ebuild and commits locally or pushes the change.""" | 391 """Class that revs the ebuild and commits locally or pushes the change.""" |
392 | 392 |
393 def __init__(self, ebuild): | 393 def __init__(self, ebuild): |
394 assert ebuild | 394 assert ebuild |
395 self._ebuild = ebuild | 395 self._ebuild = ebuild |
396 | 396 |
397 @classmethod | 397 @classmethod |
398 def MarkAsStable(cls, unstable_ebuild_path, new_stable_ebuild_path, | 398 def MarkAsStable(cls, unstable_ebuild_path, new_stable_ebuild_path, |
399 commit_keyword, commit_value, redirect_file=None): | 399 commit_keyword, commit_value, redirect_file=None, |
| 400 make_stable=True): |
400 """Static function that creates a revved stable ebuild. | 401 """Static function that creates a revved stable ebuild. |
401 | 402 |
402 This function assumes you have already figured out the name of the new | 403 This function assumes you have already figured out the name of the new |
403 stable ebuild path and then creates that file from the given unstable | 404 stable ebuild path and then creates that file from the given unstable |
404 ebuild and marks it as stable. If the commit_value is set, it also | 405 ebuild and marks it as stable. If the commit_value is set, it also |
405 set the commit_keyword=commit_value pair in the ebuild. | 406 set the commit_keyword=commit_value pair in the ebuild. |
406 | 407 |
407 Args: | 408 Args: |
408 unstable_ebuild_path: The path to the unstable ebuild. | 409 unstable_ebuild_path: The path to the unstable ebuild. |
409 new_stable_ebuild_path: The path you want to use for the new stable | 410 new_stable_ebuild_path: The path you want to use for the new stable |
410 ebuild. | 411 ebuild. |
411 commit_keyword: Optional keyword to set in the ebuild to mark it as | 412 commit_keyword: Optional keyword to set in the ebuild to mark it as |
412 stable. | 413 stable. |
413 commit_value: Value to set the above keyword to. | 414 commit_value: Value to set the above keyword to. |
414 redirect_file: Optionally redirect output of new ebuild somewhere else. | 415 redirect_file: Optionally redirect output of new ebuild somewhere else. |
| 416 make_stable: Actually make the ebuild stable. |
415 """ | 417 """ |
416 shutil.copyfile(unstable_ebuild_path, new_stable_ebuild_path) | 418 shutil.copyfile(unstable_ebuild_path, new_stable_ebuild_path) |
417 for line in fileinput.input(new_stable_ebuild_path, inplace=1): | 419 for line in fileinput.input(new_stable_ebuild_path, inplace=1): |
418 # Has to be done here to get changes to sys.stdout from fileinput.input. | 420 # Has to be done here to get changes to sys.stdout from fileinput.input. |
419 if not redirect_file: | 421 if not redirect_file: |
420 redirect_file = sys.stdout | 422 redirect_file = sys.stdout |
421 if line.startswith('KEYWORDS'): | 423 if line.startswith('KEYWORDS'): |
422 # Actually mark this file as stable by removing ~'s. | 424 # Actually mark this file as stable by removing ~'s. |
423 redirect_file.write(line.replace('~', '')) | 425 if make_stable: |
| 426 redirect_file.write(line.replace('~', '')) |
| 427 else: |
| 428 redirect_file.write(line) |
424 elif line.startswith('EAPI'): | 429 elif line.startswith('EAPI'): |
425 # Always add new commit_id after EAPI definition. | 430 # Always add new commit_id after EAPI definition. |
426 redirect_file.write(line) | 431 redirect_file.write(line) |
427 if commit_keyword and commit_value: | 432 if commit_keyword and commit_value: |
428 redirect_file.write('%s="%s"\n' % (commit_keyword, commit_value)) | 433 redirect_file.write('%s="%s"\n' % (commit_keyword, commit_value)) |
429 elif not line.startswith(commit_keyword): | 434 elif not line.startswith(commit_keyword): |
430 # Skip old commit_keyword definition. | 435 # Skip old commit_keyword definition. |
431 redirect_file.write(line) | 436 redirect_file.write(line) |
432 fileinput.close() | 437 fileinput.close() |
433 | 438 |
(...skipping 138 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
572 if gflags.FLAGS.drop_file: | 577 if gflags.FLAGS.drop_file: |
573 fh = open(gflags.FLAGS.drop_file, 'w') | 578 fh = open(gflags.FLAGS.drop_file, 'w') |
574 fh.write(' '.join(revved_packages)) | 579 fh.write(' '.join(revved_packages)) |
575 fh.close() | 580 fh.close() |
576 else: | 581 else: |
577 work_branch.Delete() | 582 work_branch.Delete() |
578 | 583 |
579 | 584 |
580 if __name__ == '__main__': | 585 if __name__ == '__main__': |
581 main(sys.argv) | 586 main(sys.argv) |
OLD | NEW |