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 9409dbaf1 MINIFICPP-2915 Add rust extensions into msi installer (#2275)
9409dbaf1 is described below

commit 9409dbaf1755174bfb13c38f7218ae034ff0ad15
Author: Martin Zink <[email protected]>
AuthorDate: Tue Oct 6 15:34:37 2026 +0200

    MINIFICPP-2915 Add rust extensions into msi installer (#2275)
    
    Co-authored-by: Ferenc Gerlits <[email protected]>
---
 CMakeLists.txt             |  5 +++--
 README.md                  | 55 +++++++++++++++++++++++-----------------------
 cmake/Extensions.cmake     | 25 +++++++++++++++++++++
 minifi_rust/CMakeLists.txt |  8 +++++--
 4 files changed, 62 insertions(+), 31 deletions(-)

diff --git a/CMakeLists.txt b/CMakeLists.txt
index bc2a74cf4..db3dde31d 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -392,6 +392,8 @@ foreach(extension-dir ${extension-directories})
     endif()
 endforeach()
 
+add_subdirectory(minifi_rust)
+
 ## NOW WE CAN ADD LIBRARIES AND EXTENSIONS TO MAIN
 add_subdirectory(minifi_main)
 
@@ -772,6 +774,7 @@ set(EXTENSIONS_ENABLED_BY_DEFAULT (
     minifi-sql
     minifi-standard-processors
     minifi-wel
+    minifi_pgp
 ))
 foreach(extension ${selected_extensions})
     get_component_name(${extension} component-name)
@@ -860,5 +863,3 @@ if (MINIFI_ADVANCED_CODE_COVERAGE)
 endif()
 
 add_subdirectory(packaging)
-
-add_subdirectory(minifi_rust)
diff --git a/README.md b/README.md
index b7a1b959e..c42073246 100644
--- a/README.md
+++ b/README.md
@@ -75,33 +75,34 @@ The following table lists the base set of processors.
 
 The next table outlines CMAKE flags that correspond with MiNiFi extensions. 
Extensions that are enabled by default ( such as RocksDB ), can be disabled 
with the respective CMAKE flag on the command line.
 
-| Extension Set                    | Processors and Controller Services        
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
              [...]
-|----------------------------------|:-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
 [...]
-| Archive Extensions               | 
[ApplyTemplate](PROCESSORS.md#applytemplate)<br/>[CompressContent](PROCESSORS.md#compresscontent)<br/>[ManipulateArchive](PROCESSORS.md#manipulatearchive)<br/>[MergeContent](PROCESSORS.md#mergecontent)<br/>[FocusArchiveEntry](PROCESSORS.md#focusarchiveentry)<br/>[UnfocusArchiveEntry](PROCESSORS.md#unfocusarchiveentry)
                                                                                
                                                         [...]
-| AWS                              | 
[AWSCredentialsService](CONTROLLERS.md#awscredentialsservice)<br/>[PutS3Object](PROCESSORS.md#puts3object)<br/>[DeleteS3Object](PROCESSORS.md#deletes3object)<br/>[FetchS3Object](PROCESSORS.md#fetchs3object)<br/>[ListS3](PROCESSORS.md#lists3)<br/>[PutKinesisStream](PROCESSORS.md#putkinesisstream)
                                                                                
                                                                                
[...]
-| Azure                            | 
[AzureStorageCredentialsService](CONTROLLERS.md#azurestoragecredentialsservice)<br/>[PutAzureBlobStorage](PROCESSORS.md#putazureblobstorage)<br/>[DeleteAzureBlobStorage](PROCESSORS.md#deleteazureblobstorage)<br/>[FetchAzureBlobStorage](PROCESSORS.md#fetchazureblobstorage)<br/>[ListAzureBlobStorage](PROCESSORS.md#listazureblobstorage)<br/>[PutAzureDataLakeStorage](PROCESSORS.md#putazuredatalakestorage)<br/>[DeleteAzureDataLakeStorage](PROCESSORS.md#del
 [...]
-| CivetWeb                         | [ListenHTTP](PROCESSORS.md#listenhttp)    
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
              [...]
-| Couchbase                        | 
[CouchbaseClusterService](CONTROLLERS.md#couchbaseclusterservice)<br/>[PutCouchbaseKey](PROCESSORS.md#putcouchbasekey)<br/>[GetCouchbaseKey](PROCESSORS.md#getcouchbasekey)
                                                                                
                                                                                
                                                                                
                                             [...]
-| Elasticsearch                    | 
[ElasticsearchCredentialsControllerService](CONTROLLERS.md#elasticsearchcredentialscontrollerservice)<br/>[PostElasticsearch](PROCESSORS.md#postelasticsearch)
                                                                                
                                                                                
                                                                                
                                                          [...]
-| ExecuteProcess (Linux and macOS) | 
[ExecuteProcess](PROCESSORS.md#executeprocess)                                  
                                                                                
                                                                                
                                                                                
                                                                                
                                                        [...]
-| Google Cloud Platform            | 
[DeleteGCSObject](PROCESSORS.md#deletegcsobject)<br>[FetchGCSObject](PROCESSORS.md#fetchgcsobject)<br>[GCPCredentialsControllerService](CONTROLLERS.md#gcpcredentialscontrollerservice)<br>[ListGCSBucket](PROCESSORS.md#listgcsbucket)<br>[PutGCSObject](PROCESSORS.md#putgcsobject)
                                                                                
                                                                                
                   [...]
-| Grafana Loki                     | 
[PushGrafanaLokiREST](PROCESSORS.md#pushgrafanalokirest)<br>[PushGrafanaLokiGrpc](PROCESSORS.md#pushgrafanalokigrpc)
                                                                                
                                                                                
                                                                                
                                                                                
                    [...]
-| Kafka                            | 
[PublishKafka](PROCESSORS.md#publishkafka)<br>[ConsumeKafka](PROCESSORS.md#consumekafka)
                                                                                
                                                                                
                                                                                
                                                                                
                                                [...]
-| Kubernetes (Linux)               | 
[KubernetesControllerService](CONTROLLERS.md#kubernetescontrollerservice)       
                                                                                
                                                                                
                                                                                
                                                                                
                                                        [...]
-| LlamaCpp                         | 
[RunLlamaCppInference](PROCESSORS.md#runllamacppinference)                      
                                                                                
                                                                                
                                                                                
                                                                                
                                                        [...]
-| Lua Scripting                    | 
[ExecuteScript](PROCESSORS.md#executescript)                                    
                                                                                
                                                                                
                                                                                
                                                                                
                                                        [...]
-| MQTT                             | 
[ConsumeMQTT](PROCESSORS.md#consumemqtt)<br/>[PublishMQTT](PROCESSORS.md#publishmqtt)
                                                                                
                                                                                
                                                                                
                                                                                
                                                   [...]
-| OPC                              | 
[FetchOPCProcessor](PROCESSORS.md#fetchopcprocessor)<br/>[PutOPCProcessor](PROCESSORS.md#putopcprocessor)
                                                                                
                                                                                
                                                                                
                                                                                
                               [...]
-| PDH (Windows)                    | 
[PerformanceDataMonitor](PROCESSORS.md#performancedatamonitor)                  
                                                                                
                                                                                
                                                                                
                                                                                
                                                        [...]
-| PGP                              | 
[EncryptContentPGP](PROCESSORS.md#encryptcontentpgp)<br/>[DecryptContentPGP](PROCESSORS.md#decryptcontentpgp)<br/>[PGPPublicKeyService](CONTROLLERS.md#pgppublickeyservice)<br/>[PGPPrivateKeyService](CONTROLLERS.md#pgpprivatekeyservice)
                                                                                
                                                                                
                                                             [...]
-| ProcFs (Linux)                   | 
[ProcFsMonitor](PROCESSORS.md#procfsmonitor)                                    
                                                                                
                                                                                
                                                                                
                                                                                
                                                        [...]
-| Python Scripting                 | 
[ExecuteScript](PROCESSORS.md#executescript)<br/>[**Custom Python 
Processors**](extensions/python/PYTHON.md)                                      
                                                                                
                                                                                
                                                                                
                                                                      [...]
-| SMB (Windows)                    | 
[FetchSmb](PROCESSORS.md#fetchsmb)<br/>[ListSmb](PROCESSORS.md#listsmb)<br/>[PutSmb](PROCESSORS.md#putsmb)
                                                                                
                                                                                
                                                                                
                                                                                
                              [...]
-| SFTP                             | 
[FetchSFTP](PROCESSORS.md#fetchsftp)<br/>[ListSFTP](PROCESSORS.md#listsftp)<br/>[PutSFTP](PROCESSORS.md#putsftp)
                                                                                
                                                                                
                                                                                
                                                                                
                        [...]
-| SQL                              | 
[ExecuteSQL](PROCESSORS.md#executesql)<br/>[PutSQL](PROCESSORS.md#putsql)<br/>[QueryDatabaseTable](PROCESSORS.md#querydatabasetable)<br/>
                                                                                
                                                                                
                                                                                
                                                                               
[...]
-| Splunk                           | 
[PutSplunkHTTP](PROCESSORS.md#putsplunkhttp)<br/>[QuerySplunkIndexingStatus](PROCESSORS.md#querysplunkindexingstatus)
                                                                                
                                                                                
                                                                                
                                                                                
                   [...]
-| Systemd (Linux)                  | 
[ConsumeJournald](PROCESSORS.md#consumejournald)                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                        [...]
-| Windows Event Log (Windows)      | 
[ConsumeWindowsEventLog](PROCESSORS.md#consumewindowseventlog)<br/>[TailEventLog](PROCESSORS.md#taileventlog)
                                                                                
                                                                                
                                                                                
                                                                                
                           [...]
+| Extension Set                    | Processors and Controller Services        
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
              [...]
+|----------------------------------|:-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
 [...]
+| Archive Extensions               | 
[ApplyTemplate](PROCESSORS.md#applytemplate)<br/>[CompressContent](PROCESSORS.md#compresscontent)<br/>[ManipulateArchive](PROCESSORS.md#manipulatearchive)<br/>[MergeContent](PROCESSORS.md#mergecontent)<br/>[FocusArchiveEntry](PROCESSORS.md#focusarchiveentry)<br/>[UnfocusArchiveEntry](PROCESSORS.md#unfocusarchiveentry)
                                                                                
                                                         [...]
+| AWS                              | 
[AWSCredentialsService](CONTROLLERS.md#awscredentialsservice)<br/>[PutS3Object](PROCESSORS.md#puts3object)<br/>[DeleteS3Object](PROCESSORS.md#deletes3object)<br/>[FetchS3Object](PROCESSORS.md#fetchs3object)<br/>[ListS3](PROCESSORS.md#lists3)<br/>[PutKinesisStream](PROCESSORS.md#putkinesisstream)
                                                                                
                                                                                
[...]
+| Azure                            | 
[AzureStorageCredentialsService](CONTROLLERS.md#azurestoragecredentialsservice)<br/>[PutAzureBlobStorage](PROCESSORS.md#putazureblobstorage)<br/>[DeleteAzureBlobStorage](PROCESSORS.md#deleteazureblobstorage)<br/>[FetchAzureBlobStorage](PROCESSORS.md#fetchazureblobstorage)<br/>[ListAzureBlobStorage](PROCESSORS.md#listazureblobstorage)<br/>[PutAzureDataLakeStorage](PROCESSORS.md#putazuredatalakestorage)<br/>[DeleteAzureDataLakeStorage](PROCESSORS.md#del
 [...]
+| CivetWeb                         | [ListenHTTP](PROCESSORS.md#listenhttp)    
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
              [...]
+| Couchbase                        | 
[CouchbaseClusterService](CONTROLLERS.md#couchbaseclusterservice)<br/>[PutCouchbaseKey](PROCESSORS.md#putcouchbasekey)<br/>[GetCouchbaseKey](PROCESSORS.md#getcouchbasekey)
                                                                                
                                                                                
                                                                                
                                             [...]
+| Elasticsearch                    | 
[ElasticsearchCredentialsControllerService](CONTROLLERS.md#elasticsearchcredentialscontrollerservice)<br/>[PostElasticsearch](PROCESSORS.md#postelasticsearch)
                                                                                
                                                                                
                                                                                
                                                          [...]
+| ExecuteProcess (Linux and macOS) | 
[ExecuteProcess](PROCESSORS.md#executeprocess)                                  
                                                                                
                                                                                
                                                                                
                                                                                
                                                        [...]
+| Google Cloud Platform            | 
[DeleteGCSObject](PROCESSORS.md#deletegcsobject)<br>[FetchGCSObject](PROCESSORS.md#fetchgcsobject)<br>[GCPCredentialsControllerService](CONTROLLERS.md#gcpcredentialscontrollerservice)<br>[ListGCSBucket](PROCESSORS.md#listgcsbucket)<br>[PutGCSObject](PROCESSORS.md#putgcsobject)
                                                                                
                                                                                
                   [...]
+| Grafana Loki                     | 
[PushGrafanaLokiREST](PROCESSORS.md#pushgrafanalokirest)<br>[PushGrafanaLokiGrpc](PROCESSORS.md#pushgrafanalokigrpc)
                                                                                
                                                                                
                                                                                
                                                                                
                    [...]
+| Kafka                            | 
[PublishKafka](PROCESSORS.md#publishkafka)<br>[ConsumeKafka](PROCESSORS.md#consumekafka)
                                                                                
                                                                                
                                                                                
                                                                                
                                                [...]
+| Kubernetes (Linux)               | 
[KubernetesControllerService](CONTROLLERS.md#kubernetescontrollerservice)       
                                                                                
                                                                                
                                                                                
                                                                                
                                                        [...]
+| LlamaCpp                         | 
[RunLlamaCppInference](PROCESSORS.md#runllamacppinference)                      
                                                                                
                                                                                
                                                                                
                                                                                
                                                        [...]
+| Lua Scripting                    | 
[ExecuteScript](PROCESSORS.md#executescript)                                    
                                                                                
                                                                                
                                                                                
                                                                                
                                                        [...]
+| MQTT                             | 
[ConsumeMQTT](PROCESSORS.md#consumemqtt)<br/>[PublishMQTT](PROCESSORS.md#publishmqtt)
                                                                                
                                                                                
                                                                                
                                                                                
                                                   [...]
+| OPC                              | 
[FetchOPCProcessor](PROCESSORS.md#fetchopcprocessor)<br/>[PutOPCProcessor](PROCESSORS.md#putopcprocessor)
                                                                                
                                                                                
                                                                                
                                                                                
                               [...]
+| PDH (Windows)                    | 
[PerformanceDataMonitor](PROCESSORS.md#performancedatamonitor)                  
                                                                                
                                                                                
                                                                                
                                                                                
                                                        [...]
+| PGP                              | 
[EncryptContentPGP](PROCESSORS.md#encryptcontentpgp)<br/>[DecryptContentPGP](PROCESSORS.md#decryptcontentpgp)<br/>[PGPPublicKeyService](CONTROLLERS.md#pgppublickeyservice)<br/>[PGPPrivateKeyService](CONTROLLERS.md#pgpprivatekeyservice)
                                                                                
                                                                                
                                                             [...]
+| ProcFs (Linux)                   | 
[ProcFsMonitor](PROCESSORS.md#procfsmonitor)                                    
                                                                                
                                                                                
                                                                                
                                                                                
                                                        [...]
+| Python Scripting                 | 
[ExecuteScript](PROCESSORS.md#executescript)<br/>[**Custom Python 
Processors**](extensions/python/PYTHON.md)                                      
                                                                                
                                                                                
                                                                                
                                                                      [...]
+| SMB (Windows)                    | 
[FetchSmb](PROCESSORS.md#fetchsmb)<br/>[ListSmb](PROCESSORS.md#listsmb)<br/>[PutSmb](PROCESSORS.md#putsmb)
                                                                                
                                                                                
                                                                                
                                                                                
                              [...]
+| SFTP                             | 
[FetchSFTP](PROCESSORS.md#fetchsftp)<br/>[ListSFTP](PROCESSORS.md#listsftp)<br/>[PutSFTP](PROCESSORS.md#putsftp)
                                                                                
                                                                                
                                                                                
                                                                                
                        [...]
+| SQL                              | 
[ExecuteSQL](PROCESSORS.md#executesql)<br/>[PutSQL](PROCESSORS.md#putsql)<br/>[QueryDatabaseTable](PROCESSORS.md#querydatabasetable)<br/>
                                                                                
                                                                                
                                                                                
                                                                               
[...]
+| Splunk                           | 
[PutSplunkHTTP](PROCESSORS.md#putsplunkhttp)<br/>[QuerySplunkIndexingStatus](PROCESSORS.md#querysplunkindexingstatus)
                                                                                
                                                                                
                                                                                
                                                                                
                   [...]
+| Systemd (Linux)                  | 
[ConsumeJournald](PROCESSORS.md#consumejournald)                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                        [...]
+| Tensor                           | 
[ClassifyImage](PROCESSORS.md#classifyimage)<br/>[DetectObject](PROCESSORS.md#detectobject)<br/>[DrawBoundingBox](PROCESSORS.md#drawboundingbox)<br/>[TractModelService](CONTROLLERS.md#tractmodelservice)
                                                                                
                                                                                
                                                                                
              [...]
+| Windows Event Log (Windows)      | 
[ConsumeWindowsEventLog](PROCESSORS.md#consumewindowseventlog)<br/>[TailEventLog](PROCESSORS.md#taileventlog)
                                                                                
                                                                                
                                                                                
                                                                                
                           [...]
 
  Please see our [Python guide](extensions/python/PYTHON.md) on how to write 
Python processors and use them within MiNiFi C++.
 
diff --git a/cmake/Extensions.cmake b/cmake/Extensions.cmake
index e21ba33c7..de61a88fb 100644
--- a/cmake/Extensions.cmake
+++ b/cmake/Extensions.cmake
@@ -144,6 +144,31 @@ macro(register_c_api_extension extension-name 
extension-display-name extension-g
     endif()
 endmacro()
 
+macro(register_rust_extension crate-name extension-display-name 
extension-guard description)
+    set_property(GLOBAL APPEND PROPERTY EXTENSION-OPTIONS ${crate-name})
+    get_component_name(${crate-name} component-name)
+
+    if(WIN32)
+        install(IMPORTED_RUNTIME_ARTIFACTS ${crate-name}-shared
+                RUNTIME DESTINATION extensions
+                COMPONENT ${component-name})
+    elseif (MINIFI_PACKAGING_TYPE STREQUAL "RPM")
+        install(IMPORTED_RUNTIME_ARTIFACTS ${crate-name}-shared
+                LIBRARY DESTINATION 
${CMAKE_INSTALL_LIBDIR}/${PROJECT_NAME}/extensions/
+                COMPONENT ${component-name})
+        set(RPM_EXPECTED_EXTENSION_LIST ${RPM_EXPECTED_EXTENSION_LIST} 
/usr/${CMAKE_INSTALL_LIBDIR}/${PROJECT_NAME}/extensions/lib${crate-name}.so)
+        set(RPM_EXPECTED_EXTENSION_LIST ${RPM_EXPECTED_EXTENSION_LIST} 
PARENT_SCOPE)
+    elseif (MINIFI_PACKAGING_TYPE STREQUAL "TGZ")
+        install(IMPORTED_RUNTIME_ARTIFACTS ${crate-name}-shared
+                LIBRARY DESTINATION extensions
+                COMPONENT ${component-name})
+    else()
+        message(FATAL_ERROR "Invalid MINIFI_PACKAGING_TYPE")
+    endif()
+
+    ADD_FEATURE_INFO("${extension-display-name}" ${extension-guard} 
"${description}")
+endmacro()
+
 ### TESTING MACROS
 
 define_property(GLOBAL PROPERTY EXTENSION-TESTS
diff --git a/minifi_rust/CMakeLists.txt b/minifi_rust/CMakeLists.txt
index eae2006de..0001679a4 100644
--- a/minifi_rust/CMakeLists.txt
+++ b/minifi_rust/CMakeLists.txt
@@ -39,11 +39,15 @@ if (NOT ENABLE_TEST_PROCESSORS)
     set_target_properties(cargo-build_minifi_rs_playground PROPERTIES 
EXCLUDE_FROM_ALL TRUE)
 endif()
 
-if (NOT MINIFI_EXTENSION_PGP)
+if (MINIFI_EXTENSION_PGP)
+    register_rust_extension(minifi_pgp "PGP EXTENSION" MINIFI_EXTENSION_PGP 
"This enables EncryptContentPGP and DecryptContentPGP")
+else()
     set_target_properties(cargo-build_minifi_pgp PROPERTIES EXCLUDE_FROM_ALL 
TRUE)
 endif()
 
-if (NOT MINIFI_EXTENSION_TENSOR)
+if (MINIFI_EXTENSION_TENSOR)
+    register_rust_extension(minifi_tensor "TENSOR EXTENSION" 
MINIFI_EXTENSION_TENSOR "This enables sonos/tract based tensor processors")
+else()
     set_target_properties(cargo-build_minifi_tensor PROPERTIES 
EXCLUDE_FROM_ALL TRUE)
 endif()
 

Reply via email to