From 8de56711b83d37b5bc354434f19d85032dd58c2b Mon Sep 17 00:00:00 2001
From: Pierre Tardy <tardyp@gmail.com>
Date: Tue, 20 Dec 2016 16:36:45 +0100
Subject: [PATCH] add worker

---
 pypy/master/requirements.txt |  2 +-
 pypy/worker/Dockerfile       |  2 ++
 pypy/worker/buildbot.tac     | 40 ++++++++++++++++++++++++++++++++++++
 pypy/worker/requirements.txt |  1 +
 4 files changed, 44 insertions(+), 1 deletion(-)
 create mode 100644 pypy/worker/Dockerfile
 create mode 100644 pypy/worker/buildbot.tac
 create mode 100644 pypy/worker/requirements.txt

diff --git a/pypy/master/requirements.txt b/pypy/master/requirements.txt
index 076bba6..8f0cd62 100644
--- a/pypy/master/requirements.txt
+++ b/pypy/master/requirements.txt
@@ -1,2 +1,2 @@
-buildbot[bundle]==0.9.2
+buildbot==0.8.14
 psycopg2cffi-compat
diff --git a/pypy/worker/Dockerfile b/pypy/worker/Dockerfile
new file mode 100644
index 0000000..3bc96e1
--- /dev/null
+++ b/pypy/worker/Dockerfile
@@ -0,0 +1,2 @@
+from pypy:2-onbuild
+CMD ["twistd", "-ny", "buildbot.tac"]
diff --git a/pypy/worker/buildbot.tac b/pypy/worker/buildbot.tac
new file mode 100644
index 0000000..7278a77
--- /dev/null
+++ b/pypy/worker/buildbot.tac
@@ -0,0 +1,40 @@
+import fnmatch
+import os
+import sys
+
+from twisted.application import service
+from twisted.python.log import FileLogObserver
+from twisted.python.log import ILogObserver
+
+from buildslave.bot import BuildSlave
+
+# setup worker
+basedir = os.path.abspath(os.path.dirname(__file__))
+application = service.Application('buildbot-worker')
+
+
+application.setComponent(ILogObserver, FileLogObserver(sys.stdout).emit)
+# and worker on the same process!
+buildmaster_host = os.environ.get("BUILDMASTER", 'localhost')
+port = int(os.environ.get("BUILDMASTER_PORT", 9989))
+workername = os.environ.get("WORKERNAME", 'docker')
+passwd = os.environ.get("WORKERPASS")
+
+# delete the password from the environ so that it is not leaked in the log
+blacklist = os.environ.get("WORKER_ENVIRONMENT_BLACKLIST", "WORKERPASS").split()
+for name in list(os.environ.keys()):
+    for toremove in blacklist:
+        if fnmatch.fnmatch(name, toremove):
+            del os.environ[name]
+
+keepalive = 600
+umask = None
+maxdelay = 300
+allow_shutdown = None
+usepty=False
+
+s = BuildSlave(buildmaster_host, port, workername, passwd, basedir,
+               keepalive, usepty, umask=umask, maxdelay=maxdelay,
+               allow_shutdown=allow_shutdown)
+
+s.setServiceParent(application)
diff --git a/pypy/worker/requirements.txt b/pypy/worker/requirements.txt
new file mode 100644
index 0000000..1e8d1a6
--- /dev/null
+++ b/pypy/worker/requirements.txt
@@ -0,0 +1 @@
+buildbot-slave==0.8.14