changeset 0:2b632652ec94

Initial checkin of icedtea buildbot config for builder.classpath.org. Bit of a copy/paste configuration setup. Needs some refactoring/cleanup. But it is a start.
author Mark Wielaard <mark@klomp.org>
date Sun, 20 Feb 2011 23:52:34 +0100
parents
children c3adcbdf8b9d
files icedtea/master.cfg
diffstat 1 files changed, 677 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/icedtea/master.cfg	Sun Feb 20 23:52:34 2011 +0100
@@ -0,0 +1,677 @@
+# -*- python -*-
+# ex: set syntax=python:
+
+# Python master.cfg program for IcedTea buildbot.
+# Copyright (C) 2010, Mark J. Wielaard <mark@klomp.org>
+
+# This file is part of the IcedTea buildbot, and is free software.
+# You can redistribute it and/or modify it under the terms of the GNU
+# General Public License (GPL); either version 2, or (at your option)
+# any later version.
+
+# Passwords are stored in the buildbot-icedtea.config as simple raw
+# properties file.
+import os
+from ConfigParser import RawConfigParser
+passwords = RawConfigParser()
+passwords.read([os.path.expanduser('~/buildbot-icedtea.config')])
+
+def getpw(name):
+	return passwords.get("passwords", name)
+
+c = BuildmasterConfig = {}
+
+####### BUILDSLAVES
+
+from buildbot.buildslave import BuildSlave
+
+c['slaves'] = [BuildSlave("squeeze-x86_64",
+                          getpw("squeeze-x86_64"),
+                          max_builds=3),
+               BuildSlave("squeeze-armv7l",
+                          getpw("squeeze-armv7l"),
+                          max_builds=1),
+               BuildSlave("natty-armv7l",
+                          getpw("natty-armv7l"),
+                          max_builds=2),
+               BuildSlave("jaunty-ia32",
+                          getpw("jaunty-ia32"),
+                          max_builds=3),
+               BuildSlave("squeeze-armv5tel",
+                          getpw("squeeze-armv5tel"),
+                          max_builds=1)]
+
+c['slavePortnum'] = 9989
+
+####### CHANGESOURCES
+
+# The mercurial repository will send changes to PBChangeSource port
+# (same as slavePortnum). Must authenticate with user and password.
+from buildbot.changes.pb import PBChangeSource
+c['change_source'] = PBChangeSource(user="itbbcs", passwd=getpw("itbbcs"))
+
+####### SCHEDULERS
+
+from buildbot.scheduler import Scheduler
+c['schedulers'] = []
+
+# "Quick" schedulers for icedtea6 and 7 (branch called "icedtea")
+# Schedules a quick build (no jdk-check, no documentation)
+# after waiting 5 minutes for any more changes. Should finish in less
+# than an hour.
+c['schedulers'].append(Scheduler(name="icedtea6-quick", branch="icedtea6",
+                                 treeStableTimer=5*60,
+                         builderNames=["icedtea6-squeeze-x86_64-quick",
+                                       "icedtea6-squeeze-armv7l-quick",
+                                       "icedtea6-natty-armv7l-quick",
+                                       "icedtea6-natty-armv7l-quick-cacao",
+                                       "icedtea6-natty-armv7l-quick-shark",
+                                       "icedtea6-jaunty-ia32-quick-zero",
+                                       "icedtea6-jaunty-ia32-quick-cacao",
+                                       "icedtea6-jaunty-ia32-quick-shark",
+                                       "icedtea6-squeeze-armv5tel-quick",
+                                       "icedtea6-squeeze-armv5tel-quick-cacao",
+                                       "icedtea6-squeeze-armv5tel-quick-shark"]
+                                 ))
+
+c['schedulers'].append(Scheduler(name="icedtea7-quick", branch="icedtea",
+                                 treeStableTimer=5*60,
+                                 builderNames=["icedtea7-squeeze-x86_64-quick",
+                                               "icedtea7-squeeze-armv7l-quick",
+                                               "icedtea7-natty-armv7l-quick"]
+                                 ))
+
+# "Normal" schedulers for icedtea-web and testrepo.
+# Schedules a full build of either branch after waiting 60 seconds
+# for any more changes.
+c['schedulers'].append(Scheduler(name="icedtea-web", branch="icedtea-web",
+                                 treeStableTimer=60,
+                                 builderNames=["icedtea-web-squeeze-x86_64",
+                                               "icedtea-web-squeeze-armv7l",
+                                               "icedtea-web-natty-armv7l"]))
+
+c['schedulers'].append(Scheduler(name="testrepo", branch="testrepo",
+                                 treeStableTimer=60,
+                                 builderNames=["testrepo-squeeze-x86_64",
+                                               "testrepo-squeeze-armv7l",
+                                               "testrepo-natty-armv7l",
+                                               "testrepo-jaunty-ia32",
+                                               "testrepo-squeeze-armv5tel"]))
+
+# Full scheduler for icedtea6 or icedtea (icedtea7) branches.
+# Triggers every 8 hours if there were changes. Schedules a full build
+# that includes documentation and jdk-check. Takes multiple hours.
+# The trigger times are shifted 4 hours to minimize overlap.
+from buildbot.schedulers.timed import Nightly
+c['schedulers'].append(Nightly(name="icedtea6-full", branch="icedtea6",
+                               onlyIfChanged=True,
+                               hour=range(0, 24, 8),
+                               minute=38,
+                               builderNames=["icedtea6-squeeze-x86_64-full"]))
+c['schedulers'].append(Nightly(name="icedtea7-full", branch="icedtea",
+                               onlyIfChanged=True,
+                               hour=range(4, 24, 8),
+                               minute=8,
+                               builderNames=["icedtea7-squeeze-x86_64-full"]))
+
+####### BUILDERS
+
+# Note this is the backup mercurial repo server.
+# Currently the backup server is the one pinging the PBChangeSource,
+# so let the build slaves also pull from it, to make sure they are
+# in sync.
+hgrepo = "http://icedtea.wildebeest.org/hg/"
+
+from buildbot.process import factory
+from buildbot.steps.source import Mercurial
+from buildbot.steps.shell import ShellCommand
+from buildbot.steps.shell import Configure
+from buildbot.steps.shell import Compile
+from buildbot.steps.shell import Test
+
+from buildbot.process.buildstep import LogLineObserver
+from buildbot.status.builder import SUCCESS, WARNINGS, FAILURE, EXCEPTION
+
+class PassFailErrorCounter(LogLineObserver):
+    def __init__(self, **kwargs):
+        LogLineObserver.__init__(self, **kwargs)   # always upcall!
+        self.numPassed = 0
+        self.numFailed = 0
+        self.numError = 0
+    def outLineReceived(self, line):
+        if line.startswith("Passed: "):
+            self.numPassed += 1
+            self.step.setProgress('pass', self.numPassed)
+        elif line.startswith("FAILED: "):
+            self.numFailed += 1
+            self.step.setProgress('fail', self.numFailed)
+        elif line.startswith("Error: "):
+            self.numError += 1
+            self.step.setProgress('error', self.numError)
+     
+class JTRegCheck(Test):
+    name = "jtregcheck"
+    command = [name]
+     
+    def __init__(self, **kwargs):
+        Test.__init__(self, **kwargs)   # always upcall!
+        self.counter = PassFailErrorCounter()
+        self.addLogObserver('stdio', self.counter)
+        self.progressMetrics += ('tests', 'pass', 'fail', 'error',)
+
+    def getText(self, cmd, results):
+        text = Test.getText(self, cmd, results)
+        if self.counter.numPassed > 0:
+            text.append("pass: " + str(self.counter.numPassed))
+        if self.counter.numFailed > 0:
+            text.append("fail: " + str(self.counter.numFailed))
+        if self.counter.numError > 0:
+            text.append("error: " + str(self.counter.numError))
+        return text
+
+    def getText2(self, cmd, results):
+        return getText(self, cmd, results)
+
+    def evaluateCommand(self, cmd):
+        if self.counter.numFailed > 0 or self.counter.numError > 0:
+            return WARNINGS
+        else:
+            return SUCCESS
+
+# icedtea-web
+f1 = factory.BuildFactory()
+f1.addStep(Mercurial(baseURL=hgrepo, workdir="src", mode="update"))
+f1.addStep(ShellCommand(command=["./autogen.sh"], workdir="src", description="autogen"))
+f1.addStep(ShellCommand(command=["rm", "-rf", "build"], workdir=".", description="clean build dir"))
+#f1.addStep(ShellCommand(command=["mkdir", "build"], description="create build dir"))
+f1.addStep(Configure(command=["../src/configure"], workdir="build"))
+f1.addStep(Compile(command=["make", "-j4"], workdir="build"))
+f1.addStep(Test(command=["make", "check"], workdir="build"))
+icedtea_web_builder_x86_64 = { 'name': "icedtea-web-squeeze-x86_64",
+                               'slavenames': ["squeeze-x86_64"],
+                               'builddir': "icedtea-web",
+                               'factory': f1 }
+
+f1arm = factory.BuildFactory()
+f1arm.addStep(Mercurial(baseURL=hgrepo, workdir="src", mode="update"))
+f1arm.addStep(ShellCommand(command=["./autogen.sh"], workdir="src", description="autogen"))
+f1arm.addStep(ShellCommand(command=["rm", "-rf", "build"], workdir=".", description="clean build dir"))
+f1arm.addStep(Configure(command=["../src/configure", "--disable-docs"],
+                                 workdir="build"))
+f1arm.addStep(Compile(command=["make", "-j2"], workdir="build"))
+f1arm.addStep(Test(command=["make", "check"], workdir="build"))
+
+icedtea_web_builder_squeeze_armv7l = { 'name': "icedtea-web-squeeze-armv7l",
+                               'slavenames': ["squeeze-armv7l"],
+                               'builddir': "icedtea-web-squeeze-armv7l",
+                               'factory': f1arm }
+icedtea_web_builder_natty_armv7l = { 'name': "icedtea-web-natty-armv7l",
+                               'slavenames': ["natty-armv7l"],
+                               'builddir': "icedtea-web-natty-armv7l",
+                               'factory': f1arm }
+
+f2 = factory.BuildFactory()
+f2.addStep(Mercurial(baseURL=hgrepo, mode="clobber"))
+f2.addStep(Compile())
+f2.addStep(Test(command=["make", "check"]))
+testrepo_builder_x86_64 = { 'name': "testrepo-squeeze-x86_64",
+                            'slavenames': ["squeeze-x86_64"],
+                            'builddir': "testrepo",
+                            'factory': f2 }
+testrepo_builder_squeeze_armv7l = { 'name': "testrepo-squeeze-armv7l",
+                            'slavenames': ["squeeze-armv7l"],
+                            'builddir': "testrepo_squeeze_armv7l",
+                            'factory': f2 }
+testrepo_builder_natty_armv7l = { 'name': "testrepo-natty-armv7l",
+                                  'slavenames': ["natty-armv7l"],
+                                  'builddir': "testrepo_natty_armv7l",
+                                  'factory': f2 }
+testrepo_builder_jaunty_ia32 = { 'name': "testrepo-jaunty-ia32",
+                                  'slavenames': ["jaunty-ia32"],
+                                  'builddir': "testrepo_jaunty_ia32",
+                                  'factory': f2 }
+testrepo_builder_squeeze_armv5tel = { 'name': "testrepo-squeeze-armv5tel",
+                                  'slavenames': ["squeeze-armv5tel"],
+                                  'builddir': "testrepo_squeeze_armv5tel",
+                                  'factory': f2 }
+
+f3 = factory.BuildFactory()
+f3.addStep(Mercurial(baseURL=hgrepo, workdir="src", mode="update"))
+f3.addStep(ShellCommand(command=["./autogen.sh"],
+                        workdir="src",
+                        description="autogen"))
+f3.addStep(ShellCommand(command=["rm", "-rf", "build"],
+                        workdir=".",
+                        description="clean build dir"))
+f3.addStep(Configure(command=["../src/configure",
+                              "--disable-bootstrap",
+                              "--disable-optimizations",
+                              "--disable-docs",
+                              "--with-additional-vms=cacao,shark",
+                              "--with-parallel-jobs=4",
+                              "--with-llvm-config=llvm-config-2.7"],
+                              workdir="build"))
+f3.addStep(Compile(workdir="build"))
+f3.addStep(JTRegCheck(command=["make", "check-hotspot"],
+                      description="check-hotspot",
+                      workdir="build"))
+f3.addStep(JTRegCheck(command=["make", "check-langtools"],
+                      description="check-langtools",
+                      workdir="build"))
+
+f3as = factory.BuildFactory()
+f3as.addStep(Mercurial(baseURL=hgrepo, workdir="src", mode="update"))
+f3as.addStep(ShellCommand(command=["./autogen.sh"],
+                        workdir="src",
+                        description="autogen"))
+f3as.addStep(ShellCommand(command=["rm", "-rf", "build"],
+                        workdir=".",
+                        description="clean build dir"))
+f3as.addStep(Configure(command=["../src/configure",
+                              "--disable-bootstrap",
+                              "--disable-docs"],
+                              workdir="build"))
+f3as.addStep(Compile(workdir="build"))
+f3as.addStep(JTRegCheck(command=["make", "check-hotspot"],
+                      description="check-hotspot",
+                      workdir="build"))
+f3as.addStep(JTRegCheck(command=["make", "check-langtools"],
+                      description="check-langtools",
+                      workdir="build", timeout=2400))
+
+f3an = factory.BuildFactory()
+f3an.addStep(Mercurial(baseURL=hgrepo, workdir="src", mode="update"))
+f3an.addStep(ShellCommand(command=["./autogen.sh"],
+                        workdir="src",
+                        description="autogen"))
+f3an.addStep(ShellCommand(command=["rm", "-rf", "build"],
+                        workdir=".",
+                        description="clean build dir"))
+f3an.addStep(Configure(command=["../src/configure",
+                              "--disable-bootstrap",
+                              "--with-parallel-jobs=2",
+                              "--disable-docs"],
+                              workdir="build"))
+f3an.addStep(Compile(workdir="build"))
+f3an.addStep(JTRegCheck(command=["make", "check-hotspot"],
+                      description="check-hotspot",
+                      workdir="build"))
+f3an.addStep(JTRegCheck(command=["make", "check-langtools"],
+                      description="check-langtools",
+                      workdir="build", timeout=2400))
+
+f3anc = factory.BuildFactory()
+f3anc.addStep(Mercurial(baseURL=hgrepo, workdir="src", mode="update"))
+f3anc.addStep(ShellCommand(command=["./autogen.sh"],
+                        workdir="src",
+                        description="autogen"))
+f3anc.addStep(ShellCommand(command=["rm", "-rf", "build"],
+                        workdir=".",
+                        description="clean build dir"))
+f3anc.addStep(Configure(command=["../src/configure",
+                              "--disable-bootstrap",
+                              "--with-parallel-jobs=2",
+                              "--disable-docs",
+                              "--enable-cacao"],
+                              workdir="build"))
+f3anc.addStep(Compile(workdir="build"))
+f3anc.addStep(JTRegCheck(command=["make", "check-hotspot"],
+                      description="check-hotspot",
+                      workdir="build"))
+f3anc.addStep(JTRegCheck(command=["make", "check-langtools"],
+                      description="check-langtools",
+                      workdir="build", timeout=2400))
+
+f3ans = factory.BuildFactory()
+f3ans.addStep(Mercurial(baseURL=hgrepo, workdir="src", mode="update"))
+f3ans.addStep(ShellCommand(command=["./autogen.sh"],
+                        workdir="src",
+                        description="autogen"))
+f3ans.addStep(ShellCommand(command=["rm", "-rf", "build"],
+                        workdir=".",
+                        description="clean build dir"))
+f3ans.addStep(Configure(command=["../src/configure",
+                              "--disable-bootstrap",
+                              "--with-parallel-jobs=2",
+                              "--disable-docs",
+                              "--enable-shark"],
+                              workdir="build"))
+f3ans.addStep(Compile(workdir="build"))
+f3ans.addStep(JTRegCheck(command=["make", "check-hotspot"],
+                      description="check-hotspot",
+                      workdir="build"))
+f3ans.addStep(JTRegCheck(command=["make", "check-langtools"],
+                      description="check-langtools",
+                      workdir="build", timeout=2400))
+
+f3jz = factory.BuildFactory()
+f3jz.addStep(Mercurial(baseURL=hgrepo, workdir="src", mode="update"))
+f3jz.addStep(ShellCommand(command=["./autogen.sh"],
+                        workdir="src",
+                        description="autogen"))
+f3jz.addStep(ShellCommand(command=["rm", "-rf", "build"],
+                        workdir=".",
+                        description="clean build dir"))
+f3jz.addStep(Configure(command=["../src/configure",
+                              "--disable-bootstrap",
+                              "--with-parallel-jobs=5",
+                              "--disable-docs",
+                              "--enable-zero"],
+                              workdir="build"))
+f3jz.addStep(Compile(workdir="build"))
+f3jz.addStep(JTRegCheck(command=["make", "check-hotspot"],
+                      description="check-hotspot",
+                      workdir="build"))
+f3jz.addStep(JTRegCheck(command=["make", "check-langtools"],
+                      description="check-langtools",
+                      workdir="build", timeout=2400))
+
+f3js = factory.BuildFactory()
+f3js.addStep(Mercurial(baseURL=hgrepo, workdir="src", mode="update"))
+f3js.addStep(ShellCommand(command=["./autogen.sh"],
+                        workdir="src",
+                        description="autogen"))
+f3js.addStep(ShellCommand(command=["rm", "-rf", "build"],
+                        workdir=".",
+                        description="clean build dir"))
+f3js.addStep(Configure(command=["../src/configure",
+                              "--disable-bootstrap",
+                              "--with-parallel-jobs=5",
+                              "--disable-docs",
+                              "--enable-shark"],
+                              workdir="build"))
+f3js.addStep(Compile(workdir="build"))
+f3js.addStep(JTRegCheck(command=["make", "check-hotspot"],
+                      description="check-hotspot",
+                      workdir="build"))
+f3js.addStep(JTRegCheck(command=["make", "check-langtools"],
+                      description="check-langtools",
+                      workdir="build", timeout=2400))
+
+f3jc = factory.BuildFactory()
+f3jc.addStep(Mercurial(baseURL=hgrepo, workdir="src", mode="update"))
+f3jc.addStep(ShellCommand(command=["./autogen.sh"],
+                        workdir="src",
+                        description="autogen"))
+f3jc.addStep(ShellCommand(command=["rm", "-rf", "build"],
+                        workdir=".",
+                        description="clean build dir"))
+f3jc.addStep(Configure(command=["../src/configure",
+                              "--disable-bootstrap",
+                              "--with-parallel-jobs=5",
+                              "--disable-docs",
+                              "--enable-cacao"],
+                              workdir="build"))
+f3jc.addStep(Compile(workdir="build"))
+f3jc.addStep(JTRegCheck(command=["make", "check-hotspot"],
+                      description="check-hotspot",
+                      workdir="build"))
+f3jc.addStep(JTRegCheck(command=["make", "check-langtools"],
+                      description="check-langtools",
+                      workdir="build", timeout=2400))
+
+f3a5 = factory.BuildFactory()
+f3a5.addStep(Mercurial(baseURL=hgrepo, workdir="src", mode="update"))
+f3a5.addStep(ShellCommand(command=["./autogen.sh"],
+                        workdir="src",
+                        description="autogen"))
+f3a5.addStep(ShellCommand(command=["rm", "-rf", "build"],
+                        workdir=".",
+                        description="clean build dir"))
+f3a5.addStep(Configure(command=["../src/configure",
+                              "--disable-bootstrap",
+                              "--with-parallel-jobs=1",
+                              "--disable-docs"],
+                              workdir="build"))
+f3a5.addStep(Compile(workdir="build"))
+f3a5.addStep(JTRegCheck(command=["make", "check-hotspot"],
+                      description="check-hotspot",
+                      workdir="build"))
+f3a5.addStep(JTRegCheck(command=["make", "check-langtools"],
+                      description="check-langtools",
+                      workdir="build"))
+
+f3a5c = factory.BuildFactory()
+f3a5c.addStep(Mercurial(baseURL=hgrepo, workdir="src", mode="update"))
+f3a5c.addStep(ShellCommand(command=["./autogen.sh"],
+                        workdir="src",
+                        description="autogen"))
+f3a5c.addStep(ShellCommand(command=["rm", "-rf", "build"],
+                        workdir=".",
+                        description="clean build dir"))
+f3a5c.addStep(Configure(command=["../src/configure",
+                              "--disable-bootstrap",
+                              "--with-parallel-jobs=1",
+                              "--disable-docs",
+                              "--enable-cacao"],
+                              workdir="build"))
+f3a5c.addStep(Compile(workdir="build"))
+f3a5c.addStep(JTRegCheck(command=["make", "check-hotspot"],
+                      description="check-hotspot",
+                      workdir="build"))
+f3a5c.addStep(JTRegCheck(command=["make", "check-langtools"],
+                      description="check-langtools",
+                      workdir="build"))
+
+f3a5s = factory.BuildFactory()
+f3a5s.addStep(Mercurial(baseURL=hgrepo, workdir="src", mode="update"))
+f3a5s.addStep(ShellCommand(command=["./autogen.sh"],
+                        workdir="src",
+                        description="autogen"))
+f3a5s.addStep(ShellCommand(command=["rm", "-rf", "build"],
+                        workdir=".",
+                        description="clean build dir"))
+f3a5s.addStep(Configure(command=["../src/configure",
+                              "--disable-bootstrap",
+                              "--with-parallel-jobs=1",
+                              "--disable-docs",
+                              "--enable-shark"],
+                              workdir="build"))
+f3a5s.addStep(Compile(workdir="build"))
+f3a5s.addStep(JTRegCheck(command=["make", "check-hotspot"],
+                      description="check-hotspot",
+                      workdir="build"))
+f3a5s.addStep(JTRegCheck(command=["make", "check-langtools"],
+                      description="check-langtools",
+                      workdir="build"))
+
+icedtea6_builder_quick = { 'name': "icedtea6-squeeze-x86_64-quick",
+                           'slavenames': ["squeeze-x86_64"],
+                           'builddir': "icedtea6-quick",
+                           'factory': f3 }
+icedtea6_builder_quick_arm_squeeze = { 'name': "icedtea6-squeeze-armv7l-quick",
+                           'slavenames': ["squeeze-armv7l"],
+                           'builddir': "icedtea6-squeeze-armv7l-quick",
+                           'factory': f3as }
+icedtea6_builder_quick_arm_natty = { 'name': "icedtea6-natty-armv7l-quick",
+                           'slavenames': ["natty-armv7l"],
+                           'builddir': "icedtea6-natty-armv7l-quick",
+                           'factory': f3an }
+icedtea6_builder_quick_arm_natty_cacao = {
+                           'name': "icedtea6-natty-armv7l-quick-cacao",
+                           'slavenames': ["natty-armv7l"],
+                           'builddir': "icedtea6-natty-armv7l-quick-cacao",
+                           'factory': f3anc }
+icedtea6_builder_quick_arm_natty_shark = {
+                           'name': "icedtea6-natty-armv7l-quick-shark",
+                           'slavenames': ["natty-armv7l"],
+                           'builddir': "icedtea6-natty-armv7l-quick-shark",
+                           'factory': f3ans }
+icedtea6_builder_quick_ia32_jaunty_shark = {
+                           'name': "icedtea6-jaunty-ia32-quick-shark",
+                           'slavenames': ["jaunty-ia32"],
+                           'builddir': "icedtea6-jaunty-ia32-quick-shark",
+                           'factory': f3js }
+icedtea6_builder_quick_ia32_jaunty_cacao = {
+                           'name': "icedtea6-jaunty-ia32-quick-cacao",
+                           'slavenames': ["jaunty-ia32"],
+                           'builddir': "icedtea6-jaunty-ia32-quick-cacao",
+                           'factory': f3jc }
+icedtea6_builder_quick_ia32_jaunty_zero = {
+                           'name': "icedtea6-jaunty-ia32-quick-zero",
+                           'slavenames': ["jaunty-ia32"],
+                           'builddir': "icedtea6-jaunty-ia32-quick-zero",
+                           'factory': f3jz }
+icedtea6_builder_quick_armv5tel_squeeze = {
+                           'name': "icedtea6-squeeze-armv5tel-quick",
+                           'slavenames': ["squeeze-armv5tel"],
+                           'builddir': "icedtea6-squeeze-armv5tel-quick",
+                           'factory': f3a5 }
+icedtea6_builder_quick_armv5tel_squeeze_shark = {
+                           'name': "icedtea6-squeeze-armv5tel-quick-shark",
+                           'slavenames': ["squeeze-armv5tel"],
+                           'builddir': "icedtea6-squeeze-armv5tel-quick-shark",
+                           'factory': f3a5s }
+icedtea6_builder_quick_armv5tel_squeeze_cacao = {
+                           'name': "icedtea6-squeeze-armv5tel-quick-cacao",
+                           'slavenames': ["squeeze-armv5tel"],
+                           'builddir': "icedtea6-squeeze-armv5tel-quick-cacao",
+                           'factory': f3a5c }
+
+icedtea7_builder_quick = { 'name': "icedtea7-squeeze-x86_64-quick",
+                           'slavenames': ["squeeze-x86_64"],
+                           'builddir': "icedtea7-quick",
+                           'factory': f3 }
+icedtea7_builder_quick_arm_squeeze = { 'name': "icedtea7-squeeze-armv7l-quick",
+                           'slavenames': ["squeeze-armv7l"],
+                           'builddir': "icedtea7-squeeze-armv7l-quick",
+                           'factory': f3as }
+icedtea7_builder_quick_arm_natty = { 'name': "icedtea7-natty-armv7l-quick",
+                           'slavenames': ["natty-armv7l"],
+                           'builddir': "icedtea7-natty-armv7l-quick",
+                           'factory': f3an }
+
+f4 = factory.BuildFactory()
+f4.addStep(Mercurial(baseURL=hgrepo, workdir="src", mode="update"))
+f4.addStep(ShellCommand(command=["./autogen.sh"],
+                        workdir="src",
+                        description="autogen"))
+f4.addStep(ShellCommand(command=["rm", "-rf", "build"],
+                        workdir=".",
+                        description="clean build dir"))
+f4.addStep(Configure(command=["../src/configure",
+                              "--enable-bootstrap",
+                              "--enable-optimizations",
+                              "--enable-docs",
+                              "--enable-nss",
+                              "--with-additional-vms=cacao,shark",
+                              "--with-parallel-jobs=4",
+                              "--with-llvm-config=llvm-config-2.7"],
+                              workdir="build"))
+f4.addStep(Compile(workdir="build"))
+f4.addStep(JTRegCheck(command=["make", "check-hotspot"],
+                      description="check-hotspot",
+                      workdir="build"))
+f4.addStep(JTRegCheck(command=["make", "check-langtools"],
+                      description="check-langtools",
+                      workdir="build"))
+f4.addStep(JTRegCheck(command=["make", "check-jdk"],
+                      description="check-jdk",
+                      workdir="build"))
+
+icedtea6_builder_full = { 'name': "icedtea6-squeeze-x86_64-full",
+                          'slavenames': ["squeeze-x86_64"],
+                          'builddir': "icedtea6-full",
+                          'factory': f4 }
+icedtea7_builder_full = { 'name': "icedtea7-squeeze-x86_64-full",
+                          'slavenames': ["squeeze-x86_64"],
+                          'builddir': "icedtea7-full",
+                          'factory': f4 }
+
+c['builders'] = [icedtea6_builder_quick,
+                 icedtea6_builder_quick_arm_squeeze,
+                 icedtea6_builder_quick_arm_natty,
+                 icedtea6_builder_quick_arm_natty_cacao,
+                 icedtea6_builder_quick_arm_natty_shark,
+                 icedtea6_builder_quick_ia32_jaunty_shark,
+                 icedtea6_builder_quick_ia32_jaunty_cacao,
+                 icedtea6_builder_quick_ia32_jaunty_zero,
+                 icedtea6_builder_quick_armv5tel_squeeze,
+                 icedtea6_builder_quick_armv5tel_squeeze_cacao,
+                 icedtea6_builder_quick_armv5tel_squeeze_shark,
+                 icedtea7_builder_quick,
+                 icedtea7_builder_quick_arm_squeeze,
+                 icedtea7_builder_quick_arm_natty,
+                 icedtea6_builder_full,
+                 icedtea7_builder_full,
+                 icedtea_web_builder_x86_64,
+                 icedtea_web_builder_squeeze_armv7l,
+                 icedtea_web_builder_natty_armv7l,
+                 testrepo_builder_x86_64,
+                 testrepo_builder_squeeze_armv7l,
+                 testrepo_builder_natty_armv7l,
+                 testrepo_builder_jaunty_ia32,
+                 testrepo_builder_squeeze_armv5tel ]
+
+####### STATUS TARGETS
+
+c['status'] = []
+
+import urllib
+def create_revlink(rev, repo):
+    if not repo or not rev:
+        return None
+    rev = urllib.quote(rev)
+    repo = urllib.quote(repo)
+    return 'http://icedtea.classpath.org/hg/%s/rev/%s' % (repo, rev)
+
+def create_repolink(repo):
+    if not repo:
+        return None
+    return 'http://icedtea.classpath.org/hg/%s' % (repo)
+
+# Catch things like PR icedtea/42, PR16, PR 16 or bug #11,
+# and turn them into icedtea bugzilla URLs.
+# TODO: Catch other conventions used (see icedtea NEWS file).
+cc_re_tuple = (r'(PR [a-z]+/|PR ?|#)(\d+)',
+               r'http://icedtea.classpath.org/bugzilla/show_bug.cgi?id=\2')
+
+# Note http_port is local only, will be proxied by httpd running on builder.
+from buildbot.status import html
+c['status'].append(html.WebStatus(http_port=8010,
+                                  allowForce=False,
+                                  order_console_by_time=True,
+                                  revlink=create_revlink,
+                                  repositories=create_repolink,
+                                  changecommentlink=cc_re_tuple))
+
+# We need a interested users filter (to turn non-email addresses of
+# committers into email addresses) and a good template before spamming
+# everybody. For now only use testresults mailing list.
+from buildbot.status import mail
+c['status'].append(mail.MailNotifier
+                   (fromaddr="buildbot@wildebeest.org",
+                    extraRecipients=["testresults@icedtea.classpath.org"],
+                    sendToInterestedUsers=False))
+
+# Very noisy in channel.
+from buildbot.status import words
+c['status'].append(words.IRC(host="irc.oftc.net",
+                             nick="cpitbb",
+                             password=getpw("cpitbb"),
+                             channels=["#openjdk"],
+                             allowForce=False,
+                             notify_events={
+                               'started': 0,
+                               'finished': 0,
+                               'success': 0,
+                               'failure': 0,
+                               'exception': 0,
+                               'successToFailure': 1,
+                               'successToException': 1,
+                               'failureToSuccess': 1,
+                               'failureToException': 0,
+                               'exceptionToSuccess': 1,
+                               'exceptionToFailure': 0
+                             }))
+
+# Allows command line and gui listening.
+# Currently port isn't accessible, so don't enable.
+# from buildbot.status import client
+# c['status'].append(client.PBListener(9988))
+
+####### PROJECT IDENTITY
+
+c['projectName'] = "IcedTea"
+c['projectURL'] = "http://icedtea.classpath.org/"
+c['buildbotURL'] = "http://builder.classpath.org/icedtea/buildbot/"