From 21209a431d5412f8a50f9e8fc53aad426036382a Mon Sep 17 00:00:00 2001 From: thierry Date: Wed, 25 Mar 2009 14:51:40 +0000 Subject: [PATCH] rewrote all-builds --- scripts/all-builds.py | 181 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 181 insertions(+) create mode 100755 scripts/all-builds.py diff --git a/scripts/all-builds.py b/scripts/all-builds.py new file mode 100755 index 0000000..3f501b5 --- /dev/null +++ b/scripts/all-builds.py @@ -0,0 +1,181 @@ +#!/usr/bin/python +subversion_id = "$Id: module-tools.py 12136 2009-02-20 14:11:56Z thierry $" + +from optparse import OptionParser + +############################## +MAIN="/root/bin/vbuild-nightly.sh" +URL='http://svn.planet-lab.org/svn/' +MAILTO="-m build@onelab.eu" + +CURRENT_TRUNK='4.3' +DEFAULT_BRANCH='4.3' + +MAJOR_HASH = { + '4.2' : { 'latest':'rc27', + 'fcdistros' : ['f8'], + 'pldistros' : ['planetlab','onelab'], + 'tags': '-t %(pldistro)s-tags-4.2.mk', + }, + '4.3' : { 'latest': None, + 'fcdistros' : ['c5','f10','f8'], + 'pldistros' : ['planetlab','onelab'], +# 'tags': '-t %(pldistro)s-tags.mk', + 'tags': '', + }, +} + +############################## +def shortname (name): + if name == 'onelab': return '1l' + if name == '1l': return '1l' + if name == 'planetlab': return 'pl' + if name == 'pl': return 'pl' + if name == 'centos5': return 'c5' + if name == 'c5': return 'c5' + if name[0] == 'f': return name + return 'xx' + +def longname (name): + if name == 'onelab': return 'onelab' + if name == '1l': return 'onelab' + if name == 'planetlab': return 'planetlab' + if name == 'pl': return 'planetlab' + if name == 'centos5': return 'centos5' + if name == 'c5': return 'centos5' + if name[0] == 'f': return name + return 'xx' + +def latest_tag (branch): + try: + return MAJOR_HASH[branch]['latest'] + except: + print 'WARNING: unknown branch',branch + return None + +def default_fcdistros (branch): + try: + return MAJOR_HASH[branch]['fcdistros'] + except: + print 'WARNING: unknown branch',branch + raise + +def default_pldistros (branch): + try: + return MAJOR_HASH[branch]['pldistros'] + except: + print 'WARNING: unknown branch',branch + raise + +# return (branch,tag) +def parse_branch (major): + try: + [branch,tag]=major.split('-') + ## latest tag: use -b 4.2- or -b 4.2-latest + if not tag or tag[0]=='l': + tag=latest_tag(branch) + return (branch,tag) + except: + try: + [branch]=major.split('-') + return (branch,None) + except: + print 'could not parse major',major + raise + +def build_build_option (branch,tag): + if tag: + return ' -s ' + URL + "/build/tags/%(branch)s-%(tag)s"%locals() + if branch == CURRENT_TRUNK: +# return ' -s ' + URL + "/build/trunk"%locals() + return '' + else: + return ' -s ' + URL + "/build/branches/%(branch)s"%locals() + +def build_tags_option (branch): + try: + return MAJOR_HASH[branch]['tags']%locals() + except: + return ' -s ' + URL + "/build/branches/%(branch)s"%locals() + + +#################### +def optparse_list (option, opt, value, parser): + try: + setattr(parser.values,option.dest,getattr(parser.values,option.dest)+value.split()) + except: + setattr(parser.values,option.dest,value.split()) + +def main (): + usage="""Usage: %prog build-spec [ .. build-spec] + print out a list of nightly build commands to run +Examples: +%prog 4.3-rc01 -- to build 4.3-rc01 +%prog 4.3-l -- or +%prog 4.3- -- to build latest known rc for 4.3 +%prog 4.3 -- to build off the corresponding branch (or trunk) +""" + parser=OptionParser(usage=usage,version=subversion_id) + + parser.add_option("-f","--fcdistros",action="callback",callback=optparse_list, dest="fcdistros", + default=[], nargs=1,type="string", + help="""specify target fcdistros -- can be set multiple times, or use quotes""") + parser.add_option("-d","--distros",action="callback",callback=optparse_list, dest="pldistros", + default=[], nargs=1,type="string", + help="""specify target pldistros -- can be set multiple times, or use quotes""") + parser.add_option("-i","--bits",action="callback",callback=optparse_list, dest="bits", + default=[], nargs=1,type="string", + help="""specify target bits -- can be set multiple times, or use quotes""") + + parser.add_option("-b","--base", action="store", dest="base", default="@DATE@", + help="specify alternate base (default is @DATE@ on trunk)") + parser.add_option("-o","--overwrite",action="store_true",dest="overwrite",default=False, + help="pass -o rather than -b (from 4.3)") + + (options, args) = parser.parse_args() + + if not options.bits: options.bits=["32","64"] + base_option = '-b' + if options.overwrite: base_option='-o' + + if len(args) == 0: + parser.print_help() + sys.exit(1) + + for build in args: + (branch,tag) = parse_branch (build) + build_option=build_build_option(branch,tag) + tags_option = build_tags_option(branch) + + print '#################### build',build, + if tag: print 'tag',tag + else: print 'trunk (or branch)' + + if options.fcdistros: + fcdistros=options.fcdistros + else: + fcdistros=default_fcdistros(branch) + + if options.pldistros: + pldistros=options.pldistros + else: + pldistros=default_pldistros(branch) + + base=options.base + + for pldistro in pldistros: + for fcdistro in fcdistros: + for bit in options.bits: + p="linux"+bit + f=shortname(fcdistro) + d=shortname(pldistro) + + # trunk-like builds + if not tag: + buildname="%(base)s--%(d)s-%(f)s-%(bit)s"%locals() + else: + buildname="%(pldistro)s--%(branch)s-%(tag)s-%(f)s-%(bit)s"%locals() + + print MAIN,MAILTO,build_option,tags_option,'-d',pldistro,'-f',fcdistro,'-p',p,base_option,buildname + +main() -- 2.47.0