#!/usr/bin/perl -w # Copyright (C) 2005, 2006, 2007, 2008, 2009 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 INC. 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 INC. 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. use strict; use English; use File::Copy qw/ move /; use File::Temp qw/ tempdir tempfile /; use FindBin; use Getopt::Long qw(:config pass_through); use lib $FindBin::Bin; use webkitdirs; chdirWebKit(); my $showHelp = 0; my $programName = basename($0); sub usage() { my $usage = < --release Package roots from Release- EOF print $usage; exit 0; } my %options = ( 'help' => \$showHelp, ); usage() if not @ARGV or not GetOptions( 'help' => \$showHelp, ); usage() if $showHelp; setConfiguration(); my @privateFrameworks = qw(WebCore WebKitLegacy WebKit2); my @publicFrameworks = qw(JavaScriptCore WebKit); my $privateInstallPath = "/System/Library/PrivateFrameworks"; my $publicInstallPath = "/System/Library/Frameworks"; my $configuration = configuration(); my $platform = xcodeSDKPlatformName(); my $productDir = productDir(); my $stagingRoot = tempdir(CLEANUP => 1); my $stagingPrivatePath = "/$stagingRoot$privateInstallPath"; my $stagingPublicPath = "/$stagingRoot/$publicInstallPath"; my $archiveName = "webkit-$configuration-$platform"; my $archivePath = "$productDir/$archiveName.tar.gz"; my ($fh, $tempArchiveName) = tempfile( "/tmp/$archiveName-XXXXXXX"); foreach my $framework (@privateFrameworks) { print "Copying Private $framework from $productDir ...\n"; system 'ditto', $productDir . "/$framework.framework/", "$stagingPrivatePath/$framework.framework/"; die "Check to see that you have built $framework for $configuration-$platform" if $? and $framework ne 'WebKit2'; } foreach my $framework (@publicFrameworks) { print "Copying Public $framework from $productDir ...\n"; system 'ditto', $productDir . "/$framework.framework/", "$stagingPublicPath/$framework.framework/"; die "Check to see that you have built $framework for $configuration-$platform" if $?; } system 'ditto', "$productDir/usr", "$stagingRoot/usr"; chdir $stagingRoot; print "Creating compressed archive ...\n"; system 'ditto', '-cz', $stagingRoot, $tempArchiveName; chdirWebKit(); my $moved = move($tempArchiveName, $archivePath); if ($moved) { print "Your root is: $archivePath\n"; } else { print "Couldn't move temporary archive $tempArchiveName to $archivePath\n"; }