#!/usr/bin/python
-
###
# Nightly build spec HOWTO
#
# on the current build spec. e.g. in this case, it would be to the effect of lambda (build): if (build['fcdistro']=='f10') then ['linux32','linux64'] else ['linux32']
#
+#caglar_k32_build = {
+# 'tags':'planetlab-k32-tags.mk',
+# 'fcdistro':['f12', 'centos5','f8'],
+# 'personality':['linux32','linux64'],
+# 'test':0,
+# 'release':'k32'
+#}
+
+sapans_k27_build = {
+ 'tags':'planetlab-k27-tags.mk',
+ 'fcdistro':['f12', 'centos5','f8'],
+ 'personality':['linux32','linux64'],
+ 'test':0,
+ 'release':'k27'
+}
-marcs_trunk_build = {
+marcs_k22_build = {
'tags':'planetlab-tags.mk',
- 'fcdistro':['centos5','f8'],
+ 'fcdistro':['f12', 'centos5','f8'],
'personality':['linux32','linux64'],
'test': 0,
'release':'k22',
}
-
-sapans_k27_build = {
- 'tags':'k27-tags.mk',
- 'fcdistro':['centos5','f8'],
- 'personality':'linux32',
- 'test':1,
- 'release':'k27'
-}
###
#
def __check_out_build_script__(build):
import os
- tmpname = os.popen('mktemp /tmp/'+build['build-script']+'.XXXXXX').read().rstrip('\n')
- os.system("svn cat %s/%s > %s 2>/dev/null"%(build['svnpath'],build['build-script'],tmpname))
- return tmpname
+ tmpname = os.popen('mktemp -d /tmp/'+build['build-script']+'.XXXXXX').read().rstrip('\n')
+ os.system("git clone --depth 1 %s %s" % (scmpath, tmpname))
+ return "%s/%s" % (tmpname, build['build-script'])
def __today__():
import datetime
'webpath':'/vservers/build.planet-lab.org/var/www/html/install-rpms/archive',
'pldistro':'planetlab',
'date': __today__(),
- 'svnpath':'http://svn.planet-lab.org/svn/build/trunk',
+ 'scmpath':'git://git.planet-lab.org/build.git',
'personality':'linux32',
'myplcversion':'4.3',
-
### Parameters with dependencies: define paramater mappings as lambdas here
'arch':lambda build: __personality_to_arch__[build['personality']],
'runtests':lambda build: __flag_to_test__[build['test']],
'vbuildnightly':lambda build: __check_out_build_script__(build)
-
}
import os
import re
+import shlex
+import subprocess
+import time
+
+PARALLEL_BUILD = False
# Assemble a list of builds from a single build spec
def interpret_build(build, param_names, current_concrete_build={}, concrete_build_list=[]):
cmdline = '''%(sh)s
%(vbuildnightly)s
- -b %(pldistro)s-%(fcdistro)s-%(arch)s-%(myplcversion)s-%(release)s-%(date)s
+ -b pl-%(fcdistro)s-%(arch)s-%(myplcversion)s-%(release)s-%(date)s
-f %(fcdistro)s
-m %(mailto)s
-p %(personality)s
-r %(webpath)s
- -s %(svnpath)s
- -t %(tags)s
+ -s %(scmpath)s
+ -t %(tags)s
-w %(webpath)s/%(pldistro)s/%(fcdistro)s
%(runtests)s'''.replace('\n','')
concrete_builds = map(reduce_dependencies, concrete_builds_without_deps)
commandlines = map(concrete_build_to_commandline, concrete_builds)
for commandline in commandlines:
- os.system(commandline)
-
+ if PARALLEL_BUILD == True:
+ args = shlex.split(commandline)
+ subprocess.Popen(args)
+ # workaround the vserver race
+ time.sleep(60)
+ else:
+ os.system(commandline)
+
def main():
config_file = '/etc/build-conf-planetlab.py'
builds = {}