This is an automated email from the ASF dual-hosted git repository. martinzink pushed a commit to branch MINIFICPP-2584-apache in repository https://gitbox.apache.org/repos/asf/nifi-minifi-cpp.git
commit dd3d48308347abc0ada03a035e72e2205de52074 Author: Martin Zink <[email protected]> AuthorDate: Wed Jul 16 10:24:50 2025 +0200 packaging dir and service file configuration --- .github/workflows/verify-package.yml | 2 +- .gitignore | 2 +- CMakeLists.txt | 45 ++++--------- bin/CMakeLists.txt | 71 +++++++++++++++++++++ bin/{minifi.service => minifi.service.in} | 4 +- conanfile.py | 2 +- {msi => packaging/msi}/MergeModulesFeature.xml | 0 .../msi}/VSRedistributablesComponent.xml | 0 .../msi}/VSRedistributablesFeature.xml | 0 {msi => packaging/msi}/WixWin.wsi.in | 0 {msi => packaging/msi}/bgr.png | Bin {msi => packaging/msi}/minifi-logo-ico.ico | Bin {msi => packaging/msi}/minifi-logo-png-banner.png | Bin {msi => packaging/msi}/x64.wsi | 0 {msi => packaging/msi}/x86.wsi | 0 packaging/{ => rpm}/check_rpm_contents.sh | 0 packaging/{ => rpm}/expected-rpm-contents.txt | 0 packaging/{ => rpm}/pre_install.sh | 0 18 files changed, 90 insertions(+), 36 deletions(-) diff --git a/.github/workflows/verify-package.yml b/.github/workflows/verify-package.yml index 112f07483..de3140734 100644 --- a/.github/workflows/verify-package.yml +++ b/.github/workflows/verify-package.yml @@ -43,7 +43,7 @@ jobs: - id: check-rpm-contents run: | - packaging/check_rpm_contents.sh build/*.rpm packaging/expected-rpm-contents.txt + packaging/rpm/check_rpm_contents.sh build/*.rpm packaging/rpm/expected-rpm-contents.txt - uses: actions/upload-artifact@v4 with: diff --git a/.gitignore b/.gitignore index 8a57ba1c0..189fd1d91 100644 --- a/.gitignore +++ b/.gitignore @@ -63,7 +63,7 @@ __pycache__/ /content_repository /provenance_repository /logs -msi/WixWin.wsi +packaging/msi/WixWin.wsi docker/behavex_output .vs/** diff --git a/CMakeLists.txt b/CMakeLists.txt index 1a86eb7ff..047160012 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -427,8 +427,8 @@ if(WIN32) set(CPACK_COMPONENT_HEADERS_INSTALL_TYPES Developer Full) set(CPACK_COMPONENT_APPLICATIONS_INSTALL_TYPES Full) set(CPACK_WIX_EXTENSIONS WixUtilExtension) - set(CPACK_WIX_UI_BANNER "${CMAKE_CURRENT_SOURCE_DIR}/msi/minifi-logo-png-banner.png") - set(CPACK_WIX_UI_DIALOG "${CMAKE_CURRENT_SOURCE_DIR}/msi/bgr.png") + set(CPACK_WIX_UI_BANNER "${CMAKE_CURRENT_SOURCE_DIR}/packaging/msi/minifi-logo-png-banner.png") + set(CPACK_WIX_UI_DIALOG "${CMAKE_CURRENT_SOURCE_DIR}/packaging/msi/bgr.png") file(COPY "${CMAKE_CURRENT_SOURCE_DIR}/fips/" DESTINATION "${CMAKE_CURRENT_BINARY_DIR}/fips/") file(COPY "${CMAKE_CURRENT_SOURCE_DIR}/LICENSE" DESTINATION "${CMAKE_CURRENT_BINARY_DIR}") @@ -502,15 +502,15 @@ if(WIN32) if (BUILD_PLATFORM STREQUAL "x64") message("Using ${VCRUNTIME_X64_MERGEMODULE_PATH} VC Redistributable Merge Module") - configure_file("msi/x64.wsi" "msi/x64.wsi" @ONLY) - list(APPEND CPACK_WIX_EXTRA_SOURCES "${CMAKE_CURRENT_BINARY_DIR}/msi/x64.wsi") + configure_file("packaging/msi/x64.wsi" "packaging/msi/x64.wsi" @ONLY) + list(APPEND CPACK_WIX_EXTRA_SOURCES "${CMAKE_CURRENT_BINARY_DIR}/packaging/msi/x64.wsi") else() message("Using ${VCRUNTIME_X86_MERGEMODULE_PATH} VC Redistributable Merge Module") - configure_file("msi/x86.wsi" "msi/x86.wsi" @ONLY) - list(APPEND CPACK_WIX_EXTRA_SOURCES "${CMAKE_CURRENT_BINARY_DIR}/msi/x86.wsi") + configure_file("packaging/msi/x86.wsi" "packaging/msi/x86.wsi" @ONLY) + list(APPEND CPACK_WIX_EXTRA_SOURCES "${CMAKE_CURRENT_BINARY_DIR}/packaging/msi/x86.wsi") endif() - file(READ "${CMAKE_CURRENT_SOURCE_DIR}/msi/MergeModulesFeature.xml" WIX_EXTRA_FEATURES) + file(READ "${CMAKE_CURRENT_SOURCE_DIR}/packaging/msi/MergeModulesFeature.xml" WIX_EXTRA_FEATURES) elseif(MINIFI_INCLUDE_VC_REDIST_DLLS) message("Creating installer with Visual C++ Redistributable DLLs") file(GLOB VC_RUNTIME_X86_REDIST_CRT_DIR_LIST LIST_DIRECTORIES true "${VCRUNTIME_REDIST_DIR}/x86/Microsoft.VC*.CRT") @@ -533,13 +533,13 @@ if(WIN32) else() message(FATAL_ERROR "Could not determine architecture, CMAKE_SIZEOF_VOID_P is unexpected: ${CMAKE_SIZEOF_VOID_P}") endif() - file(READ "${CMAKE_CURRENT_SOURCE_DIR}/msi/VSRedistributablesComponent.xml" WIX_EXTRA_COMPONENTS) - file(READ "${CMAKE_CURRENT_SOURCE_DIR}/msi/VSRedistributablesFeature.xml" WIX_EXTRA_FEATURES) + file(READ "${CMAKE_CURRENT_SOURCE_DIR}/packaging/msi/VSRedistributablesComponent.xml" WIX_EXTRA_COMPONENTS) + file(READ "${CMAKE_CURRENT_SOURCE_DIR}/packaging/msi/VSRedistributablesFeature.xml" WIX_EXTRA_FEATURES) else() message("Creating installer without UCRT or VC Redistributable") endif() - configure_file("${CMAKE_CURRENT_SOURCE_DIR}/msi/WixWin.wsi.in" "${CMAKE_CURRENT_SOURCE_DIR}/msi/WixWin.wsi") - set(CPACK_WIX_TEMPLATE "${CMAKE_CURRENT_SOURCE_DIR}/msi/WixWin.wsi") + configure_file("${CMAKE_CURRENT_SOURCE_DIR}/packaging/msi/WixWin.wsi.in" "${CMAKE_CURRENT_SOURCE_DIR}/packaging/msi/WixWin.wsi") + set(CPACK_WIX_TEMPLATE "${CMAKE_CURRENT_SOURCE_DIR}/packaging/msi/WixWin.wsi") else() set(CPACK_SOURCE_GENERATOR "TGZ") endif(WIN32) @@ -588,17 +588,13 @@ set(CPACK_SOURCE_IGNORE_FILES ) add_subdirectory(conf) +add_subdirectory(bin) if (NOT WIN32) if (MINIFI_PACKAGING_TYPE STREQUAL "RPM") message(STATUS "Configuring for FHS/RPM package installation.") install(FILES fips/openssl.cnf fips/README.md DESTINATION /${CMAKE_INSTALL_SYSCONFDIR}/${PROJECT_NAME}/fips COMPONENT bin) - install(PROGRAMS bin/minifi.sh DESTINATION ${CMAKE_INSTALL_BINDIR}) - install(FILES bin/minifi.service - DESTINATION ${CMAKE_INSTALL_LIBDIR}/systemd/system - COMPONENT bin - ) install(DIRECTORY DESTINATION /${CMAKE_INSTALL_LOCALSTATEDIR}/lib/${PROJECT_NAME} COMPONENT bin) install(DIRECTORY DESTINATION /${CMAKE_INSTALL_LOCALSTATEDIR}/log/${PROJECT_NAME} COMPONENT bin) install(DIRECTORY extensions/python/pythonprocessors/ @@ -609,7 +605,6 @@ if (NOT WIN32) COMPONENT bin) elseif (MINIFI_PACKAGING_TYPE STREQUAL "TGZ") message(STATUS "Configuring for self-contained TGZ package installation.") - install(PROGRAMS bin/minifi.sh DESTINATION bin) install(FILES fips/openssl.cnf fips/README.md DESTINATION fips COMPONENT bin) @@ -619,18 +614,6 @@ if (NOT WIN32) install(DIRECTORY extensions/python/pythonprocessor-examples/ DESTINATION minifi-python-examples COMPONENT bin) - install(PROGRAMS bin/minifi.sh - DESTINATION bin - COMPONENT bin) - if (APPLE) - install(FILES bin/minifi.plist - DESTINATION bin - COMPONENT bin) - else() - install(FILES bin/minifi.service - DESTINATION bin - COMPONENT bin) - endif() else() message(FATAL_ERROR "Invalid MINIFI_PACKAGING_TYPE") endif() @@ -655,7 +638,7 @@ include(CPackComponent) if (WIN32) set(CPACK_GENERATOR "WIX") set(CPACK_WIX_UPGRADE_GUID "FE29F801-3486-4E9E-AFF9-838C1A5C8D59") - set(CPACK_WIX_PRODUCT_ICON "${CMAKE_CURRENT_SOURCE_DIR}/msi/minifi-logo-ico.ico") + set(CPACK_WIX_PRODUCT_ICON "${CMAKE_CURRENT_SOURCE_DIR}/packaging/msi/minifi-logo-ico.ico") elseif(APPLE) set(CPACK_GENERATOR "TGZ") else() @@ -671,7 +654,7 @@ else() set(CMAKE_INSTALL_RPATH "${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_LIBDIR}/${PROJECT_NAME}") set(CPACK_RPM_DEFAULT_USER "minificpp") set(CPACK_RPM_DEFAULT_GROUP "minificpp") - set(CPACK_RPM_PRE_INSTALL_SCRIPT_FILE "${CMAKE_CURRENT_SOURCE_DIR}/packaging/pre_install.sh") + set(CPACK_RPM_PRE_INSTALL_SCRIPT_FILE "${CMAKE_CURRENT_SOURCE_DIR}/packaging/rpm/pre_install.sh") list(APPEND CPACK_RPM_EXCLUDE_FROM_AUTO_FILELIST_ADDITION "/var") list(APPEND CPACK_RPM_EXCLUDE_FROM_AUTO_FILELIST_ADDITION "/var/lib") list(APPEND CPACK_RPM_EXCLUDE_FROM_AUTO_FILELIST_ADDITION "/var/log") diff --git a/bin/CMakeLists.txt b/bin/CMakeLists.txt new file mode 100644 index 000000000..7a268e5a2 --- /dev/null +++ b/bin/CMakeLists.txt @@ -0,0 +1,71 @@ +# Licensed to the Apache Software Foundation (ASF) under one +# +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. +# + +# Exclude conf for windows since we'll be doing the work in the WiX template + +if (WIN32) + return() +endif() + + +if (MINIFI_PACKAGING_TYPE STREQUAL "RPM") + set(MINIFI_HOME_ENV_VALUE "FHS") + set(MINIFI_EXEC_PATH "/usr/bin/minifi") +elseif (MINIFI_PACKAGING_TYPE STREQUAL "TGZ") + set(MINIFI_HOME_ENV_VALUE "/opt/minifi-cpp") + set(MINIFI_EXEC_PATH "/opt/minifi-cpp/bin/minifi") +else() + message(FATAL_ERROR "Invalid MINIFI_PACKAGING_TYPE") +endif() + + +if(APPLE) + configure_file( + minifi.plist + ${CMAKE_BINARY_DIR}/bin/minifi.plist + @ONLY + ) +else() + configure_file( + minifi.service.in + ${CMAKE_BINARY_DIR}/bin/minifi.service + @ONLY + ) +endif() + + +configure_file( + minifi.sh + ${CMAKE_BINARY_DIR}/bin/minifi.sh + @ONLY +) + +if (MINIFI_PACKAGING_TYPE STREQUAL "RPM") + install(PROGRAMS ${CMAKE_BINARY_DIR}/bin/minifi.sh DESTINATION ${CMAKE_INSTALL_BINDIR}) + install(FILES ${CMAKE_BINARY_DIR}/bin/minifi.service DESTINATION ${CMAKE_INSTALL_LIBDIR}/systemd/system COMPONENT bin) +elseif (MINIFI_PACKAGING_TYPE STREQUAL "TGZ") + install(PROGRAMS ${CMAKE_BINARY_DIR}/bin/minifi.sh DESTINATION ${CMAKE_INSTALL_BINDIR}) + if (APPLE) + install(FILES ${CMAKE_BINARY_DIR}/minifi.plist DESTINATION bin COMPONENT bin) + else() + install(FILES ${CMAKE_BINARY_DIR}/minifi.service DESTINATION bin COMPONENT bin) + endif() +else() + message(FATAL_ERROR "Invalid MINIFI_PACKAGING_TYPE") +endif() \ No newline at end of file diff --git a/bin/minifi.service b/bin/minifi.service.in similarity index 74% rename from bin/minifi.service rename to bin/minifi.service.in index 6f3c43908..8787ffae3 100644 --- a/bin/minifi.service +++ b/bin/minifi.service.in @@ -4,8 +4,8 @@ After=network.target [Service] Type=simple -Environment=MINIFI_HOME=/opt/minifi-cpp -ExecStart=/opt/minifi-cpp/bin/minifi +Environment=MINIFI_HOME=@{MINIFI_HOME_ENV_VALUE} +ExecStart=@{MINIFI_EXEC_PATH} Restart=on-failure RestartSec=3 KillSignal=SIGTERM diff --git a/conanfile.py b/conanfile.py index f4bf443de..908a0805f 100644 --- a/conanfile.py +++ b/conanfile.py @@ -9,7 +9,7 @@ required_conan_version = ">=2.0" shared_requires = ("openssl/3.2.1", "libcurl/8.4.0", "civetweb/1.16", "libxml2/2.12.6", "fmt/10.2.1", "spdlog/1.14.0", "catch2/3.5.4", "zlib/1.2.11", "zstd/1.5.2", "bzip2/1.0.8", "rocksdb/8.10.2@minifi/develop") -shared_sources = ("CMakeLists.txt", "libminifi/*", "extensions/*", "minifi_main/*", "nanofi/*", "bin/*", "bootstrap/*", "cmake/*", "conf/*", "controller/*", "encrypt-config/*", "etc/*", "examples/*", "msi/*", "thirdparty/*", "docker/*", "LICENSE", "NOTICE", "README.md", "C2.md", "CONFIGURE.md", "CONTRIBUTING.md", "CONTROLLERS.md", "EXPRESSIONS.md", "Extensions.md", "JNI.md", "METRICS.md", "OPS.md", "PROCESSORS.md", "ThirdParties.md", "Windows.md", "aptitude.sh", "arch.sh", "bootstrap.sh" [...] +shared_sources = ("CMakeLists.txt", "libminifi/*", "extensions/*", "minifi_main/*", "nanofi/*", "bin/*", "bootstrap/*", "cmake/*", "conf/*", "controller/*", "encrypt-config/*", "etc/*", "examples/*", "packaging/msi/*", "thirdparty/*", "docker/*", "LICENSE", "NOTICE", "README.md", "C2.md", "CONFIGURE.md", "CONTRIBUTING.md", "CONTROLLERS.md", "EXPRESSIONS.md", "Extensions.md", "JNI.md", "METRICS.md", "OPS.md", "PROCESSORS.md", "ThirdParties.md", "Windows.md", "aptitude.sh", "arch.sh", "boo [...] class MiNiFiCppMain(ConanFile): diff --git a/msi/MergeModulesFeature.xml b/packaging/msi/MergeModulesFeature.xml similarity index 100% rename from msi/MergeModulesFeature.xml rename to packaging/msi/MergeModulesFeature.xml diff --git a/msi/VSRedistributablesComponent.xml b/packaging/msi/VSRedistributablesComponent.xml similarity index 100% rename from msi/VSRedistributablesComponent.xml rename to packaging/msi/VSRedistributablesComponent.xml diff --git a/msi/VSRedistributablesFeature.xml b/packaging/msi/VSRedistributablesFeature.xml similarity index 100% rename from msi/VSRedistributablesFeature.xml rename to packaging/msi/VSRedistributablesFeature.xml diff --git a/msi/WixWin.wsi.in b/packaging/msi/WixWin.wsi.in similarity index 100% rename from msi/WixWin.wsi.in rename to packaging/msi/WixWin.wsi.in diff --git a/msi/bgr.png b/packaging/msi/bgr.png similarity index 100% rename from msi/bgr.png rename to packaging/msi/bgr.png diff --git a/msi/minifi-logo-ico.ico b/packaging/msi/minifi-logo-ico.ico similarity index 100% rename from msi/minifi-logo-ico.ico rename to packaging/msi/minifi-logo-ico.ico diff --git a/msi/minifi-logo-png-banner.png b/packaging/msi/minifi-logo-png-banner.png similarity index 100% rename from msi/minifi-logo-png-banner.png rename to packaging/msi/minifi-logo-png-banner.png diff --git a/msi/x64.wsi b/packaging/msi/x64.wsi similarity index 100% rename from msi/x64.wsi rename to packaging/msi/x64.wsi diff --git a/msi/x86.wsi b/packaging/msi/x86.wsi similarity index 100% rename from msi/x86.wsi rename to packaging/msi/x86.wsi diff --git a/packaging/check_rpm_contents.sh b/packaging/rpm/check_rpm_contents.sh similarity index 100% rename from packaging/check_rpm_contents.sh rename to packaging/rpm/check_rpm_contents.sh diff --git a/packaging/expected-rpm-contents.txt b/packaging/rpm/expected-rpm-contents.txt similarity index 100% rename from packaging/expected-rpm-contents.txt rename to packaging/rpm/expected-rpm-contents.txt diff --git a/packaging/pre_install.sh b/packaging/rpm/pre_install.sh similarity index 100% rename from packaging/pre_install.sh rename to packaging/rpm/pre_install.sh
