summaryrefslogtreecommitdiffstats
path: root/WebKitTools/BuildSlaveSupport
diff options
context:
space:
mode:
authorSteve Block <steveblock@google.com>2009-10-08 17:19:54 +0100
committerSteve Block <steveblock@google.com>2009-10-20 00:41:58 +0100
commit231d4e3152a9c27a73b6ac7badbe6be673aa3ddf (patch)
treea6c7e2d6cd7bfa7011cc39abbb436142d7a4a7c8 /WebKitTools/BuildSlaveSupport
parente196732677050bd463301566a68a643b6d14b907 (diff)
downloadexternal_webkit-231d4e3152a9c27a73b6ac7badbe6be673aa3ddf.zip
external_webkit-231d4e3152a9c27a73b6ac7badbe6be673aa3ddf.tar.gz
external_webkit-231d4e3152a9c27a73b6ac7badbe6be673aa3ddf.tar.bz2
Merge webkit.org at R49305 : Automatic merge by git.
Change-Id: I8968561bc1bfd72b8923b7118d3728579c6dbcc7
Diffstat (limited to 'WebKitTools/BuildSlaveSupport')
-rw-r--r--WebKitTools/BuildSlaveSupport/build.webkit.org-config/config.json36
-rw-r--r--WebKitTools/BuildSlaveSupport/build.webkit.org-config/master.cfg81
2 files changed, 112 insertions, 5 deletions
diff --git a/WebKitTools/BuildSlaveSupport/build.webkit.org-config/config.json b/WebKitTools/BuildSlaveSupport/build.webkit.org-config/config.json
index b650b4c..2b8faf6 100644
--- a/WebKitTools/BuildSlaveSupport/build.webkit.org-config/config.json
+++ b/WebKitTools/BuildSlaveSupport/build.webkit.org-config/config.json
@@ -7,8 +7,15 @@
{ "name": "apple-xserve-2", "platform": "mac-leopard" },
{ "name": "apple-xserve-3", "platform": "mac-leopard" },
+ { "name": "apple-xserve-4", "platform": "mac-snowleopard" },
+ { "name": "apple-xserve-5", "platform": "mac-snowleopard" },
+ { "name": "apple-xserve-6", "platform": "mac-snowleopard" },
+
{ "name": "apple-pixel-1", "platform": "mac-leopard" },
+ { "name": "apple-macpro-1", "platform": "mac-snowleopard" },
+ { "name": "apple-macpro-2", "platform": "mac-snowleopard" },
+
{ "name": "apple-windows-1", "platform": "win"},
{ "name": "apple-windows-2", "platform": "win"},
{ "name": "apple-windows-3", "platform": "win"},
@@ -16,7 +23,9 @@
{ "name": "gtk-linux-slave-1", "platform": "gtk"},
- { "name": "szeged-linux-1", "platform": "qt"}
+ { "name": "szeged-linux-1", "platform": "qt"},
+
+ { "name": "google-slave-1", "platform": "chromium-win" }
],
"builders": [ { "name": "Tiger Intel Release", "type": "BuildAndTest", "builddir": "tiger-intel-release",
@@ -43,6 +52,19 @@
"platform": "mac-leopard", "configuration": "debug", "architectures": ["i386"],
"slavenames": ["apple-xserve-3", "test-slave"]
},
+ { "name": "SnowLeopard Intel Release (Build)", "type": "Build", "builddir": "snowleopard-intel-release",
+ "platform": "mac-snowleopard", "configuration": "release", "architectures": ["x86_64"],
+ "triggers": ["snowleopard-intel-release-tests"],
+ "slavenames": ["apple-xserve-4", "test-slave"]
+ },
+ { "name": "SnowLeopard Intel Release (Tests)", "type": "Test", "builddir": "snowleopard-intel-release-tests",
+ "platform": "mac-snowleopard", "configuration": "release", "architectures": ["x86_64"],
+ "slavenames": ["apple-xserve-5", "apple-xserve-6", "test-slave"]
+ },
+ { "name": "SnowLeopard Intel Leaks", "type": "BuildAndTestLeaks", "builddir": "snowleopard-intel-leaks",
+ "platform": "mac-snowleopard", "configuration": "debug", "architectures": ["x86_64"],
+ "slavenames": ["apple-macpro-1", "test-slave"]
+ },
{
"name": "Windows Release (Build)", "type": "Build", "builddir": "win-release",
"platform": "win", "configuration": "release", "architectures": ["i386"],
@@ -74,13 +96,20 @@
"name": "Qt Linux Release", "type": "BuildAndTest", "builddir": "qt-linux-release",
"platform": "qt", "configuration": "release", "architectures": ["i386"],
"slavenames": ["szeged-linux-1"]
+ },
+ {
+ "name": "Chromium Win Release", "type": "ChromiumBuild", "builddir": "chromium-win-release",
+ "platform": "chromium-win", "configuration": "release", "architectures": ["i386"],
+ "slavenames": ["google-slave-1"]
}
],
"schedulers": [ { "type": "AnyBranchScheduler", "name": "trunk", "branches": ["trunk"], "treeStableTimer": 45.0,
"builderNames": ["Tiger Intel Release", "Leopard Intel Release (Build)", "Leopard Intel Debug (Build)",
+ "SnowLeopard Intel Release (Build)", "SnowLeopard Intel Leaks",
"Windows Release (Build)", "Windows Debug (Build)",
- "GTK Linux Release", "Qt Linux Release"]
+ "GTK Linux Release", "Qt Linux Release",
+ "Chromium Win Release"]
},
{ "type": "Triggerable", "name": "leopard-intel-release-tests",
"builderNames": ["Leopard Intel Release (Tests)"]
@@ -88,6 +117,9 @@
{ "type": "Triggerable", "name": "leopard-intel-debug-tests",
"builderNames": ["Leopard Intel Debug (Tests)"]
},
+ { "type": "Triggerable", "name": "snowleopard-intel-release-tests",
+ "builderNames": ["SnowLeopard Intel Release (Tests)"]
+ },
{ "type": "Triggerable", "name": "win-release-tests",
"builderNames": ["Windows Release (Tests)"]
},
diff --git a/WebKitTools/BuildSlaveSupport/build.webkit.org-config/master.cfg b/WebKitTools/BuildSlaveSupport/build.webkit.org-config/master.cfg
index 4d92436..6219b0d 100644
--- a/WebKitTools/BuildSlaveSupport/build.webkit.org-config/master.cfg
+++ b/WebKitTools/BuildSlaveSupport/build.webkit.org-config/master.cfg
@@ -13,6 +13,7 @@ from buildbot.status.builder import SUCCESS, FAILURE, WARNINGS, SKIPPED
from twisted.internet import defer
+import re
import simplejson
WithProperties = properties.WithProperties
@@ -47,6 +48,55 @@ class CheckOutSource(source.SVN):
source.SVN.__init__(self, baseURL=self.baseURL, defaultBranch="trunk", mode=self.mode, *args, **kwargs)
+# FIXME: Remove this step once Chromium WebKit port build system is decoupled from
+# Chromium (https://bugs.webkit.org/show_bug.cgi?id=28396)
+class UpdateChromiumSource(shell.ShellCommand):
+ command = ["gclient", "sync"]
+ name = "update-chromium"
+ description = ["updating chromium source"]
+ descriptionDone = ["updated"]
+ haltOnFailure = True
+
+ def createSummary(self, log):
+ scraper = re.compile(r"^________ running '[^\n]+third_party[/\\]WebKit[^\n]+$\n(?:^[UA]\W+[^\n]+$\n)*^(?:Updated to|At) revision (\d+)", re.DOTALL | re.MULTILINE)
+ revisions = scraper.findall(log.getText())
+ gotRevision = "??" # This matches SVN unknown revision response.
+ if len(revisions):
+ gotRevision = "r%s" % revisions[-1]
+ self.descriptionDone = ["updated", gotRevision]
+
+ def start(self):
+ os = self.getProperty("fullPlatform").split('-')[1]
+ if os == "win":
+ self.setCommand(["gclient.bat", "sync"])
+ revision = self.getProperty("revision")
+ if revision:
+ command = self.command[:]
+ command.append("--revision=src/third_party/WebKit@%d" % revision)
+ self.setCommand(command)
+ return shell.ShellCommand.start(self)
+
+
+# FIXME: Remove this step once Chromium WebKit port build system is decoupled from
+# Chromium (https://bugs.webkit.org/show_bug.cgi?id=28396)
+class CompileChromiumWebKit(shell.ShellCommand):
+ command = ["python", "../../../scripts/slave/compile.py"]
+ name = "build-chromium"
+ description = ["compiling"]
+ descriptionDone = ["compiled"]
+ haltOnFailure = True
+
+ def start(self):
+ os = self.getProperty("fullPlatform").split('-')[1]
+ command = self.command[:]
+ if os == "win":
+ command.extend(["--solution=webkit.sln", "--build-dir=src\\webkit", "--", "/project", "webcore"])
+ elif os == "mac":
+ command.extend(["--solution=__solution__", "--build-dir=src/build", "--", "-project", "../webkit/webkit.xcodeproj", "-target", "webcore"])
+ self.setCommand(command)
+ return shell.ShellCommand.start(self)
+
+
class InstallWin32Dependencies(shell.Compile):
description = ["installing dependencies"]
descriptionDone = ["installed dependencies"]
@@ -188,13 +238,19 @@ class RunWebKitTests(shell.Test):
incorrectLayoutLines.append(line)
elif line.find('test case') >= 0 and (line.find(' crashed') >= 0 or line.find(' timed out') >= 0):
incorrectLayoutLines.append(line)
+ elif line.startswith("WARNING:") and line.find(' leak') >= 0:
+ incorrectLayoutLines.append(line.replace('WARNING: ', ''))
+
+ # FIXME: Detect and summarize leaks of RefCounted objects
self.incorrectLayoutLines = incorrectLayoutLines
def evaluateCommand(self, cmd):
if self.incorrectLayoutLines:
- if len(self.incorrectLayoutLines) == 1 and (self.incorrectLayoutLines[0].find('were new') >= 0 or self.incorrectLayoutLines[0].find('was new') >= 0):
- return WARNINGS
+ if len(self.incorrectLayoutLines) == 1:
+ line = self.incorrectLayoutLines[0]
+ if line.find('were new') >= 0 or line.find('was new') >= 0 or line.find(' leak') >= 0:
+ return WARNINGS
return FAILURE
@@ -213,6 +269,12 @@ class RunWebKitTests(shell.Test):
return [self.name]
+class RunWebKitLeakTests(RunWebKitTests):
+ def start(self):
+ self.setCommand(self.command + ["--leaks"])
+ return RunWebKitTests.start(self)
+
+
class ArchiveTestResults(shell.ShellCommand):
command = ["python", "./WebKitTools/BuildSlaveSupport/test-result-archive",
WithProperties("--platform=%(platform)s"), WithProperties("--%(configuration)s"), "archive"]
@@ -257,6 +319,15 @@ class Factory(factory.BuildFactory):
if platform == "win":
self.addStep(InstallWin32Dependencies)
+# FIXME: Remove this factory once Chromium WebKit port build system is decoupled from
+# Chromium (https://bugs.webkit.org/show_bug.cgi?id=28396)
+class ChromiumBuildFactory(factory.BuildFactory):
+ def __init__(self, platform, configuration, architectures):
+ factory.BuildFactory.__init__(self)
+ self.addStep(ConfigureBuild, platform=platform, configuration=configuration, architecture=" ".join(architectures), buildOnly=True)
+ self.addStep(UpdateChromiumSource)
+ self.addStep(CompileChromiumWebKit)
+
class BuildFactory(Factory):
def __init__(self, platform, configuration, architectures, triggers):
Factory.__init__(self, platform, configuration, architectures, True)
@@ -277,15 +348,19 @@ class TestFactory(Factory):
self.addStep(ExtractTestResults)
class BuildAndTestFactory(Factory):
+ TestClass = RunWebKitTests
def __init__(self, platform, configuration, architectures):
Factory.__init__(self, platform, configuration, architectures, False)
self.addStep(CompileWebKit)
self.addStep(RunJavaScriptCoreTests)
- self.addStep(RunWebKitTests)
+ self.addStep(self.TestClass)
self.addStep(ArchiveTestResults)
self.addStep(UploadTestResults)
self.addStep(ExtractTestResults)
+class BuildAndTestLeaksFactory(BuildAndTestFactory):
+ TestClass = RunWebKitLeakTests
+
def loadBuilderConfig(c):
passwords = simplejson.load(open('passwords.json'))