Skip to content

Commit 9dc1682

Browse files
cirust20kraj
authored andcommitted
minifi: Add recipe for c++ version
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]> Signed-off-by: Khem Raj <[email protected]>
1 parent b57d6fc commit 9dc1682

File tree

4 files changed

+208
-0
lines changed

4 files changed

+208
-0
lines changed
Lines changed: 70 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,70 @@
1+
diff -urN orig/cmake/BundledOSSPUUID.cmake patched/cmake/BundledOSSPUUID.cmake
2+
--- orig/cmake/BundledOSSPUUID.cmake 2020-01-07 22:55:55.000000000 +0900
3+
+++ patched/cmake/BundledOSSPUUID.cmake 2020-07-14 11:32:28.221092406 +0900
4+
@@ -22,7 +22,8 @@
5+
6+
# Define patch step
7+
find_package(Patch REQUIRED)
8+
- set(PC "${Patch_EXECUTABLE}" -p1 -i "${SOURCE_DIR}/thirdparty/ossp-uuid/ossp-uuid-mac-fix.patch")
9+
+ set(PATCH1 "${Patch_EXECUTABLE}" -p1 -i "${SOURCE_DIR}/thirdparty/ossp-uuid/ossp-uuid-mac-fix.patch")
10+
+ set(PATCH2 "${Patch_EXECUTABLE}" -p1 -i "${SOURCE_DIR}/thirdparty/ossp-uuid/cross-compile-fix.patch")
11+
12+
# Define byproducts
13+
set(BYPRODUCTS "lib/libuuid.a"
14+
@@ -35,7 +36,9 @@
15+
ENDFOREACH(BYPRODUCT)
16+
17+
# Build project
18+
- set(CONFIGURE_COMMAND ./configure "CFLAGS=-fPIC" "CXXFLAGS=-fPIC" --with-cxx --without-perl --without-php --without-pgsql "--prefix=${BINARY_DIR}/thirdparty/ossp-uuid-install")
19+
+ set(CONFIGURE_COMMAND ac_cv_va_copy=C99 ./configure CFLAGS=-fPIC CXXFLAGS=-fPIC --host=${HOST_SYS}
20+
+ --with-cxx --without-perl --without-php --without-pgsql
21+
+ --prefix=${BINARY_DIR}/thirdparty/ossp-uuid-install)
22+
string(TOLOWER "${CMAKE_BUILD_TYPE}" build_type)
23+
if(NOT build_type MATCHES debug)
24+
list(APPEND CONFIGURE_COMMAND --enable-debug=yes)
25+
@@ -52,8 +55,8 @@
26+
UPDATE_COMMAND ""
27+
INSTALL_COMMAND make install
28+
BUILD_BYPRODUCTS ${OSSPUUID_LIBRARIES_LIST}
29+
- CONFIGURE_COMMAND ""
30+
- PATCH_COMMAND ${PC} && ${CONFIGURE_COMMAND}
31+
+ CONFIGURE_COMMAND ${CONFIGURE_COMMAND}
32+
+ PATCH_COMMAND ${PATCH1} && ${PATCH2}
33+
STEP_TARGETS build
34+
EXCLUDE_FROM_ALL TRUE
35+
)
36+
diff -urN orig/thirdparty/ossp-uuid/cross-compile-fix.patch patched/thirdparty/ossp-uuid/cross-compile-fix.patch
37+
--- orig/thirdparty/ossp-uuid/cross-compile-fix.patch 1970-01-01 09:00:00.000000000 +0900
38+
+++ patched/thirdparty/ossp-uuid/cross-compile-fix.patch 2020-07-14 11:48:13.781090409 +0900
39+
@@ -0,0 +1,31 @@
40+
+diff -urN orig/config.sub patched/config.sub
41+
+--- orig/config.sub 2008-07-05 06:43:08.000000000 +0900
42+
++++ patched/config.sub 2020-07-14 11:46:47.249090591 +0900
43+
+@@ -238,6 +238,7 @@
44+
+ # Some are omitted here because they have special meanings below.
45+
+ 1750a | 580 \
46+
+ | a29k \
47+
++ | aarch64 | aarch64_be \
48+
+ | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \
49+
+ | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \
50+
+ | am33_2.0 \
51+
+@@ -314,6 +315,7 @@
52+
+ # Recognize the basic CPU types with company name.
53+
+ 580-* \
54+
+ | a29k-* \
55+
++ | aarch64-* | aarch64_be-* \
56+
+ | alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \
57+
+ | alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \
58+
+ | alphapca5[67]-* | alpha64pca5[67]-* | arc-* \
59+
+diff -urN orig/shtool patched/shtool
60+
+--- orig/shtool 2008-07-05 06:43:08.000000000 +0900
61+
++++ patched/shtool 2020-07-13 19:35:49.557213657 +0900
62+
+@@ -1400,7 +1400,7 @@
63+
+ if [ ".$opt_t" = .yes ]; then
64+
+ echo "strip $dsttmp" 1>&2
65+
+ fi
66+
+- strip $dsttmp || shtool_exit $?
67+
++ $STRIP $dsttmp || shtool_exit $?
68+
+ fi
69+
+ if [ ".$opt_o" != . ]; then
70+
+ if [ ".$opt_t" = .yes ]; then
Lines changed: 62 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,62 @@
1+
diff -urN orig/cmake/LibreSSL.cmake patched/cmake/LibreSSL.cmake
2+
--- orig/cmake/LibreSSL.cmake 2020-01-07 22:55:55.000000000 +0900
3+
+++ patched/cmake/LibreSSL.cmake 2020-07-14 12:01:28.321088730 +0900
4+
@@ -27,6 +27,17 @@
5+
set(BYPRODUCT_PREFIX "" CACHE STRING "" FORCE)
6+
set(BUILD_ARGS " -GVisual Studio 15 2017")
7+
endif(WIN32)
8+
+
9+
+ set(BYPRODUCTS
10+
+ "lib/${BYPRODUCT_PREFIX}crypto${BYPRODUCT_SUFFIX}"
11+
+ "lib/${BYPRODUCT_PREFIX}ssl${BYPRODUCT_SUFFIX}"
12+
+ "lib/${BYPRODUCT_PREFIX}tls${BYPRODUCT_SUFFIX}"
13+
+ )
14+
+ set(LIBRESSL_INSTALL_DIR "${BINARY_DIR}/thirdparty/libressl-install" CACHE STRING "" FORCE)
15+
+ FOREACH(BYPRODUCT ${BYPRODUCTS})
16+
+ LIST(APPEND LIBRESSL_LIBRARIES_LIST "${LIBRESSL_INSTALL_DIR}/${BYPRODUCT}")
17+
+ ENDFOREACH(BYPRODUCT)
18+
+
19+
ExternalProject_Add(
20+
libressl-portable
21+
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
22+
@@ -37,6 +48,7 @@
23+
"-DLIBRESSL_APPS=OFF"
24+
"-DLIBRESSL_TESTS=OFF"
25+
"${BUILD_ARGS}"
26+
+ BUILD_BYPRODUCTS ${LIBRESSL_LIBRARIES_LIST}
27+
)
28+
29+
add_library(crypto STATIC IMPORTED)
30+
diff -urN orig/CMakeLists.txt patched/CMakeLists.txt
31+
--- orig/CMakeLists.txt 2020-01-07 22:55:55.000000000 +0900
32+
+++ patched/CMakeLists.txt 2020-07-14 16:25:51.581055220 +0900
33+
@@ -120,12 +120,12 @@
34+
endif()
35+
36+
# Use ccache if present
37+
-find_program(CCACHE_FOUND ccache)
38+
-if(CCACHE_FOUND)
39+
- set_property(GLOBAL PROPERTY RULE_LAUNCH_COMPILE ccache)
40+
- set_property(GLOBAL PROPERTY RULE_LAUNCH_LINK ccache)
41+
- message("-- Found ccache: ${CCACHE_FOUND}")
42+
-endif(CCACHE_FOUND)
43+
+#find_program(CCACHE_FOUND ccache)
44+
+#if(CCACHE_FOUND)
45+
+# set_property(GLOBAL PROPERTY RULE_LAUNCH_COMPILE ccache)
46+
+# set_property(GLOBAL PROPERTY RULE_LAUNCH_LINK ccache)
47+
+# message("-- Found ccache: ${CCACHE_FOUND}")
48+
+#endif(CCACHE_FOUND)
49+
50+
if (UNIX AND USE_GOLD_LINKER AND NOT APPLE )
51+
execute_process(COMMAND ${CMAKE_C_COMPILER} -fuse-ld=gold -Wl,--version ERROR_QUIET OUTPUT_VARIABLE ld_version)
52+
@@ -303,8 +303,10 @@
53+
GIT_TAG "f3294d9d86e6a7915a967efff2842089b8b0d071" # Version 7.64.0
54+
SOURCE_DIR "${CMAKE_CURRENT_BINARY_DIR}/thirdparty/curl-src"
55+
LIST_SEPARATOR % # This is needed for passing semicolon-separated lists
56+
+ TLS_VERIFY OFF
57+
CMAKE_ARGS ${PASSTHROUGH_CMAKE_ARGS}
58+
"-DCMAKE_INSTALL_PREFIX=${CMAKE_CURRENT_BINARY_DIR}/thirdparty/curl-install"
59+
+ "-DCMAKE_INSTALL_LIBDIR=lib${LIBSUFFIX}"
60+
-DCMAKE_POSITION_INDEPENDENT_CODE=ON
61+
-DBUILD_CURL_EXE=OFF
62+
-DBUILD_TESTING=OFF
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
[Unit]
2+
Description=MiNiFi Service
3+
After=network.target
4+
RequiresMountsFor=/var
5+
6+
[Service]
7+
Type=simple
8+
Environment=MINIFI_HOME=/etc/minifi
9+
ExecStartPre=@BASE_BINDIR@/mkdir -p /var/lib/minifi /var/log/minifi
10+
ExecStart=@BINDIR@/minifi
11+
12+
[Install]
13+
WantedBy=multi-user.target
Lines changed: 63 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,63 @@
1+
SUMMARY = "A subproject of Apache NiFi to collect data where it originates."
2+
DESCRIPTION = "MiNiFi--a subproject of Apache NiFi--is a complementary \
3+
data collection approach that supplements the core tenets of NiFi in dataflow \
4+
management, focusing on the collection of data at the source of its creation."
5+
HOMEPAGE = "https://nifi.apache.org/minifi/index.html"
6+
SECTION = "console/network"
7+
LICENSE = "Apache-2.0"
8+
LIC_FILES_CHKSUM = "file://LICENSE;md5=f9534eb5f4ab800b573a37bffc62f3a7"
9+
10+
DEPENDS = "libxcrypt bzip2 expat flex zlib python3"
11+
12+
SRCREV = "aa42957a2e227df41510047cece3cd606dc1cb6a"
13+
SRC_URI = "git://github.com/apache/nifi-minifi-cpp.git \
14+
file://fix-build-issue-in-yocto.patch \
15+
file://fix-OSSPUUID-cross-compile.patch \
16+
file://minifi.service \
17+
"
18+
19+
S = "${WORKDIR}/git"
20+
21+
inherit pkgconfig cmake systemd
22+
23+
SYSTEMD_PACKAGES = "minifi-cpp"
24+
SYSTEMD_SERVICE_${PN} = "minifi.service"
25+
26+
EXTRA_OECMAKE += " \
27+
-DHOST_SYS=${HOST_SYS} -DBUILD_SYS=${BUILD_SYS} \
28+
-DSKIP_TESTS=ON \
29+
"
30+
31+
OECMAKE_FIND_ROOT_PATH_MODE_PROGRAM = "BOTH"
32+
33+
34+
do_install() {
35+
DESTDIR='${B}/minifi-install' cmake_runcmake_build --target ${OECMAKE_TARGET_INSTALL}
36+
37+
CONF_DIR=${D}${base_prefix}/etc/minifi/conf
38+
install -d ${D}${base_prefix}/usr/bin
39+
install -d ${CONF_DIR}
40+
cp -a ${B}/minifi-install/usr/bin/* ${D}${base_prefix}/usr/bin/
41+
cp -a ${B}/minifi-install/usr/conf/* ${CONF_DIR}/
42+
sed -i 's|#appender.rolling.directory=.*|appender.rolling.directory=/var/log/minifi|g' \
43+
${CONF_DIR}/minifi-log.properties
44+
sed -i 's|nifi.provenance.repository.directory.default=.*|nifi.provenance.repository.directory.default=/var/lib/minifi/provenance_repository|g' \
45+
${CONF_DIR}/minifi.properties
46+
sed -i 's|nifi.flowfile.repository.directory.default=.*|nifi.flowfile.repository.directory.default=/var/lib/minifi/flowfile_repository|g' \
47+
${CONF_DIR}/minifi.properties
48+
sed -i 's|nifi.database.content.repository.directory.default=.*|nifi.database.content.repository.directory.default=/var/lib/minifi/content_repository|g' \
49+
${CONF_DIR}/minifi.properties
50+
sed -i 's|nifi.flow.configuration.file=.*|nifi.flow.configuration.file=/etc/minifi/conf/config.yml|g' \
51+
${CONF_DIR}/minifi.properties
52+
53+
install -m 0755 -d ${D}${systemd_unitdir}/system
54+
install -m 0644 ${WORKDIR}/minifi.service ${D}${systemd_unitdir}/system/
55+
sed -i -e 's|@BASE_BINDIR@|${base_bindir}|g' ${D}${systemd_unitdir}/system/minifi.service
56+
sed -i -e 's|@BINDIR@|${bindir}|g' ${D}${systemd_unitdir}/system/minifi.service
57+
}
58+
59+
FILES_${PN} = " \
60+
/usr/bin/* \
61+
/etc/minifi/* \
62+
${systemd_unitdir}/system/minifi.service \
63+
"

0 commit comments

Comments
 (0)