[cig-commits] r7035 - in cs/buildbot/trunk/buildbot: . slave

leif at geodynamics.org leif at geodynamics.org
Fri Jun 1 13:29:40 PDT 2007


Author: leif
Date: 2007-06-01 13:29:40 -0700 (Fri, 01 Jun 2007)
New Revision: 7035

Modified:
   cs/buildbot/trunk/buildbot/config.py
   cs/buildbot/trunk/buildbot/lines.py
   cs/buildbot/trunk/buildbot/slave/commands.py
Log:
Enable projects to modify their own build environment.


Modified: cs/buildbot/trunk/buildbot/config.py
===================================================================
--- cs/buildbot/trunk/buildbot/config.py	2007-06-01 20:13:00 UTC (rev 7034)
+++ cs/buildbot/trunk/buildbot/config.py	2007-06-01 20:29:40 UTC (rev 7035)
@@ -40,15 +40,13 @@
         self.configs = configs
         return
 
-    def getEnv(self, config, branch):
+    def getEnv(self, config):
         basedir = "%(HOME)s"
-        filename = self.configFilename(config)
-        prefix = basedir + "/install/" + filename
-        builddir = 'build/' + filename + "/" + branch.project.name + "/" + branch.name
+        prefix = basedir + "/install/" + self.configFilename(config)
         env = {
             "HOME": "%(HOME)s", # expanded by the slave
+            "WORKDIR": "%(WORKDIR)s", # expanded by the slave
             "PREFIX": prefix,
-            "BUILDDIR": builddir,
             }
         env.update(config.env)
         bin = lambda p: p + "/bin"
@@ -118,8 +116,8 @@
         return
 
     def collectSchedulers(self):
-        for branch in self.lines:
-            self.schedulers.extend(branch.schedulers)
+        for line in self.lines:
+            self.schedulers.extend(line.schedulers)
         return
 
 
@@ -129,23 +127,22 @@
         self.collectLines()
         self.collectBots()
 
-        for branch in self.lines:
+        for line in self.lines:
 
             builderNames = []
 
             for buildEnv in self.buildEnvironments:
 
-                for config in buildEnv.configs:
+                for buildConfig in buildEnv.configs:
 
-                    env = buildEnv.getEnv(config, branch)
-                    slave = config.slave or buildEnv.defaultSlave
+                    slave = buildConfig.slave or buildEnv.defaultSlave
 
-                    builder = branch.newBuilder(buildEnv, config, env)
+                    builder = line.newBuilder(buildEnv, buildConfig)
                     builder['slavenames'] = [slave.name]
 
                     import os
                     from os.path import isdir, expanduser
-                    builddir = expanduser("~/master/" + env['BUILDDIR'])
+                    builddir = expanduser("~/master/" + builder['builddir'])
                     if not isdir(builddir):
                         os.makedirs(builddir)
 
@@ -156,13 +153,13 @@
                     # Add this builder to the global list of all builders.
                     self.builders.append(builder)
 
-                ### for config in buildEnv.configs
+                ### for buildConfig in buildEnv.configs
 
             ### for buildEnv in buildEnvironments
 
-            branch.generate(builderNames, self.schedulerKwds)
+            line.generate(builderNames, self.schedulerKwds)
 
-            owners = branch.project.owners
+            owners = line.project.owners
             if owners:
                 # set-up a mail notifier for this branch
                 mn = mail.MailNotifier(fromaddr="buildbot at geodynamics.org",
@@ -174,10 +171,10 @@
                                        )
                 self.status.append(mn)
 
-        ### for branch in lines
+        ### for line in lines
 
-        for branch in self.lines:
-            branch.postGenerate()
+        for line in self.lines:
+            line.postGenerate()
 
         self.collectSchedulers()
 

Modified: cs/buildbot/trunk/buildbot/lines.py
===================================================================
--- cs/buildbot/trunk/buildbot/lines.py	2007-06-01 20:13:00 UTC (rev 7034)
+++ cs/buildbot/trunk/buildbot/lines.py	2007-06-01 20:29:40 UTC (rev 7035)
@@ -22,6 +22,7 @@
                                  type = 'test')
         
         self.configs = {}
+        self.env = {}
         
         self.dependencies = []
         # Builds which depend upon me pull configure args from here.
@@ -85,11 +86,12 @@
         return
 
 
-    def newBuilder(self, buildEnv, buildConfig, env):
-        buildFactory = self.newBuildFactory(buildEnv, buildConfig, env)
+    def newBuilder(self, buildEnv, buildConfig):
+        builddir = 'build/' + buildEnv.configFilename(buildConfig) + "/" + self.project.name + "/" + self.name
+        buildFactory = self.newBuildFactory(buildEnv, buildConfig)
         builder = {
             'name'       : self.builderName(buildEnv, buildConfig),
-            'builddir'   : env['BUILDDIR'],
+            'builddir'   : builddir,
             'factory'    : buildFactory,
             'category'   : self.category,
             }
@@ -100,8 +102,11 @@
         return self.project.name + " " + self.name + " " + buildEnv.configName(buildConfig)
 
 
-    def newBuildFactory(self, buildEnv, buildConfig, env):
+    def newBuildFactory(self, buildEnv, buildConfig):
         
+        env = buildEnv.getEnv(buildConfig)
+        env.update(self.env)
+        
         steps = []
         
         if self.configs:

Modified: cs/buildbot/trunk/buildbot/slave/commands.py
===================================================================
--- cs/buildbot/trunk/buildbot/slave/commands.py	2007-06-01 20:13:00 UTC (rev 7034)
+++ cs/buildbot/trunk/buildbot/slave/commands.py	2007-06-01 20:29:40 UTC (rev 7035)
@@ -234,7 +234,11 @@
         self.sendRC = sendRC
         self.logfiles = logfiles
         self.workdir = workdir
+        
         self.environ = os.environ.copy()
+        # add useful variables for interpolation
+        self.environ['WORKDIR'] = workdir
+        
         if environ:
             for var in environ.keys():
                 if var.find('PATH') != -1:



More information about the cig-commits mailing list