[webkit-reviews] some build script improvements

Maciej Stachowiak mjs at apple.com
Wed Jun 8 22:57:10 PDT 2005


r=me

On Jun 8, 2005, at 10:46 PM, Darin Adler wrote:

> Index: ChangeLog
> ===================================================================
> RCS file: /cvs/root/WebKitTools/ChangeLog,v
> retrieving revision 1.13
> diff -p -u -u -p -r1.13 ChangeLog
> --- ChangeLog    8 Jun 2005 09:00:52 -0000    1.13
> +++ ChangeLog    9 Jun 2005 05:26:49 -0000
> @@ -1,3 +1,19 @@
> +2005-06-08  Darin Adler  <darin at apple.com>
> +
> +        Reviewed by NOBODY (OOPS!).
> +
> +        - some build script enhancements
> +
> +        * Scripts/build-dumprendertree: Changed to use webkitdirs.
> +        * Scripts/build-webkit: Changed to use webkitdirs, also  
> only copy files from WebKitLibraries if
> +        they are newer.
> +        * Scripts/run-safari: Reduce number of log messages,  
> change to respect "-d" flag and get Development
> +        before Deplyment in that case.
> +        * Scripts/run-webkit-tests: Changed to use webkitdirs.
> +        * Scripts/update-webkit: Changed to use webkitdirs.
> +
> +        * Scripts/webkitdirs.pm: Added.
> +
>  2005-06-08  Maciej Stachowiak  <mjs at apple.com>
>
>      Code change by Toby Peterson <toby at opendarwin.org>
> Index: Scripts/build-dumprendertree
> ===================================================================
> RCS file: /cvs/root/WebKitTools/Scripts/build-dumprendertree,v
> retrieving revision 1.3
> diff -p -u -u -p -r1.3 Scripts/build-dumprendertree
> --- Scripts/build-dumprendertree    8 Jun 2005 00:27:05 -0000    1.3
> +++ Scripts/build-dumprendertree    9 Jun 2005 05:26:49 -0000
> @@ -31,24 +31,10 @@
>  # Currently only works for the Deployment build style.
>
>  use strict;
> +use webkitdirs;
>
> -# Check that we're in the right directory.
> -if (! -d "WebKitTools") {
> -    if (-d "../WebKitTools") {
> -        chdir ".." or die;
> -    }
> -    if (! -d "WebKitTools") {
> -        die "No WebKitTools directory found. Please run this  
> script from the directory containing WebKitTools.\n";
> -    }
> -}
> -
> -# Check that an Xcode product directory is set.
> -open PRODUCT, "defaults read com.apple.Xcode PBXProductDirectory  
> 2> /dev/null |" or die;
> -my $productDir = <PRODUCT>;
> -close PRODUCT;
> -if (!$productDir) {
> -    die "No product directory set. Please set the 'Place Build  
> Products' preference to 'Customized location' in XCode Building  
> Preferences.\n";
> -}
> +chdirWebKit();
> +my $productDir = productDir();
>
>  # Build
>  chdir "WebKitTools/DumpRenderTree" or die;
> Index: Scripts/build-webkit
> ===================================================================
> RCS file: /cvs/root/WebKitTools/Scripts/build-webkit,v
> retrieving revision 1.6
> diff -p -u -u -p -r1.6 Scripts/build-webkit
> --- Scripts/build-webkit    7 Jun 2005 21:58:56 -0000    1.6
> +++ Scripts/build-webkit    9 Jun 2005 05:26:49 -0000
> @@ -30,30 +30,15 @@
>
>  use strict;
>  use Getopt::Long;
> +use webkitdirs;
>
>  my $debug = 0;
>  GetOptions("debug!" => \$debug);
>
>  my $style = $debug ? "Development" : "Deployment";
>
> -# Check that we're in the right directory.
> -if (! -d "WebKitTools") {
> -    if (-d "../WebKitTools") {
> -        chdir ".." or die;
> -    }
> -    if (! -d "WebKitTools") {
> -        die "No WebKitTools directory found. Please run this  
> script from the directory containing WebKitTools.\n";
> -    }
> -}
> -
> -# Check that an Xcode product directory is set.
> -open PRODUCT, "defaults read com.apple.Xcode PBXProductDirectory  
> 2> /dev/null |" or die;
> -my $productDir = <PRODUCT>;
> -chomp $productDir;
> -close PRODUCT;
> -if (!$productDir) {
> -    die "No product directory set. Please set the 'Place Build  
> Products' preference to 'Customized location' in XCode Building  
> Preferences.\n";
> -}
> +chdirWebKit();
> +my $productDir = productDir();
>
>  # Check that all the project directories are there.
>  my @projects = ("JavaScriptCore", "WebCore", "WebKit");
> @@ -65,13 +50,20 @@ for my $dir (@projects, @otherDirs) {
>  }
>
>  # Copy library and header from WebKitLibraries to a findable place  
> in the product directory.
> -chdir "WebKitLibraries" or die;
> -print "${productDir}/libWebKitSystemInterface.a\n";
> -`ditto libWebKitSystemInterface.a "${productDir}/ 
> libWebKitSystemInterface.a"`;
> -`ranlib "${productDir}/libWebKitSystemInterface.a"`;
> -`mkdir -p "${productDir}/usr/local/include"`;
> -`ditto WebKitSystemInterface.h "${productDir}/usr/local/include/ 
> WebKitSystemInterface.h"`;
> -chdir ".." or die;
> +my $srcLib = "WebKitLibraries/libWebKitSystemInterface.a";
> +my $lib = "${productDir}/libWebKitSystemInterface.a";
> +if (!-e $lib || -M $lib > -M $srcLib) {
> +    print "Updating $lib\n";
> +    system "ditto", $srcLib, $lib;
> +    system "ranlib", $lib;
> +}
> +my $srcHeader = "WebKitLibraries/WebKitSystemInterface.h";
> +my $header = "${productDir}/usr/local/include/ 
> WebKitSystemInterface.h";
> +if (!-e $header || -M $header > -M $srcHeader) {
> +    print "Updating $header\n";
> +    system "mkdir", "-p", "${productDir}/usr/local/include";
> +    system "ditto", $srcHeader, $header;
> +}
>
>  # Make symlinks so Xcode 2.1 can find the WebKitLibraries files.
>  `mkdir -p "${productDir}/${style}"`;
> Index: Scripts/run-safari
> ===================================================================
> RCS file: /cvs/root/WebKitTools/Scripts/run-safari,v
> retrieving revision 1.4
> diff -p -u -u -p -r1.4 Scripts/run-safari
> --- Scripts/run-safari    8 Jun 2005 09:00:52 -0000    1.4
> +++ Scripts/run-safari    9 Jun 2005 05:26:49 -0000
> @@ -26,24 +26,18 @@
>  # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF  
> THE USE OF
>  # THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
>
> -# Simplified build script for Web Kit Open Source Project.
> +# Simplified "run" script for Web Kit Open Source Project.
>
>  use strict;
>  use Getopt::Long;
> +use webkitdirs;
>
>  my $debug = 0;
>  GetOptions("debug!" => \$debug);
>
> -# Check that an Xcode product directory is set.
> -open PRODUCT, "defaults read com.apple.Xcode PBXProductDirectory  
> 2> /dev/null |" or die;
> -my $productDir = <PRODUCT>;
> -chomp $productDir;
> -close PRODUCT;
> -if (!$productDir) {
> -    die "No product directory set. Please set the 'Place Build  
> Products' preference to 'Customized location' in XCode Building  
> Preferences.\n";
> -}
> +my $productDir = productDir();
>
> -# Check to see that Safari is there.
> +# Check to see that Safari is in the usual place.
>  my $safariPath = "/Applications/Safari.app/Contents/MacOS/Safari";
>  if (! -x $safariPath) {
>      die "Can't find executable at $safariPath.\n";
> @@ -51,32 +45,23 @@ if (! -x $safariPath) {
>
>  # Search for build products; first test Xcode 2.0 location, then  
> Xcode 2.1 locations.
>  # For Xcode 2.1, prefer Deployment if both directories are present.
> -my @testDirs = ( "$productDir", "$productDir/Deployment",  
> "$productDir/Development" );
> +my @testDirs;
> +if ($debug) {
> +    @testDirs = ("$productDir", "$productDir/Deployment",  
> "$productDir/Development");
> +} else {
> +    @testDirs = ("$productDir", "$productDir/Development",  
> "$productDir/Deployment");
> +}
>  my $found = 0;
>  for my $testDir (@testDirs) {
> -    # Check to see that frameworks are there.
> -    print "Looking for frameworks in $testDir ...\n";
> -
> -    if (! -x "$testDir/JavaScriptCore.framework/Versions/A/ 
> JavaScriptCore") {
> -        print "Can't find executable at $testDir/ 
> JavaScriptCore.framework/Versions/A/JavaScriptCore\n";
> -        next;
> -    }
> -    if (! -x "$testDir/WebCore.framework/Versions/A/WebCore") {
> -        print "Can't find executable at $testDir/WebCore.framework/ 
> Versions/A/WebCore\n";
> -        next;
> -    }
> -    if (! -x "$testDir/WebKit.framework/Versions/A/WebKit") {
> -        print "Can't find executable at $testDir/WebKit.framework/ 
> Versions/A/WebKit\n";
> -        next;
> -    }
> -
> -    print "Built frameworks found in $testDir\n";
> -    $productDir = $testDir;
> -    $found = 1;
> -    last;
> +    next if !-x "$testDir/JavaScriptCore.framework/Versions/A/ 
> JavaScriptCore";
> +    next if !-x "$testDir/WebCore.framework/Versions/A/WebCore";
> +    next if !-x "$testDir/WebKit.framework/Versions/A/WebKit";
> +    $productDir = $testDir;
> +    $found = 1;
> +    last;
>  }
>  if (!$found) {
> -    die "Could not locate frameworks.\n";
> +    die "Could not locate frameworks.\n";
>  }
>
>  # Set up DYLD_FRAMEWORK_PATH to point to the product directory.
> Index: Scripts/run-webkit-tests
> ===================================================================
> RCS file: /cvs/root/WebKitTools/Scripts/run-webkit-tests,v
> retrieving revision 1.4
> diff -p -u -u -p -r1.4 Scripts/run-webkit-tests
> --- Scripts/run-webkit-tests    7 Jun 2005 22:45:57 -0000    1.4
> +++ Scripts/run-webkit-tests    9 Jun 2005 05:26:49 -0000
> @@ -30,6 +30,7 @@
>
>  use strict;
>  use IPC::Open2;
> +use webkitdirs;
>
>  # Run all the tests passed in on the command line.
>  # If no tests are passed, find all the .html, .xml, and .xhtml  
> files in the test directory.
> @@ -44,24 +45,8 @@ use IPC::Open2;
>  #   the number of tests that failed to run
>  #   the number of tests that were run but had no expected results  
> to compare against
>
> -# Check that we're in the right directory.
> -if (! -d "WebKitTools") {
> -    if (-d "../WebKitTools") {
> -        chdir ".." or die;
> -    }
> -    if (! -d "WebKitTools") {
> -        die "No WebKitTools directory found. Please run this  
> script from the directory containing WebKitTools.\n";
> -    }
> -}
> -
> -# Check that an Xcode product directory is set.
> -open PRODUCT, "defaults read com.apple.Xcode PBXProductDirectory  
> 2> /dev/null |" or die;
> -my $productDir = <PRODUCT>;
> -chomp $productDir;
> -close PRODUCT;
> -if (!$productDir) {
> -    die "No product directory set. Please set the 'Place Build  
> Products' preference to 'Customized location' in XCode Building  
> Preferences.\n";
> -}
> +chdirWebKit();
> +my $productDir = productDir();
>
>  my $result = system "WebKitTools/Scripts/build-dumprendertree";
>  exit $result if $result;
> Index: Scripts/update-webkit
> ===================================================================
> RCS file: /cvs/root/WebKitTools/Scripts/update-webkit,v
> retrieving revision 1.2
> diff -p -u -u -p -r1.2 Scripts/update-webkit
> --- Scripts/update-webkit    7 Jun 2005 22:02:25 -0000    1.2
> +++ Scripts/update-webkit    9 Jun 2005 05:26:49 -0000
> @@ -29,16 +29,9 @@
>  # Update script for Web Kit Open Source Project.
>
>  use strict;
> +use webkitdirs;
>
> -# Check that we're in the right directory.
> -if (! -d "WebKitTools") {
> -    if (-d "../WebKitTools") {
> -        chdir ".." or die;
> -    }
> -    if (! -d "WebKitTools") {
> -        die "No WebKitTools directory found. Please run this  
> script from the directory containing WebKitTools.\n";
> -    }
> -}
> +chdirWebKit();
>
>  # Read the CVS root out of one project that's guaranteed to  
> already be checked out.
>  open ROOT, "WebKitTools/CVS/Root" or die;
> Index: Scripts/webkitdirs.pm
> ===================================================================
> RCS file: Scripts/webkitdirs.pm
> diff -N Scripts/webkitdirs.pm
> --- /dev/null    1 Jan 1970 00:00:00 -0000
> +++ Scripts/webkitdirs.pm    9 Jun 2005 05:26:49 -0000
> @@ -0,0 +1,71 @@
> +# Copyright (C) 2005 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.
> +
> +# Module to share code to get to WebKit directories.
> +
> +use strict;
> +use warnings;
> +
> +BEGIN {
> +   use Exporter   ();
> +   our ($VERSION, @ISA, @EXPORT, @EXPORT_OK, %EXPORT_TAGS);
> +   $VERSION     = 1.00;
> +   @ISA         = qw(Exporter);
> +   @EXPORT      = qw(&chdirWebKit &productDir);
> +   %EXPORT_TAGS = ( );
> +   @EXPORT_OK   = ();
> +}
> +
> +our @EXPORT_OK;
> +
> +# Check that we're in the right directory.
> +sub chdirWebKit
> +{
> +    if (! -d "WebKitTools") {
> +        if (-d "../WebKitTools") {
> +            chdir ".." or die;
> +        }
> +        if (-d "../../WebKitTools") {
> +            chdir "../.." or die;
> +        }
> +        if (! -d "WebKitTools") {
> +            die "No WebKitTools directory found. Please run this  
> script from the directory containing WebKitTools.\n";
> +        }
> +    }
> +}
> +
> +# Check that an Xcode product directory is set.
> +sub productDir
> +{
> +    open PRODUCT, "defaults read com.apple.Xcode  
> PBXProductDirectory 2> /dev/null |" or die;
> +    my $productDir = <PRODUCT>;
> +    chomp $productDir;
> +    close PRODUCT;
> +    $productDir = $ENV{HOME} . "/WebKitBuilds" unless $productDir;
> +    return $productDir;
> +}
> +
> +1;
>
> _______________________________________________
> webkit-reviews mailing list
> webkit-reviews at opendarwin.org
> http://www.opendarwin.org/mailman/listinfo/webkit-reviews
>




More information about the webkit-reviews mailing list