Move cursor to corner and fix safari window size before running benchmark
[WebKit-https.git] / Tools / Scripts / package-root
1 #!/usr/bin/perl -w
2 # Copyright (C) 2005, 2006, 2007, 2008, 2009 Apple Inc. All rights reserved.
3 #
4 # Redistribution and use in source and binary forms, with or without
5 # modification, are permitted provided that the following conditions
6 # are met:
7 # 1.  Redistributions of source code must retain the above copyright
8 #     notice, this list of conditions and the following disclaimer.
9 # 2.  Redistributions in binary form must reproduce the above copyright
10 #     notice, this list of conditions and the following disclaimer in the
11 #     documentation and/or other materials provided with the distribution.
12 #
13 # THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS'' AND ANY
14 # EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
15 # WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
16 # DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS BE LIABLE FOR ANY
17 # DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
18 # (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
19 # LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
20 # ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
21 # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
22 # SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
23
24 use strict;
25 use English;
26 use File::Copy qw/ move /;
27 use File::Temp qw/ tempdir tempfile /;
28 use FindBin;
29 use Getopt::Long qw(:config pass_through);
30 use lib $FindBin::Bin;
31 use webkitdirs;
32
33 chdirWebKit();
34
35 my $showHelp = 0;
36
37 my $programName = basename($0);
38
39 sub usage()
40 {
41     my $usage = <<EOF;
42     Bundles up products created with build-webkit into a zip suitable for sharing as a root.
43     The archive is created in the top level webkit directory.
44
45     Usage: $programName [configuration options]
46       --help                            Show this help message
47       --sdk                             Specifies SDK for which the roots are staged
48                                         (Default: currently installed Base SDK)
49       --device                          Equivalent to --sdk iphoneos.internal
50       --ios-simulator                   Equivalent to --sdk iphonesimulator
51       --debug                           Package roots from Debug-<platform>
52       --release                         Package roots from Release-<platform>
53
54 EOF
55
56     print $usage;
57     exit 0;
58 }
59
60 my %options = (
61     'help' => \$showHelp,
62 );
63
64 usage() if not @ARGV or not GetOptions(
65     'help' => \$showHelp,
66 );
67 usage() if $showHelp;
68
69 setConfiguration();
70
71 my @privateFrameworks = qw(WebCore WebKitLegacy WebKit2);
72 my @publicFrameworks = qw(JavaScriptCore WebKit);
73 my $privateInstallPath = "/System/Library/PrivateFrameworks";
74 my $publicInstallPath = "/System/Library/Frameworks";
75
76 my $configuration = configuration();
77 my $platform = xcodeSDKPlatformName();
78 my $productDir = productDir();
79 my $stagingRoot = tempdir(CLEANUP => 1);
80 my $stagingPrivatePath = "/$stagingRoot$privateInstallPath";
81 my $stagingPublicPath = "/$stagingRoot/$publicInstallPath";
82 my $archiveName = "webkit-$configuration-$platform";
83 my $archivePath = "$productDir/$archiveName.tar.gz";
84 my ($fh, $tempArchiveName) = tempfile( "/tmp/$archiveName-XXXXXXX");
85
86 foreach my $framework (@privateFrameworks) {
87     print "Copying Private $framework from $productDir ...\n";
88     system 'ditto', $productDir . "/$framework.framework/", "$stagingPrivatePath/$framework.framework/";
89     die "Check to see that you have built $framework for $configuration-$platform" if $? and $framework ne 'WebKit2';
90 }
91
92 foreach my $framework (@publicFrameworks) {
93     print "Copying Public $framework from $productDir ...\n";
94     system 'ditto', $productDir . "/$framework.framework/", "$stagingPublicPath/$framework.framework/";
95     die "Check to see that you have built $framework for $configuration-$platform" if $?;
96 }
97
98 system 'ditto', "$productDir/usr", "$stagingRoot/usr";
99
100 chdir $stagingRoot;
101 print "Creating compressed archive ...\n";
102 system 'ditto', '-cz', $stagingRoot, $tempArchiveName;
103
104 chdirWebKit();
105 my $moved = move($tempArchiveName, $archivePath);
106
107 if ($moved) {
108     print "Your root is: $archivePath\n";
109 } else {
110     print "Couldn't move temporary archive $tempArchiveName to $archivePath\n";
111 }