diff --git a/textproc/kibana91/Makefile b/textproc/kibana91/Makefile new file mode 100644 index 000000000000..2ca998315e59 --- /dev/null +++ b/textproc/kibana91/Makefile @@ -0,0 +1,159 @@ +PORTNAME= kibana +DISTVERSION= 8.19.12 +DISTVERSIONSUFFIX= -linux-x86_64 +PORTREVISION= 2 +CATEGORIES= textproc www +MASTER_SITES= https://artifacts.elastic.co/downloads/kibana/ \ + LOCAL/vvd/elastic +PKGNAMESUFFIX= 8 +DISTFILES= ${DISTNAME}${EXTRACT_SUFX} + +MAINTAINER= elastic@FreeBSD.org +COMMENT= Browser-based analytics and search interface to Elasticsearch (${DISTVERSION:R:R}.x version) +WWW= https://www.elastic.co/products/kibana + +LICENSE= APACHE20 + +BUILD_DEPENDS= npm-node${NODEJS_VERSION}>=11.10.0:www/npm-node${NODEJS_VERSION} +LIB_DEPENDS= libre2.so:devel/re2 \ + libuv.so:devel/libuv + +USES= compiler:c++17-lang cpe nodejs:24,build,run python:build +CPE_VENDOR= elastic +USE_CXXSTD= c++17 +USE_GITHUB= nodefault +GH_TUPLE= nodejs:nan:v${_NODE_NAN_VER}:node_nan \ + uhop:node-re2:${_NODE_RE2_VER}:node_re2 +USE_RC_SUBR= ${PORTNAME} + +CONFLICTS= ${PORTNAME}9* + +WWWDIR= ${PREFIX}/www/${PORTNAME}${PKGNAMESUFFIX} + +PORTSCOUT= limit:^8 + +SUB_FILES= pkg-deinstall pkg-message +SUB_LIST= BINDIR=${PREFIX}/bin \ + PKGNAMESUFFIX=${PKGNAMESUFFIX} \ + PORTNAME=${PORTNAME} \ + KIBANAUSER=${KIBANAUSER} \ + KIBANAGROUP=${KIBANAGROUP} + +WRKSRC= ${WRKDIR}/${PORTNAME}-${DISTVERSION} + +KIBANAUSER?= www +KIBANAGROUP?= ${KIBANAUSER} +.if ${KIBANAUSER} == www +USERS= ${KIBANAUSER} +.endif +.if ${KIBANAGROUP} == www +GROUPS= ${KIBANAGROUP} +.endif + +BINS= kibana-encryption-keys kibana-health-gateway kibana-keystore \ + kibana-plugin kibana-setup kibana-verification-code + +####################################################################### +# Set node-nan version here +_NODE_NAN_VER= 2.25.0 +# Set node-re version here +_NODE_RE2_VER= 1.23.3 +####################################################################### + +_NODECMD= ${LOCALBASE}/bin/node --version +_DEVDIR:= ${WRKDIR}/.devdir + +_RE2DIR= ${WRKDIR}/node-re2-${_NODE_RE2_VER} + +# Extra patch files must be updated whenever node-re2 changes +_RE2PATCHES= ${PATCHDIR}/extra-node-re2-binding-gyp.patch + +# Directories to prune +_DIR2DEL= node_modules + +post-patch: +.for _dirdel in ${_DIR2DEL} + ${FIND} -s ${WRKSRC}/${_dirdel} -type d -empty -delete +.endfor + ${REINPLACE_CMD} -e "s|%%WWWDIR%%|${WWWDIR}|g" \ + ${WRKSRC}/config/kibana.yml + cd ${_RE2DIR} && ${PATCH} -p0 < ${_RE2PATCHES} + ${REINPLACE_CMD} -e "s|%%PREFIX%%|${PREFIX}|g" \ + -e "s|%%DEVDIR%%|${_DEVDIR}|g" ${_RE2DIR}/binding.gyp + +pre-configure: + ( \ + _NODEVER=$$(${_NODECMD} | ${SED} -n 's|^v\(.*\)|\1|p') && \ + ${MKDIR} ${_DEVDIR}/$${_NODEVER}/include && \ + ${RLN} ${LOCALBASE}/include/node ${_DEVDIR}/$${_NODEVER}/include/node && \ + ${ECHO} "10" > ${_DEVDIR}/$${_NODEVER}/installVersion \ + ) + +do-configure: + ${MKDIR} ${_DEVDIR}/nan + (cd ${WRKDIR}/nan-${_NODE_NAN_VER} && ${COPYTREE_SHARE} . \ + ${_DEVDIR}/nan \ + "! ( -name \.* -or -path *\/test\/* -or -name test )") + (cd ${_RE2DIR} && \ + ${SETENV} HOME=${WRKDIR} \ + ${LOCALBASE}/lib/node_modules/npm/node_modules/.bin/node-gyp configure \ + --python=${PYTHON_CMD} \ + --nodedir=${LOCALBASE} \ + --devdir=${_DEVDIR}) + +do-build: + (cd ${_RE2DIR} && \ + ${SETENV} HOME=${WRKDIR} \ + ${LOCALBASE}/lib/node_modules/npm/node_modules/.bin/node-gyp build \ + --devdir=${_DEVDIR}) + +do-install: + ${MKDIR} ${STAGEDIR}${WWWDIR} ${STAGEDIR}${ETCDIR} + ${INSTALL_DATA} ${WRKSRC}/config/kibana.yml ${STAGEDIR}${ETCDIR}/kibana.yml.sample + ${INSTALL_DATA} ${WRKSRC}/config/node.options ${STAGEDIR}${ETCDIR}/node.options.sample + (cd ${WRKSRC} && \ + ${RM} -r config node optimize && \ + ${COPYTREE_SHARE} . ${STAGEDIR}${WWWDIR} && \ + ${COPYTREE_BIN} bin ${STAGEDIR}${WWWDIR}) + ${INSTALL} -lrs ${STAGEDIR}${ETCDIR} ${STAGEDIR}${WWWDIR}/config + ${MKDIR} ${STAGEDIR}${WWWDIR}/node/glibc-217/bin + ${LN} -s ${LOCALBASE}/bin/node ${STAGEDIR}${WWWDIR}/node/glibc-217/bin/node + ${RM} ${STAGEDIR}${WWWDIR}/node_modules/re2/build/Release/re2.node + ${MKDIR} ${STAGEDIR}${WWWDIR}/node_modules/re2/build/Release + ${INSTALL_LIB} ${_RE2DIR}/build/Release/re2.node \ + ${STAGEDIR}${WWWDIR}/node_modules/re2/build/Release/re2.node +.for f in ${BINS} + ${RLN} ${STAGEDIR}${WWWDIR}/bin/${f} ${STAGEDIR}${PREFIX}/bin/${f} + ${ECHO} "bin/${f}" >> ${TMPPLIST} +.endfor + +post-install: + ${ECHO} "@sample ${ETCDIR}/kibana.yml.sample" >> ${TMPPLIST} + ${ECHO} "@sample ${ETCDIR}/node.options.sample" >> ${TMPPLIST} + ${FIND} -s ${STAGEDIR}${WWWDIR} -not -type d | ${SORT} | \ + ${SED} -e 's#^${STAGEDIR}${PREFIX}/##' >> ${TMPPLIST} + ${ECHO} "@dir(${KIBANAUSER},${KIBANAGROUP}) ${WWWDIR}/data" >> ${TMPPLIST} + ${ECHO} "@dir ${WWWDIR}/plugins" >> ${TMPPLIST} + ${ECHO} "@dir ${WWWDIR}/logs" >> ${TMPPLIST} + ${ECHO} "@dir ${WWWDIR}/src/platform/packages/private/analytics" >> ${TMPPLIST} + ${ECHO} "@dir ${WWWDIR}/src/platform/packages/private/kbn-reporting" >> ${TMPPLIST} + ${ECHO} "@dir ${WWWDIR}/src/platform/packages/private/shared-ux/page" >> ${TMPPLIST} + ${ECHO} "@dir ${WWWDIR}/src/platform/packages/shared/content-management" >> ${TMPPLIST} + ${ECHO} "@dir ${WWWDIR}/src/platform/packages/shared/kbn-management/settings" >> ${TMPPLIST} + ${ECHO} "@dir ${WWWDIR}/src/platform/packages/shared/react" >> ${TMPPLIST} + ${ECHO} "@dir ${WWWDIR}/src/platform/packages/shared/serverless" >> ${TMPPLIST} + ${ECHO} "@dir ${WWWDIR}/src/platform/packages/shared/shared-ux/card" >> ${TMPPLIST} + ${ECHO} "@dir ${WWWDIR}/src/platform/packages/shared/shared-ux/file" >> ${TMPPLIST} + ${ECHO} "@dir ${WWWDIR}/src/platform/packages/shared/shared-ux/link" >> ${TMPPLIST} + ${ECHO} "@dir ${WWWDIR}/src/platform/packages/shared/shared-ux/page" >> ${TMPPLIST} + ${ECHO} "@dir ${WWWDIR}/src/platform/packages/shared/shared-ux/prompt" >> ${TMPPLIST} + ${ECHO} "@dir ${WWWDIR}/src/platform/plugins/private" >> ${TMPPLIST} + ${ECHO} "@dir ${WWWDIR}/src/platform/plugins/shared" >> ${TMPPLIST} + ${ECHO} "@dir ${WWWDIR}/x-pack/platform/packages/private" >> ${TMPPLIST} + ${ECHO} "@dir ${WWWDIR}/x-pack/platform/packages/shared" >> ${TMPPLIST} + ${ECHO} "@dir ${WWWDIR}/x-pack/platform/plugins/private" >> ${TMPPLIST} + ${ECHO} "@dir ${WWWDIR}/x-pack/solutions/observability/packages" >> ${TMPPLIST} + ${ECHO} "@dir ${WWWDIR}/x-pack/solutions/search/plugins" >> ${TMPPLIST} + ${ECHO} "@dir ${WWWDIR}/x-pack/solutions/security/packages" >> ${TMPPLIST} + +.include diff --git a/textproc/kibana91/distinfo b/textproc/kibana91/distinfo new file mode 100644 index 000000000000..a2d61e8c8529 --- /dev/null +++ b/textproc/kibana91/distinfo @@ -0,0 +1,7 @@ +TIMESTAMP = 1773083564 +SHA256 (kibana-8.19.12-linux-x86_64.tar.gz) = 1e68ef90d8e763473c77cbf4fcce8605c7e7b6b619d1eb6047d2047e3ed9d422 +SIZE (kibana-8.19.12-linux-x86_64.tar.gz) = 383085746 +SHA256 (nodejs-nan-v2.25.0_GH0.tar.gz) = 26c710caffec40676e48af09680d7b6131103a9a7e56f7522cc2edfe70cda33d +SIZE (nodejs-nan-v2.25.0_GH0.tar.gz) = 111978 +SHA256 (uhop-node-re2-1.23.3_GH0.tar.gz) = 0037a38f6f58247af93a1f7327cd4d9e0a13a55dc54722d8ab697b8c134865e2 +SIZE (uhop-node-re2-1.23.3_GH0.tar.gz) = 53397 diff --git a/textproc/kibana91/files/extra-node-re2-binding-gyp.patch b/textproc/kibana91/files/extra-node-re2-binding-gyp.patch new file mode 100644 index 000000000000..1b3e7a978287 --- /dev/null +++ b/textproc/kibana91/files/extra-node-re2-binding-gyp.patch @@ -0,0 +1,131 @@ +--- binding.gyp.orig 2026-03-09 15:20:39.294950000 -0400 ++++ binding.gyp 2026-03-09 15:23:16.005750000 -0400 +@@ -16,107 +16,6 @@ + "lib/split.cc", + "lib/to_string.cc", + "lib/set.cc", +- "vendor/re2/re2/bitmap256.cc", +- "vendor/re2/re2/bitstate.cc", +- "vendor/re2/re2/compile.cc", +- "vendor/re2/re2/dfa.cc", +- "vendor/re2/re2/filtered_re2.cc", +- "vendor/re2/re2/mimics_pcre.cc", +- "vendor/re2/re2/nfa.cc", +- "vendor/re2/re2/onepass.cc", +- "vendor/re2/re2/parse.cc", +- "vendor/re2/re2/perl_groups.cc", +- "vendor/re2/re2/prefilter.cc", +- "vendor/re2/re2/prefilter_tree.cc", +- "vendor/re2/re2/prog.cc", +- "vendor/re2/re2/re2.cc", +- "vendor/re2/re2/regexp.cc", +- "vendor/re2/re2/set.cc", +- "vendor/re2/re2/simplify.cc", +- "vendor/re2/re2/tostring.cc", +- "vendor/re2/re2/unicode_casefold.cc", +- "vendor/re2/re2/unicode_groups.cc", +- "vendor/re2/util/pcre.cc", +- "vendor/re2/util/rune.cc", +- "vendor/re2/util/strutil.cc", +- "vendor/abseil-cpp/absl/base/internal/cycleclock.cc", +- "vendor/abseil-cpp/absl/base/internal/low_level_alloc.cc", +- "vendor/abseil-cpp/absl/base/internal/raw_logging.cc", +- "vendor/abseil-cpp/absl/base/internal/spinlock.cc", +- "vendor/abseil-cpp/absl/base/internal/spinlock_wait.cc", +- "vendor/abseil-cpp/absl/base/internal/strerror.cc", +- "vendor/abseil-cpp/absl/base/internal/sysinfo.cc", +- "vendor/abseil-cpp/absl/base/internal/thread_identity.cc", +- "vendor/abseil-cpp/absl/base/internal/throw_delegate.cc", +- "vendor/abseil-cpp/absl/base/internal/unscaledcycleclock.cc", +- "vendor/abseil-cpp/absl/container/internal/hashtablez_sampler.cc", +- "vendor/abseil-cpp/absl/container/internal/hashtablez_sampler_force_weak_definition.cc", +- "vendor/abseil-cpp/absl/container/internal/raw_hash_set.cc", +- "vendor/abseil-cpp/absl/debugging/internal/borrowed_fixup_buffer.cc", +- "vendor/abseil-cpp/absl/debugging/internal/decode_rust_punycode.cc", +- "vendor/abseil-cpp/absl/debugging/internal/demangle.cc", +- "vendor/abseil-cpp/absl/debugging/internal/demangle_rust.cc", +- "vendor/abseil-cpp/absl/debugging/internal/address_is_readable.cc", +- "vendor/abseil-cpp/absl/debugging/internal/elf_mem_image.cc", +- "vendor/abseil-cpp/absl/debugging/internal/examine_stack.cc", +- "vendor/abseil-cpp/absl/debugging/internal/utf8_for_code_point.cc", +- "vendor/abseil-cpp/absl/debugging/internal/vdso_support.cc", +- "vendor/abseil-cpp/absl/debugging/stacktrace.cc", +- "vendor/abseil-cpp/absl/debugging/symbolize.cc", +- "vendor/abseil-cpp/absl/flags/commandlineflag.cc", +- "vendor/abseil-cpp/absl/flags/internal/commandlineflag.cc", +- "vendor/abseil-cpp/absl/flags/internal/flag.cc", +- "vendor/abseil-cpp/absl/flags/internal/private_handle_accessor.cc", +- "vendor/abseil-cpp/absl/flags/internal/program_name.cc", +- "vendor/abseil-cpp/absl/flags/marshalling.cc", +- "vendor/abseil-cpp/absl/flags/reflection.cc", +- "vendor/abseil-cpp/absl/flags/usage_config.cc", +- "vendor/abseil-cpp/absl/hash/internal/city.cc", +- "vendor/abseil-cpp/absl/hash/internal/hash.cc", +- "vendor/abseil-cpp/absl/log/internal/globals.cc", +- "vendor/abseil-cpp/absl/log/internal/log_format.cc", +- "vendor/abseil-cpp/absl/log/internal/log_message.cc", +- "vendor/abseil-cpp/absl/log/internal/log_sink_set.cc", +- "vendor/abseil-cpp/absl/log/internal/nullguard.cc", +- "vendor/abseil-cpp/absl/log/internal/proto.cc", +- "vendor/abseil-cpp/absl/log/internal/structured_proto.cc", +- "vendor/abseil-cpp/absl/log/globals.cc", +- "vendor/abseil-cpp/absl/log/log_sink.cc", +- "vendor/abseil-cpp/absl/numeric/int128.cc", +- "vendor/abseil-cpp/absl/strings/ascii.cc", +- "vendor/abseil-cpp/absl/strings/charconv.cc", +- "vendor/abseil-cpp/absl/strings/internal/charconv_bigint.cc", +- "vendor/abseil-cpp/absl/strings/internal/charconv_parse.cc", +- "vendor/abseil-cpp/absl/strings/internal/memutil.cc", +- "vendor/abseil-cpp/absl/strings/internal/str_format/arg.cc", +- "vendor/abseil-cpp/absl/strings/internal/str_format/bind.cc", +- "vendor/abseil-cpp/absl/strings/internal/str_format/extension.cc", +- "vendor/abseil-cpp/absl/strings/internal/str_format/float_conversion.cc", +- "vendor/abseil-cpp/absl/strings/internal/str_format/output.cc", +- "vendor/abseil-cpp/absl/strings/internal/str_format/parser.cc", +- "vendor/abseil-cpp/absl/strings/internal/utf8.cc", +- "vendor/abseil-cpp/absl/strings/match.cc", +- "vendor/abseil-cpp/absl/strings/numbers.cc", +- "vendor/abseil-cpp/absl/strings/str_cat.cc", +- "vendor/abseil-cpp/absl/strings/str_split.cc", +- "vendor/abseil-cpp/absl/synchronization/internal/create_thread_identity.cc", +- "vendor/abseil-cpp/absl/synchronization/internal/graphcycles.cc", +- "vendor/abseil-cpp/absl/synchronization/internal/futex_waiter.cc", +- "vendor/abseil-cpp/absl/synchronization/internal/kernel_timeout.cc", +- "vendor/abseil-cpp/absl/synchronization/internal/per_thread_sem.cc", +- "vendor/abseil-cpp/absl/synchronization/internal/waiter_base.cc", +- "vendor/abseil-cpp/absl/synchronization/mutex.cc", +- "vendor/abseil-cpp/absl/time/clock.cc", +- "vendor/abseil-cpp/absl/time/duration.cc", +- "vendor/abseil-cpp/absl/time/internal/cctz/src/time_zone_fixed.cc", +- "vendor/abseil-cpp/absl/time/internal/cctz/src/time_zone_if.cc", +- "vendor/abseil-cpp/absl/time/internal/cctz/src/time_zone_impl.cc", +- "vendor/abseil-cpp/absl/time/internal/cctz/src/time_zone_info.cc", +- "vendor/abseil-cpp/absl/time/internal/cctz/src/time_zone_libc.cc", +- "vendor/abseil-cpp/absl/time/internal/cctz/src/time_zone_lookup.cc", +- "vendor/abseil-cpp/absl/time/internal/cctz/src/time_zone_posix.cc", +- "vendor/abseil-cpp/absl/time/internal/cctz/src/zone_info_source.cc", +- "vendor/abseil-cpp/absl/time/time.cc", + ], + "cflags": [ + "-std=c++2a", +@@ -125,7 +24,7 @@ + "-Wno-sign-compare", + "-Wno-unused-parameter", + "-Wno-missing-field-initializers", +- "-Wno-cast-function-type", ++ "-Wno-bad-function-cast", + "-O3", + "-g" + ], +@@ -134,9 +33,8 @@ + "NOMINMAX" + ], + "include_dirs": [ +- "= requiredVersion; + + // Validates current the NodeJS version compatibility when Kibana starts. + if (!isVersionValid) { +- var errorMessage = 'Kibana does not support the current Node.js version ' + currentVersion + '. Please use Node.js ' + requiredVersion + '.'; ++ var errorMessage = 'Kibana does not support the current Node.js version ' + currentVersion + '. Please use Node.js >= ' + requiredVersion + '.'; + + // Actions to apply when validation fails: error report + exit. + console.error(errorMessage); diff --git a/textproc/kibana91/files/pkg-deinstall.in b/textproc/kibana91/files/pkg-deinstall.in new file mode 100644 index 000000000000..e921ed650bfd --- /dev/null +++ b/textproc/kibana91/files/pkg-deinstall.in @@ -0,0 +1,20 @@ +#!/bin/sh + +case "$2" in +POST-DEINSTALL) + if [ -d %%WWWDIR%%/optimize ]; then + /usr/bin/find %%WWWDIR%%/optimize/ -delete + fi + + cat <