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 2021/10/29 17:10:24 UTC

[nifi-minifi-cpp] branch main updated: MINIFICPP-1672 msi user-selectable features

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 0f40e3b  MINIFICPP-1672 msi user-selectable features
0f40e3b is described below

commit 0f40e3b69a32a4d60cddf40cb6eb933c7f5ab6b6
Author: Adam Debreceni <ad...@apache.org>
AuthorDate: Fri Oct 29 17:04:10 2021 +0200

    MINIFICPP-1672 msi user-selectable features
    
    - Add display name to components
    - Package all components in a single archive
    
    Closes #1203
    Signed-off-by: Marton Szasz <sz...@apache.org>
---
 CMakeLists.txt             | 24 ++++++++++++++++++++----
 README.md                  | 22 +++++++++++-----------
 cmake/Extensions.cmake     | 13 +++++++++++--
 docker/DockerBuild.sh      |  2 +-
 docker/Dockerfile          |  2 +-
 msi/WixWin.wsi             |  9 +++++++--
 msi/WixWinMergeModules.wsi |  9 +++++++--
 7 files changed, 58 insertions(+), 23 deletions(-)

diff --git a/CMakeLists.txt b/CMakeLists.txt
index 2c715e1..2a51f7f 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -781,6 +781,7 @@ install(FILES LICENSE README.md NOTICE
 		DESTINATION .
 		COMPONENT bin)
 
+include(CPackComponent)
 
 if (WIN32)
 	set(CPACK_GENERATOR "WIX")
@@ -808,14 +809,29 @@ else()
 endif()
 set(CPACK_PACKAGE_INSTALL_DIRECTORY "ApacheNiFiMiNiFi")
 set(CPACK_ARCHIVE_COMPONENT_INSTALL ON)
-set(CPACK_RDKAFKA_COMPONENT_INSTALL ON)
-set(CPACK_MQTT_COMPONENT_INSTALL ON)
+set(CPACK_COMPONENTS_GROUPING "ALL_COMPONENTS_IN_ONE")
+
+
+# !WARNING! we need to manually add to CPACK_COMPONENTS_ALL otherwise
+# all components specified in "install" directives are added
+# (including thirdparties like range-v3)
+
+list(APPEND CPACK_COMPONENTS_ALL bin)
+cpack_add_component(bin DISPLAY_NAME "MiNiFi C++ executables" REQUIRED)
 if(WIN32)
-	set(CPACK_COMPONENTS_ALL bin conf minifijni tzdata)
+	list(APPEND CPACK_COMPONENTS_ALL tzdata)
+	cpack_add_component(tzdata DISPLAY_NAME "Timezone database for Expression Language")
 else()
-	set(CPACK_COMPONENTS_ALL bin conf minifijni)
+	list(APPEND CPACK_COMPONENTS_ALL conf)
+	cpack_add_component(conf DISPLAY_NAME "Default configuration files" REQUIRED)
 endif()
 
+cpack_add_component_group(extensions DISPLAY_NAME "Extensions" EXPANDED)
+foreach(extension ${selected_extensions})
+	get_component_name(${extension} component-name)
+	list(APPEND CPACK_COMPONENTS_ALL ${component-name})
+	cpack_add_component(${component-name} DISPLAY_NAME ${extension} GROUP extensions DEPENDS bin)
+endforeach()
 
 include(CPack)
 ### include modules
diff --git a/README.md b/README.md
index 904a2da..dbc641e 100644
--- a/README.md
+++ b/README.md
@@ -405,7 +405,7 @@ advanced features.
   [100%] Built target run-tests
   ```
 
-- Create a binary assembly located in your build directory with suffix -bin.tar.gz
+- Create a binary assembly located in your build directory with suffix .tar.gz
   ```
   ~/Development/code/apache/nifi-minifi-cpp/build
   $ make package
@@ -414,7 +414,7 @@ advanced features.
   CPack: Install projects
   CPack: - Install directory: ~/Development/code/apache/nifi-minifi-cpp
   CPack: Create package
-  CPack: - package: ~/Development/code/apache/nifi-minifi-cpp/build/nifi-minifi-cpp-0.11.0-bin.tar.gz generated.
+  CPack: - package: ~/Development/code/apache/nifi-minifi-cpp/build/nifi-minifi-cpp-0.11.0.tar.gz generated.
   ```
 
 - Create a source assembly located in your build directory with suffix -source.tar.gz
@@ -436,8 +436,8 @@ $ make docker
 NiFi-MiNiFi-CPP Version: 0.11.0
 Current Working Directory: /Users/jdyer/Development/github/nifi-minifi-cpp/docker
 CMake Source Directory: /Users/jdyer/Development/github/nifi-minifi-cpp
-MiNiFi Package: nifi-minifi-cpp-0.11.0-bin.tar.gz
-Docker Command: 'docker build --build-arg UID=1000 --build-arg GID=1000 --build-arg MINIFI_VERSION=0.11.0 --build-arg MINIFI_PACKAGE=nifi-minifi-cpp-0.11.0-bin.tar.gz -t apacheminificpp:0.11.0 .'
+MiNiFi Package: nifi-minifi-cpp-0.11.0.tar.gz
+Docker Command: 'docker build --build-arg UID=1000 --build-arg GID=1000 --build-arg MINIFI_VERSION=0.11.0 --build-arg MINIFI_PACKAGE=nifi-minifi-cpp-0.11.0.tar.gz -t apacheminificpp:0.11.0 .'
 Sending build context to Docker daemon 777.2 kB
 Step 1 : FROM alpine:3.5
  ---> 88e169ea8f46
@@ -465,11 +465,11 @@ provides the command to build your distro and the output file in your build dire
 
 | Distro                 | command           | Output File  |
 | ---------------------- | :---------------- | :----------- |
-| CentOS 7               | make centos       | nifi-minifi-cpp-centos-$VERSION-bin.tar.gz
-| Debian 10 (buster)     | make debian       | nifi-minifi-cpp-debian-$VERSION-bin.tar.gz
-| Fedora 34              | make fedora       | nifi-minifi-cpp-fedora-$VERSION-bin.tar.gz
-| Ubuntu 18.04 (bionic)  | make u18          | nifi-minifi-cpp-bionic-$VERSION-bin.tar.gz
-| Ubuntu 20.04 (focal)   | make u20          | nifi-minifi-cpp-focal-$VERSION-bin.tar.gz
+| CentOS 7               | make centos       | nifi-minifi-cpp-centos-$VERSION.tar.gz
+| Debian 10 (buster)     | make debian       | nifi-minifi-cpp-debian-$VERSION.tar.gz
+| Fedora 34              | make fedora       | nifi-minifi-cpp-fedora-$VERSION.tar.gz
+| Ubuntu 18.04 (bionic)  | make u18          | nifi-minifi-cpp-bionic-$VERSION.tar.gz
+| Ubuntu 20.04 (focal)   | make u20          | nifi-minifi-cpp-focal-$VERSION.tar.gz
 
 You can avoid the requirement of an up-to-date compiler when generating the build system by adding `-DDOCKER_BUILD_ONLY=ON` to the cmake command line. This disables all cmake targets except the docker build and test ones.
 
@@ -484,9 +484,9 @@ $ snapcraft
 from the project directory. Further instructions are available in the [Snapcraft documentation](https://docs.snapcraft.io/build-snaps/).
 
 ### Installation
-After [building](#building) MiNiFi C++, extract the generated binary package 'nifi-minifi-cpp-$VERSION-bin.tar.gz' at your desired installation path.
+After [building](#building) MiNiFi C++, extract the generated binary package 'nifi-minifi-cpp-$VERSION.tar.gz' at your desired installation path.
 ```shell
-$ MINIFI_PACKAGE="$(pwd)"/build/nifi-minifi-cpp-*-bin.tar.gz
+$ MINIFI_PACKAGE="$(pwd)"/build/nifi-minifi-cpp-*.tar.gz
 $ pushd /opt
 $ sudo tar xvzf "$MINIFI_PACKAGE"
 $ cd nifi-minifi-cpp-*
diff --git a/cmake/Extensions.cmake b/cmake/Extensions.cmake
index a8b422c..73a383c 100644
--- a/cmake/Extensions.cmake
+++ b/cmake/Extensions.cmake
@@ -38,14 +38,16 @@ macro(register_extension extension-name)
     set_target_properties(${extension-name} PROPERTIES LIBRARY_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/bin")
   endif()
 
+  get_component_name(${extension-name} component-name)
+
   if (WIN32)
-    install(TARGETS ${extension-name} RUNTIME DESTINATION extensions COMPONENT bin)
+    install(TARGETS ${extension-name} RUNTIME DESTINATION extensions COMPONENT ${component-name})
   else()
     if ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU")
       target_link_options(${extension-name} PRIVATE "-Wl,--disable-new-dtags")
     endif()
     set_target_properties(${extension-name} PROPERTIES INSTALL_RPATH "$ORIGIN")
-    install(TARGETS ${extension-name} LIBRARY DESTINATION extensions COMPONENT bin)
+    install(TARGETS ${extension-name} LIBRARY DESTINATION extensions COMPONENT ${component-name})
   endif()
 endmacro()
 
@@ -95,3 +97,10 @@ macro(register_extension_linter target-name)
     COMMAND python ${CMAKE_SOURCE_DIR}/thirdparty/google-styleguide/run_linter.py -q -i ${CMAKE_CURRENT_LIST_DIR}/)
   endif()
 endmacro()
+
+function(get_component_name extension-name output)
+  # component names can only contain [a-zA-Z_]
+  string(REPLACE "-" "_" result ${extension-name})
+  string(REPLACE "minifi_" "" result "${result}")
+  set("${output}" "${result}" PARENT_SCOPE)
+endfunction()
diff --git a/docker/DockerBuild.sh b/docker/DockerBuild.sh
index d6e7734..4d3764e 100755
--- a/docker/DockerBuild.sh
+++ b/docker/DockerBuild.sh
@@ -166,5 +166,5 @@ echo "Docker Command: 'DOCKER_BUILDKIT=1 ${DOCKER_COMMAND}'"
 DOCKER_BUILDKIT=1 ${DOCKER_COMMAND}
 
 if [ -n "${DUMP_LOCATION}" ]; then
-  docker run --rm --entrypoint cat "apacheminificpp:${TAG}" "/opt/minifi/build/nifi-minifi-cpp-${MINIFI_VERSION}-bin.tar.gz" > "${DUMP_LOCATION}/nifi-minifi-cpp-${MINIFI_VERSION}-${TARGZ_TAG}.tar.gz"
+  docker run --rm --entrypoint cat "apacheminificpp:${TAG}" "/opt/minifi/build/nifi-minifi-cpp-${MINIFI_VERSION}.tar.gz" > "${DUMP_LOCATION}/nifi-minifi-cpp-${MINIFI_VERSION}-${TARGZ_TAG}.tar.gz"
 fi
diff --git a/docker/Dockerfile b/docker/Dockerfile
index 0333381..2e322c9 100644
--- a/docker/Dockerfile
+++ b/docker/Dockerfile
@@ -120,7 +120,7 @@ RUN cmake -DSTATIC_BUILD= -DSKIP_TESTS=true -DENABLE_ALL="${ENABLE_ALL}" -DENABL
     -DENABLE_SCRIPTING="${ENABLE_SCRIPTING}" -DDISABLE_PYTHON_SCRIPTING="${DISABLE_PYTHON_SCRIPTING}" -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 && \
-    tar -xzvf "${MINIFI_BASE_DIR}/build/nifi-minifi-cpp-${MINIFI_VERSION}-bin.tar.gz" -C "${MINIFI_BASE_DIR}"
+    tar -xzvf "${MINIFI_BASE_DIR}/build/nifi-minifi-cpp-${MINIFI_VERSION}.tar.gz" -C "${MINIFI_BASE_DIR}"
 
 
 # Release image
diff --git a/msi/WixWin.wsi b/msi/WixWin.wsi
index 411e52c..8337545 100644
--- a/msi/WixWin.wsi
+++ b/msi/WixWin.wsi
@@ -85,6 +85,7 @@ Licensed to the Apache Software Foundation (ASF) under one or more
       <DialogRef Id="ProgressDlg" />
       <DialogRef Id="ResumeDlg" />
       <DialogRef Id="ResumeDlg" />
+      <DialogRef Id="CustomizeDlg" />
       <DialogRef Id="UserExit" />
 
       <DialogRef Id="ApacheLicenseDlg"/>
@@ -100,9 +101,12 @@ Licensed to the Apache Software Foundation (ASF) under one or more
       <Publish Dialog="WelcomeDlg" Control="Next" Event="NewDialog" Value="VerifyReadyDlg">Installed AND PATCH</Publish>
 
       <Publish Dialog="ApacheLicenseDlg" Control="Back" Event="NewDialog" Value="WelcomeDlg">1</Publish>
-      <Publish Dialog="ApacheLicenseDlg" Control="Next" Event="NewDialog" Value="UserDialog">LicenseAccepted = "1"</Publish>
+      <Publish Dialog="ApacheLicenseDlg" Control="Next" Event="NewDialog" Value="CustomizeDlg">LicenseAccepted = "1"</Publish>
 
-      <Publish Dialog="UserDialog" Control="Back" Event="NewDialog" Value="ApacheLicenseDlg">1</Publish>
+      <Publish Dialog="CustomizeDlg" Control="Back" Event="NewDialog" Value="ApacheLicenseDlg">1</Publish>
+      <Publish Dialog="CustomizeDlg" Control="Next" Event="NewDialog" Value="UserDialog">1</Publish>
+
+      <Publish Dialog="UserDialog" Control="Back" Event="NewDialog" Value="CustomizeDlg">1</Publish>
       <Publish Dialog="UserDialog" Control="Next" Event="NewDialog" Value="PropertiesDialog">1</Publish>
 
       <Publish Dialog="PropertiesDialog" Control="Back" Event="NewDialog" Value="UserDialog">1</Publish>
@@ -113,6 +117,7 @@ Licensed to the Apache Software Foundation (ASF) under one or more
 
       <Publish Dialog="MaintenanceWelcomeDlg" Control="Next" Event="NewDialog" Value="MaintenanceTypeDlg">1</Publish>
 
+      <Publish Dialog="MaintenanceTypeDlg" Control="ChangeButton" Event="NewDialog" Value="CustomizeDlg">1</Publish>
       <Publish Dialog="MaintenanceTypeDlg" Control="RepairButton" Event="NewDialog" Value="VerifyReadyDlg">1</Publish>
       <Publish Dialog="MaintenanceTypeDlg" Control="RemoveButton" Event="NewDialog" Value="VerifyReadyDlg">1</Publish>
       <Publish Dialog="MaintenanceTypeDlg" Control="Back" Event="NewDialog" Value="MaintenanceWelcomeDlg">1</Publish>
diff --git a/msi/WixWinMergeModules.wsi b/msi/WixWinMergeModules.wsi
index 539d3b6..5194ece 100644
--- a/msi/WixWinMergeModules.wsi
+++ b/msi/WixWinMergeModules.wsi
@@ -96,6 +96,7 @@ Licensed to the Apache Software Foundation (ASF) under one or more
       <DialogRef Id="ProgressDlg" />
       <DialogRef Id="ResumeDlg" />
       <DialogRef Id="ResumeDlg" />
+      <DialogRef Id="CustomizeDlg" />
       <DialogRef Id="UserExit" />
 
       <DialogRef Id="ApacheLicenseDlg"/>
@@ -111,9 +112,12 @@ Licensed to the Apache Software Foundation (ASF) under one or more
       <Publish Dialog="WelcomeDlg" Control="Next" Event="NewDialog" Value="VerifyReadyDlg">Installed AND PATCH</Publish>
 
       <Publish Dialog="ApacheLicenseDlg" Control="Back" Event="NewDialog" Value="WelcomeDlg">1</Publish>
-      <Publish Dialog="ApacheLicenseDlg" Control="Next" Event="NewDialog" Value="UserDialog">LicenseAccepted = "1"</Publish>
+      <Publish Dialog="ApacheLicenseDlg" Control="Next" Event="NewDialog" Value="CustomizeDlg">LicenseAccepted = "1"</Publish>
 
-      <Publish Dialog="UserDialog" Control="Back" Event="NewDialog" Value="ApacheLicenseDlg">1</Publish>
+      <Publish Dialog="CustomizeDlg" Control="Back" Event="NewDialog" Value="ApacheLicenseDlg">1</Publish>
+      <Publish Dialog="CustomizeDlg" Control="Next" Event="NewDialog" Value="UserDialog">1</Publish>
+
+      <Publish Dialog="UserDialog" Control="Back" Event="NewDialog" Value="CustomizeDlg">1</Publish>
       <Publish Dialog="UserDialog" Control="Next" Event="NewDialog" Value="PropertiesDialog">1</Publish>
 
       <Publish Dialog="PropertiesDialog" Control="Back" Event="NewDialog" Value="UserDialog">1</Publish>
@@ -124,6 +128,7 @@ Licensed to the Apache Software Foundation (ASF) under one or more
 
       <Publish Dialog="MaintenanceWelcomeDlg" Control="Next" Event="NewDialog" Value="MaintenanceTypeDlg">1</Publish>
 
+      <Publish Dialog="MaintenanceTypeDlg" Control="ChangeButton" Event="NewDialog" Value="CustomizeDlg">1</Publish>
       <Publish Dialog="MaintenanceTypeDlg" Control="RepairButton" Event="NewDialog" Value="VerifyReadyDlg">1</Publish>
       <Publish Dialog="MaintenanceTypeDlg" Control="RemoveButton" Event="NewDialog" Value="VerifyReadyDlg">1</Publish>
       <Publish Dialog="MaintenanceTypeDlg" Control="Back" Event="NewDialog" Value="MaintenanceWelcomeDlg">1</Publish>