4 from optparse import OptionParser
6 ##############################
7 MAIN="/root/bin/vbuild-nightly.sh"
8 URL='http://svn.planet-lab.org/svn/'
9 MAILTO="-m build@onelab.eu"
15 '4.2' : { 'latest':'rc27',
17 'pldistros' : ['planetlab','onelab'],
18 'tags': '-t %(pldistro)s-tags-4.2.mk',
20 '4.3' : { 'latest': None,
21 'fcdistros' : ['centos5','f10','f8'],
22 'pldistros' : ['planetlab','onelab'],
23 # 'tags': '-t %(pldistro)s-tags.mk',
28 ##############################
30 if name == 'onelab': return '1l'
31 if name == '1l': return '1l'
32 if name == 'planetlab': return 'pl'
33 if name == 'pl': return 'pl'
34 if name == 'centos5': return 'c5'
35 if name == 'c5': return 'c5'
36 if name=='gnuradio': return name
37 if name[0] == 'f': return name
41 if name == 'onelab': return 'onelab'
42 if name == '1l': return 'onelab'
43 if name == 'planetlab': return 'planetlab'
44 if name == 'pl': return 'planetlab'
45 if name == 'centos5': return 'centos5'
46 if name == 'c5': return 'centos5'
47 if name=='gnuradio': return name
48 if name[0] == 'f': return name
51 def latest_tag (branch):
53 return MAJOR_HASH[branch]['latest']
55 print 'WARNING: unknown branch',branch
58 def default_fcdistros (branch):
60 return MAJOR_HASH[branch]['fcdistros']
62 print 'WARNING: unknown branch',branch
65 def default_pldistros (branch):
67 return MAJOR_HASH[branch]['pldistros']
69 print 'WARNING: unknown branch',branch
73 def parse_branch (major):
75 [branch,tag]=major.split('-')
76 ## latest tag: use -b 4.2- or -b 4.2-latest
77 if not tag or tag[0]=='l':
78 tag=latest_tag(branch)
82 [branch]=major.split('-')
85 print 'could not parse major',major
88 def build_build_option (branch,tag):
90 return ' -s ' + URL + "build/tags/%(branch)s-%(tag)s"%locals()
91 if branch == CURRENT_TRUNK:
92 # return ' -s ' + URL + "build/trunk"%locals()
95 return ' -s ' + URL + "build/branches/%(branch)s"%locals()
97 def build_tags_option (branch,locals_dict):
99 return MAJOR_HASH[branch]['tags']%locals_dict
101 return '---------- could not set up tags option ----------'
104 def optparse_list (option, opt, value, parser):
106 setattr(parser.values,option.dest,getattr(parser.values,option.dest)+value.split())
108 setattr(parser.values,option.dest,value.split())
111 usage="""Usage: %prog build-spec [ .. build-spec]
112 print out a list of nightly build commands to run
114 %prog 4.3-rc01 -- to build 4.3-rc01
116 %prog 4.3- -- to build latest known rc for 4.3
117 %prog 4.3 -- to build off the corresponding branch (or trunk)
119 parser=OptionParser(usage=usage,version=subversion_id)
121 parser.add_option("-f","--fcdistros",action="callback",callback=optparse_list, dest="fcdistros",
122 default=[], nargs=1,type="string",
123 help="""specify target fcdistros -- can be set multiple times, or use quotes""")
124 parser.add_option("-d","--distros",action="callback",callback=optparse_list, dest="pldistros",
125 default=[], nargs=1,type="string",
126 help="""specify target pldistros -- can be set multiple times, or use quotes""")
127 parser.add_option("-i","--bits",action="callback",callback=optparse_list, dest="bits",
128 default=[], nargs=1,type="string",
129 help="""specify target bits -- can be set multiple times, or use quotes""")
131 parser.add_option("-b","--base", action="store", dest="base", default="@DATE@",
132 help="specify alternate base (default is @DATE@ on trunk)")
133 parser.add_option("-o","--overwrite",action="store_true",dest="overwrite",default=False,
134 help="pass -o rather than -b (from 4.3)")
136 (options, args) = parser.parse_args()
138 if not options.bits: options.bits=["32","64"]
140 if options.overwrite: base_option='-o'
147 (branch,tag) = parse_branch (build)
148 build_option=build_build_option(branch,tag)
150 print '#################### build',build,
151 if tag: print 'tag',tag
152 else: print 'trunk (or branch)'
154 if options.fcdistros:
155 fcdistros=options.fcdistros
157 fcdistros=default_fcdistros(branch)
159 if options.pldistros:
160 pldistros=options.pldistros
162 pldistros=default_pldistros(branch)
166 for pldistro in pldistros:
167 tags_option = build_tags_option(branch,locals())
168 for fcdistro in fcdistros:
169 for bit in options.bits:
171 f=shortname(fcdistro)
172 d=shortname(pldistro)
176 if branch == CURRENT_TRUNK:
177 buildname="%(base)s--%(d)s-%(f)s-%(bit)s"%locals()
179 buildname="%(base)s--%(branch)s--%(d)s-%(f)s-%(bit)s"%locals()
182 buildname="%(pldistro)s--%(branch)s-%(tag)s-%(f)s-%(bit)s"%locals()
184 print MAIN,MAILTO,build_option,tags_option,'-d',pldistro,'-f',fcdistro,'-p',p,base_option,buildname