--- /dev/null
+#!/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()