X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=run-nightlies.py;h=3c8035c4d75972fe40e10a6dc88ffcf6d25f789e;hb=8a1928b03173f47402401cd6bb1e28a531c3c2e4;hp=aac33ca1582250c9610dfd99e91f21bf46d16dff;hpb=1681d296f5d3a8700fc44ac55237907b527ef710;p=build.git diff --git a/run-nightlies.py b/run-nightlies.py index aac33ca1..3c8035c4 100755 --- a/run-nightlies.py +++ b/run-nightlies.py @@ -1,8 +1,17 @@ #!/usr/bin/python # Script to read build configs in /etc/build_conf.py, turn the configuration into command lines and execute it +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=[]): + if (param_names==[]): concrete_build_list.extend([current_concrete_build]) else: @@ -35,22 +44,24 @@ def complete_build_spec_with_defaults (build, default_build): # Turn a concrete build into a commandline def concrete_build_to_commandline(concrete_build): - import pdb - pdb.set_trace() + 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','') + %(runtests)s'''.replace('\n','') + cmdline = cmdline % concrete_build - return cmdline + purge_spaces = re.compile('\s+') + + return purge_spaces.sub(' ', cmdline) # reduce dependencies in a build @@ -66,14 +77,20 @@ def reduce_dependencies(concrete_build): def process_builds (builds, build_names, default_build): for build_name in build_names: build = complete_build_spec_with_defaults (builds[build_name], default_build) - concrete_builds_without_deps = interpret_build (build, build.keys()) - concrete_builds = map(lambda cb: reduce_dependencies(cb), concrete_builds_without_deps) - for concrete_build in concrete_builds: - build_commandline = concrete_build_to_commandline(concrete_build) - print build_commandline - + concrete_builds_without_deps = interpret_build (build, build.keys(), {}, []) + concrete_builds = map(reduce_dependencies, concrete_builds_without_deps) + commandlines = map(concrete_build_to_commandline, concrete_builds) + for commandline in commandlines: + 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 = './build_conf_planetlab.py' + config_file = '/etc/build-conf-planetlab.py' builds = {} try: execfile(config_file, builds)