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
