diff --git a/textproc/kibana7/Makefile b/textproc/kibana7/Makefile index 458c16489f25..ad61fc51bb79 100644 --- a/textproc/kibana7/Makefile +++ b/textproc/kibana7/Makefile @@ -1,105 +1,108 @@ # Created by: Tom Judge PORTNAME= kibana PORTVERSION= 7.15.1 DISTVERSIONSUFFIX= -darwin-x86_64 +PORTREVISION= 1 CATEGORIES= textproc www MASTER_SITES= https://artifacts.elastic.co/downloads/kibana/ \ http://artifacts.elastic.co/downloads/kibana/ PKGNAMESUFFIX?= 7 DISTFILES= ${DISTNAME}${EXTRACT_SUFX} MAINTAINER= elastic@FreeBSD.org COMMENT= Browser based analytics and search interface to ElasticSearch LICENSE= APACHE20 BUILD_DEPENDS= node14>=14.17.6:www/node14 \ npm-node14>0:www/npm-node14 LIB_DEPENDS= libre2.so:devel/re2 \ libuv.so:devel/libuv RUN_DEPENDS= node14>=14.17.6:www/node14 USES= compiler:c++14-lang cpe python:build CPE_VENDOR= elastic 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= kibana6 WWWDIR= ${PREFIX}/www/${PORTNAME}${PKGNAMESUFFIX} SUB_FILES= pkg-deinstall SUB_LIST+= PKGNAMESUFFIX=${PKGNAMESUFFIX} \ PORTNAME=${PORTNAME} ####################################################################### # Set node-nan version here _NODE_NAN_VER= 2.15.0 # Set node-re version here _NODE_RE2_VER= 1.16.0 ####################################################################### _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 post-patch: ${FIND} -s ${WRKSRC}/node_modules -type d -empty -delete 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} "9" > ${_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/bin/node-gyp-bin/node-gyp configure \ --python=${PYTHON_CMD} \ --devdir=${_DEVDIR}) do-build: (cd ${_RE2DIR} && \ ${SETENV} HOME=${WRKDIR} \ ${LOCALBASE}/lib/node_modules/npm/bin/node-gyp-bin/node-gyp build \ --devdir=${_DEVDIR}) do-install: ${MKDIR} ${STAGEDIR}${WWWDIR} ${STAGEDIR}${ETCDIR} ${INSTALL_DATA} ${WRKSRC}/config/kibana.yml ${STAGEDIR}${ETCDIR}/kibana.yml.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/bin + ${LN} -s ${LOCALBASE}/bin/node ${STAGEDIR}${WWWDIR}/node/bin/node ${RM} ${STAGEDIR}${WWWDIR}/node_modules/re2/build/Release/re2.node ${INSTALL_LIB} ${_RE2DIR}/build/Release/re2.node \ ${STAGEDIR}${WWWDIR}/node_modules/re2/build/Release/re2.node post-install: ${ECHO} "@sample ${ETCDIR}/kibana.yml.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 ${WWWDIR}/plugins" >> ${TMPPLIST} .include diff --git a/textproc/kibana7/files/kibana.in b/textproc/kibana7/files/kibana.in index b61f10699d53..7b8fb1bbee65 100644 --- a/textproc/kibana7/files/kibana.in +++ b/textproc/kibana7/files/kibana.in @@ -1,80 +1,85 @@ #!/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_log:="/var/log/kibana.log"} : ${kibana_syslog_output_enable:="NO"} 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}" +_dpidfile="/var/run/${name}-daemon.pid" pidfile="/var/run/${name}.pid" +procname="${NODE}" command="/usr/sbin/daemon" -command_args="-f ${kibana_syslog_output_flags} -P ${pidfile} -t ${name} \ +command_args="-f ${kibana_syslog_output_flags} -P ${_dpidfile} -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/dist serve \ --config ${kibana_config} --log-file ${kibana_log} \ --xpack.reporting.enabled=false ${kibana_args}" kibana_start_precmd() { + if [ ! -e "${_dpidfile}" ]; then + install -m 0600 -o ${kibana_user} -g ${kibana_group} /dev/null ${_dpidfile} + fi if [ ! -e "${pidfile}" ]; then install -m 0600 -o ${kibana_user} -g ${kibana_group} /dev/null ${pidfile} 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/kibana7/files/patch-config_kibana.yml b/textproc/kibana7/files/patch-config_kibana.yml new file mode 100644 index 000000000000..88cac6039757 --- /dev/null +++ b/textproc/kibana7/files/patch-config_kibana.yml @@ -0,0 +1,11 @@ +--- config/kibana.yml.orig 2021-10-26 12:51:47 UTC ++++ config/kibana.yml +@@ -91,7 +91,7 @@ + #elasticsearch.logQueries: false + + # Specifies the path where Kibana creates the process ID file. +-#pid.file: /run/kibana/kibana.pid ++pid.file: /var/run/kibana/kibana.pid + + # Enables you to specify a file where Kibana stores log output. + #logging.dest: stdout diff --git a/textproc/kibana7/files/patch-src_setup__node__env_node__version__validator.js b/textproc/kibana7/files/patch-src_setup__node__env_node__version__validator.js index b92478b5acc4..1bf9870031e9 100644 --- a/textproc/kibana7/files/patch-src_setup__node__env_node__version__validator.js +++ b/textproc/kibana7/files/patch-src_setup__node__env_node__version__validator.js @@ -1,18 +1,18 @@ ---- src/setup_node_env/node_version_validator.js.orig 2020-11-15 15:12:50 UTC +--- src/setup_node_env/node_version_validator.js.orig 2021-10-07 21:19:53 UTC +++ src/setup_node_env/node_version_validator.js -@@ -25,11 +25,11 @@ var pkg = require('../../package.json'); // Note: This +@@ -14,11 +14,11 @@ var pkg = require('../../package.json'); // Note: This 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; // Validates current the NodeJS version compatibility when Kibana starts. +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 + '.'; // Actions to apply when validation fails: error report + exit. + 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); -} \ No newline at end of file +}