view icedtea/master.cfg @ 3:c9d0b3347e4d

2011-02-22 Xerxes Ranby <xerxes@zafena.se> make jaunty-ia32 builders track the "alternative" hotspot --with-hotspot-build decomission icedtea6-squeeze-armv7l slave. remove icedtea6-squeeze-armv7l-quick icedtea7-squeeze-armv7l-quick icedtea-web-squeeze-armv7l and testrepo-squeeze-armv7l builders. update squeeze-armv5tel slave to build icedtea7-squeeze-armv5tel-quick and icedtea-web-squeeze-armv5tel
author Xerxes R?nby <xerxes@zafena.se>
date Tue, 22 Feb 2011 13:56:45 +0100
parents 2b632652ec94
children ca45780cdf8f
line wrap: on
line source

# -*- 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("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-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-armv5tel-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-armv5tel",
                                               "icedtea-web-natty-armv7l"]))

c['schedulers'].append(Scheduler(name="testrepo", branch="testrepo",
                                 treeStableTimer=60,
                                 builderNames=["testrepo-squeeze-x86_64",
                                               "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_armv5tel = { 'name': "icedtea-web-squeeze-armv5tel",
                               'slavenames': ["squeeze-armv5tel"],
                               'builddir': "icedtea-web-squeeze-armv5tel",
                               '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_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"))

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",
                              "--with-hotspot-build",
                              "--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",
                              "--with-hotspot-build",
                              "--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",
                              "--with-hotspot-build", 
                              "--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_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-armv5tel-quick",
                           'slavenames': ["squeeze-armv5tel"],
                           'builddir': "icedtea7-squeeze-armv5tel-quick",
                           'factory': f3a5 }
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_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_armv5tel_squeeze,
                 icedtea7_builder_quick_arm_natty,
                 icedtea6_builder_full,
                 icedtea7_builder_full,
                 icedtea_web_builder_x86_64,
                 icedtea_web_builder_squeeze_armv5tel,
                 icedtea_web_builder_natty_armv7l,
                 testrepo_builder_x86_64,
                 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/"