You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@nifi.apache.org by sz...@apache.org on 2022/06/17 13:33:57 UTC

[nifi-minifi-cpp] branch main updated: MINIFICPP-1861 Fix cmake command generation in bootstrap.sh

This is an automated email from the ASF dual-hosted git repository.

szaszm pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/nifi-minifi-cpp.git


The following commit(s) were added to refs/heads/main by this push:
     new 3f3bafca9 MINIFICPP-1861 Fix cmake command generation in bootstrap.sh
3f3bafca9 is described below

commit 3f3bafca99f1786a124aa1040a61b8185e46b3f4
Author: Gabor Gyimesi <ga...@gmail.com>
AuthorDate: Fri Jun 17 14:33:37 2022 +0200

    MINIFICPP-1861 Fix cmake command generation in bootstrap.sh
    
    The bootstrap script did not account for the enabled by default cmake
    options. Instead, it assumed that the ENABLE_* options are all OFF by
    default and only generated the cmake flags for those options if they
    were turned on explicitly. Because of this even when an option was set
    to disabled in the bootstrap script, it was built with the generated
    cmake command if that feature was enabled by default in cmake.
    
    Closes #1351
    Signed-off-by: Marton Szasz <sz...@apache.org>
---
 bootstrap.sh       | 106 ++++++++++++++++++++++-------------------------------
 bstrp_functions.sh |  27 +++++---------
 2 files changed, 53 insertions(+), 80 deletions(-)

diff --git a/bootstrap.sh b/bootstrap.sh
index 66452e44c..70a1534e3 100755
--- a/bootstrap.sh
+++ b/bootstrap.sh
@@ -33,8 +33,7 @@ export ALL_FEATURES_ENABLED=${FALSE}
 export BUILD_DIR="build"
 export BUILD_IDENTIFIER=""
 export OPTIONS=()
-export CMAKE_OPTIONS_ENABLED=()
-export CMAKE_OPTIONS_DISABLED=()
+export CMAKE_OPTIONS=()
 export CMAKE_MIN_VERSION=()
 export INCOMPATIBLE_WITH=()
 export DEPLOY_LIMITS=()
@@ -260,85 +259,85 @@ add_cmake_option PORTABLE_BUILD ${TRUE}
 add_cmake_option DEBUG_SYMBOLS ${FALSE}
 add_cmake_option BUILD_ROCKSDB ${TRUE}
 ## uses the source from the third party directory
-add_enabled_option ROCKSDB_ENABLED ${TRUE} "DISABLE_ROCKSDB"
+add_option ROCKSDB_ENABLED ${TRUE} "DISABLE_ROCKSDB"
 ## need libcurl installed
-add_enabled_option HTTP_CURL_ENABLED ${TRUE} "DISABLE_CURL"
+add_option HTTP_CURL_ENABLED ${TRUE} "DISABLE_CURL"
 
 # third party directory
-add_enabled_option LIBARCHIVE_ENABLED ${TRUE} "DISABLE_LIBARCHIVE"
+add_option LIBARCHIVE_ENABLED ${TRUE} "DISABLE_LIBARCHIVE"
 add_dependency LIBARCHIVE_ENABLED "libarchive"
 
-add_disabled_option EXECUTE_SCRIPT_ENABLED ${FALSE} "ENABLE_SCRIPTING"
+add_option EXECUTE_SCRIPT_ENABLED ${FALSE} "ENABLE_SCRIPTING"
 add_dependency EXECUTE_SCRIPT_ENABLED "python"
 add_dependency EXECUTE_SCRIPT_ENABLED "lua"
 
-add_enabled_option EXPRESSION_LANGUAGE_ENABLED ${TRUE} "DISABLE_EXPRESSION_LANGUAGE"
+add_option EXPRESSION_LANGUAGE_ENABLED ${TRUE} "DISABLE_EXPRESSION_LANGUAGE"
 add_dependency EXPRESSION_LANGUAGE_ENABLED "bison"
 add_dependency EXPRESSION_LANGUAGE_ENABLED "flex"
 
-add_disabled_option PCAP_ENABLED ${FALSE} "ENABLE_PCAP"
+add_option PCAP_ENABLED ${FALSE} "ENABLE_PCAP"
 add_dependency PCAP_ENABLED "libpcap"
 
-add_disabled_option USB_ENABLED ${FALSE} "ENABLE_USB_CAMERA"
+add_option USB_ENABLED ${FALSE} "ENABLE_USB_CAMERA"
 add_dependency USB_ENABLED "libusb"
 add_dependency USB_ENABLED "libpng"
 
-add_disabled_option GPS_ENABLED ${FALSE} "ENABLE_GPS"
+add_option GPS_ENABLED ${FALSE} "ENABLE_GPS"
 add_dependency GPS_ENABLED "gpsd"
 
-add_disabled_option AWS_ENABLED ${FALSE} "ENABLE_AWS"
+add_option AWS_ENABLED ${TRUE} "ENABLE_AWS"
 
-add_disabled_option KAFKA_ENABLED ${FALSE} "ENABLE_LIBRDKAFKA"
+add_option KAFKA_ENABLED ${TRUE} "ENABLE_LIBRDKAFKA"
 
-add_disabled_option KUBERNETES_ENABLED ${FALSE} "ENABLE_KUBERNETES"
+add_option KUBERNETES_ENABLED ${FALSE} "ENABLE_KUBERNETES"
 
-add_disabled_option MQTT_ENABLED ${FALSE} "ENABLE_MQTT"
+add_option MQTT_ENABLED ${FALSE} "ENABLE_MQTT"
 
-add_disabled_option PYTHON_ENABLED ${FALSE} "ENABLE_PYTHON"
+add_option PYTHON_ENABLED ${FALSE} "ENABLE_PYTHON"
 add_dependency PYTHON_ENABLED "python"
 
-add_disabled_option COAP_ENABLED ${FALSE} "ENABLE_COAP"
+add_option COAP_ENABLED ${FALSE} "ENABLE_COAP"
 add_dependency COAP_ENABLED "automake"
 add_dependency COAP_ENABLED "autoconf"
 add_dependency COAP_ENABLED "libtool"
 
-add_disabled_option JNI_ENABLED ${FALSE} "ENABLE_JNI"
+add_option JNI_ENABLED ${FALSE} "ENABLE_JNI"
 add_dependency JNI_ENABLED "jnibuild"
 
-add_disabled_option OPENCV_ENABLED ${FALSE} "ENABLE_OPENCV"
+add_option OPENCV_ENABLED ${FALSE} "ENABLE_OPENCV"
 
-add_disabled_option OPENCV_ENABLED ${FALSE} "ENABLE_OPENCV"
+add_option OPENCV_ENABLED ${FALSE} "ENABLE_OPENCV"
 
-add_disabled_option SFTP_ENABLED ${FALSE} "ENABLE_SFTP"
+add_option SFTP_ENABLED ${FALSE} "ENABLE_SFTP"
 add_dependency SFTP_ENABLED "libssh2"
 
-add_disabled_option SQL_ENABLED ${FALSE} "ENABLE_SQL"
+add_option SQL_ENABLED ${TRUE} "ENABLE_SQL"
 
-add_disabled_option OPENWSMAN_ENABLED ${FALSE} "ENABLE_OPENWSMAN"
+add_option OPENWSMAN_ENABLED ${FALSE} "ENABLE_OPENWSMAN"
 
 # Since the following extensions have limitations on
-add_disabled_option BUSTACHE_ENABLED ${FALSE} "ENABLE_BUSTACHE" "2.6" ${TRUE}
+add_option BUSTACHE_ENABLED ${FALSE} "ENABLE_BUSTACHE" "2.6" ${TRUE}
 add_dependency BUSTACHE_ENABLED "boost"
 
 ## currently need to limit on certain platforms
-add_disabled_option TENSORFLOW_ENABLED ${FALSE} "ENABLE_TENSORFLOW" "2.6" ${TRUE}
+add_option TENSORFLOW_ENABLED ${FALSE} "ENABLE_TENSORFLOW" "2.6" ${TRUE}
 add_dependency TENSORFLOW_ENABLED "tensorflow"
 
-add_disabled_option OPC_ENABLED ${FALSE} "ENABLE_OPC"
+add_option OPC_ENABLED ${FALSE} "ENABLE_OPC"
 add_dependency OPC_ENABLED "mbedtls"
 
-add_disabled_option AZURE_ENABLED ${FALSE} "ENABLE_AZURE"
+add_option AZURE_ENABLED ${TRUE} "ENABLE_AZURE"
 
-add_disabled_option SYSTEMD_ENABLED ${TRUE} "ENABLE_SYSTEMD"
+add_option SYSTEMD_ENABLED ${TRUE} "ENABLE_SYSTEMD"
 
-add_disabled_option NANOFI_ENABLED ${FALSE} "ENABLE_NANOFI"
+add_option NANOFI_ENABLED ${FALSE} "ENABLE_NANOFI"
 set_dependency PYTHON_ENABLED NANOFI_ENABLED
 
-add_disabled_option SPLUNK_ENABLED ${FALSE} "ENABLE_SPLUNK"
+add_option SPLUNK_ENABLED ${TRUE} "ENABLE_SPLUNK"
 
-add_disabled_option GCP_ENABLED ${FALSE} "ENABLE_GCP"
+add_option GCP_ENABLED ${TRUE} "ENABLE_GCP"
 
-add_disabled_option PROCFS_ENABLED ${FALSE} "ENABLE_PROCFS"
+add_option PROCFS_ENABLED ${TRUE} "ENABLE_PROCFS"
 
 USE_SHARED_LIBS=${TRUE}
 ASAN_ENABLED=${FALSE}
@@ -430,40 +429,23 @@ if [ "${USE_NINJA}" = "${TRUE}" ]; then
 fi
 
 build_cmake_command(){
-
   for option in "${OPTIONS[@]}" ; do
-    option_value="${!option}"
-    if [ "$option_value" = "${TRUE}" ]; then
-      # option is enabled
-      FOUND=""
-      FOUND_VALUE=""
-      for cmake_opt in "${CMAKE_OPTIONS_ENABLED[@]}" ; do
-        KEY=${cmake_opt%%:*}
-        VALUE=${cmake_opt#*:}
-        if [ "$KEY" = "$option" ]; then
-          FOUND="1"
-          FOUND_VALUE="$VALUE"
-        fi
-      done
-      if [ "$FOUND" = "1" ]; then
-        CMAKE_BUILD_COMMAND="${CMAKE_BUILD_COMMAND} -D${FOUND_VALUE}=ON"
-      fi
-    else
-      FOUND=""
-      FOUND_VALUE=""
-      if [ -z "$FOUND" ]; then
-        for cmake_opt in "${CMAKE_OPTIONS_DISABLED[@]}" ; do
-          KEY=${cmake_opt%%:*}
-          VALUE=${cmake_opt#*:}
-          if [ "$KEY" = "$option" ]; then
-            FOUND="1"
-            FOUND_VALUE="$VALUE"
-          fi
-        done
+    for cmake_opt in "${CMAKE_OPTIONS[@]}" ; do
+      KEY=${cmake_opt%%:*}
+      VALUE=${cmake_opt#*:}
+      if [ "$KEY" = "$option" ]; then
+        FOUND="1"
+        FOUND_VALUE="$VALUE"
       fi
-      if [ "$FOUND" = "1" ]; then
-        CMAKE_BUILD_COMMAND="${CMAKE_BUILD_COMMAND} -D${FOUND_VALUE}=ON"
+    done
+    if [ "$FOUND" = "1" ]; then
+      set_value=OFF
+      option_value="${!option}"
+      if { [[ "$option_value" = "${FALSE}" ]] && [[ "$FOUND_VALUE" == "DISABLE"* ]]; } || \
+         { [[ "$option_value" = "${TRUE}" ]] && [[ "$FOUND_VALUE" == "ENABLE"* ]]; }; then
+        set_value=ON
       fi
+      CMAKE_BUILD_COMMAND="${CMAKE_BUILD_COMMAND} -D${FOUND_VALUE}=${set_value}"
     fi
   done
 
diff --git a/bstrp_functions.sh b/bstrp_functions.sh
index 04cf1b48a..cb30ff132 100755
--- a/bstrp_functions.sh
+++ b/bstrp_functions.sh
@@ -26,33 +26,24 @@ get_cmake_version(){
   CMAKE_REVISION=$(echo "$CMAKE_VERSION" | cut -d. -f3)
 }
 
-add_option(){
-  eval "$1=$2"
-  OPTIONS+=("$1")
-  CMAKE_OPTIONS_ENABLED+=("$1:$3")
-  CMAKE_OPTIONS_DISABLED+=("$1:$4")
-}
-
-add_enabled_option(){
-  eval "$1=$2"
-  OPTIONS+=("$1")
-  CMAKE_OPTIONS_DISABLED+=("$1:$3")
-}
 add_cmake_option(){
   eval "$1=$2"
 }
 
-add_disabled_option(){
-  eval "$1=$2"
-  OPTIONS+=("$1")
-  CMAKE_OPTIONS_ENABLED+=("$1:$3")
+add_option(){
+  BOOTSTRAP_OPTION_NAME="$1"
+  DEFAULT_VALUE="$2"
+  CMAKE_OPTION_NAME="$3"
+  eval "$BOOTSTRAP_OPTION_NAME=$DEFAULT_VALUE"
+  OPTIONS+=("$BOOTSTRAP_OPTION_NAME")
+  CMAKE_OPTIONS+=("$BOOTSTRAP_OPTION_NAME:$CMAKE_OPTION_NAME")
   if [ -n "$4" ]; then
-    CMAKE_MIN_VERSION+=("$1:$4")
+    CMAKE_MIN_VERSION+=("$BOOTSTRAP_OPTION_NAME:$4")
   fi
 
   if [ -n "$5" ]; then
     if [ "$5" = "true" ]; then
-      DEPLOY_LIMITS+=("$1")
+      DEPLOY_LIMITS+=("$BOOTSTRAP_OPTION_NAME")
     fi
   fi
 }