Add branch support to preflight

Change-Id: Ia2592c6384e94e4e8e5400eddbf2e03aac150eef

BUG=7905
TEST=run cbuildbot on my workstation.

Review URL: http://codereview.chromium.org/4040002
This commit is contained in:
Anush Elangovan 2010-10-22 09:24:43 -07:00
parent 01693fec80
commit a6b1390fc5

View File

@ -177,7 +177,7 @@ def _ParseRevisionString(revision_string, repo_dictionary):
return revisions.items() return revisions.items()
def _UprevFromRevisionList(buildroot, revision_list): def _UprevFromRevisionList(buildroot, tracking_branch, revision_list):
"""Uprevs based on revision list.""" """Uprevs based on revision list."""
if not revision_list: if not revision_list:
Info('No packages found to uprev') Info('No packages found to uprev')
@ -191,17 +191,17 @@ def _UprevFromRevisionList(buildroot, revision_list):
cwd = os.path.join(buildroot, 'src', 'scripts') cwd = os.path.join(buildroot, 'src', 'scripts')
RunCommand(['./cros_mark_as_stable', RunCommand(['./cros_mark_as_stable',
'--tracking_branch="cros/master"', '--tracking_branch="%s"' % tracking_branch,
'--packages="%s"' % package_str, '--packages="%s"' % package_str,
'commit'], 'commit'],
cwd=cwd, enter_chroot=True) cwd=cwd, enter_chroot=True)
def _UprevAllPackages(buildroot): def _UprevAllPackages(buildroot, tracking_branch):
"""Uprevs all packages that have been updated since last uprev.""" """Uprevs all packages that have been updated since last uprev."""
cwd = os.path.join(buildroot, 'src', 'scripts') cwd = os.path.join(buildroot, 'src', 'scripts')
RunCommand(['./cros_mark_as_stable', '--all', RunCommand(['./cros_mark_as_stable', '--all',
'--tracking_branch="cros/master"', 'commit'], '--tracking_branch="%s"' % tracking_branch, 'commit'],
cwd=cwd, enter_chroot=True) cwd=cwd, enter_chroot=True)
@ -253,12 +253,16 @@ def _PreFlightRinse(buildroot):
RunCommand(['sudo', 'killall', 'kvm'], error_ok=True) RunCommand(['sudo', 'killall', 'kvm'], error_ok=True)
def _FullCheckout(buildroot, rw_checkout=True, retries=_DEFAULT_RETRIES): def _FullCheckout(buildroot, tracking_branch, rw_checkout=True,
retries=_DEFAULT_RETRIES,
url='http://git.chromium.org/git/manifest'):
"""Performs a full checkout and clobbers any previous checkouts.""" """Performs a full checkout and clobbers any previous checkouts."""
RunCommand(['sudo', 'rm', '-rf', buildroot]) RunCommand(['sudo', 'rm', '-rf', buildroot])
MakeDir(buildroot, parents=True) MakeDir(buildroot, parents=True)
RunCommand(['repo', 'init', '-u', 'http://git.chromium.org/git/manifest'], branch = tracking_branch.split('/');
cwd=buildroot, input='\n\ny\n') RunCommand(['repo', 'init', '-u',
url, '-b',
'%s' % branch[-1]], cwd=buildroot, input='\n\ny\n')
RepoSync(buildroot, rw_checkout, retries) RepoSync(buildroot, rw_checkout, retries)
@ -326,7 +330,7 @@ def _RunSmokeSuite(buildroot):
], cwd=cwd, error_ok=False) ], cwd=cwd, error_ok=False)
def _UprevPackages(buildroot, revisionfile, board): def _UprevPackages(buildroot, tracking_branch, revisionfile, board):
"""Uprevs a package based on given revisionfile. """Uprevs a package based on given revisionfile.
If revisionfile is set to None or does not resolve to an actual file, this If revisionfile is set to None or does not resolve to an actual file, this
@ -355,17 +359,17 @@ def _UprevPackages(buildroot, revisionfile, board):
# print >> sys.stderr, 'CBUILDBOT Revision list found %s' % revisions # print >> sys.stderr, 'CBUILDBOT Revision list found %s' % revisions
# revision_list = _ParseRevisionString(revisions, # revision_list = _ParseRevisionString(revisions,
# _CreateRepoDictionary(buildroot, board)) # _CreateRepoDictionary(buildroot, board))
# _UprevFromRevisionList(buildroot, revision_list) # _UprevFromRevisionList(buildroot, tracking_branch, revision_list)
#else: #else:
Info('CBUILDBOT Revving all') Info('CBUILDBOT Revving all')
_UprevAllPackages(buildroot) _UprevAllPackages(buildroot, tracking_branch)
def _UprevPush(buildroot): def _UprevPush(buildroot, tracking_branch):
"""Pushes uprev changes to the main line.""" """Pushes uprev changes to the main line."""
cwd = os.path.join(buildroot, 'src', 'scripts') cwd = os.path.join(buildroot, 'src', 'scripts')
RunCommand(['./cros_mark_as_stable', '--srcroot=..', RunCommand(['./cros_mark_as_stable', '--srcroot=..',
'--tracking_branch="cros/master"', '--tracking_branch="%s"' % tracking_branch,
'--push_options="--bypass-hooks -f"', 'push'], '--push_options="--bypass-hooks -f"', 'push'],
cwd=cwd) cwd=cwd)
@ -408,10 +412,17 @@ def main():
parser.add_option('--debug', action='store_true', dest='debug', parser.add_option('--debug', action='store_true', dest='debug',
default=False, default=False,
help='Override some options to run as a developer.') help='Override some options to run as a developer.')
parser.add_option('-t', '--tracking-branch', dest='tracking_branch',
default='cros/master', help='Run the buildbot on a branch')
parser.add_option('-u', '--url', dest='url',
default='http://git.chromium.org/git/manifest',
help='Run the buildbot on internal manifest')
(options, args) = parser.parse_args() (options, args) = parser.parse_args()
buildroot = options.buildroot buildroot = options.buildroot
revisionfile = options.revisionfile revisionfile = options.revisionfile
tracking_branch = options.tracking_branch
if len(args) >= 1: if len(args) >= 1:
buildconfig = _GetConfig(args[-1]) buildconfig = _GetConfig(args[-1])
@ -423,7 +434,7 @@ def main():
try: try:
_PreFlightRinse(buildroot) _PreFlightRinse(buildroot)
if options.clobber or not os.path.isdir(buildroot): if options.clobber or not os.path.isdir(buildroot):
_FullCheckout(buildroot) _FullCheckout(buildroot, tracking_branch, url=options.url)
else: else:
_IncrementalCheckout(buildroot) _IncrementalCheckout(buildroot)
@ -436,7 +447,8 @@ def main():
_SetupBoard(buildroot, board=buildconfig['board']) _SetupBoard(buildroot, board=buildconfig['board'])
if buildconfig['uprev']: if buildconfig['uprev']:
_UprevPackages(buildroot, revisionfile, board=buildconfig['board']) _UprevPackages(buildroot, tracking_branch, revisionfile,
board=buildconfig['board'])
_EnableLocalAccount(buildroot) _EnableLocalAccount(buildroot)
_Build(buildroot) _Build(buildroot)
@ -455,7 +467,7 @@ def main():
if buildconfig['master']: if buildconfig['master']:
# Master bot needs to check if the other slaves completed. # Master bot needs to check if the other slaves completed.
if cbuildbot_comm.HaveSlavesCompleted(config): if cbuildbot_comm.HaveSlavesCompleted(config):
_UprevPush(buildroot) _UprevPush(buildroot, tracking_branch)
else: else:
Die('CBUILDBOT - One of the slaves has failed!!!') Die('CBUILDBOT - One of the slaves has failed!!!')