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()
