* Prepend git branch name to $baseProductDir
authortreat@webkit.org <treat@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Tue, 20 Nov 2007 18:01:54 +0000 (18:01 +0000)
committertreat@webkit.org <treat@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Tue, 20 Nov 2007 18:01:54 +0000 (18:01 +0000)
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@27930 268f45cc-cd09-0410-ab3c-d52691b4dbfc

WebKitTools/ChangeLog
WebKitTools/Scripts/VCSUtils.pm
WebKitTools/Scripts/webkitdirs.pm

index 216616b..0ba8f1e 100644 (file)
@@ -1,3 +1,12 @@
+2007-11-20  Adam Treat  <treat@kde.org>
+
+        Reviewed by David Kilzer.
+
+        * Prepend git branch name to $baseProductDir
+
+        * Scripts/VCSUtils.pm:
+        * Scripts/webkitdirs.pm:
+
 2007-11-20  Mark Rowe  <mrowe@apple.com>
 
         Reviewed by Simon Hausmann.
index 3ba40e1..26401f4 100644 (file)
@@ -29,6 +29,7 @@
 use strict;
 use warnings;
 use File::Spec;
+use webkitdirs;
 
 BEGIN {
    use Exporter   ();
@@ -44,6 +45,8 @@ our @EXPORT_OK;
 
 my $isGit;
 my $isSVN;
+my $gitBranch;
+my $isGitBranchBuild;
 
 sub isGitDirectory($)
 {
@@ -59,6 +62,33 @@ sub isGit()
     return $isGit;
 }
 
+sub gitBranch()
+{
+    unless (defined $gitBranch) {
+        chomp($gitBranch = `git symbolic-ref -q HEAD`);
+        $gitBranch = "" if exitStatus($?);
+        $gitBranch =~ s#^refs/heads/##;
+        $gitBranch = "" if $gitBranch eq "master";
+    }
+
+    return $gitBranch;
+}
+
+sub isGitBranchBuild()
+{
+    my $branch = gitBranch();
+    chomp(my $override = `git config --bool branch.$branch.webKitBranchBuild`);
+    return 1 if $override eq "true";
+    return 0 if $override eq "false";
+
+    unless (defined $isGitBranchBuild) {
+        chomp(my $gitBranchBuild = `git config --bool core.webKitBranchBuild`);
+        $isGitBranchBuild = $gitBranchBuild eq "true";
+    }
+
+    return $isGitBranchBuild;
+}
+
 sub isSVNDirectory($)
 {
     my ($dir) = @_;
index b1273fd..d962159 100644 (file)
@@ -31,6 +31,7 @@ use warnings;
 use FindBin;
 use File::Basename;
 use POSIX;
+use VCSUtils;
 
 BEGIN {
    use Exporter   ();
@@ -124,6 +125,12 @@ sub determineBaseProductDir
 
     if (!defined($baseProductDir)) {
         $baseProductDir = "$sourceDir/WebKitBuild";
+
+        if (isGit() && isGitBranchBuild()) {
+            my $branch = gitBranch();
+            $baseProductDir = "$baseProductDir/$branch";
+        }
+
         @baseProductDirOption = ("SYMROOT=$baseProductDir", "OBJROOT=$baseProductDir") if (isOSX());
         if (isCygwin()) {
             my $dosBuildPath = `cygpath --windows \"$baseProductDir\"`;
@@ -721,11 +728,17 @@ sub buildQMakeProject($@)
 
     my $dir = baseProductDir();
     if (! -d $dir) {
-        mkdir $dir or die "Failed to create product directory " . $dir;
+        system "mkdir", "-p", "$dir";
+        if (! -d $dir) {
+            die "Failed to create product directory " . $dir;
+        }
     }
     $dir = $dir . "/$config";
     if (! -d $dir) {
-        mkdir $dir or die "Failed to create build directory " . $dir;
+        system "mkdir", "-p", "$dir";
+        if (! -d $dir) {
+            die "Failed to create build directory " . $dir;
+        }
     }
 
     chdir $dir or die "Failed to cd into " . $dir . "\n";