Index: bin/cbuildbot.py |
diff --git a/bin/cbuildbot.py b/bin/cbuildbot.py |
index 9ea7270ee29c5b121e0d97c3e757babe28b3f0f9..66c4871d5277a029314ca9b618128569e4892935 100755 |
--- a/bin/cbuildbot.py |
+++ b/bin/cbuildbot.py |
@@ -17,11 +17,12 @@ _DEFAULT_RETRIES=3 |
# Utility functions |
-def RunCommand(cmd, error_ok=False, error_message=None, exit_code=False, |
- redirect_stdout=False, redirect_stderr=False, cwd=None, |
- input=None): |
+def RunCommand(cmd, print_cmd=True, error_ok=False, error_message=None, |
+ exit_code=False, redirect_stdout=False, redirect_stderr=False, |
+ cwd=None, input=None): |
# Print out the command before running. |
- print >>sys.stderr, "CBUILDBOT -- RunCommand:", ' '.join(cmd) |
+ if print_cmd: |
+ print >> sys.stderr, "CBUILDBOT -- RunCommand:", ' '.join(cmd) |
if redirect_stdout: |
stdout = subprocess.PIPE |
else: |
@@ -47,7 +48,7 @@ def RunCommand(cmd, error_ok=False, error_message=None, exit_code=False, |
def MakeDir(path, parents=False): |
try: |
os.makedirs(path) |
- except OSError,e: |
+ except OSError, e: |
if e.errno == errno.EEXIST and parents: |
pass |
else: |
@@ -100,12 +101,26 @@ def _Build(buildroot): |
cwd = os.path.join(buildroot, 'src', 'scripts') |
RunCommand(['./build_packages'], cwd=cwd) |
-def _UprevPackages(buildroot): |
+def _UprevAllPackages(buildroot): |
cwd = os.path.join(buildroot, 'src', 'scripts') |
RunCommand(['./enter_chroot.sh', '--', './cros_mark_all_as_stable', |
'--tracking_branch="cros/master"'], |
cwd=cwd) |
+def _UprevPackages(buildroot, revisionfile): |
+ revisions = None |
+ if (revision_file): |
+ rev_file = revisionfile.open(revisionfile) |
+ revisions = rev_file.read() |
+ rev_file.close() |
+ |
+ # Note: Revisions == "None" indicates a Force Build. |
+ if revisions and revisions != 'None': |
+ print 'CBUILDBOT - Revision list found %s' % revisions |
+ print 'Revision list not yet propagating to build, marking all instead' |
+ |
+ _UprevAllPackages(buildroot) |
+ |
def _UprevCleanup(buildroot): |
cwd = os.path.join(buildroot, 'src', 'scripts') |
RunCommand(['./cros_mark_as_stable', '--srcroot=..', |
@@ -137,13 +152,21 @@ def main(): |
help='root directory where build occurs', default=".") |
parser.add_option('-n', '--buildnumber', |
help='build number', type='int', default=0) |
+ parser.add_option('-f', '--revisionfile', |
+ help='file where new revisions are stored') |
+ parser.add_option('--noclobber', action='store_false', dest='clobber', |
+ default=True, |
+ help='Disables clobbering the buildroot on failure') |
(options, args) = parser.parse_args() |
buildroot = options.buildroot |
+ revisionfile = options.revisionfile |
+ clobber = options.clobber |
+ |
if len(args) == 1: |
buildconfig = _GetConfig(args[0]) |
else: |
- print >>sys.stderr, "Missing configuration description" |
+ print >> sys.stderr, "Missing configuration description" |
parser.print_usage() |
sys.exit(1) |
try: |
@@ -158,14 +181,15 @@ def main(): |
if not os.path.isdir(boardpath): |
_SetupBoard(buildroot, board=buildconfig['board']) |
if buildconfig['uprev']: |
- _UprevPackages(buildroot) |
+ _UprevPackages(buildroot, revisionfile) |
_Build(buildroot) |
if buildconfig['uprev']: |
_UprevPush(buildroot) |
_UprevCleanup(buildroot) |
except: |
# something went wrong, cleanup (being paranoid) for next build |
- RunCommand(['sudo', 'rm', '-rf', buildroot]) |
+ if clobber: |
+ RunCommand(['sudo', 'rm', '-rf', buildroot], print_cmd=False) |
raise |
if __name__ == '__main__': |