Title: [103058] trunk/Tools
Revision
103058
Author
ves...@webkit.org
Date
2011-12-16 04:41:10 -0800 (Fri, 16 Dec 2011)

Log Message

[Qt] Detect and force clean build when feature defines are added

Reviewed by Ossy.

https://bugs.webkit.org/show_bug.cgi?id=74689

Modified Paths

Diff

Modified: trunk/Tools/ChangeLog (103057 => 103058)


--- trunk/Tools/ChangeLog	2011-12-16 12:22:09 UTC (rev 103057)
+++ trunk/Tools/ChangeLog	2011-12-16 12:41:10 UTC (rev 103058)
@@ -1,3 +1,13 @@
+2011-12-16  Tor Arne Vestbø  <tor.arne.ves...@nokia.com>
+
+        [Qt] Detect and force clean build when feature defines are added
+
+        Reviewed by Ossy.
+
+        https://bugs.webkit.org/show_bug.cgi?id=74689
+
+        * Scripts/webkitdirs.pm:
+
 2011-12-16  Kentaro Hara  <hara...@chromium.org>
 
         [Refactoring] Remove all global variables from prepare-ChangeLog

Modified: trunk/Tools/Scripts/webkitdirs.pm (103057 => 103058)


--- trunk/Tools/Scripts/webkitdirs.pm	2011-12-16 12:22:09 UTC (rev 103057)
+++ trunk/Tools/Scripts/webkitdirs.pm	2011-12-16 12:41:10 UTC (rev 103058)
@@ -1905,46 +1905,55 @@
 
     my $needsCleanBuild = 0;
 
+    my $pathToDefinesCache = File::Spec->catfile($dir, ".webkit.config");
+    my $pathToOldDefinesFile = File::Spec->catfile($dir, "defaults.txt");
+
     # Ease transition to new build layout
-    my $pathToOldDefinesFile = File::Spec->catfile($dir, "defaults.txt");
     if (-e $pathToOldDefinesFile) {
         print "Old build layout detected";
         $needsCleanBuild = 1;
-    }
+    } elsif (-e $pathToDefinesCache && open(DEFAULTS, $pathToDefinesCache)) {
+        my %previousDefines;
+        while (<DEFAULTS>) {
+            if ($_ =~ m/(\S+?)=(\S+?)/gi) {
+                $previousDefines{$1} = $2;
+            }
+        }
+        close (DEFAULTS);
 
-    my $pathToDefinesCache = File::Spec->catfile($dir, ".webkit.config");
-    if ($needsCleanBuild || (-e $pathToDefinesCache && open(DEFAULTS, $pathToDefinesCache))) {
-        if (!$needsCleanBuild) {
-            while (<DEFAULTS>) {
-                if ($_ =~ m/(\S+?)=(\S+?)/gi) {
-                    if (! exists $defines{$1}) {
-                        print "Feature $1 was removed";
-                        $needsCleanBuild = 1;
-                        last;
-                    }
+        my @uniqueDefineNames = keys %{ +{ map { $_, 1 } (keys %defines, keys %previousDefines) } };
+        foreach my $define (@uniqueDefineNames) {
+            if (! exists $previousDefines{$define}) {
+                print "Feature $define added";
+                $needsCleanBuild = 1;
+                last;
+            }
 
-                    if ($defines{$1} != $2) {
-                        print "Feature $1 has changed ($2 -> $defines{$1})";
-                        $needsCleanBuild = 1;
-                        last;
-                    }
-                }
+            if (! exists $defines{$define}) {
+                print "Feature $define removed";
+                $needsCleanBuild = 1;
+                last;
             }
-            close (DEFAULTS);
-        }
 
-        if ($needsCleanBuild) {
-            print ", clean build needed!\n";
-            # FIXME: This STDIN/STDOUT check does not work on the bots. Disable until it does.
-            # if (! -t STDIN || ( &promptUser("Would you like to clean the build directory?", "yes") eq "yes")) {
-                chdir $originalCwd;
-                File::Path::rmtree($dir);
-                File::Path::mkpath($dir);
-                chdir $dir or die "Failed to cd into " . $dir . "\n";
-            #}
+            if ($defines{$define} != $previousDefines{$define}) {
+                print "Feature $define changed ($previousDefines{$define} -> $defines{$define})";
+                $needsCleanBuild = 1;
+                last;
+            }
         }
     }
 
+    if ($needsCleanBuild) {
+        print ", clean build needed!\n";
+        # FIXME: This STDIN/STDOUT check does not work on the bots. Disable until it does.
+        # if (! -t STDIN || ( &promptUser("Would you like to clean the build directory?", "yes") eq "yes")) {
+            chdir $originalCwd;
+            File::Path::rmtree($dir);
+            File::Path::mkpath($dir);
+            chdir $dir or die "Failed to cd into " . $dir . "\n";
+        #}
+    }
+
     open(DEFAULTS, ">$pathToDefinesCache");
     print DEFAULTS "# These defines were set when building WebKit last time\n";
     foreach my $key (sort keys %defines) {
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
http://lists.webkit.org/mailman/listinfo.cgi/webkit-changes

Reply via email to