xref: /OK3568_Linux_fs/yocto/meta-openembedded/meta-oe/recipes-extended/minifi-cpp/minifi-cpp_0.7.0.bb (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593SmuzhiyunSUMMARY = "A subproject of Apache NiFi to collect data where it originates."
2*4882a593SmuzhiyunDESCRIPTION = "MiNiFi--a subproject of Apache NiFi--is a complementary \
3*4882a593Smuzhiyundata collection approach that supplements the core tenets of NiFi in dataflow \
4*4882a593Smuzhiyunmanagement, focusing on the collection of data at the source of its creation."
5*4882a593SmuzhiyunHOMEPAGE = "https://nifi.apache.org/minifi/index.html"
6*4882a593SmuzhiyunSECTION = "console/network"
7*4882a593SmuzhiyunLICENSE = "Apache-2.0"
8*4882a593SmuzhiyunLIC_FILES_CHKSUM = "file://LICENSE;md5=f9534eb5f4ab800b573a37bffc62f3a7"
9*4882a593Smuzhiyun
10*4882a593SmuzhiyunDEPENDS = "virtual/crypt expat flex python3 bison-native libxml2 nettle lz4"
11*4882a593SmuzhiyunRDEPENDS:${PN} = "python3-core"
12*4882a593Smuzhiyun
13*4882a593SmuzhiyunSRCREV = "aa42957a2e227df41510047cece3cd606dc1cb6a"
14*4882a593SmuzhiyunSRC_URI = "git://github.com/apache/nifi-minifi-cpp.git;branch=master;protocol=https \
15*4882a593Smuzhiyun            https://curl.haxx.se/download/curl-7.64.0.tar.bz2;name=curl;subdir=git/thirdparty \
16*4882a593Smuzhiyun            https://ftp.openbsd.org/pub/OpenBSD/LibreSSL/libressl-2.8.3.tar.gz;name=libressl;subdir=git/thirdparty \
17*4882a593Smuzhiyun            ${DEBIAN_MIRROR}/main/o/ossp-uuid/ossp-uuid_1.6.2.orig.tar.gz;name=ossp-uuid;subdir=git/thirdparty \
18*4882a593Smuzhiyun            file://fix-minifi-compile.patch \
19*4882a593Smuzhiyun            file://fix-libressl-compile.patch \
20*4882a593Smuzhiyun            file://fix-libressl-avoid-BSWAP-assembly-for-ARM-v6.patch \
21*4882a593Smuzhiyun            file://fix-osspuuid-compile.patch \
22*4882a593Smuzhiyun            file://fix-osspuuid-cross-compile.patch \
23*4882a593Smuzhiyun            file://fix-osspuuid-musl-compile.patch \
24*4882a593Smuzhiyun            file://fix-rocksdb-cross-compile.patch \
25*4882a593Smuzhiyun            file://remove_const_due_to_std_lock_guard.patch \
26*4882a593Smuzhiyun            file://0001-Add-lxml2-to-linker-cmdline-of-xml-is-found.patch \
27*4882a593Smuzhiyun            file://0001-CMakeLists.txt-use-curl-local-source-tarball.patch \
28*4882a593Smuzhiyun            file://0002-cmake-LibreSSL.cmake-use-libressl-local-source-tarba.patch \
29*4882a593Smuzhiyun            file://0003-cmake-BundledOSSPUUID.cmake-use-ossp-uuid-local-sour.patch \
30*4882a593Smuzhiyun            file://0001-civetweb-CMakeLists.txt-do-not-search-gcc-ar-and-gcc.patch \
31*4882a593Smuzhiyun            file://0001-cxxopts-Add-limits-header.patch \
32*4882a593Smuzhiyun            file://0001-Fix-build-with-libc.patch \
33*4882a593Smuzhiyun            file://minifi.service \
34*4882a593Smuzhiyun            file://systemd-volatile.conf \
35*4882a593Smuzhiyun            file://sysvinit-volatile.conf \
36*4882a593Smuzhiyun            "
37*4882a593Smuzhiyun
38*4882a593SmuzhiyunSRC_URI[curl.md5sum] = "d0bcc586873cfef08b4b9594e5395a33"
39*4882a593SmuzhiyunSRC_URI[curl.sha256sum] = "d573ba1c2d1cf9d8533fadcce480d778417964e8d04ccddcc76e591d544cf2eb"
40*4882a593SmuzhiyunSRC_URI[libressl.md5sum] = "0f1127bd21b4aa8495a910379c2ad936"
41*4882a593SmuzhiyunSRC_URI[libressl.sha256sum] = "9b640b13047182761a99ce3e4f000be9687566e0828b4a72709e9e6a3ef98477"
42*4882a593SmuzhiyunSRC_URI[ossp-uuid.md5sum] = "5db0d43a9022a6ebbbc25337ae28942f"
43*4882a593SmuzhiyunSRC_URI[ossp-uuid.sha256sum] = "11a615225baa5f8bb686824423f50e4427acd3f70d394765bdff32801f0fd5b0"
44*4882a593Smuzhiyun
45*4882a593SmuzhiyunS = "${WORKDIR}/git"
46*4882a593Smuzhiyun
47*4882a593Smuzhiyuninherit pkgconfig cmake systemd
48*4882a593Smuzhiyun
49*4882a593SmuzhiyunSYSTEMD_PACKAGES = "minifi-cpp"
50*4882a593SmuzhiyunSYSTEMD_SERVICE:${PN} = "minifi.service"
51*4882a593SmuzhiyunSYSTEMD_AUTO_ENABLE = "disable"
52*4882a593Smuzhiyun
53*4882a593SmuzhiyunOECMAKE_FIND_ROOT_PATH_MODE_PROGRAM = "BOTH"
54*4882a593Smuzhiyun
55*4882a593SmuzhiyunEXTRA_OECMAKE += " \
56*4882a593Smuzhiyun    -DHOST_SYS=${HOST_SYS} -DBUILD_SYS=${BUILD_SYS} \
57*4882a593Smuzhiyun    -DSKIP_TESTS=ON \
58*4882a593Smuzhiyun    -DGCC_AR=${STAGING_BINDIR_TOOLCHAIN}/${AR} \
59*4882a593Smuzhiyun    -DGCC_RANLIB=${STAGING_BINDIR_TOOLCHAIN}/${RANLIB} \
60*4882a593Smuzhiyun    "
61*4882a593SmuzhiyunEXTRA_OECMAKE:append:toolchain-clang = " -DCMAKE_RANLIB=${STAGING_BINDIR_TOOLCHAIN}/${TARGET_PREFIX}llvm-ranlib"
62*4882a593SmuzhiyunLDFLAGS:append:toolchain-clang = " -fuse-ld=lld"
63*4882a593Smuzhiyun
64*4882a593Smuzhiyun# RV lld errors out:
65*4882a593Smuzhiyun# riscv64-yoe-linux-ld.lld: error: init.c:(.text+0x0): relocation R_RISCV_ALIGN requires unimplemented linker relaxation; recompile with -mno-relax
66*4882a593SmuzhiyunLDFLAGS:remove:riscv32 = "-fuse-ld=lld"
67*4882a593SmuzhiyunLDFLAGS:remove:riscv64 = "-fuse-ld=lld"
68*4882a593Smuzhiyun
69*4882a593Smuzhiyun# There are endian issues when communicating with the x86 nifi on the the mips and the ppc machines.
70*4882a593SmuzhiyunCOMPATIBLE_MACHINE:mips = "(!.*mips).*"
71*4882a593SmuzhiyunCOMPATIBLE_MACHINE:mips64 = "(!.*mips64).*"
72*4882a593SmuzhiyunCOMPATIBLE_MACHINE:powerpc = "(!.*ppc).*"
73*4882a593Smuzhiyun
74*4882a593SmuzhiyunTARGET_CFLAGS:append:riscv32 = " -fpic"
75*4882a593SmuzhiyunTARGET_CXXFLAGS:append:riscv32 = " -fpic"
76*4882a593SmuzhiyunTARGET_CFLAGS:append:riscv64 = " -fpic"
77*4882a593SmuzhiyunTARGET_CXXFLAGS:append:riscv64 = " -fpic"
78*4882a593Smuzhiyun
79*4882a593Smuzhiyundo_install[cleandirs] += "${WORKDIR}/minifi-install"
80*4882a593SmuzhiyunPSEUDO_CONSIDER_PATHS .= ",${WORKDIR}/minifi-install"
81*4882a593Smuzhiyun
82*4882a593Smuzhiyundo_install() {
83*4882a593Smuzhiyun    DESTDIR='${WORKDIR}/minifi-install' cmake_runcmake_build --target ${OECMAKE_TARGET_INSTALL}
84*4882a593Smuzhiyun    MINIFI_BIN=${bindir}
85*4882a593Smuzhiyun    MINIFI_HOME=${sysconfdir}/minifi
86*4882a593Smuzhiyun    MINIFI_RUN=${localstatedir}/lib/minifi
87*4882a593Smuzhiyun    MINIFI_LOG=${localstatedir}/log/minifi
88*4882a593Smuzhiyun
89*4882a593Smuzhiyun    install -d ${D}${MINIFI_BIN}
90*4882a593Smuzhiyun    install -d ${D}${MINIFI_HOME}/conf
91*4882a593Smuzhiyun    install -m 755 -d ${D}${localstatedir}/lib/minifi
92*4882a593Smuzhiyun    install -m 755 -d ${D}${libexecdir}/minifi-python
93*4882a593Smuzhiyun    cp -a ${WORKDIR}/minifi-install/usr/bin/*   ${D}${MINIFI_BIN}/
94*4882a593Smuzhiyun    cp -a ${WORKDIR}/minifi-install/usr/conf/*  ${D}${MINIFI_HOME}/conf/
95*4882a593Smuzhiyun
96*4882a593Smuzhiyun    sed -i 's|#appender.rolling.directory=.*|appender.rolling.directory='${MINIFI_LOG}'|g' \
97*4882a593Smuzhiyun        ${D}${MINIFI_HOME}/conf/minifi-log.properties
98*4882a593Smuzhiyun    sed -i 's|nifi.provenance.repository.directory.default=.*|nifi.provenance.repository.directory.default='${MINIFI_RUN}'/provenance_repository|g' \
99*4882a593Smuzhiyun        ${D}${MINIFI_HOME}/conf/minifi.properties
100*4882a593Smuzhiyun    sed -i 's|nifi.flowfile.repository.directory.default=.*|nifi.flowfile.repository.directory.default='${MINIFI_RUN}'/flowfile_repository|g' \
101*4882a593Smuzhiyun        ${D}${MINIFI_HOME}/conf/minifi.properties
102*4882a593Smuzhiyun    sed -i 's|nifi.database.content.repository.directory.default=.*|nifi.database.content.repository.directory.default='${MINIFI_RUN}'/content_repository|g' \
103*4882a593Smuzhiyun        ${D}${MINIFI_HOME}/conf/minifi.properties
104*4882a593Smuzhiyun    sed -i 's|nifi.flow.configuration.file=.*|nifi.flow.configuration.file='${MINIFI_HOME}'/conf/config.yml|g' \
105*4882a593Smuzhiyun        ${D}${MINIFI_HOME}/conf/minifi.properties
106*4882a593Smuzhiyun    sed -i 's|nifi.python.processor.dir=.*|nifi.python.processor.dir=${libexecdir}/minifi-python|g' \
107*4882a593Smuzhiyun        ${D}${MINIFI_HOME}/conf/minifi.properties
108*4882a593Smuzhiyun
109*4882a593Smuzhiyun    sed -i 's|export MINIFI_HOME=.*|export MINIFI_HOME='${MINIFI_HOME}'|g' ${D}${MINIFI_BIN}/minifi.sh
110*4882a593Smuzhiyun    sed -i 's|bin_dir=${MINIFI_HOME}/bin|bin_dir='${MINIFI_BIN}'|g' ${D}${MINIFI_BIN}/minifi.sh
111*4882a593Smuzhiyun    sed -i 's|pid_file=${bin_dir}/.|pid_file='${localstatedir}/run/'|g' ${D}${MINIFI_BIN}/minifi.sh
112*4882a593Smuzhiyun
113*4882a593Smuzhiyun    if ${@bb.utils.contains('DISTRO_FEATURES','systemd','true','false',d)}; then
114*4882a593Smuzhiyun        install -d ${D}${sysconfdir}/tmpfiles.d/
115*4882a593Smuzhiyun        install -m 0644 ${WORKDIR}/systemd-volatile.conf ${D}${sysconfdir}/tmpfiles.d/minifi.conf
116*4882a593Smuzhiyun        install -m 0755 -d ${D}${systemd_unitdir}/system
117*4882a593Smuzhiyun        install -m 0644 ${WORKDIR}/minifi.service ${D}${systemd_unitdir}/system/
118*4882a593Smuzhiyun
119*4882a593Smuzhiyun        sed -i 's|@LOCALSTATEDIR@|${localstatedir}|g' ${D}${systemd_unitdir}/system/minifi.service
120*4882a593Smuzhiyun        sed -i 's|@SYSCONFDIR@|${sysconfdir}|g' ${D}${systemd_unitdir}/system/minifi.service
121*4882a593Smuzhiyun        sed -i 's|@BINDIR@|${bindir}|g' ${D}${systemd_unitdir}/system/minifi.service
122*4882a593Smuzhiyun
123*4882a593Smuzhiyun        sed -i 's|@MINIFI_LOG@|'${MINIFI_LOG}'|g' ${D}${sysconfdir}/tmpfiles.d/minifi.conf
124*4882a593Smuzhiyun
125*4882a593Smuzhiyun    elif ${@bb.utils.contains('DISTRO_FEATURES', 'sysvinit', 'true', 'false', d)}; then
126*4882a593Smuzhiyun        install -d ${D}${sysconfdir}/default/volatiles
127*4882a593Smuzhiyun        install -m 0644 ${WORKDIR}/sysvinit-volatile.conf ${D}${sysconfdir}/default/volatiles/99_minifi
128*4882a593Smuzhiyun
129*4882a593Smuzhiyun        sed -i 's|@MINIFI_LOG@|'${MINIFI_LOG}'|g' ${D}${sysconfdir}/default/volatiles/99_minifi
130*4882a593Smuzhiyun    fi
131*4882a593Smuzhiyun}
132*4882a593Smuzhiyun
133*4882a593Smuzhiyunpkg_postinst:${PN}() {
134*4882a593Smuzhiyun    if [ -z "$D" ]; then
135*4882a593Smuzhiyun        if type systemd-tmpfiles >/dev/null; then
136*4882a593Smuzhiyun            systemd-tmpfiles --create
137*4882a593Smuzhiyun        elif [ -e ${sysconfdir}/init.d/populate-volatile.sh ]; then
138*4882a593Smuzhiyun            ${sysconfdir}/init.d/populate-volatile.sh update
139*4882a593Smuzhiyun        fi
140*4882a593Smuzhiyun    fi
141*4882a593Smuzhiyun}
142*4882a593Smuzhiyun
143*4882a593SmuzhiyunCLEANBROKEN = "1"
144