[154413] contrib/buildbot-test/master.cfg

larryv at macports.org larryv at macports.org
Sat Oct 29 02:50:09 CEST 2016


Revision: 154413
          https://trac.macports.org/changeset/154413
Author:   larryv at macports.org
Date:     2016-10-29 02:50:08 +0200 (Sat, 29 Oct 2016)
Log Message:
-----------
buildbot: Simplify imports

- Access Buildbot components through the plugin infrastructure when
  possible, reducing the number of imports required.

- As per PEP 8 [*], keep imports in one place instead of strewn
  everywhere.

- Remove duplicate and unused imports.

[*]: https://www.python.org/dev/peps/pep-0008/#imports

Modified Paths:
--------------
    contrib/buildbot-test/master.cfg

Modified: contrib/buildbot-test/master.cfg
===================================================================
--- contrib/buildbot-test/master.cfg	2016-10-29 00:46:22 UTC (rev 154412)
+++ contrib/buildbot-test/master.cfg	2016-10-29 00:50:08 UTC (rev 154413)
@@ -5,10 +5,18 @@
 # This is a buildmaster config file. It must be installed as
 # 'master.cfg' in your buildmaster's base directory.
 
+import datetime
 import json
 import os
 import re
+import subprocess
 
+from buildbot.plugins import buildslave, changes, schedulers, status, steps, util
+# In 0.8.12, WebStatus can't be used as a plugin because it doesn't
+# actually implement the IStatusReceiver interface, as it claims to.
+from buildbot.status.web.baseweb import WebStatus
+from twisted.internet import defer
+
 ####### HELPER FUNCTIONS #######
 
 def _path(name):
@@ -65,7 +73,6 @@
 path_docs = path_ports
 
 # Allow spaces and tabs in property values
-import re
 c['validation'] = {'property_value': re.compile(r'^[ \t\w./~:-]*$')}
 
 
@@ -74,7 +81,6 @@
 # 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'] = []
 slavedata = {}
@@ -86,7 +92,7 @@
 build_platforms = [s.encode('utf-8') for s in slavedata['build_platforms']]
 
 for slave, pwd in slavedata['slaves'].items():
-    c['slaves'].append(BuildSlave(slave, pwd))
+    c['slaves'].append(buildslave.BuildSlave(slave, pwd))
 
 # 'slavePortnum' defines the TCP port to listen on for connections from slaves.
 # This must match the value configured into the buildslaves (with their
@@ -104,14 +110,12 @@
 
 if config['production']:
     # TODO
-    from buildbot.changes.pb import PBChangeSource
     sourcedata = []
 #    with open(_path('source.json')) as f:
 #        sourcedata = json.load(f)
-#    c['change_source'] = PBChangeSource(user=sourcedata[0], passwd=sourcedata[1], port=sourcedata[2])
+#    c['change_source'] = changes.PBChangeSource(user=sourcedata[0], passwd=sourcedata[1], port=sourcedata[2])
 else:
-    from buildbot.changes.svnpoller import SVNPoller
-    c['change_source'] = SVNPoller(
+    c['change_source'] = changes.SVNPoller(
         svnurl='https://svn.macports.org/repository/macports/trunk',
         #svnbin='/opt/local/bin/svn',
         pollinterval=300,
@@ -139,49 +143,43 @@
             return True
     return False
 
-from buildbot.changes.filter import ChangeFilter
-
 base_buildernames = ['base-'+plat for plat in build_platforms if 'legacy' not in plat and '10.6_i386' not in plat]
 portwatcher_buildernames = ['ports-'+plat+'-watcher' for plat in build_platforms if 'linux' not in plat and '10.5_ppc' != plat]
 portbuilder_buildernames = ['ports-'+plat+'-builder' for plat in build_platforms if 'linux' not in plat and '10.5_ppc' != plat]
 portbuilder_triggerables = ['ports-'+plat+'-trigger' for plat in build_platforms if 'linux' not in plat and '10.5_ppc' != plat]
 
-from buildbot.schedulers.basic import SingleBranchScheduler
-from buildbot.schedulers.forcesched import ForceScheduler
-from buildbot.schedulers.forcesched import StringParameter
-from buildbot.schedulers.triggerable import Triggerable
 
 c['schedulers'] = [
-    SingleBranchScheduler(
+    schedulers.SingleBranchScheduler(
         name='base',
         treeStableTimer=None,
-        change_filter=ChangeFilter(
+        change_filter=util.ChangeFilter(
             filter_fn=change_has_base),
         builderNames=base_buildernames),
-    SingleBranchScheduler(
+    schedulers.SingleBranchScheduler(
         name='ports',
         treeStableTimer=None,
-        change_filter=ChangeFilter(
+        change_filter=util.ChangeFilter(
             # Should actually skip changes to files/ only, but only if
             # we know the last build of the port succeeded.
             filter_fn=lambda change: any(port_from_path(f) for f in change.files)),
         builderNames=portwatcher_buildernames),
-    ForceScheduler(
+    schedulers.ForceScheduler(
         name='base_force',
         builderNames=base_buildernames),
-#    ForceScheduler(
+#    schedulers.ForceScheduler(
 #        name='portbuilder_force',
 #        builderNames=portbuilder_buildernames,
-#        properties=[StringParameter(
+#        properties=[util.StringParameter(
 #            name='portname',
 #            label='Port name:',
 #            default='',
 #            required=True)
 #        ]),
-    ForceScheduler(
+    schedulers.ForceScheduler(
         name='portwatcher_force',
         builderNames=portwatcher_buildernames,
-        properties=[StringParameter(
+        properties=[util.StringParameter(
             name='portlist',
             label='Port list:',
             default='',
@@ -192,13 +190,13 @@
 
 if 'www' in config['deploy']:
     c['schedulers'].extend((
-        SingleBranchScheduler(
+        schedulers.SingleBranchScheduler(
             name='www',
             treeStableTimer=300,
-            change_filter=ChangeFilter(
+            change_filter=util.ChangeFilter(
                 filter_fn=change_has_www),
             builderNames=['docs-www']),
-        ForceScheduler(
+        schedulers.ForceScheduler(
             name='www_force',
             builderNames=['docs-www'])
         ))
@@ -205,13 +203,13 @@
 
 if 'guide' in config['deploy']:
     c['schedulers'].extend((
-        SingleBranchScheduler(
+        schedulers.SingleBranchScheduler(
             name='guide',
             treeStableTimer=300,
-            change_filter=ChangeFilter(
+            change_filter=util.ChangeFilter(
                 filter_fn=change_has_guide),
             builderNames=['docs-guide']),
-        ForceScheduler(
+        schedulers.ForceScheduler(
             name='guide_force',
             builderNames=['docs-www'])
         ))
@@ -218,7 +216,7 @@
 
 for i in range(len(portbuilder_buildernames)):
     c['schedulers'].append(
-        Triggerable(
+        schedulers.Triggerable(
             name=portbuilder_triggerables[i],
             builderNames=[portbuilder_buildernames[i]]))
 
@@ -232,21 +230,16 @@
 # what steps, and which slaves can execute them.  Note that any particular build will
 # only take place on one slave.
 
-from buildbot.process.factory import BuildFactory, GNUAutoconf
-from buildbot.process.properties import WithProperties, Interpolate
-from buildbot.steps.source.svn import SVN
-from buildbot.steps.shell import ShellCommand, Compile, Configure, SetPropertyFromCommand
-
-base_factory = BuildFactory()
+base_factory = util.BuildFactory()
 base_factory.workdir = '../build'
 
-#base_factory.addStep(SVN(
-#   repourl=Interpolate('https://svn.macports.org/repository/macports/%(src::branch:-trunk)s/base'),
-base_factory.addStep(SVN(
+#base_factory.addStep(steps.SVN(
+#   repourl=util.Interpolate('https://svn.macports.org/repository/macports/%(src::branch:-trunk)s/base'),
+base_factory.addStep(steps.SVN(
     repourl='https://svn.macports.org/repository/macports/trunk/base',
     method='copy',
     env={'PATH': path_ports}))
-base_factory.addStep(Configure(command=WithProperties("""
+base_factory.addStep(steps.Configure(command=util.WithProperties("""
 env PATH=/usr/bin:/bin:/usr/sbin:/sbin ./configure --enable-readline \
     --prefix=%(workdir)s/opt/local \
     --with-applications-dir=%(workdir)s/opt/local/Applications \
@@ -253,27 +246,27 @@
     --with-install-user=`id -un` \
     --with-install-group=`id -gn` \
 """),logfiles={'config.log': 'config.log'}))
-base_factory.addStep(Compile(command='make -j`sysctl -n hw.activecpu`'))
-base_factory.addStep(ShellCommand(
+base_factory.addStep(steps.Compile(command='make -j`sysctl -n hw.activecpu`'))
+base_factory.addStep(steps.ShellCommand(
     command='make install',
     name='install',
     description=['installing'],
     descriptionDone=['install']))
-base_factory.addStep(ShellCommand(
+base_factory.addStep(steps.ShellCommand(
     command='make test',
     name='test',
     description=['testing'],
     descriptionDone=['test']))
-base_factory.addStep(ShellCommand(
-    command=WithProperties('make distclean; rm -rf %(workdir)s/opt/local'),
+base_factory.addStep(steps.ShellCommand(
+    command=util.WithProperties('make distclean; rm -rf %(workdir)s/opt/local'),
     name='clean',
     description=['cleaning'],
     descriptionDone=['clean']))
 
 # custom class to make the file list available on the slave...
-class SetPropertyFromCommandWithPortlist(SetPropertyFromCommand):
+class SetPropertyFromCommandWithPortlist(steps.SetPropertyFromCommand):
     def setBuild(self, build):
-        SetPropertyFromCommand.setBuild(self, build)
+        steps.SetPropertyFromCommand.setBuild(self, build)
 
         portset = set()
         # support forced build properties
@@ -294,7 +287,7 @@
             return ['Port list: %s' % (self.getProperty('subportlist'))]
         else:
             # let ShellCommand describe
-            return ShellCommand.getText(self, cmd, results)
+            return steps.ShellCommand.getText(self, cmd, results)
 
 # can't run with prefix inside the workdir in production,
 # because archives must be built with prefix=/opt/local
@@ -310,13 +303,7 @@
 ulpath = 'archive_staging'
 ulpath_unique = ulpath+'-%(buildername)s'
 
-from buildbot.steps.transfer import FileDownload, DirectoryUpload
-from buildbot.steps.master import MasterShellCommand
-from buildbot.steps.trigger import Trigger
-
-from buildbot.process.properties import renderer
-
- at renderer
+ at util.renderer
 def make_build_url(props):
     buildername = props.getProperty('buildername')
     buildnumber = props.getProperty('buildnumber')
@@ -326,7 +313,7 @@
     url += 'builders/%s/builds/%s' % (buildername, buildnumber)
     return url
 
-class TriggerWithPortlist(Trigger):
+class TriggerWithPortlist(steps.Trigger):
     def getSchedulersAndProperties(self):
         sp = []
         for scheduler in self.schedulerNames:
@@ -340,12 +327,12 @@
 # -- Port Watcher --
 
 def make_portwatcher_factory(triggerable):
-    portwatcher_factory = BuildFactory()
+    portwatcher_factory = util.BuildFactory()
     portwatcher_factory.useProgress = False
     portwatcher_factory.workdir = '../build'
 
     # get mp-buildbot; we'll do the checkout of base and dports via these scripts
-    portwatcher_factory.addStep(SVN(
+    portwatcher_factory.addStep(steps.SVN(
         repourl=config['mpbbsvnurl'],
         env={'PATH': path_ports},
         alwaysUseLatest=True,
@@ -354,21 +341,21 @@
         workdir=os.path.join(portwatcher_factory.workdir, 'mpbb'),
         haltOnFailure=True))
 
-    portwatcher_factory.addStep(ShellCommand(
-        command=['./mpbb/mpbb', '--prefix', WithProperties(prefix), 'cleanup'],
+    portwatcher_factory.addStep(steps.ShellCommand(
+        command=['./mpbb/mpbb', '--prefix', util.WithProperties(prefix), 'cleanup'],
         name='cleanup',
         description=['cleaning'],
         descriptionDone=['clean']))
 
-    portwatcher_factory.addStep(ShellCommand(
-        command=['./mpbb/mpbb', '--prefix', WithProperties(prefix), 'selfupdate'],
+    portwatcher_factory.addStep(steps.ShellCommand(
+        command=['./mpbb/mpbb', '--prefix', util.WithProperties(prefix), 'selfupdate'],
         name='selfupdate',
         description=['updating', 'MacPorts'],
         descriptionDone=['update', 'MacPorts'],
         haltOnFailure=True))
 
-    portwatcher_factory.addStep(ShellCommand(
-        command=['./mpbb/mpbb', '--prefix', WithProperties(prefix), 'checkout', '--svn-url', config['svnurl']],
+    portwatcher_factory.addStep(steps.ShellCommand(
+        command=['./mpbb/mpbb', '--prefix', util.WithProperties(prefix), 'checkout', '--svn-url', config['svnurl']],
         timeout=3600,
         name='checkout',
         description=['syncing', 'ports'],
@@ -393,7 +380,7 @@
         return {'subportlist': ' '.join(sorted(subports))}
 
     portwatcher_factory.addStep(SetPropertyFromCommandWithPortlist(
-        command=WithProperties('./mpbb/mpbb list-subports %(fullportlist)s'),
+        command=util.WithProperties('./mpbb/mpbb list-subports %(fullportlist)s'),
         extract_fn=extract_subportlist,
         name='subports',
         description=['listing', 'subports']))
@@ -407,7 +394,7 @@
     # make a logfile summarising the success/failure status for each port
     # (Current approach is not so useful as it is not incremental;
     #  ideally this would already be displayed during the Trigger step.)
-    portwatcher_factory.addStep(ShellCommand(
+    portwatcher_factory.addStep(steps.ShellCommand(
         command=['cat', os.path.join(logdir, 'ports-progress.txt')],
         name='summary',
         description=['summary']))
@@ -416,31 +403,31 @@
 
 # -- Port Builder --
 
-portbuilder_factory = BuildFactory()
+portbuilder_factory = util.BuildFactory()
 portbuilder_factory.useProgress = False
 portbuilder_factory.workdir = '../build'
 logdir = os.path.join(portbuilder_factory.workdir, 'logs')
 
-portbuilder_factory.addStep(Compile(
-    command=['./mpbb/mpbb', '--prefix', WithProperties(prefix), 'install-dependencies', WithProperties('%(portname)s')],
+portbuilder_factory.addStep(steps.Compile(
+    command=['./mpbb/mpbb', '--prefix', util.WithProperties(prefix), 'install-dependencies', util.WithProperties('%(portname)s')],
     name='install-dependencies',
-    description=['installing', 'dependencies', 'of', WithProperties('%(portname)s')],
-    descriptionDone=['install', 'dependencies', 'of', WithProperties('%(portname)s')],
+    description=['installing', 'dependencies', 'of', util.WithProperties('%(portname)s')],
+    descriptionDone=['install', 'dependencies', 'of', util.WithProperties('%(portname)s')],
     logfiles={'dependencies': os.path.join(logdir, 'dependencies-progress.txt')},
     haltOnFailure=True))
 
-portbuilder_factory.addStep(Compile(
-    command=['./mpbb/mpbb', '--prefix', WithProperties(prefix), 'install-port', WithProperties('%(portname)s')],
+portbuilder_factory.addStep(steps.Compile(
+    command=['./mpbb/mpbb', '--prefix', util.WithProperties(prefix), 'install-port', util.WithProperties('%(portname)s')],
     name='install-port',
-    description=['installing', WithProperties('%(portname)s')],
-    descriptionDone=['install', WithProperties('%(portname)s')],
+    description=['installing', util.WithProperties('%(portname)s')],
+    descriptionDone=['install', util.WithProperties('%(portname)s')],
     logfiles={'files': os.path.join(logdir, 'port-contents.txt'),
               'statistics': os.path.join(logdir, 'port-statistics.txt'),
               'main.log': os.path.join(logdir, 'main.log')},
     haltOnFailure=True))
 
-portbuilder_factory.addStep(ShellCommand(
-    command=['./mpbb/mpbb', '--prefix', WithProperties(prefix), 'gather-archives', '--archive-site', config['archivesite'], '--staging-dir', ulpath],
+portbuilder_factory.addStep(steps.ShellCommand(
+    command=['./mpbb/mpbb', '--prefix', util.WithProperties(prefix), 'gather-archives', '--archive-site', config['archivesite'], '--staging-dir', ulpath],
     name='gather-archives',
     description=['gathering', 'archives'],
     descriptionDone=['gather', 'archives'],
@@ -447,15 +434,15 @@
     haltOnFailure=True))
 
 # upload archives from build slave to master
-portbuilder_factory.addStep(DirectoryUpload(
+portbuilder_factory.addStep(steps.DirectoryUpload(
     slavesrc=ulpath,
-    masterdest=WithProperties(ulpath_unique)))
+    masterdest=util.WithProperties(ulpath_unique)))
 
 # XXX: move deploy_archives.sh functionality to mp-buildbot
 # sign generated binaries and sync to download server (if distributable)
 if config['production']:
-    portbuilder_factory.addStep(MasterShellCommand(
-        command=['./deploy_archives.sh', WithProperties(ulpath_unique)],
+    portbuilder_factory.addStep(steps.MasterShellCommand(
+        command=['./deploy_archives.sh', util.WithProperties(ulpath_unique)],
         name='deploy-archives',
         description=['deploying', 'archives'],
         descriptionDone=['deploy', 'archives'],
@@ -462,8 +449,8 @@
         env={'PRIVKEY': config['privkey'], 'DLHOST': dlhost, 'DLPATH': dlpath}))
 
 # TODO: do we want to upload the individual logs so maintainers can review them?
-portbuilder_factory.addStep(ShellCommand(
-    command=['./mpbb/mpbb', '--prefix', WithProperties(prefix), 'cleanup'],
+portbuilder_factory.addStep(steps.ShellCommand(
+    command=['./mpbb/mpbb', '--prefix', util.WithProperties(prefix), 'cleanup'],
     name='cleanup',
     description=['cleaning'],
     descriptionDone=['clean'],
@@ -471,7 +458,7 @@
 
 def make_rsync_deploy_steps(host, user, sshkeyfile, sshknownhostsfile, srcpath, destpath):
     return (
-        FileDownload(
+        steps.FileDownload(
             name='ssh key',
             description='transferring',
             descriptionDone='transfer',
@@ -478,7 +465,7 @@
             mastersrc=sshkeyfile,
             slavedest='ssh_key',
             mode=0600),
-        FileDownload(
+        steps.FileDownload(
             name='ssh known_hosts',
             description='transferring',
             descriptionDone='transfer',
@@ -485,7 +472,7 @@
             mastersrc=sshknownhostsfile,
             slavedest='ssh_known_hosts',
             mode=0600),
-        ShellCommand(
+        steps.ShellCommand(
             name='rsync',
             description='deploying',
             descriptionDone='deploy',
@@ -494,9 +481,9 @@
         )
 
 if 'www' in config['deploy']:
-    docs_www_factory = BuildFactory()
+    docs_www_factory = util.BuildFactory()
     # TODO: incremental mode with cleanup?
-    docs_www_factory.addStep(SVN(
+    docs_www_factory.addStep(steps.SVN(
         repourl='https://svn.macports.org/repository/macports/trunk/www',
         mode='full',
         method='copy',
@@ -512,21 +499,21 @@
             destpath=config['deploy']['www']['destpath']))
 
 if 'guide' in config['deploy']:
-    docs_guide_factory = BuildFactory()
+    docs_guide_factory = util.BuildFactory()
     # TODO: incremental mode with cleanup?
-    docs_guide_factory.addStep(SVN(
+    docs_guide_factory.addStep(steps.SVN(
         repourl='https://svn.macports.org/repository/macports/trunk/doc-new',
         mode='full',
         method='copy',
         workdir='guide'))
     # TODO: check for existence of tools in toolsprefix
-    docs_guide_factory.addStep(Compile(
+    docs_guide_factory.addStep(steps.Compile(
         name='validate',
         description='validating',
         descriptionDone='validate',
         command='make validate',
         workdir='guide'))
-    docs_guide_factory.addStep(Compile(
+    docs_guide_factory.addStep(steps.Compile(
         command='make all',
         workdir='guide'))
     docs_guide_factory.addSteps(
@@ -541,8 +528,6 @@
 
 ####### BUILDER CONFIGURATION #######
 
-from buildbot.config import BuilderConfig
-
 # XXX: slavenames assignment should be automatic and more generic
 portsslaves = {}
 baseslaves = {}
@@ -552,8 +537,8 @@
     portsslaves[plat] = filter(lambda x: x.endswith(plat+'-ports'), slavenames)
 
 env_buildinfo = {
-    'BUILDBOT_BUILDERNAME': WithProperties('%(buildername)s'),
-    'BUILDBOT_BUILDNUMBER': WithProperties('%(buildnumber)s'),
+    'BUILDBOT_BUILDERNAME': util.WithProperties('%(buildername)s'),
+    'BUILDBOT_BUILDNUMBER': util.WithProperties('%(buildnumber)s'),
     'BUILDBOT_BUILDURL': make_build_url
     }
 
@@ -564,7 +549,7 @@
     os_version = os_match.group(0) if os_match else plat
     if 'legacy' not in plat and '10.6_i386' not in plat:
         c['builders'].append(
-            BuilderConfig(
+            util.BuilderConfig(
                 name='base-' + plat,
                 slavenames=['base-' + plat],
                 factory=base_factory,
@@ -572,13 +557,13 @@
                 env=merge_dicts(env_buildinfo, {'PATH': path_base})))
     if 'linux' not in plat and '10.5_ppc' != plat:
         c['builders'].extend((
-            BuilderConfig(
+            util.BuilderConfig(
                 name='ports-' + plat + '-watcher',
                 slavenames=['ports-' + plat],
                 factory=make_portwatcher_factory('ports-' + plat + '-trigger'),
                 tags=['portwatcher', os_version],
                 env=merge_dicts(env_buildinfo, {'PATH': path_ports})),
-            BuilderConfig(
+            util.BuilderConfig(
                 name='ports-' + plat + '-builder',
                 slavenames=['ports-' + plat],
                 factory=portbuilder_factory,
@@ -588,7 +573,7 @@
 
 if 'www' in config['deploy']:
     c['builders'].append(
-        BuilderConfig(
+        util.BuilderConfig(
             name='docs-www',
             slavenames=['docs'],
             factory=docs_www_factory,
@@ -596,7 +581,7 @@
             env=merge_dicts(env_buildinfo, {'PATH': path_ports})))
 if 'guide' in config['deploy']:
     c['builders'].append(
-        BuilderConfig(
+        util.BuilderConfig(
             name='docs-guide',
             slavenames=['docs'],
             factory=docs_guide_factory,
@@ -612,14 +597,9 @@
 
 c['status'] = []
 
-from buildbot.status import html
-from buildbot.status.web import auth, authz
+htauth = util.HTPasswdAprAuth(config['htpasswdfile'])
 
-from buildbot.status.web.auth import HTPasswdAprAuth
-
-htauth = HTPasswdAprAuth(config['htpasswdfile'])
-
-authz_cfg = authz.Authz(
+authz_cfg = util.Authz(
     auth=htauth,
     gracefulShutdown='auth',
     forceBuild='auth',
@@ -629,17 +609,12 @@
     stopAllBuilds='auth',
     cancelPendingBuild='auth')
 
-from buildbot.status.mail import MailNotifier
-from twisted.internet import defer
-
 # TODO: This is the old mail notifier;
 # - useful functionality could be copied
 # - then the code should be removed
 #
-import subprocess
-from twisted.internet import defer
 # notifier that sends mail to last committers and maintainers of failed ports
-class OldPortsMailNotifier(MailNotifier):
+class OldPortsMailNotifier(status.MailNotifier):
     # would make more sense to override getInterestedUsers() in BuildStatus,
     # but it seems almost impossible to tell a builder to use a different
     # class for status in its Build objects
@@ -680,7 +655,7 @@
             dl.append(d)
         return defer.gatherResults(dl)
 
-class PortsMailNotifier(MailNotifier, object):
+class PortsMailNotifier(status.MailNotifier, object):
     def __init__(self, fromaddr, *args, **kwargs):
         self.interested_users = set()
         self.portMessageFormatter = kwargs.pop('portMessageFormatter')
@@ -707,9 +682,6 @@
 #            dl.append(d)
         return defer.gatherResults(dl)
 
-from buildbot.plugins import util
-import datetime
-
 def portWatcherMessageFormatter(mode, name, build, results, master_status, interested_users):
     result = util.Results[results]
     subject = 'Build {:s}'.format(result.title())
@@ -777,7 +749,7 @@
 
 if config['production']:
     # send mail about base failures to users on the blamelist
-    mn = MailNotifier(
+    mn = status.MailNotifier(
         fromaddr='buildbot at macports.org',
         extraHeaders={'Reply-To': 'noreply at macports.org'},
         # unless lookup is defined, users have to be configured locally
@@ -805,7 +777,7 @@
     c['status'].append(mn)
 
     # notifications about exceptions
-    mn = MailNotifier(
+    mn = status.MailNotifier(
         fromaddr='buildbot at macports.org',
         extraHeaders={'Reply-To': 'noreply at macports.org'},
         mode=('exception'),
@@ -815,10 +787,8 @@
 
 ####### PROJECT IDENTITY #######
 
-from buildbot.plugins import util
-
 # the 'title' string will appear at the top of this buildbot
-# installation's html.WebStatus home page (linked to the
+# installation's WebStatus home page (linked to the
 # 'titleURL') and is embedded in the title of the waterfall HTML page.
 
 c['title'] = 'MacPorts'
@@ -825,7 +795,7 @@
 c['titleURL'] = 'https://www.macports.org/'
 
 c['buildbotURL'] = config['buildboturl']
-c['status'].append(html.WebStatus(
+c['status'].append(WebStatus(
     http_port=config['httpport'],
     authz=authz_cfg,
     changecommentlink=(r'#(\d+)', r'https://trac.macports.org/ticket/\1', r'Ticket \g<0>')))
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.macports.org/pipermail/macports-changes/attachments/20161029/df6ae253/attachment-0002.html>


More information about the macports-changes mailing list