diff --git a/textproc/kibana8/Makefile b/textproc/kibana8/Makefile index 8c3ff31ad4de..2ca998315e59 100644 --- a/textproc/kibana8/Makefile +++ b/textproc/kibana8/Makefile @@ -1,148 +1,159 @@ PORTNAME= kibana DISTVERSION= 8.19.12 DISTVERSIONSUFFIX= -linux-x86_64 -PORTREVISION= 1 +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 +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= kibana9* +CONFLICTS= ${PORTNAME}9* WWWDIR= ${PREFIX}/www/${PORTNAME}${PKGNAMESUFFIX} PORTSCOUT= limit:^8 SUB_FILES= pkg-deinstall pkg-message -SUB_LIST+= BINDIR=${PREFIX}/bin \ +SUB_LIST= BINDIR=${PREFIX}/bin \ PKGNAMESUFFIX=${PKGNAMESUFFIX} \ - PORTNAME=${PORTNAME} + 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 + ${WRKSRC}/config/kibana.yml cd ${_RE2DIR} && ${PATCH} -p0 < ${_RE2PATCHES} ${REINPLACE_CMD} -e "s|%%PREFIX%%|${PREFIX}|g" \ - -e "s|%%DEVDIR%%|${_DEVDIR}|g" ${_RE2DIR}/binding.gyp + -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(www,www) ${WWWDIR}/data" >> ${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/kibana8/files/kibana.in b/textproc/kibana8/files/kibana.in index 5e9700143016..f62ffa8bf9d9 100644 --- a/textproc/kibana8/files/kibana.in +++ b/textproc/kibana8/files/kibana.in @@ -1,83 +1,83 @@ #!/bin/sh # PROVIDE: kibana # REQUIRE: DAEMON # BEFORE: LOGIN # KEYWORD: shutdown . /etc/rc.subr name=kibana rcvar=kibana_enable load_rc_config $name : ${kibana_enable:="NO"} : ${kibana_config:="%%ETCDIR%%/kibana.yml"} -: ${kibana_user:="www"} -: ${kibana_group:="www"} +: ${kibana_user:="%%KIBANAUSER%%"} +: ${kibana_group:="%%KIBANAGROUP%%"} : ${kibana_log:="/var/log/kibana.log"} : ${kibana_syslog_output_enable:="NO"} : ${kibana_chdir:="%%WWWDIR%%/data"} start_precmd="kibana_start_precmd" reload_cmd="kibana_reload_cmd" extra_commands="reload" if checkyesno kibana_syslog_output_enable; then if [ -n "${kibana_syslog_output_tag}" ]; then kibana_syslog_output_flags="-T ${kibana_syslog_output_tag}" else kibana_syslog_output_flags="-T ${name}" fi if [ -n "${kibana_syslog_output_priority}" ]; then kibana_syslog_output_flags="${kibana_syslog_output_flags} -s ${kibana_syslog_output_priority}" fi if [ -n "${kibana_syslog_output_facility}" ]; then kibana_syslog_output_flags="${kibana_syslog_output_flags} -l ${kibana_syslog_output_facility}" fi fi NODE="%%LOCALBASE%%/bin/node" required_files="${kibana_config}" _piddir="/var/run/${name}" pidfile="${_piddir}/${name}.pid" procname="${NODE}" command="/usr/sbin/daemon" command_args="-f ${kibana_syslog_output_flags} -p ${pidfile} -t ${name} \ /usr/bin/env BABEL_DISABLE_CACHE=1 NODE_ENV=production ${kibana_env} \ ${NODE} --no-warnings --max-http-header-size=65536 \ %%WWWDIR%%/src/cli/kibana/dist.js serve \ --config ${kibana_config} --log-file ${kibana_log} \ --xpack.reporting.enabled=false ${kibana_args}" kibana_start_precmd() { if [ ! -e "${_piddir}" ]; then install -d -m 0750 -o ${kibana_user} -g ${kibana_group} ${_piddir} fi if [ ! -f ${kibana_log} ]; then install -o ${kibana_user} -g ${kibana_group} -m 640 /dev/null ${kibana_log} fi if [ ! -d %%WWWDIR%%/optimize ]; then install -d -o ${kibana_user} -g ${kibana_group} %%WWWDIR%%/optimize else # We may have installed a plugin as root which will cause files in here # to be owned by root:wheel. Fix with a chown. chown -R ${kibana_user}:${kibana_group} %%WWWDIR%%/optimize fi } kibana_reload_cmd() { if [ -z "$rc_pid" ]; then _run_rc_notrunning return 1 else pkill -HUP -P ${rc_pid} fi } run_rc_command "$1" diff --git a/textproc/kibana8/files/patch-config_kibana.yml b/textproc/kibana8/files/patch-config_kibana.yml index 4fd4d0a02634..cb9644cbe50d 100644 --- a/textproc/kibana8/files/patch-config_kibana.yml +++ b/textproc/kibana8/files/patch-config_kibana.yml @@ -1,15 +1,15 @@ ---- config/kibana.yml.orig 2023-12-25 14:26:21 UTC +--- config/kibana.yml.orig 2026-02-24 03:27:05 UTC +++ config/kibana.yml -@@ -122,10 +122,10 @@ +@@ -139,10 +139,10 @@ # =================== System: Other =================== # The path where Kibana stores persistent data not saved in Elasticsearch. Defaults to data -#path.data: data +path.data: %%WWWDIR%%/data # Specifies the path where Kibana creates the process ID file. -#pid.file: /run/kibana/kibana.pid +pid.file: /var/run/kibana/kibana.pid # Set the interval in milliseconds to sample system and process performance # metrics. Minimum is 100ms. Defaults to 5000ms. diff --git a/textproc/kibana8/files/patch-config_node.options b/textproc/kibana8/files/patch-config_node.options index 051087956ccb..33a1ce36a0f2 100644 --- a/textproc/kibana8/files/patch-config_node.options +++ b/textproc/kibana8/files/patch-config_node.options @@ -1,14 +1,17 @@ ---- config/node.options.orig 2023-12-25 14:25:19 UTC +--- config/node.options.orig 2026-02-24 03:27:05 UTC +++ config/node.options -@@ -6,10 +6,7 @@ +@@ -6,13 +6,10 @@ #--max-old-space-size=4096 ## do not terminate process on unhandled promise rejection - --unhandled-rejections=warn +--unhandled-rejections=warn ## restore < Node 16 default DNS lookup behavior --dns-result-order=ipv4first - -## enable OpenSSL 3 legacy provider ---openssl-legacy-provider + + ## disable ES modules until stable + --no-experimental-require-module diff --git a/textproc/kibana8/files/patch-node__modules__kbn_setup-node-env_node__version__validator.js b/textproc/kibana8/files/patch-node__modules__kbn_setup-node-env_node__version__validator.js index 16b6faf3b5c9..11ff8ab0e843 100644 --- a/textproc/kibana8/files/patch-node__modules__kbn_setup-node-env_node__version__validator.js +++ b/textproc/kibana8/files/patch-node__modules__kbn_setup-node-env_node__version__validator.js @@ -1,18 +1,16 @@ ---- node_modules/@kbn/setup-node-env/node_version_validator.js.orig 2025-12-30 21:41:35 UTC +--- node_modules/@kbn/setup-node-env/node_version_validator.js.orig 2026-02-24 03:27:07 UTC +++ node_modules/@kbn/setup-node-env/node_version_validator.js -@@ -21,13 +21,13 @@ var requiredVersion = rawRequiredVersion ? 'v' + rawRe +@@ -21,11 +21,11 @@ var requiredVersion = rawRequiredVersion ? 'v' + rawRe var currentVersion = process && process.version || null; var rawRequiredVersion = pkg && pkg.engines && pkg.engines.node || null; var requiredVersion = rawRequiredVersion ? 'v' + rawRequiredVersion : rawRequiredVersion; -var isVersionValid = !!currentVersion && !!requiredVersion && currentVersion === requiredVersion; +var isVersionValid = !!currentVersion && !!requiredVersion && currentVersion >= 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); - process.exit(1); - diff --git a/textproc/kibana8/files/pkg-deinstall.in b/textproc/kibana8/files/pkg-deinstall.in index 0699ab559805..e921ed650bfd 100644 --- a/textproc/kibana8/files/pkg-deinstall.in +++ b/textproc/kibana8/files/pkg-deinstall.in @@ -1,20 +1,20 @@ #!/bin/sh case "$2" in POST-DEINSTALL) if [ -d %%WWWDIR%%/optimize ]; then /usr/bin/find %%WWWDIR%%/optimize/ -delete fi cat <