5 from optparse import OptionParser
7 ##############################
8 MAIN="/root/bin/vbuild-nightly.sh"
9 URL='http://svn.planet-lab.org/svn/'
10 MAILTO="-m build@onelab.eu"
16 '4.2' : { 'latest':'rc27',
18 'pldistros' : ['planetlab','onelab'],
19 'tags': '-t %(pldistro)s-tags-4.2.mk',
21 '4.3' : { 'latest': None,
22 'fcdistros' : ['centos5','f12','f10','f8'],
23 'pldistros' : ['onelab'],
24 'tags': '-t %(pldistro)s-tags.mk',
26 '5.0' : { 'latest': None,
27 'fcdistros' : ['centos5','f12','f10','f8'],
28 'pldistros' : ['onelab'],
29 'tags': '-t %(pldistro)s-k27-tags.mk',
33 ##############################
35 if name == 'onelab': return '1l'
36 if name == '1l': return '1l'
37 if name == 'planetlab': return 'pl'
38 if name == 'pl': return 'pl'
39 if name == 'centos5': return 'c5'
40 if name == 'c5': return 'c5'
41 if name=='gnuradio': return name
42 if name[0] == 'f': return name
46 if name == 'onelab': return 'onelab'
47 if name == '1l': return 'onelab'
48 if name == 'planetlab': return 'planetlab'
49 if name == 'pl': return 'planetlab'
50 if name == 'centos5': return 'centos5'
51 if name == 'c5': return 'centos5'
52 if name=='gnuradio': return name
53 if name[0] == 'f': return name
56 def latest_tag (branch):
58 return MAJOR_HASH[branch]['latest']
60 print 'WARNING: unknown branch',branch
63 def default_fcdistros (branch):
65 return MAJOR_HASH[branch]['fcdistros']
67 print 'WARNING: unknown branch',branch
70 def default_pldistros (branch):
72 return MAJOR_HASH[branch]['pldistros']
74 print 'WARNING: unknown branch',branch
78 def parse_branch (major):
80 [branch,tag]=major.split('-')
81 ## latest tag: use -b 4.2- or -b 4.2-latest
82 if not tag or tag[0]=='l':
83 tag=latest_tag(branch)
87 [branch]=major.split('-')
90 print 'could not parse major',major
93 def build_build_option (branch,tag):
95 return ' -s ' + URL + "build/tags/%(branch)s-%(tag)s"%locals()
96 if branch == CURRENT_TRUNK:
97 # return ' -s ' + URL + "build/trunk"%locals()
100 return ' -s ' + URL + "build/branches/%(branch)s"%locals()
102 def build_tags_option (branch,locals_dict):
104 return MAJOR_HASH[branch]['tags']%locals_dict
106 return '---------- could not set up tags option ----------'
109 def optparse_list (option, opt, value, parser):
111 setattr(parser.values,option.dest,getattr(parser.values,option.dest)+value.split())
113 setattr(parser.values,option.dest,value.split())
116 usage="""Usage: %prog build-spec [ .. build-spec]
117 print out a list of nightly build commands to run
119 %prog 4.3-rc01 -- to build 4.3-rc01
121 %prog 4.3- -- to build latest known rc for 4.3
122 %prog 4.3 -- to build off the corresponding branch (or trunk)
124 parser=OptionParser(usage=usage,version=subversion_id)
126 parser.add_option("-f","--fcdistros",action="callback",callback=optparse_list, dest="fcdistros",
127 default=[], nargs=1,type="string",
128 help="""specify target fcdistros -- can be set multiple times, or use quotes""")
129 parser.add_option("-d","--distros",action="callback",callback=optparse_list, dest="pldistros",
130 default=[], nargs=1,type="string",
131 help="""specify target pldistros -- can be set multiple times, or use quotes""")
132 parser.add_option("-i","--bits",action="callback",callback=optparse_list, dest="bits",
133 default=[], nargs=1,type="string",
134 help="""specify target bits -- can be set multiple times, or use quotes""")
136 parser.add_option("-b","--base", action="store", dest="base", default="@DATE@",
137 help="specify alternate base (default is @DATE@ on trunk)")
138 parser.add_option("-o","--overwrite",action="store_true",dest="overwrite",default=False,
139 help="pass -o rather than -b (from 4.3)")
141 (options, args) = parser.parse_args()
143 if not options.bits: options.bits=["32","64"]
145 if options.overwrite: base_option='-o'
152 (branch,tag) = parse_branch (build)
153 build_option=build_build_option(branch,tag)
155 print '#################### build',build,
156 if tag: print 'tag',tag
157 else: print 'trunk (or branch)'
159 if options.fcdistros:
160 fcdistros=options.fcdistros
162 fcdistros=default_fcdistros(branch)
164 if options.pldistros:
165 pldistros=options.pldistros
167 pldistros=default_pldistros(branch)
171 for pldistro in pldistros:
172 tags_option = build_tags_option(branch,locals())
173 for fcdistro in fcdistros:
174 for bit in options.bits:
176 f=shortname(fcdistro)
177 d=shortname(pldistro)
181 if branch == CURRENT_TRUNK:
182 buildname="%(base)s--%(d)s-%(f)s-%(bit)s"%locals()
184 buildname="%(base)s--%(branch)s--%(d)s-%(f)s-%(bit)s"%locals()
187 buildname="%(pldistro)s--%(branch)s-%(tag)s-%(f)s-%(bit)s"%locals()
189 print MAIN,MAILTO,build_option,tags_option,'-d',pldistro,'-f',fcdistro,'-p',p,base_option,buildname