~ubuntu-branches/ubuntu/maverick/webkit/maverick

« back to all changes in this revision

Viewing changes to WebKitTools/BuildSlaveSupport/build-launcher-dmg

  • Committer: Bazaar Package Importer
  • Author(s): Mike Hommey
  • Date: 2007-08-19 15:54:12 UTC
  • Revision ID: james.westby@ubuntu.com-20070819155412-uxxg1h9plpghmtbi
Tags: upstream-0~svn25144
ImportĀ upstreamĀ versionĀ 0~svn25144

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
#!/usr/bin/perl -w
 
2
 
 
3
# Copyright (C) 2006 Apple Computer, Inc.  All rights reserved.
 
4
# Copyright (C) 2006 Mark Rowe <opendarwin.org@bdash.net.nz>.  All rights reserved.
 
5
#
 
6
# Redistribution and use in source and binary forms, with or without
 
7
# modification, are permitted provided that the following conditions
 
8
# are met:
 
9
#
 
10
# 1.  Redistributions of source code must retain the above copyright
 
11
#     notice, this list of conditions and the following disclaimer. 
 
12
# 2.  Redistributions in binary form must reproduce the above copyright
 
13
#     notice, this list of conditions and the following disclaimer in the
 
14
#     documentation and/or other materials provided with the distribution. 
 
15
# 3.  Neither the name of Apple Computer, Inc. ("Apple") nor the names of
 
16
#     its contributors may be used to endorse or promote products derived
 
17
#     from this software without specific prior written permission. 
 
18
#
 
19
# THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY
 
20
# EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
 
21
# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
 
22
# DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY
 
23
# DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
 
24
# (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
 
25
# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
 
26
# ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
 
27
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
 
28
# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 
29
 
 
30
# Script used by build slaves to create a disk-image containing WebKit.app.
 
31
 
 
32
use strict;
 
33
 
 
34
use File::Basename;
 
35
use Getopt::Long;
 
36
use FindBin;
 
37
use lib "$FindBin::Bin/../Scripts";
 
38
use webkitdirs;
 
39
 
 
40
my $nightlyLauncherStagingPath = productDir() . "/WebKit.app";
 
41
my $droseraStagingPath = productDir() . "/DroseraLauncher.app";
 
42
my $nightlyLauncherDiskImagePath;
 
43
 
 
44
my $nightlyRemoteHost = 'webkit-nightlies@live.nightly.webkit.org';
 
45
my $nightlyRemotePath = "/home/webkit-nightlies";
 
46
my $nightlyRemoteLatestPath = "$nightlyRemotePath/update-latest.sh";
 
47
 
 
48
sub buildDiskImage
 
49
{
 
50
    my $revision = currentSVNRevision();
 
51
    my $productDir = productDir();
 
52
    $nightlyLauncherDiskImagePath = productDir() . "/WebKit-SVN-r$revision.dmg";
 
53
    
 
54
    print "Removing previous temp source directory (if any)...\n";
 
55
    `rm -rf /tmp/WebKitNightly`;
 
56
    die "Removing previous temp source directory failed" if $?;
 
57
 
 
58
    print "Making a new temp source directory...\n";
 
59
    `mkdir /tmp/WebKitNightly`;
 
60
    die "Making a new temp source directory failed" if $?;
 
61
 
 
62
    print "Copying WebKit.app to temp source directory...\n";
 
63
    `cp -R \"$nightlyLauncherStagingPath\" /tmp/WebKitNightly/WebKit.app`;
 
64
    die "Copying WebKit.app to temp source directory failed" if $?;
 
65
 
 
66
    print "Copying Drosera.app to temp source directory...\n";
 
67
    `cp -R \"$droseraStagingPath\" /tmp/WebKitNightly/Drosera.app`;
 
68
    die "Copying Drosera.app to temp source directory failed" if $?;
 
69
 
 
70
    print "Creating disk image...\n";
 
71
    `hdiutil create \"$nightlyLauncherDiskImagePath\" -ov -srcfolder /tmp/WebKitNightly -fs HFS+ -volname \"WebKit\"`;
 
72
    die "Creating disk image failed" if $?;
 
73
 
 
74
    print "Removing temp source directory...\n";
 
75
    `rm -rf /tmp/WebKitNightly`;
 
76
    die "Removing temp source directory failed" if $?;
 
77
 
 
78
    print "Compressing disk image...\n";
 
79
    system("mv", "-f", $nightlyLauncherDiskImagePath, "$nightlyLauncherDiskImagePath.uncompressed.dmg") == 0 or die "Renaming disk image failed";
 
80
    system("hdiutil", "convert", "-quiet", "$nightlyLauncherDiskImagePath.uncompressed.dmg", "-format", "UDBZ", "-imagekey", "zlib-level=9", "-o", "$nightlyLauncherDiskImagePath");
 
81
    die "Compressing disk image failed" if $?;
 
82
 
 
83
    unlink "$nightlyLauncherDiskImagePath.uncompressed.dmg";
 
84
}
 
85
 
 
86
sub uploadNightlyDiskImage
 
87
{
 
88
    my $nightlyRemoteDiskImagePath = "$nightlyRemotePath/builds/" . basename($nightlyLauncherDiskImagePath);
 
89
    my $revision = currentSVNRevision();
 
90
    system("rsync", "-vP", $nightlyLauncherDiskImagePath, "$nightlyRemoteHost:$nightlyRemoteDiskImagePath") == 0 or die "Failed uploading disk image";
 
91
    system("ssh", $nightlyRemoteHost, $nightlyRemoteLatestPath, "mac", $nightlyRemoteDiskImagePath, $revision) == 0 or die "Failed linking disk image to latest";
 
92
}
 
93
 
 
94
sub uploadBuildSlaveDiskImage
 
95
{
 
96
    my $remoteDiskImagePath = shift(@_) . basename($nightlyLauncherDiskImagePath);
 
97
    system("rsync", "-vP", $nightlyLauncherDiskImagePath, $remoteDiskImagePath) == 0 or die "Failed uploading disk image";
 
98
}
 
99
 
 
100
 
 
101
my $uploadTo;
 
102
my $nightlyBuild = 0;
 
103
GetOptions('upload-to-host=s' => \$uploadTo,
 
104
           'upload-as-nightly!' => \$nightlyBuild);
 
105
 
 
106
chdirWebKit();
 
107
buildDiskImage();
 
108
 
 
109
if ($nightlyBuild) {
 
110
    uploadNightlyDiskImage();
 
111
} elsif ($uploadTo) {
 
112
    uploadBuildSlaveDiskImage($uploadTo);
 
113
} else {
 
114
    print "Disk image left at $nightlyLauncherDiskImagePath\n";
 
115
}