diff options
Diffstat (limited to 'WebKitTools/BuildSlaveSupport')
15 files changed, 0 insertions, 901 deletions
diff --git a/WebKitTools/BuildSlaveSupport/build-launcher-app b/WebKitTools/BuildSlaveSupport/build-launcher-app deleted file mode 100755 index 117b008..0000000 --- a/WebKitTools/BuildSlaveSupport/build-launcher-app +++ /dev/null @@ -1,120 +0,0 @@ -#!/usr/bin/perl -w - -# Copyright (C) 2006 Apple Computer, Inc. All rights reserved. -# Copyright (C) 2006 Mark Rowe <opendarwin.org@bdash.net.nz>. 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. -# 3. Neither the name of Apple Computer, Inc. ("Apple") nor the names of -# its contributors may be used to endorse or promote products derived -# from this software without specific prior written permission. -# -# 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. - -# Creates the launcher WebKit.app with bundled frameworks. - -use strict; - -use FindBin; -use lib "$FindBin::Bin/../Scripts"; -use webkitdirs; - -my @xcodeBuildArguments = XcodeOptions(); -my $nightlyLauncherTemplatePath = "$FindBin::Bin/../WebKitLauncher"; -my $nightlyLauncherStagingPath = productDir() . "/WebKit.app"; - -sub buildNightlyLauncher -{ - chdir($nightlyLauncherTemplatePath); - system("xcodebuild", "clean", "-alltargets", @xcodeBuildArguments, @ARGV) == 0 or die "Failed cleaning WebKitLauncher project"; - system("xcodebuild", @xcodeBuildArguments, @ARGV) == 0 or die "Failed building WebKitLauncher project"; - chdirWebKit(); -} - -sub currentRevision -{ - my $sourceDir = sourceDir(); - if (isSVNDirectory($sourceDir)) { - return currentSVNRevision(); - } elsif (isGitDirectory($sourceDir)) { - my $gitLog = `cd $sourceDir && LC_ALL=C git log --grep='git-svn-id: ' -n 1 | grep git-svn-id:`; - (my $revision) = ($gitLog =~ m/ +git-svn-id: .+@(\d+) /g); - return $revision; - } -} - -sub currentBranch -{ - my $sourceDir = sourceDir(); - my ($url, $branch); - if (isSVNDirectory($sourceDir)) { - my $svnInfo = `LC_ALL=C svn info $sourceDir | grep URL:`; - ($url) = ($svnInfo =~ m/URL: (.+)/g); - } elsif (isGitDirectory($sourceDir)) { - my $gitLog = `cd $sourceDir && LC_ALL=C git log --grep='git-svn-id: ' -n 1 | grep git-svn-id:`; - ($url) = ($gitLog =~ m/ +git-svn-id: (.+)@\d+ /g); - } - ($branch) = ($url =~ m/\/webkit\/(trunk|branches\/[^\/]+)/); - die "Unable to determine current SVN branch in $sourceDir" unless (defined $branch); - $branch =~ s/^branches\///; - return $branch; -} - -sub copyNightlyLauncher -{ - my $revision = currentRevision(); - my $branch = currentBranch(); - - my $infoPlist = "$nightlyLauncherStagingPath/Contents/Info.plist"; - my $versionFile = "$nightlyLauncherStagingPath/Contents/Resources/VERSION"; - my $branchFile = "$nightlyLauncherStagingPath/Contents/Resources/BRANCH"; - my $data; - open(IN, $infoPlist) or die "Couldn't open Info.plist in built application for reading"; - { - undef $/; - $data = <IN>; - } - close(IN); - open(OUT, ">$infoPlist") or die "Couldn't open Info.plist in built application for writing"; - $data =~ s/VERSION/$revision/g; - print OUT $data; - close(OUT); - - open(OUT, ">$versionFile") or die "Couldn't open VERSION in built application for writing"; - print OUT "$revision\n"; - close(OUT); - - open(OUT, ">$branchFile") or die "Couldn't open BRANCH in built application for writing"; - print OUT "$branch\n"; - close(OUT); - - my @frameworks = ("JavaScriptCore", "JavaScriptGlue", "WebCore", "WebKit"); - for my $framework (@frameworks) { - system("ditto", productDir() . "/$framework.framework", "$nightlyLauncherStagingPath/Contents/Resources/$framework.framework") == 0 or die "Failed copying $framework.framework into $nightlyLauncherStagingPath"; - } -} - -my $b = currentBranch(); -my $r = currentRevision(); -print "Branch: ", $b, "\n"; -print "Revision: ", $r, "\n"; - -chdirWebKit(); -buildNightlyLauncher(); -copyNightlyLauncher(); diff --git a/WebKitTools/BuildSlaveSupport/build-launcher-dmg b/WebKitTools/BuildSlaveSupport/build-launcher-dmg deleted file mode 100755 index 4dce7fb..0000000 --- a/WebKitTools/BuildSlaveSupport/build-launcher-dmg +++ /dev/null @@ -1,118 +0,0 @@ -#!/usr/bin/perl -w - -# Copyright (C) 2006 Apple Computer, Inc. All rights reserved. -# Copyright (C) 2006 Mark Rowe <opendarwin.org@bdash.net.nz>. 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. -# 3. Neither the name of Apple Computer, Inc. ("Apple") nor the names of -# its contributors may be used to endorse or promote products derived -# from this software without specific prior written permission. -# -# 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. - -# Script used by build slaves to create a disk-image containing WebKit.app. - -use strict; - -use File::Basename; -use Getopt::Long; -use FindBin; -use lib "$FindBin::Bin/../Scripts"; -use webkitdirs; - -my $nightlyLauncherStagingPath = productDir() . "/WebKit.app"; -my $droseraStagingPath = productDir() . "/DroseraLauncher.app"; -my $nightlyLauncherDiskImagePath; - -my $nightlyRemoteHost = 'webkit-nightlies@live.nightly.webkit.org'; -my $nightlyRemotePath = "/home/webkit-nightlies"; -my $nightlyRemoteLatestPath = "$nightlyRemotePath/update-latest.sh"; - -sub buildDiskImage -{ - my $revision = currentSVNRevision(); - my $productDir = productDir(); - $nightlyLauncherDiskImagePath = productDir() . "/WebKit-SVN-r$revision.dmg"; - - print "Removing previous temp source directory (if any)...\n"; - `rm -rf /tmp/WebKitNightly`; - die "Removing previous temp source directory failed" if $?; - - print "Making a new temp source directory...\n"; - `mkdir /tmp/WebKitNightly`; - die "Making a new temp source directory failed" if $?; - - print "Copying WebKit.app to temp source directory...\n"; - `cp -R \"$nightlyLauncherStagingPath\" /tmp/WebKitNightly/WebKit.app`; - die "Copying WebKit.app to temp source directory failed" if $?; - - print "Copying Drosera.app to temp source directory...\n"; - `cp -R \"$droseraStagingPath\" /tmp/WebKitNightly/Drosera.app`; - die "Copying Drosera.app to temp source directory failed" if $?; - - print "Creating disk image...\n"; - `hdiutil create \"$nightlyLauncherDiskImagePath\" -ov -srcfolder /tmp/WebKitNightly -fs HFS+ -volname \"WebKit\"`; - die "Creating disk image failed" if $?; - - print "Removing temp source directory...\n"; - `rm -rf /tmp/WebKitNightly`; - die "Removing temp source directory failed" if $?; - - print "Compressing disk image...\n"; - system("mv", "-f", $nightlyLauncherDiskImagePath, "$nightlyLauncherDiskImagePath.uncompressed.dmg") == 0 or die "Renaming disk image failed"; - system("hdiutil", "convert", "-quiet", "$nightlyLauncherDiskImagePath.uncompressed.dmg", "-format", "UDBZ", "-imagekey", "zlib-level=9", "-o", "$nightlyLauncherDiskImagePath"); - die "Compressing disk image failed" if $?; - - unlink "$nightlyLauncherDiskImagePath.uncompressed.dmg"; -} - -sub uploadNightlyDiskImage -{ - my $buildTag = shift(@_); - my $nightlyRemoteDiskImagePath = "$nightlyRemotePath/builds/$buildTag/mac/" . basename($nightlyLauncherDiskImagePath); - my $revision = currentSVNRevision(); - system("rsync", "-vP", $nightlyLauncherDiskImagePath, "$nightlyRemoteHost:$nightlyRemoteDiskImagePath") == 0 or die "Failed uploading disk image"; - system("ssh", $nightlyRemoteHost, $nightlyRemoteLatestPath, $buildTag, "mac", $nightlyRemoteDiskImagePath, $revision) == 0 or die "Failed linking disk image to latest"; -} - -sub uploadBuildSlaveDiskImage -{ - my $remoteDiskImagePath = shift(@_) . basename($nightlyLauncherDiskImagePath); - system("rsync", "-vP", $nightlyLauncherDiskImagePath, $remoteDiskImagePath) == 0 or die "Failed uploading disk image"; -} - - -my $uploadTo; -my $nightlyBuild = 0; -my $buildTag = 'trunk'; -GetOptions('upload-to-host=s' => \$uploadTo, - 'upload-as-nightly!' => \$nightlyBuild, - 'tag=s' => \$buildTag); - -chdirWebKit(); -buildDiskImage($buildTag); - -if ($nightlyBuild) { - uploadNightlyDiskImage($buildTag); -} elsif ($uploadTo) { - uploadBuildSlaveDiskImage($uploadTo); -} else { - print "Disk image left at $nightlyLauncherDiskImagePath\n"; -} diff --git a/WebKitTools/BuildSlaveSupport/build.webkit.org-config/Makefile b/WebKitTools/BuildSlaveSupport/build.webkit.org-config/Makefile deleted file mode 100644 index c3a935f..0000000 --- a/WebKitTools/BuildSlaveSupport/build.webkit.org-config/Makefile +++ /dev/null @@ -1,19 +0,0 @@ -# -*- makefile -*- - -# This is a simple makefile which lives in a buildmaster/buildslave -# directory (next to the buildbot.tac file). It allows you to start/stop the -# master or slave by doing 'make start' or 'make stop'. - -# The 'reconfig' target will tell a buildmaster to reload its config file. - -start: - twistd --no_save -y buildbot.tac - -stop: - kill `cat twistd.pid` - -reconfig: - kill -HUP `cat twistd.pid` - -log: - tail -f twistd.log diff --git a/WebKitTools/BuildSlaveSupport/build.webkit.org-config/buildbot.css b/WebKitTools/BuildSlaveSupport/build.webkit.org-config/buildbot.css deleted file mode 100644 index 81de950..0000000 --- a/WebKitTools/BuildSlaveSupport/build.webkit.org-config/buildbot.css +++ /dev/null @@ -1,108 +0,0 @@ -* { - font-family: Verdana, Cursor; - font-size: 10px; - font-weight: bold; -} - -a:link,a:visited,a:active { - color: #444; -} -a:hover { - color: #FFFFFF; -} - -table { - border-spacing: 1px 1px; -} - -table td { - padding: 3px 0px 3px 0px; - text-align: center; -} - -.Project { - width: 100px; -} - -.LastBuild, .Activity { - width: 230px; - padding: 0 0 0 4px; -} - -td.Time { - color: #000; - border-bottom: 1px solid #aaa; - background-color: #eee; -} - -td.Activity, td.Change, td.Builder { - color: #333333; - background-color: #CCCCCC; -} - -td.Change { - border-radius: 5px; - -webkit-border-radius: 5px; -} -td.Event { - color: #777; - background-color: #ddd; - border-radius: 5px; - -webkit-border-radius: 5px; -} - -td.Activity { - border-top-left-radius: 10px; - -webkit-border-top-left-radius: 10px; - min-height: 20px; - padding: 8px 0 8px 0; -} - -td.idle, td.waiting, td.offline, td.building { - border-top-left-radius: 0px; - -webkit-border-top-left-radius: 0px; -} - -.LastBuild { - border-top-left-radius: 5px; - -webkit-border-top-left-radius: 5px; - border-top-right-radius: 5px; - -webkit-border-top-right-radius: 5px; -} - -/* LastBuild, BuildStep states */ -.success { - color: #FFFFFF; - background-color: #8fdf5f; -} - -.failure { - color: #FFFFFF; - background-color: #e98080; -} - -.warnings { - color: #FFFFFF; - background-color: #ffc343; -} - -.exception, td.offline { - color: #FFFFFF; - background-color: #e0b0ff; -} - -.start,.running, td.building { - color: #666666; - background-color: #fffc6c; -} - -.start { - border-bottom-left-radius: 10px; - -webkit-border-bottom-left-radius: 10px; - border-bottom-right-radius: 10px; - -webkit-border-bottom-right-radius: 10px; -} - -td.Project a:hover, td.start a:hover { - color: #000; -} diff --git a/WebKitTools/BuildSlaveSupport/build.webkit.org-config/buildbot.tac b/WebKitTools/BuildSlaveSupport/build.webkit.org-config/buildbot.tac deleted file mode 100644 index f66e068..0000000 --- a/WebKitTools/BuildSlaveSupport/build.webkit.org-config/buildbot.tac +++ /dev/null @@ -1,10 +0,0 @@ - -from twisted.application import service -from buildbot.master import BuildMaster - -basedir = r'/home/mrowe/sites/build.webkit.org/buildbot' -configfile = r'master.cfg' - -application = service.Application('buildmaster') -BuildMaster(basedir, configfile).setServiceParent(application) - diff --git a/WebKitTools/BuildSlaveSupport/build.webkit.org-config/master.cfg b/WebKitTools/BuildSlaveSupport/build.webkit.org-config/master.cfg deleted file mode 100644 index ea7966a..0000000 --- a/WebKitTools/BuildSlaveSupport/build.webkit.org-config/master.cfg +++ /dev/null @@ -1,22 +0,0 @@ -# -*- python -*- - -import os -from twisted.web import static -static.File.contentTypes = static.loadMimeTypes(['/etc/mime.types', os.path.join(basedir, 'mime.types')]) - -from buildbot.changes.pb import PBChangeSource -import webkit -reload(webkit) - -c = BuildmasterConfig = {} - -c['slaves'] = webkit.auth.getSlaveAuthenticationDetails() -c['change_source'] = [PBChangeSource(prefix="trunk")] -c['builders'] = webkit.builders.getBuilders() -c['schedulers'] = webkit.schedulers.getSchedulers(c['builders']) -c['status'] = webkit.status.getStatusListeners() - -c['slavePortnum'] = 9989 -c['projectName'] = "WebKit" -c['projectURL'] = "http://webkit.org/" -c['buildbotURL'] = "http://build.webkit.org/" diff --git a/WebKitTools/BuildSlaveSupport/build.webkit.org-config/webkit/__init__.py b/WebKitTools/BuildSlaveSupport/build.webkit.org-config/webkit/__init__.py deleted file mode 100644 index f81fcae..0000000 --- a/WebKitTools/BuildSlaveSupport/build.webkit.org-config/webkit/__init__.py +++ /dev/null @@ -1,5 +0,0 @@ -from webkit import auth, status, builders, schedulers -reload(auth) -reload(status) -reload(builders) -reload(schedulers) diff --git a/WebKitTools/BuildSlaveSupport/build.webkit.org-config/webkit/auth.py b/WebKitTools/BuildSlaveSupport/build.webkit.org-config/webkit/auth.py deleted file mode 100644 index b182e16..0000000 --- a/WebKitTools/BuildSlaveSupport/build.webkit.org-config/webkit/auth.py +++ /dev/null @@ -1,9 +0,0 @@ -from buildbot.buildslave import BuildSlave - -def getSlaveAuthenticationDetails(): - def createBuildSlave((name, password)): - return BuildSlave(name, password, max_builds=1) - return map(createBuildSlave, _getSlaveAuthenticationDetails()) - -def _getSlaveAuthenticationDetails(): - return [("slave-name", "password")] diff --git a/WebKitTools/BuildSlaveSupport/build.webkit.org-config/webkit/basesteps.py b/WebKitTools/BuildSlaveSupport/build.webkit.org-config/webkit/basesteps.py deleted file mode 100644 index 8bba881..0000000 --- a/WebKitTools/BuildSlaveSupport/build.webkit.org-config/webkit/basesteps.py +++ /dev/null @@ -1,51 +0,0 @@ -from buildbot.steps import shell, source -import os - - -def buildStepWithDefaultTimeout(klass, default_timeout=75*60): - class Step(klass): - timeout = default_timeout - def __init__(self, *args, **kwargs): - kwargs['timeout'] = self.timeout - klass.__init__(self, *args, **kwargs) - - return Step - - -Test = buildStepWithDefaultTimeout(shell.Test) -Compile = buildStepWithDefaultTimeout(shell.Compile) -ShellCommand = buildStepWithDefaultTimeout(shell.ShellCommand) -SVN = buildStepWithDefaultTimeout(source.SVN) - - -class UploadCommand: - def initializeForUpload(self): - try: - try: - umask = os.umask(0) - os.makedirs(self.getDestinationPath(), 042770) - except OSError, e: - if e.errno != 17: - raise - finally: - os.umask(umask) - - def getDestinationPath(self): - return "/home/buildresults%s" % (self.getURLPath(), ) - - def getRemotePath(self): - return "buildresults@build.webkit.org:%s" % (self.getDestinationPath(), ) - - def getURLPath(self): - return '/results/%s/%s/' % (self.getBuild().builder.name, self.getBuild().getProperty("buildnumber"), ) - - def getBuild(self): - return self.build - - - def getText(self, cmd, results): - return self.getText2(cmd, results) - - def getText2(self, cmd, results): - return ['<a href="%s">%s</a>' % (self.getURLPath(), self.name)] - diff --git a/WebKitTools/BuildSlaveSupport/build.webkit.org-config/webkit/builders.py b/WebKitTools/BuildSlaveSupport/build.webkit.org-config/webkit/builders.py deleted file mode 100644 index b4e087e..0000000 --- a/WebKitTools/BuildSlaveSupport/build.webkit.org-config/webkit/builders.py +++ /dev/null @@ -1,35 +0,0 @@ -from webkit.factories import * -from buildbot import locks - -# There are four build slaves that take care of the majority of builds, with two other specialist slaves at Apple -# Slave 1 isn older G4 PowerMac dedicated to the PLT builds, as it needs extra configuration -# Slave 2 is a Windows PC dedicated to the Windows builds -# Slaves 3 and 4 are older G4 PowerMacs with relatively low amounts of RAM which leads to insanely slow leaks tests -# Slaves 4 and 5 are newer G5 PowerMacs with ATI graphics cards that lead to kernel panics during pixel tests - -nonATIPowerPCBuilders = ['apple-slave-%d' % i for i in (3, 4)] -ATIPowerPCBuilders = ['apple-slave-%d' % i for i in (1, 5, 6)] -allPowerPCBuilders = nonATIPowerPCBuilders + ATIPowerPCBuilders -allIntelBuilders = ['bdash-slave-1', 'bdash-slave-2'] - -_builders = [('post-commit-powerpc-mac-os-x', StandardBuildFactory, allPowerPCBuilders), - ('post-commit-intel-mac-os-x', StandardBuildFactory, allIntelBuilders), - ('post-commit-leaks-powerpc-mac-os-x', LeakBuildFactory, allPowerPCBuilders), - ('post-commit-leaks-intel-mac-os-x', LeakBuildFactory, allIntelBuilders), -# ('page-layout-test-mac-os-x', PageLoadTestBuildFactory, ['apple-slave-1']), -# ('post-commit-pixel-powerpc-mac-os-x', PixelTestBuildFactory, nonATIPowerPCBuilders), - ('post-commit-win32', Win32BuildFactory, ['apple-slave-2']), - ('post-commit-linux-qt', StandardBuildFactory, ['webtroll-slave-1']), - ('post-commit-linux-gtk', GtkBuildFactory, ['zecke-slave-1']), - ('periodic-powerpc-mac-os-x-no-svg', NoSVGBuildFactory, allPowerPCBuilders), - ('periodic-intel-mac-os-x-coverage', CoverageDataBuildFactory, allIntelBuilders), - ] - -def getBuilders(): - result = [] - for name, factory, slaves in _builders: - result.append({'name': name, - 'slavenames': slaves, - 'builddir': name, - 'factory': factory()}) - return result diff --git a/WebKitTools/BuildSlaveSupport/build.webkit.org-config/webkit/factories.py b/WebKitTools/BuildSlaveSupport/build.webkit.org-config/webkit/factories.py deleted file mode 100644 index 781375f..0000000 --- a/WebKitTools/BuildSlaveSupport/build.webkit.org-config/webkit/factories.py +++ /dev/null @@ -1,70 +0,0 @@ -from webkit.steps import * -from buildbot.process import factory - -s = factory.s - -class BuildFactory(factory.BuildFactory): - useProgress = False - def __init__(self): - factory.BuildFactory.__init__(self, [s(CheckOutSource)]) - -class StandardBuildFactory(BuildFactory): - def __init__(self): - BuildFactory.__init__(self) - self.steps.append(s(SetConfiguration, configuration="release")) - self.steps.append(s(self.getCompileStep(), configuration="release")) - self.steps.append(s(self.getJavaScriptCoreTestStep())) - self.steps.append(s(LayoutTest)) - self.steps.append(s(UploadLayoutResults)) -# self.steps.append(s(UploadDiskImage)) - - def getCompileStep(self): - return CompileWebKit - - def getJavaScriptCoreTestStep(self): - return JavaScriptCoreTest - - -class NoSVGBuildFactory(StandardBuildFactory): - def getCompileStep(self): - return CompileWebKitNoSVG - - -class PixelTestBuildFactory(BuildFactory): - def __init__(self): - BuildFactory.__init__(self) - self.steps.append(s(SetConfiguration, configuration="release")) - self.steps.append(s(CompileWebKit, configuration="release")) - self.steps.append(s(PixelLayoutTest)) - self.steps.append(s(UploadLayoutResults)) - -class LeakBuildFactory(BuildFactory): - def __init__(self): - BuildFactory.__init__(self) - self.steps.append(s(SetConfiguration, configuration="debug")) - self.steps.append(s(CompileWebKit, configuration="debug")) - self.steps.append(s(JavaScriptCoreTest)) - self.steps.append(s(LeakTest)) - self.steps.append(s(UploadLayoutResults)) -# self.steps.append(s(UploadDiskImage)) - -class PageLoadTestBuildFactory(BuildFactory): - def __init__(self): - BuildFactory.__init__(self) - self.steps.append(s(CompileWebKit, configuration="release")) - self.steps.append(s(PageLoadTest)) - -Win32BuildFactory = StandardBuildFactory - -class GtkBuildFactory(StandardBuildFactory): - def getCompileStep(self): - return CompileWebKitGtk - - def getJavaScriptCoreTestStep(self): - return JavaScriptCoreTestGtk - -class CoverageDataBuildFactory(BuildFactory): - def __init__(self): - BuildFactory.__init__(self) - self.steps.append(s(GenerateCoverageData)) - self.steps.append(s(UploadCoverageData)) diff --git a/WebKitTools/BuildSlaveSupport/build.webkit.org-config/webkit/schedulers.py b/WebKitTools/BuildSlaveSupport/build.webkit.org-config/webkit/schedulers.py deleted file mode 100644 index 11f9d41..0000000 --- a/WebKitTools/BuildSlaveSupport/build.webkit.org-config/webkit/schedulers.py +++ /dev/null @@ -1,15 +0,0 @@ -from buildbot.scheduler import Scheduler, Periodic - -def getSchedulers(builders): - builder_names = map(lambda builder: builder['name'], builders) - post_commit_builders = [name for name in builder_names if name.startswith('post-commit-')] + ['page-layout-test-mac-os-x'] - post_commit_builders = [name for name in post_commit_builders if name in builder_names] - post_commit_builders.sort() - - periodic_builders = [b['name'] for b in builders if b['name'].startswith('periodic-')] - periodic_builders.sort() - - post_commit = Scheduler(name="post-commit", branch=None, treeStableTimer=90, builderNames=post_commit_builders) - periodic = Periodic("periodic", periodic_builders, 6 * 60 * 60) - - return [post_commit, periodic] diff --git a/WebKitTools/BuildSlaveSupport/build.webkit.org-config/webkit/status.py b/WebKitTools/BuildSlaveSupport/build.webkit.org-config/webkit/status.py deleted file mode 100644 index ad5519e..0000000 --- a/WebKitTools/BuildSlaveSupport/build.webkit.org-config/webkit/status.py +++ /dev/null @@ -1,19 +0,0 @@ -from buildbot.status import html, mail, words - -web = html.WebStatus(http_port=8010) - -allBuildsEmail = mail.MailNotifier(fromaddr="buildbot@webkit.org", - extraRecipients=["mark+webkit-builds@bdash.net.nz"], - sendToInterestedUsers=False) -breakageEmail = mail.MailNotifier(fromaddr="buildbot@webkit.org", - lookup=mail.Domain("webkit.org"), - mode="failing") - -IRC = words.IRC(host="irc.freenode.net", - nick="webkit-build", - channels=["#webkit-build"], -# announceAllBuilds=True - ) - -def getStatusListeners(): - return [web, allBuildsEmail, breakageEmail, IRC] diff --git a/WebKitTools/BuildSlaveSupport/build.webkit.org-config/webkit/steps.py b/WebKitTools/BuildSlaveSupport/build.webkit.org-config/webkit/steps.py deleted file mode 100644 index c1933a3..0000000 --- a/WebKitTools/BuildSlaveSupport/build.webkit.org-config/webkit/steps.py +++ /dev/null @@ -1,220 +0,0 @@ -from webkit.basesteps import ShellCommand, SVN, Test, Compile, UploadCommand -from buildbot.status.builder import SUCCESS, FAILURE, WARNINGS - -class CheckOutSource(SVN): - svnurl = "http://svn.webkit.org/repository/webkit/trunk" - mode = "update" - def __init__(self, *args, **kwargs): - SVN.__init__(self, svnurl=self.svnurl, mode=self.mode, *args, **kwargs) - -class SetConfiguration(ShellCommand): - command = ["./WebKitTools/Scripts/set-webkit-configuration"] - - def __init__(self, *args, **kwargs): - configuration = kwargs.pop('configuration') - self.command = self.command + ['--' + configuration] - self.name = "set-configuration-%s" % (configuration, ) - self.description = ["set configuration %s" % (configuration, )] - self.descriptionDone = ["set configuration %s" % (configuration, )] - ShellCommand.__init__(self, *args, **kwargs) - - -class LayoutTest(Test): - name = "layout-test" - description = ["layout-tests running"] - descriptionDone = ["layout-tests"] - command = ["./WebKitTools/Scripts/run-webkit-tests", "--no-launch-safari", "--no-new-test-results", "--results-directory", "layout-test-results"] - - def commandComplete(self, cmd): - Test.commandComplete(self, cmd) - - logText = cmd.logs['stdio'].getText() - incorrectLayoutLines = [line for line in logText.splitlines() if line.find('had incorrect layout') >= 0 or (line.find('test case') >= 0 and line.find(' crashed') >= 0)] - if incorrectLayoutLines: - self.incorrectLayoutLines = incorrectLayoutLines - else: - self.incorrectLayoutLines = None - - def getText(self, cmd, results): - return self.getText2(cmd, results) - - def getText2(self, cmd, results): - if results != SUCCESS and self.incorrectLayoutLines: - return self.incorrectLayoutLines - - return [self.name] - - -class JavaScriptCoreTest(Test): - name = "jscore-test" - description = ["jscore-tests running"] - descriptionDone = ["jscore-tests"] - command = ["./WebKitTools/Scripts/run-javascriptcore-tests"] - logfiles = {'results': 'JavaScriptCore/tests/mozilla/actual.html'} - - def commandComplete(self, cmd): - Test.commandComplete(self, cmd) - - logText = cmd.logs['stdio'].getText() - statusLines = [line for line in logText.splitlines() if line.find('regression') >= 0 and line.find(' found.') >= 0] - if statusLines and statusLines[0].split()[0] != '0': - self.regressionLine = statusLines[0] - else: - self.regressionLine = None - - def evaluateCommand(self, cmd): - if cmd.rc != 0: - return FAILURE - - if self.regressionLine: - return FAILURE - - return SUCCESS - - def getText(self, cmd, results): - return self.getText2(cmd, results) - - def getText2(self, cmd, results): - if results != SUCCESS and self.regressionLine: - return [self.name, self.regressionLine] - - return [self.name] - -class PixelLayoutTest(LayoutTest): - name = "pixel-layout-test" - description = ["pixel-layout-tests running"] - descriptionDone = ["pixel-layout-tests"] - command = LayoutTest.command + ["--pixel"] - - -class LeakTest(Test): - name = "leak-test" - description = ["leak-tests running"] - descriptionDone = ["leak-tests"] - command = ["./WebKitTools/Scripts/run-webkit-tests", "--no-launch-safari", "--leaks", "--results-directory", "layout-test-results"] - - def commandComplete(self, cmd): - Test.commandComplete(self, cmd) - - logText = cmd.logs['stdio'].getText() - lines = logText.splitlines() - self.totalLeakLines = [line for line in lines if line.find('total leaks found!') >= 0] - self.totalLeakLines += [line for line in lines if line.find('LEAK: ') >= 0] - self.totalLeakLines = [' '.join(x.split()[1:]) for x in self.totalLeakLines] - self.totalLeakLines += [line for line in lines if line.find('test case') >= 0 and line.find('crashed') >= 0] - - - def evaluateCommand(self, cmd): - if cmd.rc != 0: - return FAILURE - - if self.totalLeakLines: - return FAILURE - - return SUCCESS - - def getText(self, cmd, results): - return self.getText2(cmd, results) - - def getText2(self, cmd, results): - if results != SUCCESS and self.totalLeakLines: - return self.totalLeakLines - return [self.name] - - -class UploadLayoutResults(UploadCommand, ShellCommand): - name = "upload-results" - description = ["uploading results"] - descriptionDone = ["uploaded-results"] - command = "echo Disabled for now" - - def __init__(self, *args, **kwargs): - ShellCommand.__init__(self, *args, **kwargs) - - def setBuild(self, build): - ShellCommand.setBuild(self, build) - self.initializeForUpload() - - self.command = '''\ - if [[ -d layout-test-results ]]; then \ - find layout-test-results -type d -print0 | xargs -0 chmod ug+rx; \ - find layout-test-results -type f -print0 | xargs -0 chmod ug+r; \ - rsync -rlvzP --rsync-path="/home/buildresults/bin/rsync" layout-test-results/ %s && rm -rf layout-test-results; \ - fi; \ - CRASH_LOG=~/Library/Logs/CrashReporter/DumpRenderTree*.crash*; \ - if [[ -f $(ls -1 $CRASH_LOG | head -n 1 ) ]]; then \ - chmod ug+r $CRASH_LOG; \ - rsync -rlvzP --rsync-path="/home/buildresults/bin/rsync" $CRASH_LOG %s && rm -rf $CRASH_LOG; \ - fi;''' % (self.getRemotePath(), self.getRemotePath()) - - self.addFactoryArguments(command=self.command) - - -class CompileWebKit(Compile): - command = ["./WebKitTools/Scripts/build-webkit", "--no-color"] - env = {'WEBKITSUPPORTLIBRARIESZIPDIR': 'C:\\cygwin\\home\\buildbot'} - def __init__(self, *args, **kwargs): - configuration = kwargs.pop('configuration') - - self.name = "compile-" + configuration - self.description = ["compiling " + configuration] - self.descriptionDone = ["compiled " + configuration] - - Compile.__init__(self, *args, **kwargs) - - -class CompileWebKitNoSVG(CompileWebKit): - command = 'rm -rf WebKitBuild && ./WebKitTools/Scripts/build-webkit --no-svg --no-color' - -class CompileWebKitGtk(CompileWebKit): - command = CompileWebKit.command + ['--gtk'] - -class JavaScriptCoreTestGtk(JavaScriptCoreTest): - command = JavaScriptCoreTest.command + ['--gtk'] - -class InstallWin32Dependencies(ShellCommand): - description = ["installing Windows dependencies"] - descriptionDone = ["installed Windows dependencies"] - command = ["WebKitTools/Scripts/update-webkit-auxiliary-libs"] - - -# class UploadDiskImage(UploadCommand, ShellCommand): -# description = ["uploading disk image"] -# descriptionDone = ["uploaded disk image"] -# name = "upload-disk-image" - -# def __init__(self, *args, **kwargs): -# UploadCommand.__init__(self, *args, **kwargs) -# self.command = 'umask 002 && ./WebKitTools/BuildSlaveSupport/build-launcher-app && ./WebKitTools/BuildSlaveSupport/build-launcher-dmg --upload-to-host %s' % (self.getRemotePath(), ) -# ShellCommand.__init__(self, *args, **kwargs) - -class GenerateCoverageData(Compile): - command = ["./WebKitTools/Scripts/generate-coverage-data"] - description = ["generating coverage data"] - descriptionDone = ["generated coverage data"] - - -class UploadCoverageData(UploadCommand, ShellCommand): - name = "upload-coverage-data" - description = ["uploading coverage data"] - descriptionDone = ["uploaded-coverage-data"] - command = "echo Disabled for now" - - def __init__(self, *args, **kwargs): - ShellCommand.__init__(self, *args, **kwargs) - - def setBuild(self, build): - ShellCommand.setBuild(self, build) - self.initializeForUpload() - - self.command = '''\ - if [[ -d WebKitBuild/Coverage/html ]]; then \ - find WebKitBuild/Coverage/html -type d -print0 | xargs -0 chmod ug+rx; \ - find WebKitBuild/Coverage/html -type f -print0 | xargs -0 chmod ug+r; \ - rsync -rlvzP --rsync-path="/home/buildresults/bin/rsync" WebKitBuild/Coverage/html/ %s && rm -rf WebKitBuild/Coverage/html; \ - fi;''' % (self.getRemotePath(), ) - - self.addFactoryArguments(command=self.command) - - def getURLPath(self): - return "/results/code-coverage/" diff --git a/WebKitTools/BuildSlaveSupport/run-performance-tests b/WebKitTools/BuildSlaveSupport/run-performance-tests deleted file mode 100755 index 5d6ea44..0000000 --- a/WebKitTools/BuildSlaveSupport/run-performance-tests +++ /dev/null @@ -1,80 +0,0 @@ -#!/usr/bin/perl -w - -# Copyright (C) 2006 Apple Computer, 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. -# 3. Neither the name of Apple Computer, Inc. ("Apple") nor the names of -# its contributors may be used to endorse or promote products derived -# from this software without specific prior written permission. -# -# 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. - -# Script used by WebKit build slave to kick off performance tests. - -use strict; - -use FindBin; -use lib "$FindBin::Bin/../Scripts"; -use webkitdirs; - -use Getopt::Long; -use IO::Socket; -my $shouldPrebuild = 1; - -my $perfMaster = "webkit-build-1.local"; -my $perfSlave = "webkit-build-2.local"; -my $slaveUser = "buildbot"; -my $reportPort = 54481; # Something that looks sorta like SAFARI -my $slaveDirectory = "/ToTest"; - -my $buildDirectory = determineConfigurationProductDir(); - -my $userAndHost = $slaveUser . "@" . $perfSlave; -my $resultsUploadDestination; - -GetOptions('upload-results=s' => \$resultsUploadDestination); - -print "Copying built frameworks to PLT slave...\n"; -my @frameworks = ("$buildDirectory/JavaScriptCore.framework", "$buildDirectory/WebCore.framework", "$buildDirectory/WebKit.framework"); -die "Failed to copy to slave\n" unless (system("rsync", "-avz", @frameworks, "$userAndHost:$slaveDirectory") == 0); - -print "Opening reponse port for PLT slave...\n"; -my $sock = new IO::Socket::INET(LocalHost => $perfMaster, - LocalPort => $reportPort, - Proto => 'tcp', - Listen => 1, - Reuse => 1); -die "Could not create socket for port $reportPort: $!\n" unless $sock; - -print "Starting performance tests on PLT slave...\n"; -die "Failed to start slave!\n" unless (system("ssh", $userAndHost, "autovicki", $slaveDirectory, "--safari", "$slaveDirectory/Safari.app", "--count", 5, "--clean-exit", "--webkit-revision", currentSVNRevision(), "--show-results", "send-completed-results.command") == 0); - -print "Waiting for PLT slave to respond...\n"; -my $new_sock = $sock->accept(); -while(<$new_sock>) { - print $_; -} -close($sock); - -if ($resultsUploadDestination) { - print "Uploading results to $resultsUploadDestination\n"; - die "Failed to upload xml results file." unless (system("scp", "$userAndHost:/Results/PerformanceReportSummary.xml", $resultsUploadDestination) == 0); - die "Failed to upload svg results file." unless (system("scp", "$userAndHost:/Results/PerformanceGraph.svg", $resultsUploadDestination) == 0); -} |