Revision: 79961 http://trac.macports.org/changeset/79961 Author: jmr@macports.org Date: 2011-06-30 16:08:03 -0700 (Thu, 30 Jun 2011) Log Message: ----------- update buildbot cfg Modified Paths: -------------- users/jmr/master.cfg Modified: users/jmr/master.cfg =================================================================== --- users/jmr/master.cfg 2011-06-30 22:42:46 UTC (rev 79960) +++ users/jmr/master.cfg 2011-06-30 23:08:03 UTC (rev 79961) @@ -8,13 +8,22 @@ # a shorter alias to save typing. c = BuildmasterConfig = {} +# Master variable to toggle config between testing on your personal system +# (where /opt/local shouldn't be messed with) and the production server (where +# it has to be) +production = False + ####### BUILDSLAVES # The 'slaves' list defines the set of recognized buildslaves. Each element is # a BuildSlave object, specifying a unique slave name and password. The same # slave name and password must be configured on the slave. from buildbot.buildslave import BuildSlave -c['slaves'] = [BuildSlave("snowleopard-x86_64", "pass")] +if production: + # FIXME + c['slaves'] = [] +else: + c['slaves'] = [BuildSlave("snowleopard-x86_64", "pass")] # 'slavePortnum' defines the TCP port to listen on for connections from slaves. # This must match the value configured into the buildslaves (with their @@ -29,22 +38,24 @@ # poller is used for local testing but PBChangeSource (which relies on # notifications from a post-commit script) should be used in production -from buildbot.changes.svnpoller import SVNPoller -c['change_source'] = [SVNPoller( - 'https://svn.macports.org/repository/macports/trunk/base', - project='base', - svnbin='/opt/local/bin/svn', - pollinterval=300), - SVNPoller( - 'https://svn.macports.org/repository/macports/trunk/dports', - project='ports', - svnbin='/opt/local/bin/svn', - pollinterval=300) - ] +if production: + from buildbot.changes.pb import PBChangeSource + # FIXME: real username and password + c['change_source'] = PBChangeSource(user='change', passwd='changepw') +else: + from buildbot.changes.svnpoller import SVNPoller + c['change_source'] = [SVNPoller( + 'https://svn.macports.org/repository/macports/trunk/base', + project='base', + svnbin='/opt/local/bin/svn', + pollinterval=300), + SVNPoller( + 'https://svn.macports.org/repository/macports/trunk/dports', + project='ports', + svnbin='/opt/local/bin/svn', + pollinterval=300) + ] -# from buildbot.changes.pb import PBChangeSource -# c['change_source'] = PBChangeSource(user='change', passwd='changepw') - ####### SCHEDULERS # consider changes to _resources as unimportant @@ -107,39 +118,60 @@ portlist = ' '.join(portset) self.setProperty('portlist', portlist) + +# can't run with PREFIX/SRC_PREFIX inside the workdir in production, +# because archives must be built with prefix=/opt/local +if production: + prefix='/opt/local' + src_prefix='/opt/mports' + # FIXME + dlhost='mparchives.local' + dlpath='/archives' +else: + prefix='%(workdir)s/opt/local' + src_prefix='%(workdir)s/opt/mports' + dlhost='' + dlpath='.' + ports_factory = BuildFactory() # get MPAB itself; we'll do the checkout of base and dports via MPAB's script ports_factory.addStep(SVN(svnurl='https://svn.macports.org/repository/macports/contrib/mpab', mode="update")) -# XXX can't run with PREFIX/SRC_PREFIX inside the workdir in production, -# because archives must be built with prefix=/opt/local ports_factory.addStep(ShellCommand(command=["./mpsync.sh"], - env={'PREFIX': WithProperties("%(workdir)s/opt/local"), - 'SRC_PREFIX': WithProperties("%(workdir)s/opt/mports")})) + env={'PREFIX': WithProperties(prefix), + 'SRC_PREFIX': WithProperties(src_prefix)})) ports_factory.addStep(ShellCommandWithPortList(command=WithProperties('echo %(portlist)s | tr " " "\n" > portlist'))) # run MPAB on the port list ports_factory.addStep(Compile(command=["./mpab", "buildports", "portlist"], - env={'PREFIX': WithProperties("%(workdir)s/opt/local"), - 'SRC_PREFIX': WithProperties("%(workdir)s/opt/mports")})) + env={'PREFIX': WithProperties(prefix), + 'SRC_PREFIX': WithProperties(src_prefix)})) # sign generated binaries and sync to download server (if distributable) -ports_factory.addStep(ShellCommand(command=["./deploy_archives.sh"])) +ports_factory.addStep(ShellCommand(command=["./deploy_archives.sh"], + env={'PREFIX': WithProperties(prefix), + 'DLHOST': dlhost, + 'DLPATH': dlpath})) # make a logfile summarising the success/failure status for each port ports_factory.addStep(ShellCommand(command=["./do_status.sh"], + env={'PREFIX': WithProperties(prefix)}, logfiles={"portstatus": "portstatus.log"})) # do we want to upload the individual logs so maintainers can review them? ports_factory.addStep(ShellCommand(command="rm -rf ./logs-*")) from buildbot.config import BuilderConfig -c['builders']= [ - BuilderConfig(name="buildbase", - slavenames=["snowleopard-x86_64"], - factory=base_factory), - BuilderConfig(name="buildports", - slavenames=["snowleopard-x86_64"], - factory=ports_factory) - ] +if production: + # FIXME + c['builders']= [] +else: + c['builders']= [ + BuilderConfig(name="buildbase", + slavenames=["snowleopard-x86_64"], + factory=base_factory), + BuilderConfig(name="buildports", + slavenames=["snowleopard-x86_64"], + factory=ports_factory) + ] ####### STATUS TARGETS