[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