<pre style='margin:0'>
Ryan Schmidt (ryandesign) pushed a commit to branch master
in repository macports-ports.

</pre>
<p><a href="https://github.com/macports/macports-ports/commit/d72cc9f7effa8082ef6005ef6943285c481e20af">https://github.com/macports/macports-ports/commit/d72cc9f7effa8082ef6005ef6943285c481e20af</a></p>
<pre style="white-space: pre; background: #F8F8F8"><span style='display:block; white-space:pre;color:#808000;'>commit d72cc9f7effa8082ef6005ef6943285c481e20af
</span>Author: Ryan Schmidt <ryandesign@macports.org>
AuthorDate: Sun Jun 2 12:40:50 2019 -0500

<span style='display:block; white-space:pre;color:#404040;'>    buildbot-0.8: New port, based on buildbot 0.8.12
</span><span style='display:block; white-space:pre;color:#404040;'>    
</span><span style='display:block; white-space:pre;color:#404040;'>    See: https://trac.macports.org/ticket/53006
</span>---
 devel/buildbot-0.8/Portfile                        |  90 ++++++++++++
 .../buildbot-0.8/files/GitHubStatus-context.patch  | 161 +++++++++++++++++++++
 .../files/org.macports.buildmaster.template.plist  |  34 +++++
 .../files/patch-allowRecent_SQA_Migrate.diff       |  60 ++++++++
 .../patch-buildbot-status-web-console.py.diff      |  11 ++
 .../files/patch-buildbot-status-web-grid.py.diff   |  28 ++++
 .../patch-buildbot-status-web-waterfall.py.diff    |  19 +++
 .../files/patch-buildbot-steps-trigger.py.diff     |  36 +++++
 8 files changed, 439 insertions(+)

<span style='display:block; white-space:pre;color:#808080;'>diff --git a/devel/buildbot-0.8/Portfile b/devel/buildbot-0.8/Portfile
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 0000000..7a99736
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/devel/buildbot-0.8/Portfile
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,90 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# -*- coding: utf-8; mode: tcl; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- vim:fenc=utf-8:ft=tcl:et:sw=4:ts=4:sts=4
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+PortSystem              1.0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+PortGroup               python 1.0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+name                    buildbot-0.8
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+version                 0.8.12
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+revision                9
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+checksums               rmd160  3ec4f77befce8993c0ddca4416a494201be52fa5 \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                        sha256  c6b66976dff712268566574d57131ec15e5682f6d4390cd5c8559bab0980c4d6 \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                        size    4834352
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+set branch              [join [lrange [split ${version} .] 0 1] .]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+categories              devel python
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+platforms               darwin
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+supported_archs         noarch
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+license                 GPL-2
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+maintainers             {ryandesign @ryandesign} openmaintainer
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+description             buildmaster for buildbot continuous integration system
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+long_description        Buildbot is a system to automate the compile/test \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                        cycle of most software projects to validate code \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                        changes. This port provides version 0.8.x of the \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                        master part of the system. Subsequent versions have \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                        a redesigned architecture and will be available soon \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                        in the buildbot port.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+homepage                http://buildbot.net
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+master_sites            pypi:b/buildbot/
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+distname                buildbot-${version}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+dist_subdir             buildbot
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+python.default_version  27
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+depends_lib-append      port:py${python.version}-dateutil \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                        port:py${python.version}-jinja2 \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                        port:py${python.version}-sqlalchemy \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                        port:py${python.version}-sqlalchemy-migrate \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                        port:py${python.version}-twisted
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+patchfiles-append       GitHubStatus-context.patch \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                        patch-allowRecent_SQA_Migrate.diff \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                        patch-buildbot-status-web-console.py.diff \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                        patch-buildbot-status-web-grid.py.diff \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                        patch-buildbot-status-web-waterfall.py.diff \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                        patch-buildbot-steps-trigger.py.diff
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+build.env               NO_INSTALL_REQS=1
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+set sharedir            ${prefix}/share/${subport}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+set docdir              ${prefix}/share/doc/${subport}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+set plistfile           org.macports.buildmaster.template.plist
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+post-extract {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    file mkdir ${worksrcpath}/macports
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    copy ${filespath}/${plistfile} ${worksrcpath}/macports/${plistfile}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+post-patch {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    reinplace -locale C "s|@PREFIX@|${prefix}|g" ${worksrcpath}/macports/${plistfile}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+post-destroot {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    xinstall -d ${destroot}${docdir}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    xinstall -m 0644 -W ${worksrcpath} README COPYING CREDITS NEWS UPGRADING \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        ${destroot}${docdir}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    xinstall -d ${destroot}${sharedir}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    xinstall -m 0755 ${worksrcpath}/macports/${plistfile} \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        ${destroot}${sharedir}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+depends_test            port:py${python.version}-mock
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+test.run                yes
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+test.env                PYTHONPATH=.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+test.cmd                ${prefix}/bin/trial-${python.branch}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+test.target             buildbot.test
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+livecheck.type          regex
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+livecheck.url           https://pypi.python.org/pypi/buildbot/
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+livecheck.regex         buildbot\/([quotemeta ${branch}](?:\\.\\d+)*)/
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+notes "
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+An example launchd plist file is available in ${sharedir}. After you have\
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+created your build master, copy the plist to /Library/LaunchDaemons (as root)\
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+and edit the UserName and WorkingDirectory fields as needed. Then instruct\
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+launchd to run it with:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+sudo launchctl load -w /Library/LaunchDaemons/your.plist.name
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+"
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/devel/buildbot-0.8/files/GitHubStatus-context.patch b/devel/buildbot-0.8/files/GitHubStatus-context.patch
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 0000000..9013989
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/devel/buildbot-0.8/files/GitHubStatus-context.patch
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,161 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Add context field to GitHubStatus updates
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+https://github.com/buildbot/buildbot/pull/1721
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- buildbot/status/github.py.orig
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ buildbot/status/github.py
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -59,7 +60,7 @@ class GitHubStatus(StatusReceiverMultiService):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     def __init__(self, token, repoOwner, repoName, sha=None,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                  startDescription=None, endDescription=None,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-                 baseURL=None):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++                 baseURL=None, context=None):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         """
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         Token for GitHub API.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         """
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -71,6 +72,7 @@ def __init__(self, token, repoOwner, repoName, sha=None,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         self._sha = sha or Interpolate("%(src::revision)s")
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         self._repoOwner = repoOwner
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         self._repoName = repoName
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        self._context = context or Interpolate("buildbot/%(prop:buildername)s")
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         self._startDescription = startDescription or "Build started."
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         self._endDescription = endDescription or "Build done."
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -166,10 +168,11 @@ def _getGitHubRepoProperties(self, build):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         """
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         Return a dictionary with GitHub related properties from `build`.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         """
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-        repoOwner, repoName, sha = yield defer.gatherResults([
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        repoOwner, repoName, sha, context = yield defer.gatherResults([
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+             build.render(self._repoOwner),
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+             build.render(self._repoName),
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+             build.render(self._sha),
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            build.render(self._context),
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         ])
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         if not repoOwner or not repoName:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -185,6 +188,7 @@ def _getGitHubRepoProperties(self, build):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+             'sha': sha,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+             'targetURL': self._status.getURLForThing(build),
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+             'buildNumber': str(build.getNumber()),
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            'context': context,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         defer.returnValue(result)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -200,6 +204,7 @@ def _sendGitHubStatus(self, status):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+             state=status['state'].encode('utf-8'),
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+             target_url=status['targetURL'].encode('utf-8'),
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+             description=status['description'].encode('utf-8'),
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            context=status['context'].encode('utf-8'),
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         )
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         success_message = (
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- buildbot/test/unit/test_status_github.py.orig
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ buildbot/test/unit/test_status_github.py
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -132,6 +132,8 @@ def test_initialization_required_arguments(self):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         self.assertEqual(status._sha, Interpolate("%(src::revision)s"))
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         self.assertEqual(status._startDescription, "Build started.")
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         self.assertEqual(status._endDescription, "Build done.")
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        self.assertEqual(status._context,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++                         Interpolate("buildbot/%(prop:buildername)s"))
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     def test_custom_github_url(self):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         """
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -271,6 +273,7 @@ def test_sendStartStatus_ok(self):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+             'sha': '123',
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+             'targetURL': 'http://example.tld',
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+             'buildNumber': '1',
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            'context': 'context',
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         self.status._sendGitHubStatus = Mock(return_value=defer.succeed(None))
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         self.build.getTimes = lambda: (1, None)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -286,6 +289,7 @@ def test_sendStartStatus_ok(self):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+             'sha': '123',
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+             'targetURL': 'http://example.tld',
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+             'buildNumber': '1',
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            'context': 'context',
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+             # Augmented arguments.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+             'state': 'pending',
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+             'description': 'Build started.',
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -330,6 +334,7 @@ def test_sendFinishStatus_ok(self):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+             'sha': '123',
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+             'targetURL': 'http://example.tld',
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+             'buildNumber': '1',
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            'context': 'context',
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         self.status._sendGitHubStatus = Mock(return_value=defer.succeed(None))
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         self.build.getTimes = lambda: (1, 3)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -346,6 +351,7 @@ def test_sendFinishStatus_ok(self):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+             'sha': '123',
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+             'targetURL': 'http://example.tld',
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+             'buildNumber': '1',
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            'context': 'context',
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+             # Augmented arguments.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+             'state': 'success',
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+             'description': 'Build done.',
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -398,6 +404,7 @@ def test_getGitHubRepoProperties_ok(self):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         self.status._repoOwner = Interpolate('owner')
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         self.status._repoName = Interpolate('name')
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         self.status._sha = Interpolate('sha')
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        self.status._context = Interpolate('context')
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         self.status._status = Mock()
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         self.status._status.getURLForThing = lambda build: 'http://example.org'
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         self.build.getNumber = lambda: 1
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -411,8 +418,8 @@ def test_getGitHubRepoProperties_ok(self):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+             'repoOwner': 'owner',
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+             'sha': 'sha',
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+             'targetURL': 'http://example.org',
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-        },
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-            result)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            'context': 'context',
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        }, result)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     def test_getGitHubState(self):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         """
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -435,6 +442,7 @@ def test_sendGitHubStatus_success(self):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+             'state': u'state-resum\xe9',
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+             'targetURL': u'targetURL-resum\xe9',
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+             'description': u'description-resum\xe9',
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            'context': u'context-resum\xe9',
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         self.status._github.repos.createStatus = Mock(
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+             return_value=defer.succeed(None))
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -450,6 +458,7 @@ def test_sendGitHubStatus_success(self):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+             state='state-resum\xc3\xa9',
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+             target_url='targetURL-resum\xc3\xa9',
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+             description='description-resum\xc3\xa9',
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            context='context-resum\xc3\xa9',
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         )
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         self.assertLog(
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -468,6 +477,7 @@ def test_sendGitHubStatus_error(self):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+             'state': u'state',
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+             'targetURL': u'targetURL',
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+             'description': u'description',
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            'context': u'context',
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         error = MarkerError('fail-send-status')
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         self.status._github.repos.createStatus = Mock(
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- docs/manual/cfg-statustargets.rst.orig
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ docs/manual/cfg-statustargets.rst
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -1564,10 +1564,12 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     repoOwner = util.Interpolate("%(prop:github_repo_owner)s")
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     repoName = util.Interpolate("%(prop:github_repo_name)s")
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     sha = util.Interpolate("%(src::revision)s")
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    context = util.Interpolate("buildbot/%(prop:buildername)s")
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     gs = status.GitHubStatus(token='githubAPIToken',
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                              repoOwner=repoOwner,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                              repoName=repoName,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                              sha=sha,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++                             context=context,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                              startDescription='Build started.',
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                              endDescription='Build done.')
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     buildbot_bbtools = util.BuilderConfig(
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -1599,6 +1601,9 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ In case any of `repoOwner`, `repoName` or `sha` returns `None`, `False` or empty string, the plugin will skip sending the status.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++The `context` argument is passed to GitHub to differentiate between statuses. A static string can be passed or :class:`Interpolate` for dynamic substitution.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++The default context is `buildbot/%(prop:buildername)s`.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ You can define custom start and end build messages using the `startDescription` and `endDescription` optional interpolation arguments.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ Starting with Buildbot version 0.8.11, :class:`GitHubStatus` supports additional parameter -- ``baseURL`` -- that allows to specify a different API base endpoint.
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/devel/buildbot-0.8/files/org.macports.buildmaster.template.plist b/devel/buildbot-0.8/files/org.macports.buildmaster.template.plist
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 0000000..c03f14a
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/devel/buildbot-0.8/files/org.macports.buildmaster.template.plist
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,34 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+<?xml version="1.0" encoding="UTF-8"?>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+<plist version="1.0">
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+<dict>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   <key>Disabled</key>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   <true/>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   <key>EnvironmentVariables</key>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   <dict>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+           <key>PATH</key>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+           <string>@PREFIX@/bin:/usr/local/bin:/sbin:/usr/sbin:/bin:/usr/bin</string>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   </dict>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   <key>Label</key>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   <string>org.macports.buildmaster</string>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   <key>ProgramArguments</key>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   <array>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+           <string>@PREFIX@/bin/twistd-2.7</string>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+           <string>--nodaemon</string>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+           <string>--no_save</string>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+           <string>--python=buildbot.tac</string>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+           <string>--pidfile=buildmaster.pid</string>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   </array>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   <key>RunAtLoad</key>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   <true/>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   <key>UserName</key>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   <string>aUserName</string>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   <key>WorkingDirectory</key>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   <string>/Users/pathToSlave</string>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   <key>KeepAlive</key>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   <dict>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+           <key>SuccessfulExit</key>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+           <false/>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   </dict>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+</dict>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+</plist>
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/devel/buildbot-0.8/files/patch-allowRecent_SQA_Migrate.diff b/devel/buildbot-0.8/files/patch-allowRecent_SQA_Migrate.diff
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 0000000..c20d3e7
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/devel/buildbot-0.8/files/patch-allowRecent_SQA_Migrate.diff
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,60 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Patch based on...
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+From 074c9fbadf169bb6cbc4fe2176be429a44170794 Mon Sep 17 00:00:00 2001
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+From: "Dustin J. Mitchell" <dustin@buildbot.net>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Date: Tue, 2 Feb 2016 01:20:07 +0000
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Subject: [PATCH] Update SQLAlchemy and SQLAlchemy-Migrate version requirements
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+---
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ buildbot/db/enginestrategy.py             | 2 +-
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ docs/manual/installation/requirements.rst | 5 +++--
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ docs/relnotes/index.rst                   | 3 +++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ setup.py                                  | 4 ++--
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 4 files changed, 9 insertions(+), 5 deletions(-)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git buildbot/db/enginestrategy.py buildbot/db/enginestrategy.py
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index ee0cc42..4b3a57e 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- buildbot/db/enginestrategy.py
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ buildbot/db/enginestrategy.py
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -187,7 +187,7 @@ class BuildbotEngineStrategy(strategies.ThreadLocalEngineStrategy):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+             version_digits = re.sub('[^0-9.]', '', version)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+             version_tup = tuple(map(int, version_digits.split('.')))
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         except TypeError:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-            pass
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            return  # unparseable -- oh well
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         if version_tup < (0, 6):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+             raise RuntimeError("SQLAlchemy version %s is too old" % (version,))
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git docs/relnotes/index.rst docs/relnotes/index.rst
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index 6930aab..17bc7ab 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- docs/relnotes/index.rst
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ docs/relnotes/index.rst
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -29,6 +29,9 @@ Deprecations, Removals, and Non-Compatible Changes
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * Note that Buildbot is not yet compatible with MySQL-5.7.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   See :bug:`3421` for status and to help out.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++* The ``buildbot`` Python dist now (finally) requires SQLAlchemy-0.8.0 or later and SQLAlchemy-Migrate-0.9.0 or later.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  While the old pinned versions (0.7.10 and 0.7.2, respectively) still work, this compatibility is no longer tested and this configuration should be considered deprecated.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ Changes for Developers
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ~~~~~~~~~~~~~~~~~~~~~~
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff -u setup.py.orig setup.py
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- setup.py.orig  2015-04-21 01:53:41.000000000 -0400
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ setup.py       2016-02-09 14:39:08.000000000 -0500
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -381,11 +381,8 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         ]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     setup_args['install_requires'] += [
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-        # sqlalchemy-0.8 betas show issues with sqlalchemy-0.7.2, so stick to 0.7.10
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-        'sqlalchemy >= 0.6, <= 0.7.10',
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-        # buildbot depends on sqlalchemy internals, and this is the tested
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-        # version.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-        'sqlalchemy-migrate==0.7.2',
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        'sqlalchemy>=0.8.0',
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        'sqlalchemy-migrate>=0.9',
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         'python-dateutil>=1.5',
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     ]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     setup_args['tests_require'] = [
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-- 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+2.6.2
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/devel/buildbot-0.8/files/patch-buildbot-status-web-console.py.diff b/devel/buildbot-0.8/files/patch-buildbot-status-web-console.py.diff
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 0000000..4a7fa86
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/devel/buildbot-0.8/files/patch-buildbot-status-web-console.py.diff
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,11 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- buildbot/status/web/console.py.orig    2015-04-21 00:53:41.000000000 -0500
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ buildbot/status/web/console.py 2016-08-05 08:59:02.000000000 -0500
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -316,7 +316,7 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         for tag in builderList:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+             count += len(builderList[tag])
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-        tags = sorted(builderList.keys())
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        tags = util.naturalSort(builderList.keys())
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         cs = []
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/devel/buildbot-0.8/files/patch-buildbot-status-web-grid.py.diff b/devel/buildbot-0.8/files/patch-buildbot-status-web-grid.py.diff
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 0000000..a445b5b
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/devel/buildbot-0.8/files/patch-buildbot-status-web-grid.py.diff
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,28 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- buildbot/status/web/grid.py.orig       2015-04-21 00:53:41.000000000 -0500
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ buildbot/status/web/grid.py    2016-08-05 15:42:30.000000000 -0500
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -13,6 +13,7 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # Copyright Buildbot Team Members
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++from buildbot import util
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ from buildbot.sourcestamp import SourceStamp
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ from buildbot.status.web.base import HtmlResource
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ from buildbot.status.web.base import build_get_class
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -204,7 +205,7 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                     'stamps': [map(SourceStamp.asDict, sstamp) for sstamp in stamps],
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                     })
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-        sortedBuilderNames = sorted(status.getBuilderNames())
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        sortedBuilderNames = util.naturalSort(status.getBuilderNames())
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         cxt['builders'] = []
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -273,7 +274,7 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                     'stamps': [map(SourceStamp.asDict, sstamp) for sstamp in stamps],
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                     })
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-        sortedBuilderNames = sorted(status.getBuilderNames())
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        sortedBuilderNames = util.naturalSort(status.getBuilderNames())
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         cxt['sorted_builder_names'] = sortedBuilderNames
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         cxt['builder_builds'] = builder_builds = []
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/devel/buildbot-0.8/files/patch-buildbot-status-web-waterfall.py.diff b/devel/buildbot-0.8/files/patch-buildbot-status-web-waterfall.py.diff
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 0000000..2a14cee
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/devel/buildbot-0.8/files/patch-buildbot-status-web-waterfall.py.diff
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,19 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- buildbot/status/web/waterfall.py.orig  2015-04-21 00:53:41.000000000 -0500
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ buildbot/status/web/waterfall.py       2016-08-06 11:19:40.000000000 -0500
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -325,6 +325,7 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         for bldr in builders:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+             tags = bldr.getTags()
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+             allTags.update(tags or [])
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        allTags = util.naturalSort(list(allTags))
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         cxt['show_tags'] = show_tags
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         cxt['all_tags'] = allTags
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -585,7 +586,7 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         for builderName in builderNames:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+             builder = status.getBuilder(builderName)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+             tags.update(builder.getTags() or [])
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-        tags = sorted(tags)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        tags = util.naturalSort(list(tags))
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         ctx['tags'] = tags
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         template = request.site.buildbot_service.templates.get_template("waterfall.html")
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/devel/buildbot-0.8/files/patch-buildbot-steps-trigger.py.diff b/devel/buildbot-0.8/files/patch-buildbot-steps-trigger.py.diff
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 0000000..192859b
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/devel/buildbot-0.8/files/patch-buildbot-steps-trigger.py.diff
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,36 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+https://github.com/buildbot/buildbot/pull/2052
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+https://github.com/buildbot/buildbot/commit/246df8f53945f68aa3ef8c33254ca51dd4794a8e
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- buildbot/steps/trigger.py.orig
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ buildbot/steps/trigger.py
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -181,11 +181,11 @@ def start(self):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+             return
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         was_exception = was_failure = False
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-        brids = {}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        brids = []
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         for was_cb, results in rclist:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+             if isinstance(results, tuple):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                 results, some_brids = results
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-                brids.update(some_brids)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++                brids.extend(some_brids.items())
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+             if not was_cb:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                 was_exception = True
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -207,7 +207,7 @@ def start(self):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+             def add_links(res):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                 # reverse the dictionary lookup for brid to builder name
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-                brid_to_bn = dict((_brid, _bn) for _bn, _brid in brids.iteritems())
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++                brid_to_bn = dict((bt[1], bt[0]) for bt in brids)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                 for was_cb, builddicts in res:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                     if was_cb:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -218,7 +218,7 @@ def add_links(res):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                             url = master.status.getURLForBuild(bn, num)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                             self.step_status.addURL("%s #%d" % (bn, num), url)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-            builddicts = [master.db.builds.getBuildsForRequest(br) for br in brids.values()]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            builddicts = [master.db.builds.getBuildsForRequest(br[1]) for br in brids]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+             res = yield defer.DeferredList(builddicts, consumeErrors=1)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+             add_links(res)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span></pre><pre style='margin:0'>

</pre>