MiNiFi--a subproject of Apache NiFi--is a complementary data
collection approach that supplements the core tenets of NiFi
in dataflow management, focusing on the collection of data at
the source of its creation. The C++ implementation is an
additional implementation to the one in Java with the aim of
an even smaller resource footprint.

Signed-off-by: wonjong.lee <[email protected]>
---
 .../files/fix-OSSPUUID-cross-compile.patch    |  70 ++++++++++++
 .../files/fix-build-issue-in-yocto.patch      |  88 ++++++++++++++
 .../files/fix-rocksdb-cross-compile.patch     |  11 ++
 .../minifi-cpp/files/minifi.service           |  13 +++
 .../minifi-cpp/files/systemd-volatile.conf    |   2 +
 .../minifi-cpp/files/sysvinit-volatile.conf   |   2 +
 .../minifi-cpp/minifi-cpp_0.7.0.bb            | 108 ++++++++++++++++++
 7 files changed, 294 insertions(+)
 create mode 100644 
meta-oe/recipes-extended/minifi-cpp/files/fix-OSSPUUID-cross-compile.patch
 create mode 100644 
meta-oe/recipes-extended/minifi-cpp/files/fix-build-issue-in-yocto.patch
 create mode 100644 
meta-oe/recipes-extended/minifi-cpp/files/fix-rocksdb-cross-compile.patch
 create mode 100644 meta-oe/recipes-extended/minifi-cpp/files/minifi.service
 create mode 100644 
meta-oe/recipes-extended/minifi-cpp/files/systemd-volatile.conf
 create mode 100644 
meta-oe/recipes-extended/minifi-cpp/files/sysvinit-volatile.conf
 create mode 100644 meta-oe/recipes-extended/minifi-cpp/minifi-cpp_0.7.0.bb

diff --git 
a/meta-oe/recipes-extended/minifi-cpp/files/fix-OSSPUUID-cross-compile.patch 
b/meta-oe/recipes-extended/minifi-cpp/files/fix-OSSPUUID-cross-compile.patch
new file mode 100644
index 000000000..6af47cafb
--- /dev/null
+++ b/meta-oe/recipes-extended/minifi-cpp/files/fix-OSSPUUID-cross-compile.patch
@@ -0,0 +1,70 @@
+diff -urN orig/cmake/BundledOSSPUUID.cmake patched/cmake/BundledOSSPUUID.cmake
+--- orig/cmake/BundledOSSPUUID.cmake   2020-01-07 22:55:55.000000000 +0900
++++ patched/cmake/BundledOSSPUUID.cmake        2020-07-14 11:32:28.221092406 
+0900
+@@ -22,7 +22,8 @@
+ 
+     # Define patch step
+     find_package(Patch REQUIRED)
+-    set(PC "${Patch_EXECUTABLE}" -p1 -i 
"${SOURCE_DIR}/thirdparty/ossp-uuid/ossp-uuid-mac-fix.patch")
++    set(PATCH1 "${Patch_EXECUTABLE}" -p1 -i 
"${SOURCE_DIR}/thirdparty/ossp-uuid/ossp-uuid-mac-fix.patch")
++    set(PATCH2 "${Patch_EXECUTABLE}" -p1 -i 
"${SOURCE_DIR}/thirdparty/ossp-uuid/cross-compile-fix.patch")
+ 
+     # Define byproducts
+     set(BYPRODUCTS "lib/libuuid.a"
+@@ -35,7 +36,9 @@
+     ENDFOREACH(BYPRODUCT)
+ 
+     # Build project
+-    set(CONFIGURE_COMMAND ./configure "CFLAGS=-fPIC" "CXXFLAGS=-fPIC" 
--with-cxx --without-perl --without-php --without-pgsql 
"--prefix=${BINARY_DIR}/thirdparty/ossp-uuid-install")
++    set(CONFIGURE_COMMAND ac_cv_va_copy=C99 ./configure CFLAGS=-fPIC 
CXXFLAGS=-fPIC --host=${HOST_SYS}
++        --with-cxx --without-perl --without-php --without-pgsql
++        --prefix=${BINARY_DIR}/thirdparty/ossp-uuid-install)
+     string(TOLOWER "${CMAKE_BUILD_TYPE}" build_type)
+     if(NOT build_type MATCHES debug)
+         list(APPEND CONFIGURE_COMMAND --enable-debug=yes)
+@@ -52,8 +55,8 @@
+             UPDATE_COMMAND ""
+             INSTALL_COMMAND make install
+             BUILD_BYPRODUCTS ${OSSPUUID_LIBRARIES_LIST}
+-            CONFIGURE_COMMAND ""
+-            PATCH_COMMAND ${PC} && ${CONFIGURE_COMMAND}
++            CONFIGURE_COMMAND ${CONFIGURE_COMMAND}
++            PATCH_COMMAND ${PATCH1} && ${PATCH2}
+             STEP_TARGETS build
+             EXCLUDE_FROM_ALL TRUE
+     )
+diff -urN orig/thirdparty/ossp-uuid/cross-compile-fix.patch 
patched/thirdparty/ossp-uuid/cross-compile-fix.patch
+--- orig/thirdparty/ossp-uuid/cross-compile-fix.patch  1970-01-01 
09:00:00.000000000 +0900
++++ patched/thirdparty/ossp-uuid/cross-compile-fix.patch       2020-07-14 
11:48:13.781090409 +0900
+@@ -0,0 +1,31 @@
++diff -urN orig/config.sub patched/config.sub
++--- orig/config.sub   2008-07-05 06:43:08.000000000 +0900
+++++ patched/config.sub        2020-07-14 11:46:47.249090591 +0900
++@@ -238,6 +238,7 @@
++      # Some are omitted here because they have special meanings below.
++      1750a | 580 \
++      | a29k \
+++     | aarch64 | aarch64_be \
++      | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \
++      | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | 
alpha64pca5[67] \
++      | am33_2.0 \
++@@ -314,6 +315,7 @@
++      # Recognize the basic CPU types with company name.
++      580-* \
++      | a29k-* \
+++     | aarch64-* | aarch64_be-* \
++      | alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \
++      | alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \
++      | alphapca5[67]-* | alpha64pca5[67]-* | arc-* \
++diff -urN orig/shtool patched/shtool
++--- orig/shtool       2008-07-05 06:43:08.000000000 +0900
+++++ patched/shtool    2020-07-13 19:35:49.557213657 +0900
++@@ -1400,7 +1400,7 @@
++             if [ ".$opt_t" = .yes ]; then
++                 echo "strip $dsttmp" 1>&2
++             fi
++-            strip $dsttmp || shtool_exit $?
+++            $STRIP $dsttmp || shtool_exit $?
++         fi
++         if [ ".$opt_o" != . ]; then
++             if [ ".$opt_t" = .yes ]; then
diff --git 
a/meta-oe/recipes-extended/minifi-cpp/files/fix-build-issue-in-yocto.patch 
b/meta-oe/recipes-extended/minifi-cpp/files/fix-build-issue-in-yocto.patch
new file mode 100644
index 000000000..2dc591c7a
--- /dev/null
+++ b/meta-oe/recipes-extended/minifi-cpp/files/fix-build-issue-in-yocto.patch
@@ -0,0 +1,88 @@
+diff -urN orig/cmake/LibreSSL.cmake patched/cmake/LibreSSL.cmake
+--- orig/cmake/LibreSSL.cmake  2020-07-28 11:39:40.046677515 +0900
++++ patched/cmake/LibreSSL.cmake       2020-07-28 11:42:41.650677131 +0900
+@@ -27,6 +27,17 @@
+               set(BYPRODUCT_PREFIX "" CACHE STRING "" FORCE)
+       set(BUILD_ARGS " -GVisual Studio 15 2017")
+       endif(WIN32)
++
++      set(BYPRODUCTS
++              "lib/${BYPRODUCT_PREFIX}crypto${BYPRODUCT_SUFFIX}"
++              "lib/${BYPRODUCT_PREFIX}ssl${BYPRODUCT_SUFFIX}"
++              "lib/${BYPRODUCT_PREFIX}tls${BYPRODUCT_SUFFIX}"
++      )
++      set(LIBRESSL_INSTALL_DIR "${BINARY_DIR}/thirdparty/libressl-install" 
CACHE STRING "" FORCE)
++      FOREACH(BYPRODUCT ${BYPRODUCTS})
++              LIST(APPEND LIBRESSL_LIBRARIES_LIST 
"${LIBRESSL_INSTALL_DIR}/${BYPRODUCT}")
++      ENDFOREACH(BYPRODUCT)
++
+       ExternalProject_Add(
+       libressl-portable
+       URL https://cdn.openbsd.org/pub/OpenBSD/LibreSSL/libressl-2.8.3.tar.gz 
https://ftp.openbsd.org/pub/OpenBSD/LibreSSL/libressl-2.8.3.tar.gz 
https://gentoo.osuosl.org/distfiles/libressl-2.8.3.tar.gz
+@@ -37,6 +48,7 @@
+                               "-DLIBRESSL_APPS=OFF"
+                               "-DLIBRESSL_TESTS=OFF"
+                               "${BUILD_ARGS}"
++      BUILD_BYPRODUCTS ${LIBRESSL_LIBRARIES_LIST}
+       )
+ 
+       add_library(crypto STATIC IMPORTED)
+diff -urN orig/CMakeLists.txt patched/CMakeLists.txt
+--- orig/CMakeLists.txt        2020-07-28 11:39:40.042677515 +0900
++++ patched/CMakeLists.txt     2020-07-28 11:46:15.962676679 +0900
+@@ -119,13 +119,27 @@
+       endif()
+ endif()
+ 
++include(CheckCXXSourceCompiles)
++CHECK_CXX_SOURCE_COMPILES("
++    #include <atomic>
++    int main(int argc, char **argv) {
++        uint8_t m;
++        __atomic_load_8(&m, 0);
++        return 0;
++    }"
++    HAVE_ATOMIC
++)
++if(NOT HAVE_ATOMIC)
++    set(LIB_ATOMIC atomic)
++endif()
++
+ # Use ccache if present
+-find_program(CCACHE_FOUND ccache)
+-if(CCACHE_FOUND)
+-    set_property(GLOBAL PROPERTY RULE_LAUNCH_COMPILE ccache)
+-    set_property(GLOBAL PROPERTY RULE_LAUNCH_LINK ccache)
+-    message("-- Found ccache: ${CCACHE_FOUND}")
+-endif(CCACHE_FOUND)
++#find_program(CCACHE_FOUND ccache)
++#if(CCACHE_FOUND)
++#    set_property(GLOBAL PROPERTY RULE_LAUNCH_COMPILE ccache)
++#    set_property(GLOBAL PROPERTY RULE_LAUNCH_LINK ccache)
++#    message("-- Found ccache: ${CCACHE_FOUND}")
++#endif(CCACHE_FOUND)
+ 
+ if (UNIX AND USE_GOLD_LINKER AND NOT APPLE )
+   execute_process(COMMAND ${CMAKE_C_COMPILER} -fuse-ld=gold -Wl,--version 
ERROR_QUIET OUTPUT_VARIABLE ld_version)
+@@ -303,8 +317,10 @@
+     GIT_TAG "f3294d9d86e6a7915a967efff2842089b8b0d071"  # Version 7.64.0
+     SOURCE_DIR "${CMAKE_CURRENT_BINARY_DIR}/thirdparty/curl-src"
+     LIST_SEPARATOR % # This is needed for passing semicolon-separated lists
++    TLS_VERIFY OFF
+     CMAKE_ARGS ${PASSTHROUGH_CMAKE_ARGS}
+                
"-DCMAKE_INSTALL_PREFIX=${CMAKE_CURRENT_BINARY_DIR}/thirdparty/curl-install"
++               "-DCMAKE_INSTALL_LIBDIR=lib${LIBSUFFIX}"
+                 -DCMAKE_POSITION_INDEPENDENT_CODE=ON
+                 -DBUILD_CURL_EXE=OFF
+                 -DBUILD_TESTING=OFF
+diff -urN orig/libminifi/CMakeLists.txt patched/libminifi/CMakeLists.txt
+--- orig/libminifi/CMakeLists.txt      2020-07-28 11:39:40.074677515 +0900
++++ patched/libminifi/CMakeLists.txt   2020-07-28 11:47:08.554676568 +0900
+@@ -108,6 +108,7 @@
+ add_library(spdlog STATIC ${SPD_SOURCES})
+ add_library(core-minifi STATIC ${SOURCES})
+ target_link_libraries(core-minifi ${CMAKE_DL_LIBS} yaml-cpp)
++target_link_libraries(core-minifi ${LIB_ATOMIC})
+ 
+ #target_link_libraries(core-minifi  PRIVATE bsdiff )
+ 
diff --git 
a/meta-oe/recipes-extended/minifi-cpp/files/fix-rocksdb-cross-compile.patch 
b/meta-oe/recipes-extended/minifi-cpp/files/fix-rocksdb-cross-compile.patch
new file mode 100644
index 000000000..848b97aed
--- /dev/null
+++ b/meta-oe/recipes-extended/minifi-cpp/files/fix-rocksdb-cross-compile.patch
@@ -0,0 +1,11 @@
+diff -urN orig/thirdparty/rocksdb/CMakeLists.txt 
patched/thirdparty/rocksdb/CMakeLists.txt
+--- orig/thirdparty/rocksdb/CMakeLists.txt     2020-07-28 11:39:40.254677515 
+0900
++++ patched/thirdparty/rocksdb/CMakeLists.txt  2020-07-28 11:51:11.898676054 
+0900
+@@ -618,6 +618,7 @@
+ add_library(${ROCKSDB_STATIC_LIB} STATIC ${SOURCES})
+ target_link_libraries(${ROCKSDB_STATIC_LIB}
+   ${THIRDPARTY_LIBS} ${SYSTEM_LIBS})
++target_link_libraries(${ROCKSDB_STATIC_LIB} ${LIB_ATOMIC})
+ 
+ if(WIN32)
+ #  add_library(${ROCKSDB_IMPORT_LIB} SHARED ${SOURCES})
diff --git a/meta-oe/recipes-extended/minifi-cpp/files/minifi.service 
b/meta-oe/recipes-extended/minifi-cpp/files/minifi.service
new file mode 100644
index 000000000..5802a7b2f
--- /dev/null
+++ b/meta-oe/recipes-extended/minifi-cpp/files/minifi.service
@@ -0,0 +1,13 @@
+[Unit]
+Description=MiNiFi Service
+After=network.target
+RequiresMountsFor=/var
+
+[Service]
+Type=simple
+WorkingDirectory=@LOCALSTATEDIR@/run/minifi
+Environment=MINIFI_HOME=@SYSCONFDIR@/minifi
+ExecStart=@BINDIR@/minifi
+
+[Install]
+WantedBy=multi-user.target
diff --git a/meta-oe/recipes-extended/minifi-cpp/files/systemd-volatile.conf 
b/meta-oe/recipes-extended/minifi-cpp/files/systemd-volatile.conf
new file mode 100644
index 000000000..c828b49fa
--- /dev/null
+++ b/meta-oe/recipes-extended/minifi-cpp/files/systemd-volatile.conf
@@ -0,0 +1,2 @@
+d @MINIFI_RUN@ 0755 root root -
+d @MINIFI_LOG@ 0755 root root -
diff --git a/meta-oe/recipes-extended/minifi-cpp/files/sysvinit-volatile.conf 
b/meta-oe/recipes-extended/minifi-cpp/files/sysvinit-volatile.conf
new file mode 100644
index 000000000..2ad14e677
--- /dev/null
+++ b/meta-oe/recipes-extended/minifi-cpp/files/sysvinit-volatile.conf
@@ -0,0 +1,2 @@
+d root root 0755 @MINIFI_RUN@ none
+d root root 0755 @MINIFI_LOG@ none
diff --git a/meta-oe/recipes-extended/minifi-cpp/minifi-cpp_0.7.0.bb 
b/meta-oe/recipes-extended/minifi-cpp/minifi-cpp_0.7.0.bb
new file mode 100644
index 000000000..eb9ede813
--- /dev/null
+++ b/meta-oe/recipes-extended/minifi-cpp/minifi-cpp_0.7.0.bb
@@ -0,0 +1,108 @@
+SUMMARY = "A subproject of Apache NiFi to collect data where it originates."
+DESCRIPTION = "MiNiFi--a subproject of Apache NiFi--is a complementary \
+data collection approach that supplements the core tenets of NiFi in dataflow \
+management, focusing on the collection of data at the source of its creation."
+HOMEPAGE = "https://nifi.apache.org/minifi/index.html";
+SECTION = "console/network"
+LICENSE = "Apache-2.0"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=f9534eb5f4ab800b573a37bffc62f3a7"
+
+DEPENDS = "libxcrypt expat flex python3 bison-native"
+RDEPENDS_${PN} = "python3-core"
+
+SRCREV = "aa42957a2e227df41510047cece3cd606dc1cb6a"
+SRC_URI = "git://github.com/apache/nifi-minifi-cpp.git \
+           file://fix-build-issue-in-yocto.patch \
+           file://fix-rocksdb-cross-compile.patch \
+           file://fix-OSSPUUID-cross-compile.patch \
+           file://minifi.service \
+           file://systemd-volatile.conf \
+           file://sysvinit-volatile.conf \
+           "
+
+S = "${WORKDIR}/git"
+
+inherit pkgconfig cmake systemd
+
+# There are endian issues when communicating with the x86 nifi on the the mips 
and the ppc machines.
+COMPATIBLE_MACHINE_mips = "(!.*mips).*"
+COMPATIBLE_MACHINE_mips64 = "(!.*mips64).*"
+COMPATIBLE_MACHINE_powerpc = "(!.*ppc).*"
+
+SYSTEMD_PACKAGES = "minifi-cpp"
+SYSTEMD_SERVICE_${PN} = "minifi.service"
+SYSTEMD_AUTO_ENABLE = "disable"
+
+EXTRA_OECMAKE += " \
+    -DHOST_SYS=${HOST_SYS} -DBUILD_SYS=${BUILD_SYS} \
+    -DSKIP_TESTS=ON \
+    "
+
+OECMAKE_FIND_ROOT_PATH_MODE_PROGRAM = "BOTH"
+
+
+do_install() {
+    DESTDIR='${B}/minifi-install' cmake_runcmake_build --target 
${OECMAKE_TARGET_INSTALL}
+
+    MINIFI_BIN=${base_prefix}${bindir}
+    MINIFI_HOME=${base_prefix}${sysconfdir}/minifi
+    MINIFI_RUN=${base_prefix}${localstatedir}/run/minifi
+    MINIFI_LOG=${base_prefix}${localstatedir}/log/minifi
+
+    install -d ${D}${MINIFI_BIN}
+    install -d ${D}${MINIFI_HOME}/conf
+    cp -a ${B}/minifi-install/usr/bin/*   ${D}${MINIFI_BIN}/
+    cp -a ${B}/minifi-install/usr/conf/*  ${D}${MINIFI_HOME}/conf/
+
+    sed -i 
's|#appender.rolling.directory=.*|appender.rolling.directory='${MINIFI_LOG}'|g' 
\
+        ${D}${MINIFI_HOME}/conf/minifi-log.properties
+    sed -i 
's|nifi.provenance.repository.directory.default=.*|nifi.provenance.repository.directory.default='${MINIFI_RUN}'/provenance_repository|g'
 \
+        ${D}${MINIFI_HOME}/conf/minifi.properties
+    sed -i 
's|nifi.flowfile.repository.directory.default=.*|nifi.flowfile.repository.directory.default='${MINIFI_RUN}'/flowfile_repository|g'
 \
+        ${D}${MINIFI_HOME}/conf/minifi.properties
+    sed -i 
's|nifi.database.content.repository.directory.default=.*|nifi.database.content.repository.directory.default='${MINIFI_RUN}'/content_repository|g'
 \
+        ${D}${MINIFI_HOME}/conf/minifi.properties
+    sed -i 
's|nifi.flow.configuration.file=.*|nifi.flow.configuration.file='${MINIFI_HOME}'/conf/config.yml|g'
 \
+        ${D}${MINIFI_HOME}/conf/minifi.properties
+
+    sed -i 's|export MINIFI_HOME=.*|export MINIFI_HOME='${MINIFI_HOME}'|g' 
${D}${MINIFI_BIN}/minifi.sh
+    sed -i 's|bin_dir=${MINIFI_HOME}/bin|bin_dir='${MINIFI_BIN}'|g' 
${D}${MINIFI_BIN}/minifi.sh
+    sed -i 's|pid_file=${bin_dir}|pid_file='${MINIFI_RUN}'|g' 
${D}${MINIFI_BIN}/minifi.sh
+
+    if ${@bb.utils.contains('DISTRO_FEATURES','systemd','true','false',d)}; 
then
+        install -d ${D}${sysconfdir}/tmpfiles.d/
+        install -m 0644 ${WORKDIR}/systemd-volatile.conf 
${D}${sysconfdir}/tmpfiles.d/
+        install -m 0755 -d ${D}${systemd_unitdir}/system
+        install -m 0644 ${WORKDIR}/minifi.service 
${D}${systemd_unitdir}/system/
+
+        sed -i 's|@LOCALSTATEDIR@|${localstatedir}|g' 
${D}${systemd_unitdir}/system/minifi.service
+        sed -i 's|@SYSCONFDIR@|${sysconfdir}|g' 
${D}${systemd_unitdir}/system/minifi.service
+        sed -i 's|@BINDIR@|${bindir}|g' 
${D}${systemd_unitdir}/system/minifi.service
+
+        sed -i 's|@MINIFI_RUN@|'${MINIFI_RUN}'|g' 
${D}${sysconfdir}/tmpfiles.d/systemd-volatile.conf
+        sed -i 's|@MINIFI_LOG@|'${MINIFI_LOG}'|g' 
${D}${sysconfdir}/tmpfiles.d/systemd-volatile.conf
+
+    elif ${@bb.utils.contains('DISTRO_FEATURES', 'sysvinit', 'true', 'false', 
d)}; then
+        install -d ${D}${sysconfdir}/default/volatiles
+        install -m 0644 ${WORKDIR}/sysvinit-volatile.conf 
${D}${sysconfdir}/default/volatiles/99_minifi
+
+        sed -i 's|@MINIFI_RUN@|'${MINIFI_RUN}'|g' 
${D}${sysconfdir}/default/volatiles/99_minifi
+        sed -i 's|@MINIFI_LOG@|'${MINIFI_LOG}'|g' 
${D}${sysconfdir}/default/volatiles/99_minifi
+    fi
+}
+
+pkg_postinst_${PN}() {
+    if [ -z "$D" ]; then
+        if type systemd-tmpfiles >/dev/null; then
+            systemd-tmpfiles --create
+        elif [ -e ${sysconfdir}/init.d/populate-volatile.sh ]; then
+            ${sysconfdir}/init.d/populate-volatile.sh update
+        fi
+    fi
+}
+
+FILES_${PN} = " \
+        ${bindir} \
+        ${sysconfdir} \
+        ${systemd_unitdir} \
+        "
-- 
2.28.0

-=-=-=-=-=-=-=-=-=-=-=-
Links: You receive all messages sent to this group.

View/Reply Online (#86159): 
https://lists.openembedded.org/g/openembedded-devel/message/86159
Mute This Topic: https://lists.openembedded.org/mt/76002332/21656
Group Owner: [email protected]
Unsubscribe: https://lists.openembedded.org/g/openembedded-devel/unsub  
[[email protected]]
-=-=-=-=-=-=-=-=-=-=-=-

Reply via email to