Perl uninitialized value $isEnabled when running build-jsc using a CMake build
authordbates@webkit.org <dbates@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Sat, 30 Jun 2018 02:06:23 +0000 (02:06 +0000)
committerdbates@webkit.org <dbates@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Sat, 30 Jun 2018 02:06:23 +0000 (02:06 +0000)
https://bugs.webkit.org/show_bug.cgi?id=187208

Reviewed by Tim Horton.

Share logic for computing the feature flags to enable in CMake with both script
build-webkit and script build-jsc instead of duplicating it. This also fixes a
bug in the version of this logic in build-jsc that was inadvertently not updated
in r222394. In r222394 we removed the notion of a default value for a feature flag
listed in webkitperl::FeatureList.

We keep the current behavior of build-jsc and leave it up to the build system
to determine whether to enable or disable ENABLE_EXPERIMENTAL_FEATURES.

* Scripts/build-jsc:
(buildMyProject):
(cMakeArgsFromFeatures): Deleted.
* Scripts/build-webkit:
(cMakeArgsFromFeatures): Deleted; moved to webkitdirs.pm.
* Scripts/webkitdirs.pm:
(cmakeArgsFromFeatures): Moved code from script build-webkit so that it can be shared
with build-jsc.

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

Tools/ChangeLog
Tools/Scripts/build-jsc
Tools/Scripts/build-webkit
Tools/Scripts/webkitdirs.pm

index 9a880b8..4399bf7 100644 (file)
@@ -1,3 +1,28 @@
+2018-06-29  Daniel Bates  <dabates@apple.com>
+
+        Perl uninitialized value $isEnabled when running build-jsc using a CMake build
+        https://bugs.webkit.org/show_bug.cgi?id=187208
+
+        Reviewed by Tim Horton.
+
+        Share logic for computing the feature flags to enable in CMake with both script
+        build-webkit and script build-jsc instead of duplicating it. This also fixes a
+        bug in the version of this logic in build-jsc that was inadvertently not updated
+        in r222394. In r222394 we removed the notion of a default value for a feature flag
+        listed in webkitperl::FeatureList.
+
+        We keep the current behavior of build-jsc and leave it up to the build system
+        to determine whether to enable or disable ENABLE_EXPERIMENTAL_FEATURES.
+
+        * Scripts/build-jsc:
+        (buildMyProject):
+        (cMakeArgsFromFeatures): Deleted.
+        * Scripts/build-webkit:
+        (cMakeArgsFromFeatures): Deleted; moved to webkitdirs.pm.
+        * Scripts/webkitdirs.pm:
+        (cmakeArgsFromFeatures): Moved code from script build-webkit so that it can be shared
+        with build-jsc.
+
 2018-06-29  Tim Horton  <timothy_horton@apple.com>
 
         Add -apple-color-filter and system appearance toggles to MiniBrowser
 2018-06-29  Tim Horton  <timothy_horton@apple.com>
 
         Add -apple-color-filter and system appearance toggles to MiniBrowser
index f1def2a..ad033f0 100755 (executable)
@@ -37,7 +37,6 @@ use webkitdirs;
 use webkitperl::FeatureList qw(getFeatureOptionList);
 use POSIX;
 
 use webkitperl::FeatureList qw(getFeatureOptionList);
 use POSIX;
 
-sub cMakeArgsFromFeatures();
 sub writeCongrats();
 
 prohibitUnknownPort();
 sub writeCongrats();
 
 prohibitUnknownPort();
@@ -149,7 +148,7 @@ if (isCMakeBuild()) {
         setBaseProductDir($buildDir);
     }
 
         setBaseProductDir($buildDir);
     }
 
-    my @featureArgs = cMakeArgsFromFeatures();
+    my @featureArgs = cmakeArgsFromFeatures(@features);
 
     my $buildTarget = "";
     unless (isAnyWindows()) {
 
     my $buildTarget = "";
     unless (isAnyWindows()) {
@@ -211,22 +210,6 @@ sub buildMyProject
     chdirWebKit();
 }
 
     chdirWebKit();
 }
 
-sub cMakeArgsFromFeatures()
-{
-    my @args;
-    foreach (@features) {
-        my $featureName = $_->{define};
-        if ($featureName) {
-            my $isEnabled = ${$_->{value}};
-            if ($isEnabled != $_->{default}) {
-                my $featureEnabled = $isEnabled ? "ON" : "OFF";
-                push @args, "-D$featureName=$featureEnabled";
-            }
-        }
-    }
-    return @args;
-}
-
 sub writeCongrats()
 {
     my $endTime = time();
 sub writeCongrats()
 {
     my $endTime = time();
index 6f304a7..23d2ec4 100755 (executable)
@@ -45,7 +45,6 @@ use List::Util qw(first);
 use webkitperl::FeatureList qw(getFeatureOptionList);
 use POSIX;
 
 use webkitperl::FeatureList qw(getFeatureOptionList);
 use POSIX;
 
-sub cMakeArgsFromFeatures();
 sub writeCongrats();
 
 checkRequiredSystemConfig();
 sub writeCongrats();
 
 checkRequiredSystemConfig();
@@ -285,7 +284,7 @@ if (isCMakeBuild() && !isAnyWindows()) {
 
     # We remove CMakeCache to avoid the bots reusing cached flags when
     # we enable new features. This forces a reconfiguration.
 
     # We remove CMakeCache to avoid the bots reusing cached flags when
     # we enable new features. This forces a reconfiguration.
-    my @featureArgs = cMakeArgsFromFeatures();
+    my @featureArgs = cmakeArgsFromFeatures(@features, !$noExperimentalFeatures);
     removeCMakeCache(@featureArgs);
 
     buildCMakeProjectOrExit($clean, $prefixPath, $makeArgs, (cmakeBasedPortArguments(), @featureArgs), @cmakeArgs);
     removeCMakeCache(@featureArgs);
 
     buildCMakeProjectOrExit($clean, $prefixPath, $makeArgs, (cmakeBasedPortArguments(), @featureArgs), @cmakeArgs);
@@ -293,7 +292,7 @@ if (isCMakeBuild() && !isAnyWindows()) {
 
 my $baseProductDir = baseProductDir();
 if (isAppleWinWebKit() || isWinCairo()) {
 
 my $baseProductDir = baseProductDir();
 if (isAppleWinWebKit() || isWinCairo()) {
-    my @featureArgs = cMakeArgsFromFeatures();
+    my @featureArgs = cmakeArgsFromFeatures(@features, !$noExperimentalFeatures);
     removeCMakeCache(@featureArgs);
 
     chdirWebKit();
     removeCMakeCache(@featureArgs);
 
     chdirWebKit();
@@ -377,28 +376,6 @@ writeCongrats();
 
 exit 0;
 
 
 exit 0;
 
-sub cMakeArgsFromFeatures()
-{
-    my @args;
-
-    if (!$noExperimentalFeatures) {
-        push @args, "-DENABLE_EXPERIMENTAL_FEATURES=ON";
-    }
-
-    foreach (@features) {
-        my $featureName = $_->{define};
-        if ($featureName) {
-            my $featureValue = ${$_->{value}};
-            if (defined $featureValue) {
-                my $featureEnabled = $featureValue ? "ON" : "OFF";
-                push @args, "-D$featureName=$featureEnabled";
-            }
-        }
-    }
-
-    return @args;
-}
-
 sub writeCongrats()
 {
     my $launcherPath = launcherPath();
 sub writeCongrats()
 {
     my $launcherPath = launcherPath();
index dd4d240..ea3fca3 100755 (executable)
@@ -65,6 +65,7 @@ BEGIN {
        &baseProductDir
        &chdirWebKit
        &checkFrameworks
        &baseProductDir
        &chdirWebKit
        &checkFrameworks
+       &cmakeArgsFromFeatures
        &cmakeBasedPortArguments
        &currentSVNRevision
        &debugSafari
        &cmakeBasedPortArguments
        &currentSVNRevision
        &debugSafari
@@ -2354,6 +2355,26 @@ sub buildCMakeProjectOrExit($$$@)
     return 0;
 }
 
     return 0;
 }
 
+sub cmakeArgsFromFeatures(\@;$)
+{
+    my ($featuresArrayRef, $enableExperimentalFeatures) = @_;
+
+    my @args;
+    push @args, "-DENABLE_EXPERIMENTAL_FEATURES=ON" if $enableExperimentalFeatures;
+    foreach (@$featuresArrayRef) {
+        my $featureName = $_->{define};
+        if ($featureName) {
+            my $featureValue = ${$_->{value}}; # Undef to let the build system use its default.
+            if (defined($featureValue)) {
+                my $featureEnabled = $featureValue ? "ON" : "OFF";
+                push @args, "-D$featureName=$featureEnabled";
+            }
+        }
+    }
+    return @args;
+}
+
+
 sub cmakeBasedPortArguments()
 {
     return ();
 sub cmakeBasedPortArguments()
 {
     return ();