phase1: implement IRC notifications
[buildbot.git] / phase1 / master.cfg
index fa3161de53b4c1b8dda33811099be6d5b36e4fbf..69f3b7870348d7aa11dc79900e9c10ec55ed8e85 100644 (file)
@@ -106,7 +106,9 @@ c['schedulers'].append(ForceScheduler(
 from buildbot.process.factory import BuildFactory
 from buildbot.steps.source import Git
 from buildbot.steps.shell import ShellCommand
+from buildbot.steps.shell import SetProperty
 from buildbot.steps.transfer import FileDownload
+from buildbot.process.properties import WithProperties
 
 
 MakeTargetMap = {
@@ -239,6 +241,13 @@ for target in targets:
 
        factory = BuildFactory()
 
+       # find number of cores
+       factory.addStep(SetProperty(
+               name = "nproc",
+               property = "nproc",
+               description = "Finding number of CPUs",
+               command = ["nproc"]))
+
        # check out the source
        factory.addStep(Git(repourl=repo_url, mode='update'))
 
@@ -280,7 +289,7 @@ CONFIG_DEVEL=y
 CONFIG_CCACHE=y
 CONFIG_SIGNED_PACKAGES=y
 # CONFIG_PER_FEED_REPO_ADD_COMMENTED is not set
-CONFIG_KERNEL_KALLSYMS=y 
+CONFIG_KERNEL_KALLSYMS=y
 CONFIG_COLLECT_KERNEL_DEBUG=y
 EOT''' %(ts[0], ts[0], ts[1]) ))
 
@@ -334,7 +343,7 @@ EOT''' %(ts[0], ts[0], ts[1]) ))
        factory.addStep(ShellCommand(
                name = "dlrun",
                description = "Populating dl/",
-               command = ["make", "-j4", "download", "V=s"],
+               command = ["make", WithProperties("-j%(nproc:~4)s"), "download", "V=s"],
                logEnviron = False,
                locks = [dlLock.access('exclusive')]
        ))
@@ -357,21 +366,21 @@ EOT''' %(ts[0], ts[0], ts[1]) ))
        factory.addStep(ShellCommand(
                name = "tools",
                description = "Building tools",
-               command = ["make", "-j4", "tools/install", "V=s"],
+               command = ["make", WithProperties("-j%(nproc:~4)s"), "tools/install", "V=s"],
                haltOnFailure = True
        ))
 
        factory.addStep(ShellCommand(
                name = "toolchain",
                description = "Building toolchain",
-               command=["make", "-j4", "toolchain/install", "V=s"],
+               command=["make", WithProperties("-j%(nproc:~4)s"), "toolchain/install", "V=s"],
                haltOnFailure = True
        ))
 
        factory.addStep(ShellCommand(
                name = "kmods",
                description = "Building kmods",
-               command=["make", "-j4", "target/compile", "V=s", "IGNORE_ERRORS=n m", "BUILD_LOG=1"],
+               command=["make", WithProperties("-j%(nproc:~4)s"), "target/compile", "V=s", "IGNORE_ERRORS=n m", "BUILD_LOG=1"],
                #env={'BUILD_LOG_DIR': 'bin/%s' %(ts[0])},
                haltOnFailure = True
        ))
@@ -379,7 +388,7 @@ EOT''' %(ts[0], ts[0], ts[1]) ))
        factory.addStep(ShellCommand(
                name = "pkgbuild",
                description = "Building packages",
-               command=["make", "-j4", "package/compile", "V=s", "IGNORE_ERRORS=n m", "BUILD_LOG=1"],
+               command=["make", WithProperties("-j%(nproc:~4)s"), "package/compile", "V=s", "IGNORE_ERRORS=n m", "BUILD_LOG=1"],
                #env={'BUILD_LOG_DIR': 'bin/%s' %(ts[0])},
                haltOnFailure = True
        ))
@@ -388,7 +397,7 @@ EOT''' %(ts[0], ts[0], ts[1]) ))
        factory.addStep(ShellCommand(
                name = "pkginstall",
                description = "Installing packages",
-               command=["make", "-j4", "package/install", "V=s"],
+               command=["make", WithProperties("-j%(nproc:~4)s"), "package/install", "V=s"],
                doStepIf = isChangeBuiltin,
                haltOnFailure = True
        ))
@@ -396,7 +405,7 @@ EOT''' %(ts[0], ts[0], ts[1]) ))
        factory.addStep(ShellCommand(
                name = "pkgindex",
                description = "Indexing packages",
-               command=["make", "-j4", "package/index", "V=s"],
+               command=["make", WithProperties("-j%(nproc:~4)s"), "package/index", "V=s"],
                haltOnFailure = True
        ))
 
@@ -484,6 +493,34 @@ if ini.has_option("status", "bind"):
        else:
                c['status'].append(html.WebStatus(http_port=ini.get("status", "bind")))
 
+
+from buildbot.status import words
+
+if ini.has_option("irc", "host") and ini.has_option("irc", "nickname") and ini.has_option("irc", "channel"):
+       irc_host = ini.get("irc", "host")
+       irc_port = 6667
+       irc_chan = ini.get("irc", "channel")
+       irc_nick = ini.get("irc", "nickname")
+       irc_pass = None
+
+       if ini.has_option("irc", "port"):
+               irc_port = ini.getint("irc", "port")
+
+       if ini.has_option("irc", "password"):
+               irc_pass = ini.get("irc", "password")
+
+       irc = words.IRC(irc_host, irc_nick, port = irc_port, password = irc_pass,
+                       channels = [{ "channel": irc_chan }],
+                       notify_events = {
+                         'exception': 1,
+                         'successToFailure': 1,
+                         'failureToSuccess': 1
+                       }
+       )
+
+       c['status'].append(irc)
+
+
 ####### PROJECT IDENTITY
 
 # the 'title' string will appear at the top of this buildbot
@@ -508,4 +545,3 @@ c['db'] = {
        # this at its default for all but the largest installations.
        'db_url' : "sqlite:///state.sqlite",
 }
-