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

commit 59d6705c144adb74f4fbff229310369dcfd2d251
Author: Gabor Gyimesi <[email protected]>
AuthorDate: Mon Sep 22 16:53:31 2025 +0200

    MINIFICPP-2632 Make RPM creation in rockylinux docker build optional
    
    - Also fix dockerfile warnings and install python3 dependency when OPC 
extension is enabled
    
    Closes #2031
    
    Signed-off-by: Martin Zink <[email protected]>
---
 bootstrap/minifi_option.py            |  2 +-
 cmake/DockerConfig.cmake              |  1 +
 cmake/MiNiFiOptions.cmake             |  3 ++-
 docker/DockerBuild.sh                 |  8 +++++++-
 docker/Dockerfile                     | 16 ++++++++--------
 docker/compiler-test/gcc.Dockerfile   |  2 +-
 docker/installed/installed.Dockerfile |  8 ++++----
 docker/installed/rpm.Dockerfile       |  2 +-
 docker/rockylinux/Dockerfile          |  5 ++---
 9 files changed, 27 insertions(+), 20 deletions(-)

diff --git a/bootstrap/minifi_option.py b/bootstrap/minifi_option.py
index 853acd86f..3bfc036f3 100644
--- a/bootstrap/minifi_option.py
+++ b/bootstrap/minifi_option.py
@@ -31,7 +31,7 @@ class MinifiOptions:
         self.build_type = CMakeCacheValue("Specifies the build type on 
single-configuration generators",
                                           "CMAKE_BUILD_TYPE", "STRING", 
"Release")
         self.build_type.possible_values = ["Release", "Debug", 
"RelWithDebInfo", "MinSizeRel"]
-        additional_build_options = ["DOCKER_BUILD_ONLY", "DOCKER_SKIP_TESTS", 
"SKIP_TESTS", "PORTABLE"]
+        additional_build_options = ["DOCKER_BUILD_ONLY", "DOCKER_SKIP_TESTS", 
"DOCKER_CREATE_RPM", "SKIP_TESTS", "PORTABLE"]
         self.use_ninja = CMakeCacheValue("Specifies if CMake should use the 
Ninja generator or the system default", "USE_NINJA", "BOOL", "ON")
         self.bool_options = {name: cache_value for name, cache_value in 
cache_values.items() if
                              cache_value.value_type == "BOOL" and ("ENABLE" in 
name or "MINIFI" in name or name in additional_build_options)}
diff --git a/cmake/DockerConfig.cmake b/cmake/DockerConfig.cmake
index bb3697963..4e42ac3c0 100644
--- a/cmake/DockerConfig.cmake
+++ b/cmake/DockerConfig.cmake
@@ -134,6 +134,7 @@ add_custom_target(
         -c BUILD_NUMBER=${BUILD_NUMBER}
         -c DOCKER_CCACHE_DUMP_LOCATION=${DOCKER_CCACHE_DUMP_LOCATION}
         -c DOCKER_SKIP_TESTS=${DOCKER_SKIP_TESTS}
+        -c DOCKER_CREATE_RPM=${DOCKER_CREATE_RPM}
         -c CMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE}
         -c DOCKER_PLATFORMS=${DOCKER_PLATFORMS}
         -c DOCKER_PUSH=${DOCKER_PUSH}
diff --git a/cmake/MiNiFiOptions.cmake b/cmake/MiNiFiOptions.cmake
index 1170e3510..67bc2f807 100644
--- a/cmake/MiNiFiOptions.cmake
+++ b/cmake/MiNiFiOptions.cmake
@@ -47,6 +47,7 @@ add_minifi_option(SKIP_TESTS "Skips building all tests." OFF)
 add_minifi_option(MINIFI_PERFORMANCE_TESTS "Build performance tests" OFF)
 add_minifi_option(DOCKER_BUILD_ONLY "Disables all targets except docker build 
scripts. Ideal for systems without an up-to-date compiler." OFF)
 add_minifi_option(DOCKER_SKIP_TESTS "Skip building tests in docker image 
targets." ON)
+add_minifi_option(DOCKER_CREATE_RPM "Create an RPM package in the rocky docker 
build target." ON)
 add_minifi_option(DOCKER_PUSH "Push created images to the specified tags" OFF)
 
 add_minifi_option(PORTABLE "Instructs the compiler to remove architecture 
specific optimizations" ON)
@@ -54,7 +55,6 @@ add_minifi_option(USE_SHARED_LIBS "Builds using shared 
libraries" ON)
 add_minifi_dependent_option(STATIC_BUILD "Attempts to statically link as many 
dependencies as possible." ON "NOT USE_SHARED_LIBS" OFF)
 add_minifi_option(LIBC_STATIC "Instructs the build system to statically link 
libstdc++ and glibc into minifiexe. Experiemental" OFF)
 add_minifi_option(ENABLE_OPS "Enable Operations/zlib Tools" ON)
-add_minifi_option(ENABLE_OPC "Instructs the build system to enable the OPC 
extension" ON)
 add_minifi_option(BUILD_SHARED_LIBS "Build yaml cpp shared lib" OFF)
 
 add_minifi_option(BUILD_ROCKSDB "Instructs the build system to use RocksDB 
from the third party directory" ON)
@@ -117,6 +117,7 @@ add_minifi_option(ENABLE_COUCHBASE "Enable Couchbase 
support" OFF)
 add_minifi_option(ENABLE_EXECUTE_PROCESS "Enable ExecuteProcess processor" OFF)
 add_minifi_option(ENABLE_CONTROLLER "Enables the build of MiNiFi controller 
binary." ON)
 add_minifi_option(ENABLE_LLAMACPP "Enables llama.cpp support." OFF)
+add_minifi_option(ENABLE_OPC "Instructs the build system to enable the OPC 
extension" ON)
 
 set_minifi_cache_variable(CUSTOM_MALLOC OFF "Overwrite malloc implementation.")
 set_property(CACHE CUSTOM_MALLOC PROPERTY STRINGS "jemalloc" "mimalloc" 
"rpmalloc" OFF)
diff --git a/docker/DockerBuild.sh b/docker/DockerBuild.sh
index ad03bd000..ea038bfbb 100755
--- a/docker/DockerBuild.sh
+++ b/docker/DockerBuild.sh
@@ -30,6 +30,7 @@ DISTRO_NAME=
 BUILD_NUMBER=
 DOCKER_CCACHE_DUMP_LOCATION=
 DOCKER_SKIP_TESTS=ON
+DOCKER_CREATE_RPM=ON
 CMAKE_BUILD_TYPE=Release
 PLATFORMS=
 PUSH_OR_LOAD="--load"
@@ -105,6 +106,8 @@ while [[ $# -gt 0 ]]; do
         DOCKER_CCACHE_DUMP_LOCATION="${ARR[1]}"
       elif [ "${ARR[0]}" == "DOCKER_SKIP_TESTS" ]; then
         DOCKER_SKIP_TESTS="${ARR[1]}"
+      elif [ "${ARR[0]}" == "DOCKER_CREATE_RPM" ]; then
+        DOCKER_CREATE_RPM="${ARR[1]}"
       elif [ "${ARR[0]}" == "CMAKE_BUILD_TYPE" ]; then
         CMAKE_BUILD_TYPE="${ARR[1]}"
       elif [ "${ARR[0]}" == "DOCKER_PLATFORMS" ] && [ -n "${ARR[1]}" ]; then
@@ -198,6 +201,7 @@ BUILD_ARGS+=("--build-arg" "UID=${UID_ARG}"
              "--build-arg" "DUMP_LOCATION=${DUMP_LOCATION}"
              "--build-arg" "DISTRO_NAME=${DISTRO_NAME}"
              "--build-arg" "DOCKER_SKIP_TESTS=${DOCKER_SKIP_TESTS}"
+             "--build-arg" "DOCKER_CREATE_RPM=${DOCKER_CREATE_RPM}"
              "--build-arg" "CMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE}")
 if [ -n "${DUMP_LOCATION}" ]; then
   BUILD_ARGS+=("--build-arg" "DOCKER_MAKE_TARGET=package")
@@ -231,6 +235,8 @@ fi
 if [ -n "${DUMP_LOCATION}" ]; then
   container_id=$(docker create "${TAG}")
   docker cp 
"${container_id}:/opt/minifi/build/nifi-minifi-cpp-${MINIFI_VERSION}.tar.gz" 
"${DUMP_LOCATION}/nifi-minifi-cpp-${MINIFI_VERSION}-${TARGZ_TAG}.tar.gz" || true
-  docker cp 
"${container_id}:/opt/minifi/build/nifi-minifi-cpp-${MINIFI_VERSION}.rpm" 
"${DUMP_LOCATION}/nifi-minifi-cpp-${MINIFI_VERSION}-${TARGZ_TAG}.rpm" || true
+  if [ "${DOCKER_CREATE_RPM}" == "ON" ]; then
+    docker cp 
"${container_id}:/opt/minifi/build/nifi-minifi-cpp-${MINIFI_VERSION}.rpm" 
"${DUMP_LOCATION}/nifi-minifi-cpp-${MINIFI_VERSION}-${TARGZ_TAG}.rpm" || true
+  fi
   docker rm -f "${container_id}"
 fi
diff --git a/docker/Dockerfile b/docker/Dockerfile
index a7e5a2122..86993e0bd 100644
--- a/docker/Dockerfile
+++ b/docker/Dockerfile
@@ -52,10 +52,10 @@ RUN apk --no-cache add gcc \
   doxygen \
   ccache
 
-ENV USER minificpp
-ENV MINIFI_BASE_DIR /opt/minifi
-ENV MINIFI_HOME $MINIFI_BASE_DIR/nifi-minifi-cpp-${MINIFI_VERSION}
-ENV MINIFI_VERSION ${MINIFI_VERSION}
+ENV USER=minificpp
+ENV MINIFI_BASE_DIR=/opt/minifi
+ENV MINIFI_HOME=$MINIFI_BASE_DIR/nifi-minifi-cpp-${MINIFI_VERSION}
+ENV MINIFI_VERSION=${MINIFI_VERSION}
 
 # Setup minificpp user
 RUN addgroup -g ${GID} ${USER} && adduser -u ${UID} -D -G ${USER} -g "" 
${USER} && \
@@ -85,10 +85,10 @@ ARG MINIFI_OPTIONS
 # Add testing repo for rocksdb
 RUN echo 'http://dl-cdn.alpinelinux.org/alpine/edge/testing' >> 
/etc/apk/repositories
 
-ENV USER minificpp
-ENV MINIFI_BASE_DIR /opt/minifi
-ENV MINIFI_HOME ${MINIFI_BASE_DIR}/minifi-current
-ENV MINIFI_VERSIONED_HOME ${MINIFI_BASE_DIR}/nifi-minifi-cpp-${MINIFI_VERSION}
+ENV USER=minificpp
+ENV MINIFI_BASE_DIR=/opt/minifi
+ENV MINIFI_HOME=${MINIFI_BASE_DIR}/minifi-current
+ENV MINIFI_VERSIONED_HOME=${MINIFI_BASE_DIR}/nifi-minifi-cpp-${MINIFI_VERSION}
 
 RUN addgroup -g ${GID} ${USER} && adduser -u ${UID} -D -G ${USER} -g "" 
${USER} && \
     install -d -o ${USER} -g ${USER} ${MINIFI_BASE_DIR} && ln -s 
${MINIFI_VERSIONED_HOME} ${MINIFI_HOME} && \
diff --git a/docker/compiler-test/gcc.Dockerfile 
b/docker/compiler-test/gcc.Dockerfile
index 643e4df99..05a3e867b 100644
--- a/docker/compiler-test/gcc.Dockerfile
+++ b/docker/compiler-test/gcc.Dockerfile
@@ -3,7 +3,7 @@ ARG BASE_IMAGE
 FROM ${BASE_IMAGE} AS build
 LABEL maintainer="Apache NiFi <[email protected]>"
 
-ENV MINIFI_BASE_DIR /opt/minifi
+ENV MINIFI_BASE_DIR=/opt/minifi
 ENV DEBIAN_FRONTEND=noninteractive
 
 RUN mkdir -p $MINIFI_BASE_DIR
diff --git a/docker/installed/installed.Dockerfile 
b/docker/installed/installed.Dockerfile
index 2b177976f..572641eaa 100644
--- a/docker/installed/installed.Dockerfile
+++ b/docker/installed/installed.Dockerfile
@@ -26,10 +26,10 @@ ARG INSTALL_PACKAGE_CMD
 ARG UID=1001
 ARG GID=1001
 
-ENV USER minificpp
-ENV MINIFI_BASE_DIR /opt/minifi
-ENV MINIFI_HOME ${MINIFI_BASE_DIR}/minifi-current
-ENV MINIFI_VERSIONED_HOME ${MINIFI_BASE_DIR}/nifi-minifi-cpp-${MINIFI_VERSION}
+ENV USER=minificpp
+ENV MINIFI_BASE_DIR=/opt/minifi
+ENV MINIFI_HOME=${MINIFI_BASE_DIR}/minifi-current
+ENV MINIFI_VERSIONED_HOME=${MINIFI_BASE_DIR}/nifi-minifi-cpp-${MINIFI_VERSION}
 
 
 RUN groupadd -g ${GID} ${USER} && useradd -m -g ${GID} ${USER} && \
diff --git a/docker/installed/rpm.Dockerfile b/docker/installed/rpm.Dockerfile
index e17371c3f..ff14e3285 100644
--- a/docker/installed/rpm.Dockerfile
+++ b/docker/installed/rpm.Dockerfile
@@ -26,7 +26,7 @@ ARG INSTALL_PACKAGE_CMD
 ARG UID=1001
 ARG GID=1001
 
-ENV USER minificpp
+ENV USER=minificpp
 ENV MINIFI_INSTALLATION_TYPE="FHS"
 
 
diff --git a/docker/rockylinux/Dockerfile b/docker/rockylinux/Dockerfile
index 282b16d6b..07069e525 100644
--- a/docker/rockylinux/Dockerfile
+++ b/docker/rockylinux/Dockerfile
@@ -42,8 +42,7 @@ COPY . ${MINIFI_BASE_DIR}
 # Install the system dependencies needed for a build
 # ccache is in EPEL
 RUN dnf -y install epel-release && dnf -y install gcc-toolset-12 sudo git 
which make libarchive ccache ca-certificates perl patch bison flex libtool 
cmake rpmdevtools && \
-    if echo "$MINIFI_OPTIONS" | grep -q "ENABLE_ALL=ON"; then dnf -y 
--enablerepo=devel install python3-devel; fi && \
-    if echo "$MINIFI_OPTIONS" | grep -q "ENABLE_PYTHON_SCRIPTING=ON"; then dnf 
-y install python3-devel; fi && \
+    if echo "$MINIFI_OPTIONS" | grep -q 
"ENABLE_ALL=ON\|ENABLE_PYTHON_SCRIPTING=ON\|ENABLE_OPC=ON"; then dnf -y 
--enablerepo=devel install python3-devel; fi && \
     if echo "$MINIFI_OPTIONS" | grep -q "ENABLE_SFTP=ON" && [ 
"${DOCKER_SKIP_TESTS}" == "OFF" ]; then dnf -y install java-1.8.0-openjdk 
maven; fi
 
 RUN cd $MINIFI_BASE_DIR && \
@@ -76,4 +75,4 @@ RUN if [[ "${DOCKER_CREATE_RPM}" == "ON" ]] ; then  \
         cmake -DMINIFI_PACKAGING_TYPE=RPM .. && \
         make -j "$(nproc)" package&& \
         ../packaging/rpm/check_rpm_contents.sh *.rpm 
expected-rpm-contents.txt; \
-    fi \
+    fi

Reply via email to