diff options
Diffstat (limited to 'WebKitTools/BuildSlaveSupport')
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())
|