$include_dir="/home/hyper-archives/boost-commit/include"; include("$include_dir/msg-header.inc") ?>
From: grafikrobot_at_[hidden]
Date: 2007-08-13 02:12:15
Author: grafik
Date: 2007-08-13 02:11:14 EDT (Mon, 13 Aug 2007)
New Revision: 38615
URL: http://svn.boost.org/trac/boost/changeset/38615
Log:
SVN update and bjam build commands working.
Text files modified: 
   trunk/tools/buildbot/config/master/alpha/master.cfg |     4                                         
   trunk/tools/buildbot/src/boost/bot/factory.py       |   131 +++++++++++++++++++-------------------- 
   trunk/tools/buildbot/src/boost/bot/remote.py        |    13 ++-                                     
   trunk/tools/buildbot/src/boost/bot/step.py          |    23 ++++--                                  
   trunk/tools/buildbot/src/buildbot.py                |     4 +                                       
   5 files changed, 95 insertions(+), 80 deletions(-)
Modified: trunk/tools/buildbot/config/master/alpha/master.cfg
==============================================================================
--- trunk/tools/buildbot/config/master/alpha/master.cfg	(original)
+++ trunk/tools/buildbot/config/master/alpha/master.cfg	2007-08-13 02:11:14 EDT (Mon, 13 Aug 2007)
@@ -40,7 +40,9 @@
 from boost.bot.factory import Boost_BuildFactory, action
 
 factoryFull = Boost_BuildFactory(
-    action('svn',root='http://svn.boost.org/svn/boost/')
+    action('svn',root='http://svn.boost.org/svn/boost/'),
+    action('bjam_build'),
+    action('test_tools_build', toolset='gcc')
     )
 
 c['builders'] = []
Modified: trunk/tools/buildbot/src/boost/bot/factory.py
==============================================================================
--- trunk/tools/buildbot/src/boost/bot/factory.py	(original)
+++ trunk/tools/buildbot/src/boost/bot/factory.py	2007-08-13 02:11:14 EDT (Mon, 13 Aug 2007)
@@ -96,7 +96,7 @@
 
     def action_tarball(self,b,*args,**kwargs):
         return (
-            [ s( boost.buildbot.step.Tarball
+            [ s( boost.bot.step.Tarball
                 ,description = kwargs.get('description')
                 ,archive = kwargs.get('archive',b.workdir)
                 ,publishdir = kwargs['publishdir']
@@ -107,7 +107,7 @@
 
     def action_selfupdate(self,b,*args,**kwargs):
         return (
-            [ s( boost.buildbot.step.SelfUpdate
+            [ s( boost.bot.step.SelfUpdate
                 ,description = kwargs.get('description')
                 ,**defaults(**kwargs)
                 ) ],
@@ -115,10 +115,10 @@
     
     def action_bjam_build(self,b,*args,**kwargs):
         return (
-            [ s( boost.buildbot.step.Boost_Jam_Build
+            [ s( boost.bot.step.Boost_Jam_Build
                 ,description = kwargs.get('description')
                 ,workdir = b.workdir
-                ,jam_src = kwargs.get('jam_src','tools/build/jam_src')
+                ,jam_src = kwargs.get('jam_src','tools/jam/src')
                 ,toolset = kwargs.get('toolset',None)
                 ,**defaults(**kwargs)
                 ) ],
@@ -126,14 +126,14 @@
     
     def action_bjam(self,b,*args,**kwargs):
         return (
-            [ s( boost.buildbot.step.Boost_Jam
+            [ s( boost.bot.step.Boost_Jam
                 ,description = kwargs.get('description')
                 ,workdir = b.workdir
-                ,bjam = kwargs.get('bjam','tools/build/jam_src/bin/bjam')
+                ,bjam = kwargs.get('bjam','tools/jam/src/bin/bjam')
                 ,project = kwargs.get('project','.')
                 ,options = kwargs.get('options',[])
                 ,target = kwargs.get('target','all')
-                ,locate = kwargs.get('locate','build')
+                ,locate = kwargs.get('locate','results')
                 ,env = kwargs.get('env',{})
                 ,logfile = kwargs.get('logfile',False)
                 ,**defaults(**kwargs)
@@ -145,22 +145,21 @@
             ,description = kwargs.get('description',['test tools','build'])
             ,project = 'tools/regression/build'
             ,options = [
-                '-sBUILD=release',
-                '-sTOOLS=%s' % kwargs['toolset']
+                'toolset=%s' % kwargs['toolset']
                 ] + kwargs.get('options',[])
-            ,target = 'run'
-            ,locate = kwargs.get('locate','build')
+            ,target = 'release'
+            ,locate = kwargs.get('locate','results')
             ,env = kwargs.get('env',{})
             ,**defaults(**kwargs)
             )
 
     def action_btest(self,b,*args,**kwargs):
         return (
-            [ s( boost.buildbot.step.Boost_Test
+            [ s( boost.bot.step.Boost_Test
                 ,description = kwargs.get('description')
                 ,workdir = b.workdir
                 ,tests = kwargs.get('tests',['.*'])
-                ,bjam = kwargs.get('bjam','tools/build/jam_src/bin/bjam')
+                ,bjam = kwargs.get('bjam','tools/jam/src/bin/bjam')
                 ,project = kwargs.get('project','status')
                 ,options = kwargs.get('options',[
                     '--dump-tests',
@@ -169,7 +168,7 @@
                     '-sTOOLS=%s' % kwargs['toolset']
                     ] + kwargs.get('options',[]))
                 ,target = 'nothing'
-                ,locate = kwargs.get('locate','build')
+                ,locate = kwargs.get('locate','results')
                 ,env = kwargs.get('env',{})
                 ,logfile = kwargs.get('logfile','bjam.log')
                 ,**defaults(**kwargs)
@@ -187,7 +186,7 @@
                 '-sTOOLS=%s' % kwargs['toolset']
                 ] + kwargs.get('options',[])
             ,target = 'test'
-            ,locate = kwargs.get('locate','build')
+            ,locate = kwargs.get('locate','results')
             ,env = kwargs.get('env',{})
             ,logfile = kwargs.get('logfile','bjam.log')
             ,files = kwargs.get('files',['boost.*','libs.*','status.*'])
@@ -196,11 +195,11 @@
 
     def action_process_jam_log(self,b,*args,**kwargs):
         return (
-            [ s( boost.buildbot.step.Boost_Process_Jam_Log
+            [ s( boost.bot.step.Boost_Process_Jam_Log
                 ,description = kwargs.get('description',['process log'])
                 ,workdir = b.workdir
                 ,projcess_jam_log = kwargs.get('projcess_jam_log','tools/regression/build/run/process_jam_log')
-                ,locate = kwargs.get('locate','build')
+                ,locate = kwargs.get('locate','results')
                 ,logfile = kwargs.get('logfile','bjam.log')
                 ,**defaults(**kwargs)
                 ) ],
@@ -208,10 +207,10 @@
     
     def action_collect_results(self,b,*args,**kwargs):
         return (
-            [ s( boost.buildbot.step.Boost_Collect_Results
+            [ s( boost.bot.step.Boost_Collect_Results
                 ,description = kwargs.get('description')
                 ,workdir = b.workdir
-                ,locate = kwargs.get('locate',b.options.get('locate','build'))
+                ,locate = kwargs.get('locate',b.options.get('locate','results'))
                 ,runner = kwargs['runner']
                 ,branch = kwargs['branch']
                 ,source_type = kwargs['source_type']
@@ -221,10 +220,10 @@
     
     def action_publish_results(self,b,*args,**kwargs):
         return (
-            [ s( boost.buildbot.step.Boost_Publish_Results
+            [ s( boost.bot.step.Boost_Publish_Results
                 ,description = kwargs.get('description')
                 ,workdir = b.workdir
-                ,locate = kwargs.get('locate',b.options.get('locate','build'))
+                ,locate = kwargs.get('locate',b.options.get('locate','results'))
                 ,runner = kwargs['runner']
                 ,branch = kwargs['branch']
                 ,source_type = kwargs['source_type']
@@ -241,55 +240,55 @@
         self.important_files = []
         self.important_re = None
     
-    def isFileImportant(self, filename):
-        if self.important_re == None:
-            self.important_re = []
-            for file in self.important_files:
-                self.important_re.append(re.compile(file))
-        for file_re in self.important_re:
-            if file_re.search(filename):
-                return 1;
-        return 0
+    #~ def isFileImportant(self, filename):
+        #~ if self.important_re == None:
+            #~ self.important_re = []
+            #~ for file in self.important_files:
+                #~ self.important_re.append(re.compile(file))
+        #~ for file_re in self.important_re:
+            #~ if file_re.search(filename):
+                #~ return 1;
+        #~ return 0
     
     def setOptions(self,options = {}):
         self.options = options or {}
         self.workdir = self.options.get('workdir','build')
 
-    def setupBuild(self, expectations):
-        #~ Hack the stamp as an allowed arg for steps.
-        if 'stamp' not in buildbot.process.buildstep.BuildStep.parms:
-            buildbot.process.buildstep.BuildStep.parms.append('stamp')
+    #~ def setupBuild(self, expectations):
+        #~ # Hack the stamp as an allowed arg for steps.
+        #~ if 'stamp' not in buildbot.process.buildstep.BuildStep.parms:
+            #~ buildbot.process.buildstep.BuildStep.parms.append('stamp')
         
-        return buildbot.process.base.Build.setupBuild(self,expectations)
+        #~ return buildbot.process.base.Build.setupBuild(self,expectations)
     
-    def getNextStep(self):
-        s = buildbot.process.base.Build.getNextStep(self)
-        if s:
-            #~ Add a stamp arg for the steps to use as needed.
-            stamp = self._get_stamp()
-            s.stamp = stamp
-            if hasattr(s,'cmd'):
-                if hasattr(s.cmd,'args'):
-                    s.cmd.args.update( { 'stamp' : stamp } )
-        return s
-    
-    def _get_stamp(self):
-        #~ The default is to use the revision sequence as the "time".
-        #~ If not available, because of a forced build for example, we 
-        #~ use the current time.
-        stamp = time.strftime( '%Y-%m-%dT%H:%M:%S', time.gmtime() )
-        revision, patch = self.getSourceStamp()
-        if not revision:
-            changes = self.allChanges()
-            if changes:
-                last_change_time = max([c.when for c in changes])
-                last_change_revision = max([c.revision for c in changes])
-                #~ Prefer using the revision change if present. If it's not
-                #~ it's likely a CVS like time sequence, so use the time sequence
-                #~ int that case (adjusted with the tree timer).
-                if last_change_revision:
-                    stamp = last_change_revision
-                else:
-                    stamp = time.strftime( '%Y-%m-%dT%H:%M:%S',
-                        time.gmtime(last_change_time + self.treeStableTimer / 2) )
-        return stamp
+    #~ def getNextStep(self):
+        #~ s = buildbot.process.base.Build.getNextStep(self)
+        #~ if s:
+            #~ # Add a stamp arg for the steps to use as needed.
+            #~ stamp = self._get_stamp()
+            #~ s.stamp = stamp
+            #~ if hasattr(s,'cmd'):
+                #~ if hasattr(s.cmd,'args'):
+                    #~ s.cmd.args.update( { 'stamp' : stamp } )
+        #~ return s
+    
+    #~ def _get_stamp(self):
+        #~ # The default is to use the revision sequence as the "time".
+        #~ # If not available, because of a forced build for example, we 
+        #~ # use the current time.
+        #~ stamp = time.strftime( '%Y-%m-%dT%H:%M:%S', time.gmtime() )
+        #~ revision, patch = self.getSourceStamp()
+        #~ if not revision:
+            #~ changes = self.allChanges()
+            #~ if changes:
+                #~ last_change_time = max([c.when for c in changes])
+                #~ last_change_revision = max([c.revision for c in changes])
+                #~ # Prefer using the revision change if present. If it's not
+                #~ # it's likely a CVS like time sequence, so use the time sequence
+                #~ # int that case (adjusted with the tree timer).
+                #~ if last_change_revision:
+                    #~ stamp = last_change_revision
+                #~ else:
+                    #~ stamp = time.strftime( '%Y-%m-%dT%H:%M:%S',
+                        #~ time.gmtime(last_change_time + self.treeStableTimer / 2) )
+        #~ return stamp
Modified: trunk/tools/buildbot/src/boost/bot/remote.py
==============================================================================
--- trunk/tools/buildbot/src/boost/bot/remote.py	(original)
+++ trunk/tools/buildbot/src/boost/bot/remote.py	2007-08-13 02:11:14 EDT (Mon, 13 Aug 2007)
@@ -253,10 +253,10 @@
 class Command_Boost_Jam(NoOpCommand):
 
     def start(self):
+        _builddir = os.path.normpath(os.path.join(
+            self.builder.basedir,self.args.get('locate','results')))
         _env = self.args.get('env',{})
         _env.update({
-            'ALL_LOCATE_TARGET': os.path.normpath(os.path.join(
-                self.builder.basedir,self.args.get('locate','build'))),
             'BOOST_BUILD_PATH': "%s:%s:%s" % (
                 os.path.normpath(self.builder.basedir),
                 os.path.normpath(os.path.join(self.builder.basedir,'..')),
@@ -265,7 +265,7 @@
         _logfile = False
         if self.args.get('logfile'):
             _logfile = os.path.normpath(os.path.join(
-                _env['ALL_LOCATE_TARGET'],self.args['logfile']))
+                _builddir,self.args['logfile']))
         return self._start( "boost.bjam",
             c( self.doBJam
                 ,bjam = os.path.normpath(os.path.join(self.builder.basedir,
@@ -273,6 +273,7 @@
                 ,project = os.path.normpath(os.path.join(self.builder.basedir, 
                     self.args['workdir'], self.args.get('project','.')))
                 ,options = self.args.get('options',[])
+                ,builddir = _builddir
                 ,target = self.args.get('target','all')
                 ,env = _env
                 ,logfile = _logfile
@@ -289,7 +290,11 @@
         for item in env.items():
             self.stdout("    %s = '%s'" % item)
         
-        command = [ kwargs['bjam'] ] + kwargs['options'] + [ kwargs['target'] ]
+        command = \
+            [ kwargs['bjam'] ] \
+            + [ '--build-dir=%s' % (kwargs['builddir']) ] \
+            + kwargs['options'] \
+            + [ kwargs['target'] ]
         self.command = LoggedShellCommand(self.builder
             ,command
             ,kwargs['project']
Modified: trunk/tools/buildbot/src/boost/bot/step.py
==============================================================================
--- trunk/tools/buildbot/src/boost/bot/step.py	(original)
+++ trunk/tools/buildbot/src/boost/bot/step.py	2007-08-13 02:11:14 EDT (Mon, 13 Aug 2007)
@@ -6,6 +6,7 @@
 # http://www.boost.org/LICENSE_1_0.txt)
 
 from buildbot.steps.shell import ShellCommand
+from buildbot.process.buildstep import LoggedRemoteCommand
 import re
 import string
 import twisted.python
@@ -13,17 +14,21 @@
 class command_base(ShellCommand):
     def __init__(self, _name, _description, **kwargs):
         if kwargs.get('name'): _name = kwargs.get('name')
-        if kwargs.get('description'): _description = kwargs.get('description')
-        
+        if not kwargs.get('description'): kwargs['description'] = _description
         ShellCommand.__init__(self,**kwargs)
-        
         self.name = _name
-        self.description = _description
-        
-        #~ if kwargs.has_key('name'): del kwargs['name']
-        #~ if kwargs.has_key('description'): del kwargs['description']
-        #~ if kwargs.has_key('build'): del kwargs['build']
-        #~ self.cmd = buildbot.process.step.LoggedRemoteCommand(_name,kwargs)
+    
+    def start(self):
+        #~ command = self._interpolateProperties(self.command)
+        #~ assert isinstance(command, (list, tuple, str))
+        kwargs = self.remote_kwargs
+        #~ kwargs['command'] = command
+        if kwargs.get('env'): kwargs['env'] = kwargs['env'].copy()
+        kwargs['logfiles'] = self.logfiles
+        cmd = LoggedRemoteCommand(self.name,kwargs)
+        self.setupEnvironment(cmd)
+        self.checkForOldSlaveAndLogfiles()
+        self.startCommand(cmd)
 
 class SelfUpdate(command_base):
     def __init__(self, **kwargs):
Modified: trunk/tools/buildbot/src/buildbot.py
==============================================================================
--- trunk/tools/buildbot/src/buildbot.py	(original)
+++ trunk/tools/buildbot/src/buildbot.py	2007-08-13 02:11:14 EDT (Mon, 13 Aug 2007)
@@ -60,6 +60,10 @@
             '^Twisted[^/]+/zope.interface-[^/]+/src/zope/$' }
     )
 
+#~ Since we have our own extra slave commands they have to loaded before
+#~ starting the slave deamon.
+if len(sys.argv) > 1 and sys.argv[1] == 'start':
+    import boost.bot.remote
 
 #~ And run the buildbot frontend script.
 from buildbot.scripts import runner