You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@nifi.apache.org by ma...@apache.org on 2022/06/01 18:43:03 UTC

[nifi-minifi-cpp] branch main updated: MINIFICPP-1852 parameterize all docker builds, enable more extensions Closes #1341

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

martinzink 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 d10268674 MINIFICPP-1852 parameterize all docker builds, enable more extensions Closes #1341
d10268674 is described below

commit d102686742a3694d1105977b0af50a0c82c8f347
Author: Marton Szasz <sz...@apache.org>
AuthorDate: Wed Jun 1 20:37:00 2022 +0200

    MINIFICPP-1852 parameterize all docker builds, enable more extensions
    Closes #1341
    
    Signed-off-by: Martin Zink <ma...@apache.org>
---
 CMakeLists.txt           |  15 +++--
 cmake/DockerConfig.cmake | 157 +++++++++++++++++++++++++++++++++++++++++++++++
 docker/bionic/Dockerfile |  60 ++++++++++++++++--
 docker/centos/Dockerfile |  60 ++++++++++++++++--
 docker/fedora/Dockerfile |  60 ++++++++++++++++--
 docker/focal/Dockerfile  |  57 ++++++++++++++++-
 6 files changed, 386 insertions(+), 23 deletions(-)

diff --git a/CMakeLists.txt b/CMakeLists.txt
index a0830c18d..d7492af33 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -100,30 +100,29 @@ option(DISABLE_LZMA "Disables the liblzma build" OFF)
 option(DISABLE_BZIP2 "Disables the bzip2 build" OFF)
 option(ENABLE_GPS "Enables the GPS extension." OFF)
 option(ENABLE_COAP "Enables the CoAP extension." OFF)
-option(ENABLE_SQL "Enables the SQL Suite of Tools." OFF)
+option(ENABLE_SQL "Enables the SQL Suite of Tools." ON)
 option(ENABLE_MQTT "Enables the mqtt extension." OFF)
 option(ENABLE_PCAP "Enables the PCAP extension." OFF)
-option(ENABLE_LIBRDKAFKA "Enables the librdkafka extension." OFF)
+option(ENABLE_LIBRDKAFKA "Enables the librdkafka extension." ON)
 option(ENABLE_SCRIPTING "Enables the scripting extensions." OFF)
 option(ENABLE_SENSORS "Enables the Sensors package." OFF)
 option(ENABLE_USB_CAMERA "Enables USB camera support." OFF)
 option(ENABLE_TENSORFLOW "Enables the TensorFlow extensions." OFF)  ## Disabled by default because TF can be complex/environment-specific to build
-option(ENABLE_AWS "Enables AWS support." OFF)
+option(ENABLE_AWS "Enables AWS support." ON)
 option(ENABLE_OPENCV "Enables the OpenCV extensions." OFF)
 option(ENABLE_BUSTACHE "Enables Bustache (ApplyTemplate) support." OFF)
 option(ENABLE_SFTP "Enables SFTP support." OFF)
 option(ENABLE_OPENWSMAN "Enables the Openwsman extensions." OFF)
-option(ENABLE_AZURE "Enables Azure support." OFF)
+option(ENABLE_AZURE "Enables Azure support." ON)
 option(ENABLE_ENCRYPT_CONFIG "Enables build of encrypt-config binary." ON)
-option(ENABLE_SPLUNK "Enable Splunk support" OFF)
-option(ENABLE_GCP "Enable Google Cloud support" OFF)
-option(ENABLE_PROCFS "Enable ProcFs support" OFF)
+option(ENABLE_SPLUNK "Enable Splunk support" ON)
+option(ENABLE_GCP "Enable Google Cloud support" ON)
 option(DOCKER_BUILD_ONLY "Disables all targets except docker build scripts. Ideal for systems without an up-to-date compiler." OFF)
 option(ENABLE_KUBERNETES "Enables the Kubernetes extensions." OFF)
 option(ENABLE_TEST_PROCESSORS "Enables test processors" OFF)
 
 if(CMAKE_SYSTEM_NAME STREQUAL "Linux")
-	option(ENABLE_PROCFS "Enables the procfs extension." OFF)
+	option(ENABLE_PROCFS "Enables the procfs extension." ON)
 endif()
 
 ## Keep all option definitions above this line
diff --git a/cmake/DockerConfig.cmake b/cmake/DockerConfig.cmake
index 1e53b9dea..8e6387270 100644
--- a/cmake/DockerConfig.cmake
+++ b/cmake/DockerConfig.cmake
@@ -94,7 +94,46 @@ add_custom_target(
         -u 1000
         -g 1000
         -v ${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR}.${PROJECT_VERSION_PATCH}
+        -c ENABLE_ALL=${ENABLE_ALL}
+        -c ENABLE_PYTHON=${ENABLE_PYTHON}
+        -c ENABLE_OPS=${ENABLE_OPS}
         -c ENABLE_JNI=${ENABLE_JNI}
+        -c ENABLE_OPENCV=${ENABLE_OPENCV}
+        -c ENABLE_OPC=${ENABLE_OPC}
+        -c ENABLE_GPS=${ENABLE_GPS}
+        -c ENABLE_COAP=${ENABLE_COAP}
+        -c ENABLE_SQL=${ENABLE_SQL}
+        -c ENABLE_MQTT=${ENABLE_MQTT}
+        -c ENABLE_PCAP=${ENABLE_PCAP}
+        -c ENABLE_LIBRDKAFKA=${ENABLE_LIBRDKAFKA}
+        -c ENABLE_SENSORS=${ENABLE_SENSORS}
+        -c ENABLE_USB_CAMERA=${ENABLE_USB_CAMERA}
+        -c ENABLE_TENSORFLOW=${ENABLE_TENSORFLOW}
+        -c ENABLE_AWS=${ENABLE_AWS}
+        -c ENABLE_BUSTACHE=${ENABLE_BUSTACHE}
+        -c ENABLE_SFTP=${ENABLE_SFTP}
+        -c ENABLE_OPENWSMAN=${ENABLE_OPENWSMAN}
+        -c ENABLE_AZURE=${ENABLE_AZURE}
+        -c ENABLE_ENCRYPT_CONFIG=${ENABLE_ENCRYPT_CONFIG}
+        -c ENABLE_NANOFI=${ENABLE_NANOFI}
+        -c ENABLE_SPLUNK=${ENABLE_SPLUNK}
+        -c ENABLE_GCP=${ENABLE_GCP}
+        -c ENABLE_SCRIPTING=${ENABLE_SCRIPTING}
+        -c ENABLE_LUA_SCRIPTING=${ENABLE_LUA_SCRIPTING}
+        -c ENABLE_KUBERNETES=${ENABLE_KUBERNETES}
+        -c ENABLE_PROCFS=${ENABLE_PROCFS}
+        -c ENABLE_SYSTEMD=${ENABLE_SYSTEMD}
+        -c DISABLE_CURL=${DISABLE_CURL}
+        -c DISABLE_JEMALLOC=${DISABLE_JEMALLOC}
+        -c DISABLE_CIVET=${DISABLE_CIVET}
+        -c DISABLE_EXPRESSION_LANGUAGE=${DISABLE_EXPRESSION_LANGUAGE}
+        -c DISABLE_ROCKSDB=${DISABLE_ROCKSDB}
+        -c DISABLE_LIBARCHIVE=${DISABLE_LIBARCHIVE}
+        -c DISABLE_LZMA=${DISABLE_LZMA}
+        -c DISABLE_BZIP2=${DISABLE_BZIP2}
+        -c DISABLE_SCRIPTING=${DISABLE_SCRIPTING}
+        -c DISABLE_PYTHON_SCRIPTING=${DISABLE_PYTHON_SCRIPTING}
+        -c DISABLE_CONTROLLER=${DISABLE_CONTROLLER}
         -l ${CMAKE_BINARY_DIR}
         -d centos
         -c BUILD_NUMBER=${BUILD_NUMBER}
@@ -106,7 +145,46 @@ add_custom_target(
         -u 1000
         -g 1000
         -v ${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR}.${PROJECT_VERSION_PATCH}
+        -c ENABLE_ALL=${ENABLE_ALL}
+        -c ENABLE_PYTHON=${ENABLE_PYTHON}
+        -c ENABLE_OPS=${ENABLE_OPS}
         -c ENABLE_JNI=${ENABLE_JNI}
+        -c ENABLE_OPENCV=${ENABLE_OPENCV}
+        -c ENABLE_OPC=${ENABLE_OPC}
+        -c ENABLE_GPS=${ENABLE_GPS}
+        -c ENABLE_COAP=${ENABLE_COAP}
+        -c ENABLE_SQL=${ENABLE_SQL}
+        -c ENABLE_MQTT=${ENABLE_MQTT}
+        -c ENABLE_PCAP=${ENABLE_PCAP}
+        -c ENABLE_LIBRDKAFKA=${ENABLE_LIBRDKAFKA}
+        -c ENABLE_SENSORS=${ENABLE_SENSORS}
+        -c ENABLE_USB_CAMERA=${ENABLE_USB_CAMERA}
+        -c ENABLE_TENSORFLOW=${ENABLE_TENSORFLOW}
+        -c ENABLE_AWS=${ENABLE_AWS}
+        -c ENABLE_BUSTACHE=${ENABLE_BUSTACHE}
+        -c ENABLE_SFTP=${ENABLE_SFTP}
+        -c ENABLE_OPENWSMAN=${ENABLE_OPENWSMAN}
+        -c ENABLE_AZURE=${ENABLE_AZURE}
+        -c ENABLE_ENCRYPT_CONFIG=${ENABLE_ENCRYPT_CONFIG}
+        -c ENABLE_NANOFI=${ENABLE_NANOFI}
+        -c ENABLE_SPLUNK=${ENABLE_SPLUNK}
+        -c ENABLE_GCP=${ENABLE_GCP}
+        -c ENABLE_SCRIPTING=${ENABLE_SCRIPTING}
+        -c ENABLE_LUA_SCRIPTING=${ENABLE_LUA_SCRIPTING}
+        -c ENABLE_KUBERNETES=${ENABLE_KUBERNETES}
+        -c ENABLE_PROCFS=${ENABLE_PROCFS}
+        -c ENABLE_SYSTEMD=${ENABLE_SYSTEMD}
+        -c DISABLE_CURL=${DISABLE_CURL}
+        -c DISABLE_JEMALLOC=${DISABLE_JEMALLOC}
+        -c DISABLE_CIVET=${DISABLE_CIVET}
+        -c DISABLE_EXPRESSION_LANGUAGE=${DISABLE_EXPRESSION_LANGUAGE}
+        -c DISABLE_ROCKSDB=${DISABLE_ROCKSDB}
+        -c DISABLE_LIBARCHIVE=${DISABLE_LIBARCHIVE}
+        -c DISABLE_LZMA=${DISABLE_LZMA}
+        -c DISABLE_BZIP2=${DISABLE_BZIP2}
+        -c DISABLE_SCRIPTING=${DISABLE_SCRIPTING}
+        -c DISABLE_PYTHON_SCRIPTING=${DISABLE_PYTHON_SCRIPTING}
+        -c DISABLE_CONTROLLER=${DISABLE_CONTROLLER}
         -l ${CMAKE_BINARY_DIR}
         -d fedora
         -c BUILD_NUMBER=${BUILD_NUMBER}
@@ -118,7 +196,46 @@ add_custom_target(
         -u 1000
         -g 1000
         -v ${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR}.${PROJECT_VERSION_PATCH}
+        -c ENABLE_ALL=${ENABLE_ALL}
+        -c ENABLE_PYTHON=${ENABLE_PYTHON}
+        -c ENABLE_OPS=${ENABLE_OPS}
         -c ENABLE_JNI=${ENABLE_JNI}
+        -c ENABLE_OPENCV=${ENABLE_OPENCV}
+        -c ENABLE_OPC=${ENABLE_OPC}
+        -c ENABLE_GPS=${ENABLE_GPS}
+        -c ENABLE_COAP=${ENABLE_COAP}
+        -c ENABLE_SQL=${ENABLE_SQL}
+        -c ENABLE_MQTT=${ENABLE_MQTT}
+        -c ENABLE_PCAP=${ENABLE_PCAP}
+        -c ENABLE_LIBRDKAFKA=${ENABLE_LIBRDKAFKA}
+        -c ENABLE_SENSORS=${ENABLE_SENSORS}
+        -c ENABLE_USB_CAMERA=${ENABLE_USB_CAMERA}
+        -c ENABLE_TENSORFLOW=${ENABLE_TENSORFLOW}
+        -c ENABLE_AWS=${ENABLE_AWS}
+        -c ENABLE_BUSTACHE=${ENABLE_BUSTACHE}
+        -c ENABLE_SFTP=${ENABLE_SFTP}
+        -c ENABLE_OPENWSMAN=${ENABLE_OPENWSMAN}
+        -c ENABLE_AZURE=${ENABLE_AZURE}
+        -c ENABLE_ENCRYPT_CONFIG=${ENABLE_ENCRYPT_CONFIG}
+        -c ENABLE_NANOFI=${ENABLE_NANOFI}
+        -c ENABLE_SPLUNK=${ENABLE_SPLUNK}
+        -c ENABLE_GCP=${ENABLE_GCP}
+        -c ENABLE_SCRIPTING=${ENABLE_SCRIPTING}
+        -c ENABLE_LUA_SCRIPTING=${ENABLE_LUA_SCRIPTING}
+        -c ENABLE_KUBERNETES=${ENABLE_KUBERNETES}
+        -c ENABLE_PROCFS=${ENABLE_PROCFS}
+        -c ENABLE_SYSTEMD=${ENABLE_SYSTEMD}
+        -c DISABLE_CURL=${DISABLE_CURL}
+        -c DISABLE_JEMALLOC=${DISABLE_JEMALLOC}
+        -c DISABLE_CIVET=${DISABLE_CIVET}
+        -c DISABLE_EXPRESSION_LANGUAGE=${DISABLE_EXPRESSION_LANGUAGE}
+        -c DISABLE_ROCKSDB=${DISABLE_ROCKSDB}
+        -c DISABLE_LIBARCHIVE=${DISABLE_LIBARCHIVE}
+        -c DISABLE_LZMA=${DISABLE_LZMA}
+        -c DISABLE_BZIP2=${DISABLE_BZIP2}
+        -c DISABLE_SCRIPTING=${DISABLE_SCRIPTING}
+        -c DISABLE_PYTHON_SCRIPTING=${DISABLE_PYTHON_SCRIPTING}
+        -c DISABLE_CONTROLLER=${DISABLE_CONTROLLER}
         -l ${CMAKE_BINARY_DIR}
         -d bionic
         -c BUILD_NUMBER=${BUILD_NUMBER}
@@ -130,7 +247,47 @@ add_custom_target(
         -u 1000
         -g 1000
         -v ${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR}.${PROJECT_VERSION_PATCH}
+        -c ENABLE_ALL=${ENABLE_ALL}
+        -c ENABLE_PYTHON=${ENABLE_PYTHON}
+        -c ENABLE_OPS=${ENABLE_OPS}
         -c ENABLE_JNI=${ENABLE_JNI}
+        -c ENABLE_OPENCV=${ENABLE_OPENCV}
+        -c ENABLE_OPC=${ENABLE_OPC}
+        -c ENABLE_GPS=${ENABLE_GPS}
+        -c ENABLE_COAP=${ENABLE_COAP}
+        -c ENABLE_SQL=${ENABLE_SQL}
+        -c ENABLE_MQTT=${ENABLE_MQTT}
+        -c ENABLE_PCAP=${ENABLE_PCAP}
+        -c ENABLE_LIBRDKAFKA=${ENABLE_LIBRDKAFKA}
+        -c ENABLE_SENSORS=${ENABLE_SENSORS}
+        -c ENABLE_USB_CAMERA=${ENABLE_USB_CAMERA}
+        -c ENABLE_TENSORFLOW=${ENABLE_TENSORFLOW}
+        -c ENABLE_AWS=${ENABLE_AWS}
+        -c ENABLE_BUSTACHE=${ENABLE_BUSTACHE}
+        -c ENABLE_SFTP=${ENABLE_SFTP}
+        -c ENABLE_OPENWSMAN=${ENABLE_OPENWSMAN}
+        -c ENABLE_AZURE=${ENABLE_AZURE}
+        -c ENABLE_ENCRYPT_CONFIG=${ENABLE_ENCRYPT_CONFIG}
+        -c ENABLE_NANOFI=${ENABLE_NANOFI}
+        -c ENABLE_SPLUNK=${ENABLE_SPLUNK}
+        -c ENABLE_GCP=${ENABLE_GCP}
+        -c ENABLE_SCRIPTING=${ENABLE_SCRIPTING}
+        -c ENABLE_LUA_SCRIPTING=${ENABLE_LUA_SCRIPTING}
+        -c ENABLE_KUBERNETES=${ENABLE_KUBERNETES}
+        -c ENABLE_PROCFS=${ENABLE_PROCFS}
+        -c ENABLE_TEST_PROCESSORS=${ENABLE_TEST_PROCESSORS}
+        -c ENABLE_SYSTEMD=${ENABLE_SYSTEMD}
+        -c DISABLE_CURL=${DISABLE_CURL}
+        -c DISABLE_JEMALLOC=${DISABLE_JEMALLOC}
+        -c DISABLE_CIVET=${DISABLE_CIVET}
+        -c DISABLE_EXPRESSION_LANGUAGE=${DISABLE_EXPRESSION_LANGUAGE}
+        -c DISABLE_ROCKSDB=${DISABLE_ROCKSDB}
+        -c DISABLE_LIBARCHIVE=${DISABLE_LIBARCHIVE}
+        -c DISABLE_LZMA=${DISABLE_LZMA}
+        -c DISABLE_BZIP2=${DISABLE_BZIP2}
+        -c DISABLE_SCRIPTING=${DISABLE_SCRIPTING}
+        -c DISABLE_PYTHON_SCRIPTING=${DISABLE_PYTHON_SCRIPTING}
+        -c DISABLE_CONTROLLER=${DISABLE_CONTROLLER}
         -l ${CMAKE_BINARY_DIR}
         -d focal
         -c BUILD_NUMBER=${BUILD_NUMBER}
diff --git a/docker/bionic/Dockerfile b/docker/bionic/Dockerfile
index b609cc5b6..5226a42c0 100644
--- a/docker/bionic/Dockerfile
+++ b/docker/bionic/Dockerfile
@@ -29,13 +29,54 @@ ENV MINIFI_HOME $MINIFI_BASE_DIR/nifi-minifi-cpp-$MINIFI_VERSION
 ENV JAVA_HOME /usr/lib/jvm/java-8-openjdk-amd64/
 
 RUN apt-get update \
-    && DEBIAN_FRONTEND="noninteractive" apt-get install -y openjdk-8-jdk openjdk-8-source sudo git maven autogen autoconf automake pkgconf libtool \
+    && DEBIAN_FRONTEND="noninteractive" apt-get install -y openjdk-8-jdk openjdk-8-source sudo git maven autogen autoconf automake pkgconf libtool libfl-dev libboost-all-dev libusb-1.0-0-dev \
+    libpng-dev libgps-dev libsqliteodbc liblua5.3-dev \
     && mkdir -p $MINIFI_BASE_DIR
 COPY . ${MINIFI_BASE_DIR}
 
 
 FROM build_deps AS release
-ARG ENABLE_JNI
+
+ARG ENABLE_ALL=OFF
+ARG ENABLE_PYTHON=OFF
+ARG ENABLE_OPS=ON
+ARG ENABLE_JNI=OFF
+ARG ENABLE_OPENCV=OFF
+ARG ENABLE_OPC=OFF
+ARG ENABLE_GPS=OFF
+ARG ENABLE_COAP=OFF
+ARG ENABLE_SQL=OFF
+ARG ENABLE_MQTT=OFF
+ARG ENABLE_PCAP=OFF
+ARG ENABLE_LIBRDKAFKA=OFF
+ARG ENABLE_SENSORS=OFF
+ARG ENABLE_USB_CAMERA=OFF
+ARG ENABLE_TENSORFLOW=OFF
+ARG ENABLE_AWS=OFF
+ARG ENABLE_BUSTACHE=OFF
+ARG ENABLE_SFTP=OFF
+ARG ENABLE_OPENWSMAN=OFF
+ARG ENABLE_AZURE=OFF
+ARG ENABLE_ENCRYPT_CONFIG=ON
+ARG ENABLE_NANOFI=OFF
+ARG ENABLE_SPLUNK=OFF
+ARG ENABLE_GCP=OFF
+ARG ENABLE_SYSTEMD=ON
+ARG DISABLE_CURL=OFF
+ARG DISABLE_JEMALLOC=ON
+ARG DISABLE_CIVET=OFF
+ARG DISABLE_EXPRESSION_LANGUAGE=OFF
+ARG DISABLE_ROCKSDB=OFF
+ARG DISABLE_LIBARCHIVE=OFF
+ARG DISABLE_LZMA=OFF
+ARG DISABLE_BZIP2=OFF
+ARG ENABLE_SCRIPTING=OFF
+ARG DISABLE_PYTHON_SCRIPTING=ON
+ARG ENABLE_LUA_SCRIPTING=ON
+ARG ENABLE_KUBERNETES=OFF
+ARG ENABLE_PROCFS=OFF
+ARG DISABLE_CONTROLLER=OFF
+ARG CMAKE_BUILD_TYPE=Release
 
 ENV CC gcc-11
 ENV CXX g++-11
@@ -44,5 +85,16 @@ ENV CXX g++-11
 RUN cd $MINIFI_BASE_DIR \
     && ./bootstrap.sh -t \
     && cd $MINIFI_BASE_DIR/build \
-	&& cmake -DUSE_SHARED_LIBS= -DENABLE_MQTT=ON -DENABLE_LIBRDKAFKA=ON -DPORTABLE=ON -DENABLE_COAP=ON -DENABLE_SQL=ON -DCMAKE_BUILD_TYPE=Release -DSKIP_TESTS=true -DENABLE_JNI=$ENABLE_JNI .. \
-	&& make -j$(nproc) package
+    && cmake -DSTATIC_BUILD= -DSKIP_TESTS=true -DENABLE_ALL="${ENABLE_ALL}" -DENABLE_PYTHON="${ENABLE_PYTHON}" -DENABLE_OPS="${ENABLE_OPS}" \
+    -DENABLE_JNI="${ENABLE_JNI}" -DENABLE_OPENCV="${ENABLE_OPENCV}" -DENABLE_OPC="${ENABLE_OPC}" -DENABLE_GPS="${ENABLE_GPS}" \
+    -DENABLE_COAP="${ENABLE_COAP}" -DENABLE_SQL="${ENABLE_SQL}" -DENABLE_MQTT="${ENABLE_MQTT}" -DENABLE_PCAP="${ENABLE_PCAP}" \
+    -DENABLE_LIBRDKAFKA="${ENABLE_LIBRDKAFKA}" -DENABLE_SENSORS="${ENABLE_SENSORS}" -DENABLE_USB_CAMERA="${ENABLE_USB_CAMERA}" \
+    -DENABLE_TENSORFLOW="${ENABLE_TENSORFLOW}" -DENABLE_AWS="${ENABLE_AWS}" -DENABLE_BUSTACHE="${ENABLE_BUSTACHE}" -DENABLE_SFTP="${ENABLE_SFTP}" \
+    -DENABLE_OPENWSMAN="${ENABLE_OPENWSMAN}" -DENABLE_AZURE="${ENABLE_AZURE}" -DENABLE_NANOFI=${ENABLE_NANOFI} -DENABLE_SYSTEMD="${ENABLE_SYSTEMD}" \
+    -DDISABLE_CURL="${DISABLE_CURL}" -DDISABLE_JEMALLOC="${DISABLE_JEMALLOC}" -DDISABLE_CIVET="${DISABLE_CIVET}" -DENABLE_SPLUNK=${ENABLE_SPLUNK} \
+    -DENABLE_TEST_PROCESSORS=OFF -DDISABLE_EXPRESSION_LANGUAGE="${DISABLE_EXPRESSION_LANGUAGE}" -DDISABLE_ROCKSDB="${DISABLE_ROCKSDB}" \
+    -DDISABLE_LIBARCHIVE="${DISABLE_LIBARCHIVE}" -DDISABLE_LZMA="${DISABLE_LZMA}" -DDISABLE_BZIP2="${DISABLE_BZIP2}" \
+    -DENABLE_SCRIPTING="${ENABLE_SCRIPTING}" -DDISABLE_PYTHON_SCRIPTING="${DISABLE_PYTHON_SCRIPTING}" -DENABLE_LUA_SCRIPTING="${ENABLE_LUA_SCRIPTING}" \
+    -DENABLE_KUBERNETES="${ENABLE_KUBERNETES}" -DENABLE_GCP="${ENABLE_GCP}" -DENABLE_PROCFS="${ENABLE_PROCFS}" \
+    -DDISABLE_CONTROLLER="${DISABLE_CONTROLLER}" -DENABLE_ENCRYPT_CONFIG="${ENABLE_ENCRYPT_CONFIG}" -DAWS_ENABLE_UNITY_BUILD=OFF -DEXCLUDE_BOOST=ON -DCMAKE_BUILD_TYPE="${CMAKE_BUILD_TYPE}" .. \
+    && make -j "$(nproc)" package
diff --git a/docker/centos/Dockerfile b/docker/centos/Dockerfile
index 63a1eff05..352d66d42 100644
--- a/docker/centos/Dockerfile
+++ b/docker/centos/Dockerfile
@@ -27,17 +27,69 @@ ARG MINIFI_VERSION
 ENV MINIFI_BASE_DIR /opt/minifi
 ENV MINIFI_HOME $MINIFI_BASE_DIR/nifi-minifi-cpp-$MINIFI_VERSION
 
-RUN yum -y install java-1.8.0-openjdk java-1.8.0-openjdk-devel python36-devel sudo git which maven make libarchive
+# gpsd-devel is in EPEL
+RUN yum -y install epel-release && yum -y install java-1.8.0-openjdk java-1.8.0-openjdk-devel python36-devel sudo git which maven make libarchive boost-devel lua-devel libusbx-devel libpng-devel \
+    gpsd-devel libpcap-devel
 
 RUN mkdir -p $MINIFI_BASE_DIR
 COPY . ${MINIFI_BASE_DIR}
 
 FROM build_deps AS release
-ARG ENABLE_JNI
+ARG ENABLE_ALL=OFF
+ARG ENABLE_PYTHON=OFF
+ARG ENABLE_OPS=ON
+ARG ENABLE_JNI=OFF
+ARG ENABLE_OPENCV=OFF
+ARG ENABLE_OPC=OFF
+ARG ENABLE_GPS=OFF
+ARG ENABLE_COAP=OFF
+ARG ENABLE_SQL=ON
+ARG ENABLE_MQTT=ON
+ARG ENABLE_PCAP=OFF
+ARG ENABLE_LIBRDKAFKA=ON
+ARG ENABLE_SENSORS=OFF
+ARG ENABLE_USB_CAMERA=OFF
+ARG ENABLE_TENSORFLOW=OFF
+ARG ENABLE_AWS=ON
+ARG ENABLE_BUSTACHE=OFF
+ARG ENABLE_SFTP=OFF
+ARG ENABLE_OPENWSMAN=OFF
+ARG ENABLE_AZURE=ON
+ARG ENABLE_ENCRYPT_CONFIG=ON
+ARG ENABLE_NANOFI=OFF
+ARG ENABLE_SPLUNK=ON
+ARG ENABLE_GCP=ON
+ARG ENABLE_SYSTEMD=ON
+ARG DISABLE_CURL=OFF
+ARG DISABLE_JEMALLOC=ON
+ARG DISABLE_CIVET=OFF
+ARG DISABLE_EXPRESSION_LANGUAGE=OFF
+ARG DISABLE_ROCKSDB=OFF
+ARG DISABLE_LIBARCHIVE=OFF
+ARG DISABLE_LZMA=OFF
+ARG DISABLE_BZIP2=OFF
+ARG ENABLE_SCRIPTING=OFF
+ARG DISABLE_PYTHON_SCRIPTING=ON
+ARG ENABLE_LUA_SCRIPTING=ON
+ARG ENABLE_KUBERNETES=OFF
+ARG ENABLE_PROCFS=OFF
+ARG DISABLE_CONTROLLER=OFF
+ARG CMAKE_BUILD_TYPE=Release
 # Perform the build
 RUN cd $MINIFI_BASE_DIR \
 	&& ./bootstrap.sh -t \
 	&& cd build \
-	&& scl enable devtoolset-10 -- cmake3 -DUSE_SHARED_LIBS=  -DENABLE_MQTT=ON -DENABLE_LIBRDKAFKA=ON -DPORTABLE=ON -DENABLE_COAP=ON -DENABLE_SQL=ON -DCMAKE_BUILD_TYPE=Release -DSKIP_TESTS=true -DENABLE_JNI=$ENABLE_JNI .. \
-	&& scl enable devtoolset-10 -- make -j$(nproc) package
+    && scl enable devtoolset-10 -- cmake3 -DSTATIC_BUILD= -DSKIP_TESTS=true -DENABLE_ALL="${ENABLE_ALL}" -DENABLE_PYTHON="${ENABLE_PYTHON}" -DENABLE_OPS="${ENABLE_OPS}" \
+    -DENABLE_JNI="${ENABLE_JNI}" -DENABLE_OPENCV="${ENABLE_OPENCV}" -DENABLE_OPC="${ENABLE_OPC}" -DENABLE_GPS="${ENABLE_GPS}" \
+    -DENABLE_COAP="${ENABLE_COAP}" -DENABLE_SQL="${ENABLE_SQL}" -DENABLE_MQTT="${ENABLE_MQTT}" -DENABLE_PCAP="${ENABLE_PCAP}" \
+    -DENABLE_LIBRDKAFKA="${ENABLE_LIBRDKAFKA}" -DENABLE_SENSORS="${ENABLE_SENSORS}" -DENABLE_USB_CAMERA="${ENABLE_USB_CAMERA}" \
+    -DENABLE_TENSORFLOW="${ENABLE_TENSORFLOW}" -DENABLE_AWS="${ENABLE_AWS}" -DENABLE_BUSTACHE="${ENABLE_BUSTACHE}" -DENABLE_SFTP="${ENABLE_SFTP}" \
+    -DENABLE_OPENWSMAN="${ENABLE_OPENWSMAN}" -DENABLE_AZURE="${ENABLE_AZURE}" -DENABLE_NANOFI=${ENABLE_NANOFI} -DENABLE_SYSTEMD="${ENABLE_SYSTEMD}" \
+    -DDISABLE_CURL="${DISABLE_CURL}" -DDISABLE_JEMALLOC="${DISABLE_JEMALLOC}" -DDISABLE_CIVET="${DISABLE_CIVET}" -DENABLE_SPLUNK=${ENABLE_SPLUNK} \
+    -DENABLE_TEST_PROCESSORS=OFF -DDISABLE_EXPRESSION_LANGUAGE="${DISABLE_EXPRESSION_LANGUAGE}" -DDISABLE_ROCKSDB="${DISABLE_ROCKSDB}" \
+    -DDISABLE_LIBARCHIVE="${DISABLE_LIBARCHIVE}" -DDISABLE_LZMA="${DISABLE_LZMA}" -DDISABLE_BZIP2="${DISABLE_BZIP2}" \
+    -DENABLE_SCRIPTING="${ENABLE_SCRIPTING}" -DDISABLE_PYTHON_SCRIPTING="${DISABLE_PYTHON_SCRIPTING}" -DENABLE_LUA_SCRIPTING="${ENABLE_LUA_SCRIPTING}" \
+    -DENABLE_KUBERNETES="${ENABLE_KUBERNETES}" -DENABLE_GCP="${ENABLE_GCP}" -DENABLE_PROCFS="${ENABLE_PROCFS}" \
+    -DDISABLE_CONTROLLER="${DISABLE_CONTROLLER}" -DENABLE_ENCRYPT_CONFIG="${ENABLE_ENCRYPT_CONFIG}" -DAWS_ENABLE_UNITY_BUILD=OFF -DEXCLUDE_BOOST=ON -DCMAKE_BUILD_TYPE="${CMAKE_BUILD_TYPE}" .. \
+    && scl enable devtoolset-10 -- make -j "$(nproc)" package
 
diff --git a/docker/fedora/Dockerfile b/docker/fedora/Dockerfile
index 6c0c814e6..c5618c3b2 100644
--- a/docker/fedora/Dockerfile
+++ b/docker/fedora/Dockerfile
@@ -29,7 +29,8 @@ ENV MINIFI_HOME $MINIFI_BASE_DIR/nifi-minifi-cpp-$MINIFI_VERSION
 
 RUN echo "fastestmirror=True" | tee -a /etc/dnf/dnf.conf
 RUN for iter in {1..10}; do yum update -y && \
-    yum -y install java-1.8.0-openjdk java-1.8.0-openjdk-devel flex bison make patch sudo git which maven libtool autoconf automake && \
+    yum -y install java-1.8.0-openjdk java-1.8.0-openjdk-devel flex bison make patch sudo git which maven libtool autoconf automake java-1.8.0-openjdk java-1.8.0-openjdk-devel sudo \
+    git which maven make libarchive boost-devel lua-devel libusb-devel libpng-devel gpsd-devel libpcap-devel && \
     yum clean all && exit_code=0 && break || exit_code=$? && echo "yum error: retry $iter in 10s" && sleep 10; done; \
     (exit $exit_code)
 
@@ -38,12 +39,63 @@ COPY . ${MINIFI_BASE_DIR}
 
 
 FROM build_deps AS release
-ARG ENABLE_JNI
+ARG ENABLE_ALL=OFF
+ARG ENABLE_PYTHON=OFF
+ARG ENABLE_OPS=ON
+ARG ENABLE_JNI=OFF
+ARG ENABLE_OPENCV=OFF
+ARG ENABLE_OPC=OFF
+ARG ENABLE_GPS=OFF
+ARG ENABLE_COAP=OFF
+ARG ENABLE_SQL=ON
+ARG ENABLE_MQTT=ON
+ARG ENABLE_PCAP=OFF
+ARG ENABLE_LIBRDKAFKA=ON
+ARG ENABLE_SENSORS=OFF
+ARG ENABLE_USB_CAMERA=OFF
+ARG ENABLE_TENSORFLOW=OFF
+ARG ENABLE_AWS=ON
+ARG ENABLE_BUSTACHE=OFF
+ARG ENABLE_SFTP=OFF
+ARG ENABLE_OPENWSMAN=OFF
+ARG ENABLE_AZURE=ON
+ARG ENABLE_ENCRYPT_CONFIG=ON
+ARG ENABLE_NANOFI=OFF
+ARG ENABLE_SPLUNK=ON
+ARG ENABLE_GCP=ON
+ARG ENABLE_SYSTEMD=ON
+ARG DISABLE_CURL=OFF
+ARG DISABLE_JEMALLOC=ON
+ARG DISABLE_CIVET=OFF
+ARG DISABLE_EXPRESSION_LANGUAGE=OFF
+ARG DISABLE_ROCKSDB=OFF
+ARG DISABLE_LIBARCHIVE=OFF
+ARG DISABLE_LZMA=OFF
+ARG DISABLE_BZIP2=OFF
+ARG ENABLE_SCRIPTING=OFF
+ARG DISABLE_PYTHON_SCRIPTING=ON
+ARG ENABLE_LUA_SCRIPTING=ON
+ARG ENABLE_KUBERNETES=OFF
+ARG ENABLE_PROCFS=OFF
+ARG DISABLE_CONTROLLER=OFF
+ARG CMAKE_BUILD_TYPE=Release
 # Perform the build
 RUN cd $MINIFI_BASE_DIR \
 	&& ./bootstrap.sh -e \
 	&& rm -rf build \
 	&& mkdir build \
 	&& cd build \
-	&& cmake3 -DUSE_SHARED_LIBS=  -DENABLE_MQTT=ON -DFAIL_ON_WARNINGS=OFF -DENABLE_LIBRDKAFKA=ON -DPORTABLE=ON -DENABLE_COAP=ON -DENABLE_SQL=ON -DCMAKE_BUILD_TYPE=Release -DSKIP_TESTS=true -DENABLE_JNI=$ENABLE_JNI .. \
-	&& make -j$(nproc) package
+    && cmake3 -DSTATIC_BUILD= -DSKIP_TESTS=true -DENABLE_ALL="${ENABLE_ALL}" -DENABLE_PYTHON="${ENABLE_PYTHON}" -DENABLE_OPS="${ENABLE_OPS}" \
+    -DENABLE_JNI="${ENABLE_JNI}" -DENABLE_OPENCV="${ENABLE_OPENCV}" -DENABLE_OPC="${ENABLE_OPC}" -DENABLE_GPS="${ENABLE_GPS}" \
+    -DENABLE_COAP="${ENABLE_COAP}" -DENABLE_SQL="${ENABLE_SQL}" -DENABLE_MQTT="${ENABLE_MQTT}" -DENABLE_PCAP="${ENABLE_PCAP}" \
+    -DENABLE_LIBRDKAFKA="${ENABLE_LIBRDKAFKA}" -DENABLE_SENSORS="${ENABLE_SENSORS}" -DENABLE_USB_CAMERA="${ENABLE_USB_CAMERA}" \
+    -DENABLE_TENSORFLOW="${ENABLE_TENSORFLOW}" -DENABLE_AWS="${ENABLE_AWS}" -DENABLE_BUSTACHE="${ENABLE_BUSTACHE}" -DENABLE_SFTP="${ENABLE_SFTP}" \
+    -DENABLE_OPENWSMAN="${ENABLE_OPENWSMAN}" -DENABLE_AZURE="${ENABLE_AZURE}" -DENABLE_NANOFI=${ENABLE_NANOFI} -DENABLE_SYSTEMD="${ENABLE_SYSTEMD}" \
+    -DDISABLE_CURL="${DISABLE_CURL}" -DDISABLE_JEMALLOC="${DISABLE_JEMALLOC}" -DDISABLE_CIVET="${DISABLE_CIVET}" -DENABLE_SPLUNK=${ENABLE_SPLUNK} \
+    -DENABLE_TEST_PROCESSORS=OFF -DDISABLE_EXPRESSION_LANGUAGE="${DISABLE_EXPRESSION_LANGUAGE}" -DDISABLE_ROCKSDB="${DISABLE_ROCKSDB}" \
+    -DDISABLE_LIBARCHIVE="${DISABLE_LIBARCHIVE}" -DDISABLE_LZMA="${DISABLE_LZMA}" -DDISABLE_BZIP2="${DISABLE_BZIP2}" \
+    -DENABLE_SCRIPTING="${ENABLE_SCRIPTING}" -DDISABLE_PYTHON_SCRIPTING="${DISABLE_PYTHON_SCRIPTING}" -DENABLE_LUA_SCRIPTING="${ENABLE_LUA_SCRIPTING}" \
+    -DENABLE_KUBERNETES="${ENABLE_KUBERNETES}" -DENABLE_GCP="${ENABLE_GCP}" -DENABLE_PROCFS="${ENABLE_PROCFS}" \
+    -DDISABLE_CONTROLLER="${DISABLE_CONTROLLER}" -DENABLE_ENCRYPT_CONFIG="${ENABLE_ENCRYPT_CONFIG}" -DAWS_ENABLE_UNITY_BUILD=OFF -DEXCLUDE_BOOST=ON -DCMAKE_BUILD_TYPE="${CMAKE_BUILD_TYPE}" .. \
+    && make -j "$(nproc)" package
+
diff --git a/docker/focal/Dockerfile b/docker/focal/Dockerfile
index cc0670280..96f62cf5e 100644
--- a/docker/focal/Dockerfile
+++ b/docker/focal/Dockerfile
@@ -30,14 +30,54 @@ ENV JAVA_HOME /usr/lib/jvm/java-8-openjdk-amd64/
 
 RUN apt update \
     && DEBIAN_FRONTEND="noninteractive" apt install -y openjdk-8-jdk openjdk-8-source python3.9-dev sudo git maven autogen autoconf automake cmake software-properties-common pkgconf libtool \
+    libfl-dev libboost-all-dev libusb-1.0-0-dev libpng-dev libgps-dev libsqliteodbc liblua5.3-dev\
     && mkdir -p "${MINIFI_BASE_DIR}"
 
 COPY . ${MINIFI_BASE_DIR}
 
 
 FROM build_deps AS release
-ARG ENABLE_JNI
 
+ARG ENABLE_ALL=OFF
+ARG ENABLE_PYTHON=OFF
+ARG ENABLE_OPS=ON
+ARG ENABLE_JNI=OFF
+ARG ENABLE_OPENCV=OFF
+ARG ENABLE_OPC=OFF
+ARG ENABLE_GPS=OFF
+ARG ENABLE_COAP=OFF
+ARG ENABLE_SQL=OFF
+ARG ENABLE_MQTT=OFF
+ARG ENABLE_PCAP=OFF
+ARG ENABLE_LIBRDKAFKA=OFF
+ARG ENABLE_SENSORS=OFF
+ARG ENABLE_USB_CAMERA=OFF
+ARG ENABLE_TENSORFLOW=OFF
+ARG ENABLE_AWS=OFF
+ARG ENABLE_BUSTACHE=OFF
+ARG ENABLE_SFTP=OFF
+ARG ENABLE_OPENWSMAN=OFF
+ARG ENABLE_AZURE=OFF
+ARG ENABLE_ENCRYPT_CONFIG=ON
+ARG ENABLE_NANOFI=OFF
+ARG ENABLE_SPLUNK=OFF
+ARG ENABLE_GCP=OFF
+ARG ENABLE_SYSTEMD=ON
+ARG DISABLE_CURL=OFF
+ARG DISABLE_JEMALLOC=ON
+ARG DISABLE_CIVET=OFF
+ARG DISABLE_EXPRESSION_LANGUAGE=OFF
+ARG DISABLE_ROCKSDB=OFF
+ARG DISABLE_LIBARCHIVE=OFF
+ARG DISABLE_LZMA=OFF
+ARG DISABLE_BZIP2=OFF
+ARG ENABLE_SCRIPTING=OFF
+ARG DISABLE_PYTHON_SCRIPTING=ON
+ARG ENABLE_LUA_SCRIPTING=ON
+ARG ENABLE_KUBERNETES=OFF
+ARG ENABLE_PROCFS=OFF
+ARG DISABLE_CONTROLLER=OFF
+ARG CMAKE_BUILD_TYPE=Release
 ENV CC gcc-11
 ENV CXX g++-11
 
@@ -45,5 +85,16 @@ ENV CXX g++-11
 RUN cd $MINIFI_BASE_DIR \
     && ./bootstrap.sh -t \
     && cd $MINIFI_BASE_DIR/build \
-    && cmake -DUSE_SHARED_LIBS= -DENABLE_MQTT=ON -DENABLE_LIBRDKAFKA=ON -DPORTABLE=ON -DENABLE_COAP=ON -DENABLE_SQL=ON -DCMAKE_BUILD_TYPE=Release -DSKIP_TESTS=true -DENABLE_JNI=$ENABLE_JNI .. \
-    && make -j$(nproc) package
+    && cmake -DSTATIC_BUILD= -DSKIP_TESTS=true -DENABLE_ALL="${ENABLE_ALL}" -DENABLE_PYTHON="${ENABLE_PYTHON}" -DENABLE_OPS="${ENABLE_OPS}" \
+    -DENABLE_JNI="${ENABLE_JNI}" -DENABLE_OPENCV="${ENABLE_OPENCV}" -DENABLE_OPC="${ENABLE_OPC}" -DENABLE_GPS="${ENABLE_GPS}" \
+    -DENABLE_COAP="${ENABLE_COAP}" -DENABLE_SQL="${ENABLE_SQL}" -DENABLE_MQTT="${ENABLE_MQTT}" -DENABLE_PCAP="${ENABLE_PCAP}" \
+    -DENABLE_LIBRDKAFKA="${ENABLE_LIBRDKAFKA}" -DENABLE_SENSORS="${ENABLE_SENSORS}" -DENABLE_USB_CAMERA="${ENABLE_USB_CAMERA}" \
+    -DENABLE_TENSORFLOW="${ENABLE_TENSORFLOW}" -DENABLE_AWS="${ENABLE_AWS}" -DENABLE_BUSTACHE="${ENABLE_BUSTACHE}" -DENABLE_SFTP="${ENABLE_SFTP}" \
+    -DENABLE_OPENWSMAN="${ENABLE_OPENWSMAN}" -DENABLE_AZURE="${ENABLE_AZURE}" -DENABLE_NANOFI=${ENABLE_NANOFI} -DENABLE_SYSTEMD="${ENABLE_SYSTEMD}" \
+    -DDISABLE_CURL="${DISABLE_CURL}" -DDISABLE_JEMALLOC="${DISABLE_JEMALLOC}" -DDISABLE_CIVET="${DISABLE_CIVET}" -DENABLE_SPLUNK=${ENABLE_SPLUNK} \
+    -DENABLE_TEST_PROCESSORS=OFF -DDISABLE_EXPRESSION_LANGUAGE="${DISABLE_EXPRESSION_LANGUAGE}" -DDISABLE_ROCKSDB="${DISABLE_ROCKSDB}" \
+    -DDISABLE_LIBARCHIVE="${DISABLE_LIBARCHIVE}" -DDISABLE_LZMA="${DISABLE_LZMA}" -DDISABLE_BZIP2="${DISABLE_BZIP2}" \
+    -DENABLE_SCRIPTING="${ENABLE_SCRIPTING}" -DDISABLE_PYTHON_SCRIPTING="${DISABLE_PYTHON_SCRIPTING}" -DENABLE_LUA_SCRIPTING="${ENABLE_LUA_SCRIPTING}" \
+    -DENABLE_KUBERNETES="${ENABLE_KUBERNETES}" -DENABLE_GCP="${ENABLE_GCP}" -DENABLE_PROCFS="${ENABLE_PROCFS}" \
+    -DDISABLE_CONTROLLER="${DISABLE_CONTROLLER}" -DENABLE_ENCRYPT_CONFIG="${ENABLE_ENCRYPT_CONFIG}" -DAWS_ENABLE_UNITY_BUILD=OFF -DEXCLUDE_BOOST=ON -DCMAKE_BUILD_TYPE="${CMAKE_BUILD_TYPE}" .. \
+    && make -j "$(nproc)" package