bisect-builds doesn't work with nightly build r19992 or newer on Leopard
authorddkilzer <ddkilzer@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Mon, 5 Nov 2007 06:38:23 +0000 (06:38 +0000)
committerddkilzer <ddkilzer@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Mon, 5 Nov 2007 06:38:23 +0000 (06:38 +0000)
        <http://bugs.webkit.org/show_bug.cgi?id=15830>

        Reviewed by Timothy.

        Restrict the range of nightly builds used by the bisect-builds script
        based on the version of Safari and the version of Mac OS X being used.

        Mac OS X 10.4: Safari 2.0: r11976 or newer
        Mac OS X 10.4: Safari 3.0: r19992 or newer

        Mac OS X 10.5: Safari 2.0: r19594 or newer
        Mac OS X 10.5: Safari 3.0: r25124 or newer

        * Scripts/bisect-builds:
        (findMacOSXVersion): Added.
        (makeNightlyList): Added argument to provide version of Mac OS X.
        Restrict range of nightly builds based on Safari and Mac OS X versions.

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

WebKitTools/ChangeLog
WebKitTools/Scripts/bisect-builds

index 98a3271243643b73de3269c77cd894c2464d86a6..d64871484c9c67148ec933a3464001c6464539c3 100644 (file)
@@ -1,3 +1,24 @@
+2007-11-04  David D. Kilzer  <ddkilzer@webkit.org>
+
+        bisect-builds doesn't work with nightly build r19992 or newer on Leopard
+        <http://bugs.webkit.org/show_bug.cgi?id=15830>
+
+        Reviewed by Timothy.
+
+        Restrict the range of nightly builds used by the bisect-builds script
+        based on the version of Safari and the version of Mac OS X being used.
+
+        Mac OS X 10.4: Safari 2.0: r11976 or newer
+        Mac OS X 10.4: Safari 3.0: r19992 or newer
+
+        Mac OS X 10.5: Safari 2.0: r19594 or newer
+        Mac OS X 10.5: Safari 3.0: r25124 or newer
+
+        * Scripts/bisect-builds:
+        (findMacOSXVersion): Added.
+        (makeNightlyList): Added argument to provide version of Mac OS X.
+        Restrict range of nightly builds based on Safari and Mac OS X versions.
+
 2007-11-04  Kevin McCullough  <kmccullough@apple.com>
 
         Reviewed by Maciej.
 2007-11-04  Kevin McCullough  <kmccullough@apple.com>
 
         Reviewed by Maciej.
index 52b212abde0a5dcfd0dbb59bcfef5019b0f2f220..5206c8db79bb0146c5fed0224080494b22fece1c 100755 (executable)
@@ -48,10 +48,11 @@ use Time::HiRes qw(usleep);
 
 sub createTempFile($);
 sub downloadNightly($$$);
 
 sub createTempFile($);
 sub downloadNightly($$$);
+sub findMacOSXVersion();
 sub findNearestNightlyIndex(\@$$);
 sub findSafariVersion($);
 sub loadSettings();
 sub findNearestNightlyIndex(\@$$);
 sub findSafariVersion($);
 sub loadSettings();
-sub makeNightlyList($$$);
+sub makeNightlyList($$$$);
 sub mountAndRunNightly($$$$);
 sub parseRevisions($$;$);
 sub printStatus($$$);
 sub mountAndRunNightly($$$$);
 sub parseRevisions($$;$);
 sub printStatus($$$);
@@ -123,7 +124,7 @@ if (! -d $nightlyDownloadDirectory) {
     mkpath($nightlyDownloadDirectory, 0, 0755) || die "Could not create $nightlyDownloadDirectory: $!";
 }
 
     mkpath($nightlyDownloadDirectory, 0, 0755) || die "Could not create $nightlyDownloadDirectory: $!";
 }
 
-@nightlies = makeNightlyList($localOnly, $nightlyDownloadDirectory, findSafariVersion($safariPath));
+@nightlies = makeNightlyList($localOnly, $nightlyDownloadDirectory, findMacOSXVersion(), findSafariVersion($safariPath));
 
 my $startIndex = $revisions[0] ? findNearestNightlyIndex(@nightlies, $revisions[0], 'ceil') : 0;
 my $endIndex = $revisions[1] ? findNearestNightlyIndex(@nightlies, $revisions[1], 'floor') : $#nightlies;
 
 my $startIndex = $revisions[0] ? findNearestNightlyIndex(@nightlies, $revisions[0], 'ceil') : 0;
 my $endIndex = $revisions[1] ? findNearestNightlyIndex(@nightlies, $revisions[1], 'floor') : $#nightlies;
@@ -224,6 +225,17 @@ sub downloadNightly($$$)
     }
 }
 
     }
 }
 
+sub findMacOSXVersion()
+{
+    my $version;
+    open(SW_VERS, "-|", "/usr/bin/sw_vers") || die;
+    while (<SW_VERS>) {
+        $version = $1 if /^ProductVersion:\s+([^\s]+)/;
+    }
+    close(SW_VERS);
+    return $version;
+}
+
 sub findNearestNightlyIndex(\@$$)
 {
     my ($nightlies, $revision, $round) = @_;
 sub findNearestNightlyIndex(\@$$)
 {
     my ($nightlies, $revision, $round) = @_;
@@ -279,9 +291,9 @@ sub loadSettings()
     die "Could not parse $rcfile: $@" if $@;
 }
 
     die "Could not parse $rcfile: $@" if $@;
 }
 
-sub makeNightlyList($$$)
+sub makeNightlyList($$$$)
 {
 {
-    my ($useLocalFiles, $localDirectory, $safariVersion) = @_;
+    my ($useLocalFiles, $localDirectory, $macOSXVersion, $safariVersion) = @_;
     my @files;
 
     if ($useLocalFiles) {
     my @files;
 
     if ($useLocalFiles) {
@@ -304,9 +316,24 @@ sub makeNightlyList($$$)
         close(NIGHTLIES);
     }
 
         close(NIGHTLIES);
     }
 
-    # Safari 3.0.x won't work with nightly builds older than r19992
-    if (eval "v$safariVersion" ge v3.0) {
-        @files = grep { $_->{rev} >= 19992 } @files;
+    if (eval "v$macOSXVersion" ge v10.5) {
+        if (eval "v$safariVersion" ge v3.0) {
+            @files = grep { $_->{rev} >= 25124 } @files;
+        } elsif (eval "v$safariVersion" ge v2.0) {
+            @files = grep { $_->{rev} >= 19594 } @files;
+        } else {
+            die "Requires Safari 2.0 or newer";
+        }
+    } elsif (eval "v$macOSXVersion" ge v10.4) {
+        if (eval "v$safariVersion" ge v3.0) {
+            @files = grep { $_->{rev} >= 19992 } @files;
+        } elsif (eval "v$safariVersion" ge v2.0) {
+            @files = grep { $_->{rev} >= 11976 } @files;
+        } else {
+            die "Requires Safari 2.0 or newer";
+        }
+    } else {
+        die "Requires Mac OS X 10.4 (Tiger) or 10.5 (Leopard)";
     }
 
     my $nightlycmp = sub { return $a->{rev} <=> $b->{rev}; };
     }
 
     my $nightlycmp = sub { return $a->{rev} <=> $b->{rev}; };