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