summaryrefslogtreecommitdiffstats
path: root/WebKitTools/BuildSlaveSupport
diff options
context:
space:
mode:
Diffstat (limited to 'WebKitTools/BuildSlaveSupport')
-rw-r--r--WebKitTools/BuildSlaveSupport/build.webkit.org-config/config.json47
-rw-r--r--WebKitTools/BuildSlaveSupport/build.webkit.org-config/master.cfg28
-rw-r--r--WebKitTools/BuildSlaveSupport/build.webkit.org-config/public_html/index.html2
-rw-r--r--WebKitTools/BuildSlaveSupport/built-product-archive36
-rwxr-xr-xWebKitTools/BuildSlaveSupport/win/kill-old-processes37
5 files changed, 141 insertions, 9 deletions
diff --git a/WebKitTools/BuildSlaveSupport/build.webkit.org-config/config.json b/WebKitTools/BuildSlaveSupport/build.webkit.org-config/config.json
index 3477c97..db7379d 100644
--- a/WebKitTools/BuildSlaveSupport/build.webkit.org-config/config.json
+++ b/WebKitTools/BuildSlaveSupport/build.webkit.org-config/config.json
@@ -15,6 +15,7 @@
{ "name": "apple-macpro-1", "platform": "mac-snowleopard" },
{ "name": "apple-macpro-2", "platform": "mac-snowleopard" },
+ { "name": "apple-macpro-3", "platform": "mac-snowleopard" },
{ "name": "apple-windows-1", "platform": "win"},
{ "name": "apple-windows-2", "platform": "win"},
@@ -27,10 +28,17 @@
{ "name": "gtk-linux-slave-4", "platform": "gtk"},
{ "name": "szeged-linux-1", "platform": "qt"},
+ { "name": "szeged-linux-2", "platform": "qt"},
+ { "name": "szeged-linux-3", "platform": "qt"},
+ { "name": "szeged-linux-4", "platform": "qt"},
+
+ { "name": "szeged-windows-1", "platform": "qt"},
+ { "name": "szeged-windows-2", "platform": "qt"},
{ "name": "google-windows-1", "platform": "chromium" },
{ "name": "google-mac-1", "platform": "chromium" },
- { "name": "google-linux-1", "platform": "chromium" }
+ { "name": "google-linux-1", "platform": "chromium" },
+ { "name": "google-new-tests", "platform": "mac-leopard" }
],
"builders": [ { "name": "Tiger Intel Release", "type": "BuildAndTest", "builddir": "tiger-intel-release",
@@ -68,7 +76,7 @@
},
{ "name": "SnowLeopard Intel Leaks", "type": "BuildAndTestLeaks", "builddir": "snowleopard-intel-leaks",
"platform": "mac-snowleopard", "configuration": "debug", "architectures": ["x86_64"],
- "slavenames": ["apple-macpro-1", "test-slave"]
+ "slavenames": ["apple-macpro-1", "apple-macpro-3", "test-slave"]
},
{
"name": "Windows Release (Build)", "type": "Build", "builddir": "win-release",
@@ -118,6 +126,31 @@
"slavenames": ["szeged-linux-1"]
},
{
+ "name": "Qt Linux Release minimal", "type": "Build", "builddir": "qt-linux-release-minimal",
+ "platform": "qt", "configuration": "release", "architectures": ["i386"],
+ "slavenames": ["szeged-linux-2"]
+ },
+ {
+ "name": "Qt Linux ARMv5 Release", "type": "Build", "builddir": "qt-linux-armv5-release",
+ "platform": "qt", "configuration": "release", "architectures": ["armv5"],
+ "slavenames": ["szeged-linux-3"]
+ },
+ {
+ "name": "Qt Linux ARMv7 Release", "type": "Build", "builddir": "qt-linux-armv7-release",
+ "platform": "qt", "configuration": "release", "architectures": ["armv7"],
+ "slavenames": ["szeged-linux-4"]
+ },
+ {
+ "name": "Qt Windows 32-bit Release", "type": "Build", "builddir": "qt-windows-32bit-release",
+ "platform": "qt", "configuration": "release", "architectures": ["i386"],
+ "slavenames": ["szeged-windows-1"]
+ },
+ {
+ "name": "Qt Windows 32-bit Debug", "type": "Build", "builddir": "qt-windows-32bit-debug",
+ "platform": "qt", "configuration": "debug", "architectures": ["i386"],
+ "slavenames": ["szeged-windows-2"]
+ },
+ {
"name": "Chromium Win Release", "type": "Build", "builddir": "chromium-win-release",
"platform": "chromium", "configuration": "release", "architectures": ["i386"],
"slavenames": ["google-windows-1"]
@@ -131,7 +164,12 @@
"name": "Chromium Linux Release", "type": "Build", "builddir": "chromium-linux-release",
"platform": "chromium", "configuration": "release", "architectures": ["i386"],
"slavenames": ["google-linux-1"]
- }
+ },
+ {
+ "name": "New run-webkit-tests", "type": "NewBuildAndTest", "builddir": "google-new-tests",
+ "platform": "mac-leopard", "configuration": "release", "architectures": ["i386"],
+ "slavenames": ["google-new-tests"]
+ }
],
"schedulers": [ { "type": "AnyBranchScheduler", "name": "trunk", "branches": ["trunk"], "treeStableTimer": 45.0,
@@ -139,7 +177,8 @@
"SnowLeopard Intel Release (Build)", "SnowLeopard Intel Leaks",
"Windows Release (Build)", "Windows Debug (Build)",
"GTK Linux 32-bit Release", "GTK Linux 32-bit Debug", "GTK Linux 64-bit Debug", "GTK Linux 64-bit Release",
- "Qt Linux Release",
+ "Qt Linux Release", "Qt Linux Release minimal", "Qt Linux ARMv5 Release", "Qt Linux ARMv7 Release",
+ "Qt Windows 32-bit Release", "Qt Windows 32-bit Debug",
"Chromium Win Release", "Chromium Mac Release", "Chromium Linux Release"]
},
{ "type": "Triggerable", "name": "leopard-intel-release-tests",
diff --git a/WebKitTools/BuildSlaveSupport/build.webkit.org-config/master.cfg b/WebKitTools/BuildSlaveSupport/build.webkit.org-config/master.cfg
index 1823277..cd5e4e1 100644
--- a/WebKitTools/BuildSlaveSupport/build.webkit.org-config/master.cfg
+++ b/WebKitTools/BuildSlaveSupport/build.webkit.org-config/master.cfg
@@ -16,6 +16,8 @@ from twisted.internet import defer
import re
import simplejson
+from webkitpy.common.net.buildbot import BuildBot as wkbuildbot
+
WithProperties = properties.WithProperties
class ConfigureBuild(buildstep.BuildStep):
@@ -53,6 +55,11 @@ class InstallWin32Dependencies(shell.Compile):
descriptionDone = ["installed dependencies"]
command = ["perl", "./WebKitTools/Scripts/update-webkit-auxiliary-libs"]
+class KillOldProcesses(shell.Compile):
+ name = "kill old processes"
+ description = ["killing old processes"]
+ descriptionDone = ["killed old processes"]
+ command = ["python", "./WebKitTools/BuildSlaveSupport/win/kill-old-processes"]
class InstallChromiumDependencies(shell.ShellCommand):
name = "gclient"
@@ -230,6 +237,12 @@ class RunWebKitTests(shell.Test):
return [self.name]
+class NewRunWebKitTests(RunWebKitTests):
+ command = ["./WebKitTools/Scripts/new-run-webkit-tests", "--noshow-results",
+ "--results-directory", "layout-test-results",
+ WithProperties("--%(configuration)s")]
+
+
class RunGtkAPITests(shell.Test):
name = "API tests"
description = ["API tests running"]
@@ -261,7 +274,7 @@ class RunGtkAPITests(shell.Test):
def getText2(self, cmd, results):
if results != SUCCESS and self.incorrectLines:
- return ["%d API tests failed" % self.incorrectLines]
+ return ["%d API tests failed" % len(self.incorrectLines)]
return [self.name]
@@ -301,7 +314,7 @@ class ExtractTestResults(master.MasterShellCommand):
return master.MasterShellCommand.start(self)
def finished(self, result):
- url = self.build.getProperties().render(self.resultDirectory).replace("public_html/", "")
+ url = self.build.getProperties().render(self.resultDirectory).replace("public_html/", "/")
self.addURL("view results", url)
result = master.MasterShellCommand.finished(self, result)
self.step_status.setText(["uploaded results"])
@@ -314,6 +327,7 @@ class Factory(factory.BuildFactory):
self.addStep(ConfigureBuild, platform=platform, configuration=configuration, architecture=" ".join(architectures), buildOnly=buildOnly)
self.addStep(CheckOutSource)
if platform == "win":
+ self.addStep(KillOldProcesses)
self.addStep(InstallWin32Dependencies)
if platform == "chromium":
self.addStep(InstallChromiumDependencies)
@@ -354,12 +368,18 @@ class BuildAndTestFactory(Factory):
class BuildAndTestLeaksFactory(BuildAndTestFactory):
TestClass = RunWebKitLeakTests
+class NewBuildAndTestFactory(BuildAndTestFactory):
+ TestClass = NewRunWebKitTests
+
def loadBuilderConfig(c):
passwords = simplejson.load(open('passwords.json'))
config = simplejson.load(open('config.json'))
+ # use webkitpy's buildbot module to test for core builders
+ wkbb = wkbuildbot()
+
c['slaves'] = [BuildSlave(slave['name'], passwords[slave['name']], max_builds=1) for slave in config['slaves']]
c['schedulers'] = []
@@ -388,6 +408,10 @@ def loadBuilderConfig(c):
builder["factory"] = factory(*factoryArgs)
+ builder["category"] = "noncore"
+ if wkbb._is_core_builder(builder['name']):
+ builder["category"] = "core"
+
c['builders'].append(builder)
loadBuilderConfig(c)
diff --git a/WebKitTools/BuildSlaveSupport/build.webkit.org-config/public_html/index.html b/WebKitTools/BuildSlaveSupport/build.webkit.org-config/public_html/index.html
index b38adc9..d819cc7 100644
--- a/WebKitTools/BuildSlaveSupport/build.webkit.org-config/public_html/index.html
+++ b/WebKitTools/BuildSlaveSupport/build.webkit.org-config/public_html/index.html
@@ -9,6 +9,8 @@
<h1>Welcome to the Buildbot!</h1>
<ul>
+ <li><a href="console?category=core">Core Console</a></li>
+ <li><a href="waterfall?category=core">Core Waterfall</a></li>
<li><a href="console">Console</a></li>
<li><a href="waterfall">Waterfall Display</a> will give you a time-oriented summary of recent buildbot activity.</li>
<li><a href="one_box_per_builder">Latest Build</a> for each builder is here.</li>
diff --git a/WebKitTools/BuildSlaveSupport/built-product-archive b/WebKitTools/BuildSlaveSupport/built-product-archive
index ca43dad..b27cf77 100644
--- a/WebKitTools/BuildSlaveSupport/built-product-archive
+++ b/WebKitTools/BuildSlaveSupport/built-product-archive
@@ -48,7 +48,7 @@ def main():
def archiveBuiltProduct(configuration, platform):
- assert platform in ('mac', 'win')
+ assert platform in ('mac', 'win','qt')
archiveFile = os.path.join(buildDirectory, configuration + ".zip")
@@ -81,8 +81,30 @@ def archiveBuiltProduct(configuration, platform):
shutil.rmtree(thinDirectory)
+ elif platform == 'qt':
+ configurationBuildDirectory = os.path.join(buildDirectory, configuration.title())
+ thinDirectory = os.path.join(configurationBuildDirectory, "thin")
+
+ if os.path.isdir(thinDirectory):
+ shutil.rmtree(thinDirectory)
+ os.mkdir(thinDirectory)
+
+ for dirname in ["bin", "lib", "JavaScriptCore"]:
+ fromDir = os.path.join(configurationBuildDirectory, dirname)
+ toDir = os.path.join(thinDirectory, dirname)
+ if subprocess.call(["cp", "-R", fromDir, toDir]):
+ return 1
+
+ for root, dirs, files in os.walk(thinDirectory, topdown=False):
+ for name in files:
+ if name.endswith(".o"):
+ os.remove(os.path.join(root, name))
+
+ if subprocess.call(["zip", "-y", "-r", archiveFile, "."], cwd=thinDirectory):
+ return 1
+
def extractBuiltProduct(configuration, platform):
- assert platform in ('mac', 'win')
+ assert platform in ('mac', 'win','qt')
archiveFile = os.path.join(buildDirectory, configuration + ".zip")
@@ -112,7 +134,15 @@ def extractBuiltProduct(configuration, platform):
if subprocess.call(["unzip", "-o", archiveFile], cwd=buildDirectory):
return 1
-
+ elif platform == 'qt':
+ configurationBuildDirectory = os.path.join(buildDirectory, configuration.title())
+
+ if os.path.isdir(configurationBuildDirectory):
+ shutil.rmtree(configurationBuildDirectory)
+
+ if subprocess.call(["unzip", "-o", archiveFile, "-d", configurationBuildDirectory], cwd=buildDirectory):
+ return 1
+ os.unlink(archiveFile)
if __name__ == '__main__':
sys.exit(main())
diff --git a/WebKitTools/BuildSlaveSupport/win/kill-old-processes b/WebKitTools/BuildSlaveSupport/win/kill-old-processes
new file mode 100755
index 0000000..50fb8a5
--- /dev/null
+++ b/WebKitTools/BuildSlaveSupport/win/kill-old-processes
@@ -0,0 +1,37 @@
+#!/usr/bin/python
+
+# Copyright (C) 2010 Apple Inc. All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions
+# are met:
+#
+# 1. Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+# 2. Redistributions in binary form must reproduce the above copyright
+# notice, this list of conditions and the following disclaimer in the
+# documentation and/or other materials provided with the distribution.
+#
+# THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY
+# EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+# DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY
+# DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+# (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+# ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+import os, sys
+
+def main():
+ tasksToKill = ["DumpRenderTree.exe", "DumpRenderTree_debug.exe", "testapi.exe", "testapi_debug.exe",
+ "svn.exe", "httpd.exe", "cl.exe", "link.exe", "midl.exe", "devenv.exe", "perl.exe",
+ "imagediff.exe", "imagediff_debug.exe", "jsc.exe", "jsc_debug.exe"]
+
+ for task in tasksToKill:
+ os.system("taskkill /f /im " + task)
+
+if __name__ == '__main__':
+ sys.exit(main())