view icedtea/master.cfg @ 6:4683c27d2d1d

Fix typo add v5tel postfix to icedtea7_builder_quick_arm_squeeze builder name.
author Mark Wielaard <mark@klomp.org>
date Tue, 22 Feb 2011 14:35:00 +0100
parents ca45780cdf8f
children f9d539fde486
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-squeeze-x86_64-quick-hotspot",
                                       "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"))

f3h = factory.BuildFactory()
f3h.addStep(Mercurial(baseURL=hgrepo, workdir="src", mode="update"))
f3h.addStep(ShellCommand(command=["./autogen.sh"],
                        workdir="src",
                        description="autogen"))
f3h.addStep(ShellCommand(command=["rm", "-rf", "build"],
                        workdir=".",
                        description="clean build dir"))
f3h.addStep(Configure(command=["../src/configure",
                              "--disable-bootstrap",
                              "--disable-optimizations",
                              "--disable-docs",
                              "--with-hotspot-build",
                              "--with-parallel-jobs=4"],
                              workdir="build"))
f3h.addStep(Compile(workdir="build"))
f3h.addStep(JTRegCheck(command=["make", "check-hotspot"],
                      description="check-hotspot",
                      workdir="build"))
f3h.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_hotspot = {
                           'name': "icedtea6-squeeze-x86_64-quick-hotspot",
                           'slavenames': ["squeeze-x86_64"],
                           'builddir': "icedtea6-quick-hotspot",
                           'factory': f3h }
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_armv5tel_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_hotspot,
                 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/"