nodemanager was also moved to git and have a name change
[build.git] / run-nightlies.py
index aac33ca..3c8035c 100755 (executable)
@@ -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)