minifi-cpp_0.99.1.bb 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228
  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=4c5fc3bbd872752266d21f5f167ce297"
  9. SRC_URI = "git://github.com/apache/nifi-minifi-cpp.git;protocol=https;branch=main \
  10. git://github.com/martinmoene/expected-lite.git;protocol=https;branch=master;name=expected-lite;destsuffix=${S}/thirdparty/expected-lite-src \
  11. git://github.com/ericniebler/range-v3.git;protocol=https;branch=master;name=range-v3;destsuffix=${S}/thirdparty/range-v3-src \
  12. git://github.com/Neargye/magic_enum.git;protocol=https;branch=master;name=magic-enum;destsuffix=${S}/thirdparty/magic-enum-src \
  13. git://github.com/p-ranav/argparse.git;protocol=https;branch=master;name=argparse;destsuffix=${S}/thirdparty/argparse-src \
  14. git://github.com/gsl-lite/gsl-lite.git;protocol=https;branch=master;name=gsl-lite;destsuffix=${S}/thirdparty/gsl-lite-src \
  15. git://github.com/HowardHinnant/date.git;protocol=https;branch=master;name=date;destsuffix=${S}/thirdparty/date-src \
  16. git://github.com/chriskohlhoff/asio.git;protocol=https;branch=master;name=asio;destsuffix=${S}/thirdparty/asio-src \
  17. git://github.com/fmtlib/fmt.git;protocol=https;branch=master;name=fmt;destsuffix=${S}/thirdparty/fmt-src \
  18. git://github.com/gabime/spdlog.git;protocol=https;branch=v1.x;name=spdlog;destsuffix=${S}/thirdparty/spdlog-src \
  19. ${DEBIAN_MIRROR}/main/o/ossp-uuid/ossp-uuid_1.6.2.orig.tar.gz;name=ossp-uuid;subdir=${S}/thirdparty \
  20. https://download.libsodium.org/libsodium/releases/libsodium-1.0.19.tar.gz;name=libsodium;subdir=${S}/thirdparty \
  21. file://0001-Do-not-use-bundled-packages.patch \
  22. file://0002-Fix-osspuuid-build.patch \
  23. file://0003-Fix-libsodium-build.patch \
  24. file://0004-Pass-noline-flag-to-flex.patch \
  25. file://0005-generateVersion.sh-set-correct-buildrev.patch \
  26. file://0006-CMakeLists.txt-do-not-use-ccache.patch \
  27. file://0007-libsodium-aarch64-set-compiler-attributes-after-including-arm_.patch \
  28. file://systemd-volatile.conf \
  29. file://sysvinit-volatile.conf \
  30. "
  31. # minifi-cpp: 0.99.1
  32. SRCREV = "78d53ed154c71f1fabbaff0366d44ed3b32754e6"
  33. # expected-lite: 0.6.3
  34. SRCREV_expected-lite = "c8ffab649ba56e43c731b7017a69ddaebe2e1893"
  35. # range-v3: 0.12.0
  36. SRCREV_range-v3 = "a81477931a8aa2ad025c6bda0609f38e09e4d7ec"
  37. # magic-enum: 0.9.6
  38. SRCREV_magic-enum = "dd6a39d0ba1852cf06907e0f0573a2a10d23c2ad"
  39. # argparse: 3.0
  40. SRCREV_argparse = "af442b4da0cd7a07b56fa709bd16571889dc7fda"
  41. # gsl-lite: 0.41.0
  42. SRCREV_gsl-lite = "755ba124b54914e672737acace6a9314f59e8d6f"
  43. # date: 3.0.3
  44. SRCREV_date = "5bdb7e6f31fac909c090a46dbd9fea27b6e609a4"
  45. # asio: 1.29.0
  46. SRCREV_asio = "814f67e730e154547aea3f4d99f709cbdf1ea4a0"
  47. # fmt: 11.1.4
  48. SRCREV_fmt = "123913715afeb8a437e6388b4473fcc4753e1c9a"
  49. # spdlog: 1.15.1
  50. SRCREV_spdlog = "f355b3d58f7067eee1706ff3c801c2361011f3d5"
  51. SRCREV_FORMAT .= "_expected-lite_range-v3_magic-enum_argparse_gsl-lite_date_asio_fmt_spdlog"
  52. # ossp-uuid: 1.6.2
  53. SRC_URI[ossp-uuid.sha256sum] = "11a615225baa5f8bb686824423f50e4427acd3f70d394765bdff32801f0fd5b0"
  54. # libsodium: 1.0.19
  55. SRC_URI[libsodium.sha256sum] = "018d79fe0a045cca07331d37bd0cb57b2e838c51bc48fd837a1472e50068bbea"
  56. S = "${UNPACKDIR}/git"
  57. inherit pkgconfig cmake systemd
  58. DEPENDS = "virtual/crypt bison-native flex-native flex openssl curl zlib xz bzip2 yaml-cpp zstd lz4"
  59. OECMAKE_FIND_ROOT_PATH_MODE_PROGRAM = "BOTH"
  60. CXXFLAGS:append:toolchain-clang = " -Wno-error=c++11-narrowing-const-reference"
  61. LDFLAGS:append:riscv32 = " -latomic"
  62. EXTRA_OECMAKE = " \
  63. -DCMAKE_BUILD_TYPE=Release \
  64. -DHOST_SYS=${HOST_SYS} -DBUILD_SYS=${BUILD_SYS} \
  65. -DFLEX_TARGET_ARG_COMPILE_FLAGS='--noline' \
  66. -DBISON_TARGET_ARG_COMPILE_FLAGS='--no-lines --file-prefix-map=${S}=${TARGET_DBGSRC_DIR} --file-prefix-map=${B}=${TARGET_DBGSRC_DIR}' \
  67. -DENABLE_ENCRYPT_CONFIG=ON \
  68. -DENABLE_LUA_SCRIPTING=OFF \
  69. -DENABLE_PYTHON_SCRIPTING=OFF \
  70. -DENABLE_AWS=OFF \
  71. -DENABLE_AZURE=OFF \
  72. -DENABLE_GCP=OFF \
  73. -DENABLE_KUBERNETES=OFF \
  74. -DENABLE_MQTT=OFF \
  75. -DENABLE_GRAFANA_LOKI=OFF \
  76. -DENABLE_GRPC_FOR_LOKI=OFF \
  77. -DENABLE_ELASTICSEARCH=OFF \
  78. -DENABLE_SQL=OFF \
  79. -DENABLE_PROMETHEUS=OFF \
  80. -DENABLE_PROCFS=OFF \
  81. -DENABLE_SPLUNK=OFF \
  82. -DENABLE_OPC=OFF \
  83. -DENABLE_KAFKA=OFF \
  84. -DENABLE_BZIP2=ON \
  85. -DENABLE_LZMA=ON \
  86. -DSKIP_TESTS=ON \
  87. -DMINIFI_OPENSSL_SOURCE=SYSTEM \
  88. -DMINIFI_LIBCURL_SOURCE=SYSTEM \
  89. -DMINIFI_ZSTD_SOURCE=SYSTEM \
  90. -DMINIFI_BZIP2_SOURCE=SYSTEM \
  91. -DMINIFI_LIBXML2_SOURCE=SYSTEM \
  92. -DMINIFI_CATCH2_SOURCE=SYSTEM \
  93. -DMINIFI_ZLIB_SOURCE=SYSTEM \
  94. -DMINIFI_FMT_SOURCE=BUILD \
  95. -DMINIFI_SPDLOG_SOURCE=BUILD \
  96. -DFETCHCONTENT_SOURCE_DIR_GSL-LITE=${S}/thirdparty/gsl-lite-src \
  97. -DFETCHCONTENT_SOURCE_DIR_DATE_SRC=${S}/thirdparty/date-src \
  98. -DFETCHCONTENT_SOURCE_DIR_EXPECTED-LITE=${S}/thirdparty/expected-lite-src \
  99. -DFETCHCONTENT_SOURCE_DIR_RANGE-V3_SRC=${S}/thirdparty/range-v3-src \
  100. -DFETCHCONTENT_SOURCE_DIR_MAGIC_ENUM=${S}/thirdparty/magic-enum-src \
  101. -DFETCHCONTENT_SOURCE_DIR_ASIO=${S}/thirdparty/asio-src \
  102. -DFETCHCONTENT_SOURCE_DIR_ARGPARSE=${S}/thirdparty/argparse-src \
  103. -DFETCHCONTENT_SOURCE_DIR_FMT=${S}/thirdparty/fmt-src \
  104. -DFETCHCONTENT_SOURCE_DIR_SPDLOG=${S}/thirdparty/spdlog-src \
  105. ${@bb.utils.contains('DISTRO_FEATURES', 'systemd', '-DENABLE_SYSTEMD=ON', '-DENABLE_SYSTEMD=OFF', d)} \
  106. "
  107. PACKAGECONFIG ??= "libarchive expression-language"
  108. # rocksdb is not compatible with libc-musl:powerpc & armv5
  109. PACKAGECONFIG:remove:libc-musl:powerpc = "rocksdb"
  110. PACKAGECONFIG:remove:armv5 = "rocksdb"
  111. PACKAGECONFIG[libarchive] = "-DENABLE_LIBARCHIVE=ON,-DENABLE_LIBARCHIVE=OFF,libarchive"
  112. PACKAGECONFIG[expression-language] = "-DENABLE_EXPRESSION_LANGUAGE=ON, -DENABLE_EXPRESSION_LANGUAGE=OFF"
  113. PACKAGECONFIG[civetweb] = "-DENABLE_CIVET=ON -DMINIFI_CIVETWEB_SOURCE=SYSTEM,-DENABLE_CIVET=OFF,civetweb"
  114. PACKAGECONFIG[rocksdb] = "-DENABLE_ROCKSDB=ON -DBUILD_ROCKSDB=OFF -DMINIFI_ROCKSDB_SOURCE=SYSTEM,-DENABLE_ROCKSDB=OFF,rocksdb"
  115. SYSTEMD_PACKAGES = "minifi-cpp"
  116. SYSTEMD_SERVICE:${PN} = "minifi.service"
  117. SYSTEMD_AUTO_ENABLE = "disable"
  118. do_install[cleandirs] += "${WORKDIR}/minifi-install"
  119. PSEUDO_CONSIDER_PATHS .= ",${WORKDIR}/minifi-install"
  120. do_compile:prepend() {
  121. # Remove build host references
  122. sed -i -e 's,--sysroot=${STAGING_DIR_TARGET},,g' \
  123. -e 's|${DEBUG_PREFIX_MAP}||g' \
  124. -e 's:${RECIPE_SYSROOT_NATIVE}::g' \
  125. ${B}/libminifi/agent_version.cpp
  126. }
  127. do_install() {
  128. DESTDIR='${WORKDIR}/minifi-install' cmake_runcmake_build --target ${OECMAKE_TARGET_INSTALL}
  129. MINIFI_BIN=${bindir}
  130. MINIFI_HOME=${sysconfdir}/minifi
  131. MINIFI_RUN=${localstatedir}/lib/minifi
  132. MINIFI_LOG=${localstatedir}/log/minifi
  133. install -m 755 -d ${D}${MINIFI_BIN}
  134. install -m 755 -d ${D}${MINIFI_HOME}/conf
  135. install -m 755 -d ${D}${localstatedir}/lib/minifi
  136. for i in encrypt-config minifi minifi.sh minificontroller; do
  137. install -m 755 ${WORKDIR}/minifi-install/usr/bin/${i} ${D}${MINIFI_BIN}
  138. done
  139. for i in config.yml minifi-log.properties minifi.properties minifi-uid.properties; do
  140. install -m 644 ${WORKDIR}/minifi-install/usr/conf/${i} ${D}${MINIFI_HOME}/conf
  141. done
  142. install -m 755 -d ${D}${libdir}/minifi-extensions
  143. install -m 755 ${WORKDIR}/minifi-install/usr/bin/libcore-minifi.so ${D}${libdir}
  144. install -m 755 ${WORKDIR}/minifi-install/usr/extensions/*.so ${D}${libdir}/minifi-extensions
  145. install -m 755 -d ${D}${libexecdir}/minifi-python
  146. install -m 755 -d ${D}${libexecdir}/minifi-python-examples
  147. cp -rf ${WORKDIR}/minifi-install/usr/minifi-python/* ${D}${libexecdir}/minifi-python/
  148. cp -rf ${WORKDIR}/minifi-install/usr/minifi-python-examples/* ${D}${libexecdir}/minifi-python-examples/
  149. sed -i "s|MINIFI_HOME=.*|MINIFI_HOME=${MINIFI_HOME}|g" ${D}${MINIFI_BIN}/minifi.sh
  150. sed -i "s|bin_dir=.*|bin_dir=${MINIFI_BIN}|g" ${D}${MINIFI_BIN}/minifi.sh
  151. sed -i "s|#appender.rolling.directory=.*|appender.rolling.directory=${MINIFI_LOG}|g" \
  152. ${D}${MINIFI_HOME}/conf/minifi-log.properties
  153. sed -i "s|nifi.provenance.repository.directory.default=.*|nifi.provenance.repository.directory.default=${MINIFI_RUN}/provenance_repository|g" \
  154. ${D}${MINIFI_HOME}/conf/minifi.properties
  155. sed -i "s|nifi.flowfile.repository.directory.default=.*|nifi.flowfile.repository.directory.default=${MINIFI_RUN}/flowfile_repository|g" \
  156. ${D}${MINIFI_HOME}/conf/minifi.properties
  157. sed -i "s|nifi.database.content.repository.directory.default=.*|nifi.database.content.repository.directory.default=${MINIFI_RUN}/content_repository|g" \
  158. ${D}${MINIFI_HOME}/conf/minifi.properties
  159. sed -i "s|nifi.flow.configuration.file=.*|nifi.flow.configuration.file=${MINIFI_HOME}/conf/config.yml|g" \
  160. ${D}${MINIFI_HOME}/conf/minifi.properties
  161. sed -i "s|nifi.python.processor.dir=.*|nifi.python.processor.dir=${libexecdir}/minifi-python|g" \
  162. ${D}${MINIFI_HOME}/conf/minifi.properties
  163. sed -i "s|nifi.extension.path=.*|nifi.extension.path=${libdir}/minifi-extensions/*|g" \
  164. ${D}${MINIFI_HOME}/conf/minifi.properties
  165. if ${@bb.utils.contains('DISTRO_FEATURES','systemd','true','false',d)}; then
  166. install -m 755 -d ${D}${sysconfdir}/tmpfiles.d
  167. install -m 644 ${UNPACKDIR}/systemd-volatile.conf ${D}${sysconfdir}/tmpfiles.d/minifi.conf
  168. sed -i "s|@MINIFI_LOG@|${MINIFI_LOG}|g" ${D}${sysconfdir}/tmpfiles.d/minifi.conf
  169. install -m 755 -d ${D}${systemd_system_unitdir}
  170. install -m 644 ${WORKDIR}/minifi-install/usr/bin/minifi.service ${D}${systemd_system_unitdir}
  171. sed -i -e "s|^Environment=.*|Environment=MINIFI_HOME=${MINIFI_HOME}|g" ${D}${systemd_system_unitdir}/minifi.service
  172. sed -i -e "s|^ExecStart=.*|ExecStart=${MINIFI_BIN}/minifi|g" ${D}${systemd_system_unitdir}/minifi.service
  173. fi
  174. if ${@bb.utils.contains('DISTRO_FEATURES', 'sysvinit', 'true', 'false', d)}; then
  175. install -d ${D}${sysconfdir}/default/volatiles
  176. install -m 0644 ${UNPACKDIR}/sysvinit-volatile.conf ${D}${sysconfdir}/default/volatiles/99_minifi
  177. sed -i "s|@MINIFI_LOG@|${MINIFI_LOG}|g" ${D}${sysconfdir}/default/volatiles/99_minifi
  178. fi
  179. }
  180. pkg_postinst:${PN}() {
  181. if [ -z "$D" ]; then
  182. if type systemd-tmpfiles >/dev/null; then
  183. systemd-tmpfiles --create
  184. elif [ -e ${sysconfdir}/init.d/populate-volatile.sh ]; then
  185. ${sysconfdir}/init.d/populate-volatile.sh update
  186. fi
  187. fi
  188. }
  189. FILES:${PN}-dev = ""
  190. FILES:${PN} += "${libdir}/libcore-minifi.so \
  191. ${libdir}/minifi-extensions \
  192. ${libexecdir}/minifi-python \
  193. ${libexecdir}/minifi-python-examples \
  194. "
  195. INSANE_SKIP:${PN} += "dev-deps"
  196. CLEANBROKEN = "1"