Changes based on input from Michael Kahl.
authordarin <darin@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Thu, 23 Jun 2005 14:53:16 +0000 (14:53 +0000)
committerdarin <darin@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Thu, 23 Jun 2005 14:53:16 +0000 (14:53 +0000)
        * Scripts/cvs-create-patch: Added code to handle getting changes in the top-level
        directory passed in.

        * Scripts/webkitdirs.pm: Eliminate use of changing the current directory and using
        getcwd() in the code to find the base product dir. Added code to handle unusual
        base product directory values that use SRCROOT.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@9473 268f45cc-cd09-0410-ab3c-d52691b4dbfc

WebKitTools/ChangeLog
WebKitTools/Scripts/cvs-create-patch
WebKitTools/Scripts/webkitdirs.pm

index 84e6b5d2c5006a83e66fc51d9540c6e6b8e7f952..9d5f97b2854800838c3272add1dea8a33fb5ccf3 100644 (file)
@@ -1,3 +1,14 @@
+2005-06-23  Darin Adler  <darin@apple.com>
+
+        Changes based on input from Michael Kahl.
+
+        * Scripts/cvs-create-patch: Added code to handle getting changes in the top-level
+        directory passed in.
+
+        * Scripts/webkitdirs.pm: Eliminate use of changing the current directory and using
+        getcwd() in the code to find the base product dir. Added code to handle unusual
+        base product directory values that use SRCROOT.
+
 2005-06-22  Darin Adler  <darin@apple.com>
 
         Change by Anders Carlsson.
index 8a57bbf2ec667b8eef35cc7f9dece71069be5ebe..bb07ec95daebe0b93a13b0a86b674d3baff216e5 100755 (executable)
@@ -96,6 +96,10 @@ for my $path (keys %paths) {
 sub getDirAndBase
 {
     my ($path) = @_;
+    if (-d $path) {
+        $path =~ s|/+$||;
+        return ($path, ".");
+    }
     return ($1, $2) if $path =~ m|^(.+)/([^/]+)$|;
     $path !~ m|/| or die "Could not parse path name $path.\n";
     return (".", $path);
index bdb13267677c59eb2cade86ac845a4e6ce1250b4..d9c73db43f95debca2600cf3298c6e05ee158a1e 100644 (file)
@@ -29,7 +29,6 @@
 use strict;
 use warnings;
 use FindBin;
-use Cwd;
 
 BEGIN {
    use Exporter   ();
@@ -47,15 +46,16 @@ my $baseProductDir;
 my @baseProductDirOption;
 my $configuration;
 my $configurationProductDir;
-my $didChdirWebKit;
 my $XcodeVersion;
+my $sourceDir;
 
-# Check that we're in the right directory.
-sub chdirWebKit
+sub determineSourceDir
 {
-    return if $didChdirWebKit;
-    $didChdirWebKit = 1;
-    chdir "$FindBin::Bin/../.." or die;
+    return if $sourceDir;
+    $sourceDir = $FindBin::Bin;
+    if ($sourceDir !~ s|/[^/]+/[^/]+$||) {
+        die "Could not find two levels above source directory using FindBin.\n";
+    }
 }
 
 sub determineXcodeVersion
@@ -71,18 +71,22 @@ sub determineXcodeVersion
 sub determineBaseProductDir
 {
     return if defined $baseProductDir;
+    determineSourceDir();
     open PRODUCT, "defaults read com.apple.Xcode PBXProductDirectory 2> /dev/null |" or die;
     $baseProductDir = <PRODUCT>;
     close PRODUCT;
     if ($baseProductDir) {
         chomp $baseProductDir;
+        $baseProductDir =~ s|^\$(SRCROOT)/\.\.$|$sourceDir|;
+        $baseProductDir =~ s|^\$(SRCROOT)/\.\./|$sourceDir/|;
+        $baseProductDir =~ s|^~/|$ENV{HOME}/|;
+        die "Can't handle Xcode product directory with a ~ in it.\n" if $baseProductDir =~ /~/;
+        die "Can't handle Xcode product directory with a variable in it.\n" if $baseProductDir =~ /\$/;
         @baseProductDirOption = ();
     } else {
-        chdirWebKit();
-        $baseProductDir = getcwd() . "/WebKitBuild";
+        $baseProductDir = "$sourceDir/WebKitBuild";
         @baseProductDirOption = ("SYMROOT=$baseProductDir");
     }
-    $baseProductDir =~ s|^~/|$ENV{HOME}/|;
 }
 
 sub determineConfiguration
@@ -117,6 +121,12 @@ sub determineConfigurationProductDir
     }
 }
 
+sub chdirWebKit
+{
+    determineSourceDir();
+    chdir $sourceDir or die;
+}
+
 sub baseProductDir
 {
     determineBaseProductDir();