Reviewed by Antti.
[WebKit-https.git] / WebKitTools / BuildSlaveSupport / build-launcher-app
old mode 100644 (file)
new mode 100755 (executable)
index 395b625..19b55c9
@@ -38,19 +38,35 @@ use webkitdirs;
 my @xcodeBuildArguments = XcodeOptions();
 my $nightlyLauncherTemplatePath = "$FindBin::Bin/../WebKitLauncher";
 my $nightlyLauncherStagingPath = productDir() . "/WebKit.app";
+my $droseraProjectPath = "$FindBin::Bin/../Drosera/mac";
+my $droseraStagingPath = productDir() . "/DroseraLauncher.app";
 
 sub buildNightlyLauncher
 {
     chdir($nightlyLauncherTemplatePath);
-    system("xcodebuild", "clean", @xcodeBuildArguments) == 0 or die "Failed cleaning WebKitLauncher project";
-    system("xcodebuild", @xcodeBuildArguments) == 0 or die "Failed building WebKitLauncher project";
+    system("xcodebuild", "clean", "-alltargets", @xcodeBuildArguments, @ARGV) == 0 or die "Failed cleaning WebKitLauncher project";
+    system("xcodebuild", @xcodeBuildArguments, @ARGV) == 0 or die "Failed building WebKitLauncher project";
     chdirWebKit();
 }
 
+sub currentSVNBranch
+{
+    my $sourceDir = sourceDir();
+    my $svnInfo = `LC_ALL=C svn info $sourceDir | grep URL:`;
+    (my $url) = ($svnInfo =~ m/URL: (.+)/g);
+    (my $branch) = ($url =~ m/\/svn\/webkit\/(trunk|branches\/[^\/]+)/);
+    die "Unable to determine current SVN branch in $sourceDir" unless (defined $branch);
+    $branch =~ s/^branches\///;
+    return $branch
+}
+
 sub copyNightlyLauncher
 {
     my $revision = currentSVNRevision();
+    my $branch = currentSVNBranch();
     my $infoPlist = "$nightlyLauncherStagingPath/Contents/Info.plist";
+    my $versionFile = "$nightlyLauncherStagingPath/Contents/Resources/VERSION";
+    my $branchFile = "$nightlyLauncherStagingPath/Contents/Resources/BRANCH";
     my $data;
     open(IN, $infoPlist) or die "Couldn't open Info.plist in built application for reading";
     {
@@ -62,19 +78,50 @@ sub copyNightlyLauncher
     $data =~ s/VERSION/$revision/g;
     print OUT $data;
     close(OUT);
-    
+
+    open(OUT, ">$versionFile") or die "Couldn't open VERSION in built application for writing";
+    print OUT "$revision\n";
+    close(OUT);
+
+    open(OUT, ">$branchFile") or die "Couldn't open BRANCH in built application for writing";
+    print OUT "$branch\n";
+    close(OUT);
+
     my @frameworks = ("JavaScriptCore", "JavaScriptGlue", "WebCore", "WebKit");
     for my $framework (@frameworks) {
         system("ditto", productDir() . "/$framework.framework", "$nightlyLauncherStagingPath/Contents/Resources/$framework.framework") == 0 or die "Failed copying $framework.framework into $nightlyLauncherStagingPath";
     }
 }
 
+sub buildDroseraLauncher
+{
+    chdir($droseraProjectPath);
+    system("xcodebuild", "clean", "-alltargets", @xcodeBuildArguments, @ARGV) == 0 or die "Failed cleaning Drosera project";
+    # Build native platform only right now, as building universal with the 10.4u SDK cause Xcode to look for WebKit,
+    # WebCore & JavaScriptCore in the SDK under /Developer/SDKs/MacOSX10.4u.sdk/$(BUILT_PRODUCTS_DIR) where they do not exist
+    system("xcodebuild", "-alltargets", @xcodeBuildArguments, @ARGV) == 0 or die "Failed building Drosera project";
+    chdirWebKit();
+}
+
+sub setDroseraLauncherVersion
+{
+    my $revision = currentSVNRevision();
+    my $infoPlist = "$droseraStagingPath/Contents/Info.plist";
+    my $data;
+    open(IN, $infoPlist) or die "Couldn't open Info.plist in built application for reading";
+    {
+        undef $/;
+        $data = <IN>;
+    }
+    close(IN);
+    open(OUT, ">$infoPlist") or die "Couldn't open Info.plist in built application for writing";
+    $data =~ s/VERSION/$revision/g;
+    print OUT $data;
+    close(OUT);
+}
+
 chdirWebKit();
 buildNightlyLauncher();
 copyNightlyLauncher();
-
-Property changes on: WebKitTools/BuildSlaveSupport/build-launcher-app
-___________________________________________________________________
-Name: svn:executable
-   + *
-
+buildDroseraLauncher();
+setDroseraLauncherVersion();