Skip to content

Commit

Permalink
textproc/opensearch-dashboards13: New port: Visualization dashboards …
Browse files Browse the repository at this point in the history
…for OpenSearch (1.3.x branch)

OpenSearch Dashboards is the default visualization tool for data in OpenSearch.
It also serves as a user interface for many of the OpenSearch plugins,
including security, alerting, Index State Management, SQL, and more.
  • Loading branch information
alonsobsd committed Dec 7, 2022
1 parent b698323 commit 53ec298
Show file tree
Hide file tree
Showing 10 changed files with 246 additions and 0 deletions.
1 change: 1 addition & 0 deletions textproc/Makefile
Expand Up @@ -505,6 +505,7 @@
SUBDIR += opensearch
SUBDIR += opensearch13
SUBDIR += opensearch-dashboards
SUBDIR += opensearch-dashboards13
SUBDIR += opensp
SUBDIR += openvanilla-framework
SUBDIR += or-aspell
Expand Down
82 changes: 82 additions & 0 deletions textproc/opensearch-dashboards13/Makefile
@@ -0,0 +1,82 @@
PORTNAME= opensearch-dashboards
DISTVERSION= 1.3.6
DISTVERSIONSUFFIX= -linux-x64
CATEGORIES= textproc www
MASTER_SITES= https://artifacts.opensearch.org/releases/bundle/${PORTNAME}/${DISTVERSION}/
PKGNAMESUFFIX= 13

MAINTAINER= opensearch@FreeBSD.org
COMMENT?= Visualization dashboards for OpenSearch
WWW= https://opensearch.org

LICENSE= APACHE20
LICENSE_FILE= ${WRKSRC}/LICENSE.txt

BUILD_DEPENDS= npm-node14>0:www/npm-node14

CONFLICTS= opensearch-dashboards

USES= nodejs:14,build,run python:build
USE_RC_SUBR= ${PORTNAME}

WRKSRC= ${WRKDIR}/${PORTNAME}-${PORTVERSION}

OPTIONS_DEFINE= CHROME

CHROME_DESC= Add dependency on www/chromium (required for PDF reports)
CHROME_RUN_DEPENDS=chrome:www/chromium

_DEVDIR= ${WRKDIR}/.devdir

post-patch:
@${REINPLACE_CMD} -e 's|%%PREFIX%%|${PREFIX}|' -e 's|%%LOCALBASE%%|${LOCALBASE}|' -e 's|%%WRKSRC%%|${WRKSRC}|' \
${WRKSRC}/bin/opensearch-dashboards \
${WRKSRC}/bin/opensearch-dashboards-keystore \
${WRKSRC}/bin/opensearch-dashboards-plugin \
${WRKSRC}/node_modules/re2/binding.gyp \
${WRKSRC}/plugins/reportsDashboards/server/routes/utils/constants.js
${RM} \
${WRKSRC}/bin/*.orig \
${WRKSRC}/bin/*.bak \
${WRKSRC}/node_modules/re2/binding.gyp.orig \
${WRKSRC}/node_modules/re2/binding.gyp.bak \
${WRKSRC}/plugins/reportsDashboards/server/routes/utils/constants.js.orig \
${WRKSRC}/plugins/reportsDashboards/server/routes/utils/constants.js.bak
${RM} -r ${WRKSRC}/plugins/reportsDashboards/.chromium

do-configure:
(cd ${WRKSRC}/node_modules/re2 && \
${SETENV} HOME=${WRKDIR} PYTHONDONTWRITEBYTECODE=1 \
${LOCALBASE}/lib/node_modules/npm/bin/node-gyp-bin/node-gyp configure \
--python=${PYTHON_CMD} \
--nodedir ${LOCALBASE} \
--devdir=${_DEVDIR})

do-build:
(cd ${WRKSRC}/node_modules/re2 && \
${SETENV} HOME=${WRKDIR} PYTHONDONTWRITEBYTECODE=1 \
${LOCALBASE}/lib/node_modules/npm/bin/node-gyp-bin/node-gyp build \
--devdir=${_DEVDIR})
${RM} -r ${WRKSRC}/node_modules/re2/build/Release/.deps \
${WRKSRC}/node_modules/re2/build/Release/obj.target

do-install:
${MKDIR} ${STAGEDIR}${WWWDIR} ${STAGEDIR}${ETCDIR}
${INSTALL_DATA} ${WRKSRC}/config/opensearch_dashboards.yml ${STAGEDIR}${ETCDIR}/opensearch_dashboards.yml.sample
(cd ${WRKSRC} && \
${COPYTREE_SHARE} "data node_modules package.json plugins src" ${STAGEDIR}${WWWDIR} && \
${COPYTREE_BIN} bin ${STAGEDIR}${WWWDIR})
${STRIP_CMD} ${STAGEDIR}${WWWDIR}/node_modules/re2/build/Release/re2.node

post-install:
${ECHO} "@sample ${ETCDIR}/opensearch_dashboards.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/reportsDashboards/node_modules/set-interval-async/test/resources/legacy" >> ${TMPPLIST}
${ECHO} "@dir ${WWWDIR}/plugins/reportsDashboards/node_modules/set-interval-async/test/resources/fixed" >> ${TMPPLIST}
${ECHO} "@dir ${WWWDIR}/plugins/reportsDashboards/node_modules/set-interval-async/test/resources/dynamic" >> ${TMPPLIST}
${ECHO} "@dir ${WWWDIR}/plugins/reportsDashboards/node_modules/set-interval-async/examples/fixed" >> ${TMPPLIST}
${ECHO} "@dir ${WWWDIR}/plugins/reportsDashboards/node_modules/set-interval-async/examples/dynamic" >> ${TMPPLIST}

.include <bsd.port.mk>
3 changes: 3 additions & 0 deletions textproc/opensearch-dashboards13/distinfo
@@ -0,0 +1,3 @@
TIMESTAMP = 1670368957
SHA256 (opensearch-dashboards-1.3.6-linux-x64.tar.gz) = 4b0cd477fdcbbd54d835d2f60412ea1946eca0c9c1029397139e5852d98d684d
SIZE (opensearch-dashboards-1.3.6-linux-x64.tar.gz) = 250723484
79 changes: 79 additions & 0 deletions textproc/opensearch-dashboards13/files/opensearch-dashboards.in
@@ -0,0 +1,79 @@
#!/bin/sh

# PROVIDE: opensearch_dashboards
# REQUIRE: DAEMON
# BEFORE: LOGIN
# KEYWORD: shutdown

. /etc/rc.subr

name=opensearch_dashboards
rcvar=opensearch_dashboards_enable

load_rc_config $name

: ${opensearch_dashboards_enable:="NO"}
: ${opensearch_dashboards_config:="%%ETCDIR%%/opensearch_dashboards.yml"}
: ${opensearch_dashboards_user:="www"}
: ${opensearch_dashboards_group:="www"}
: ${opensearch_dashboards_log:="/var/log/opensearch_dashboards.log"}
: ${opensearch_dashboards_syslog_output_enable:="NO"}

start_precmd="opensearch_dashboards_start_precmd"
reload_cmd="opensearch_dashboards_reload_cmd"
extra_commands="reload"

if checkyesno opensearch_dashboards_syslog_output_enable; then
if [ -n "${opensearch_dashboards_syslog_output_tag}" ]; then
opensearch_dashboards_syslog_output_flags="-T ${opensearch_dashboards_syslog_output_tag}"
else
opensearch_dashboards_syslog_output_flags="-T ${name}"
fi
if [ -n "${opensearch_dashboards_syslog_output_priority}" ]; then
opensearch_dashboards_syslog_output_flags="${opensearch_dashboards_syslog_output_flags} -s ${opensearch_dashboards_syslog_output_priority}"
fi
if [ -n "${opensearch_dashboards_syslog_output_facility}" ]; then
opensearch_dashboards_syslog_output_flags="${opensearch_dashboards_syslog_output_flags} -l ${opensearch_dashboards_syslog_output_facility}"
fi
fi

NODE="%%LOCALBASE%%/bin/node"

required_files="${opensearch_dashboards_config}"
pidfile="/var/run/${name}.pid"

command="/usr/sbin/daemon"
command_args="-f ${opensearch_dashboards_syslog_output_flags} -P ${pidfile} -t ${name} \
/usr/bin/env NODE_ENV=production ${opensearch_dashboards_env} \
${NODE} %%WWWDIR%%/src/cli/dist serve \
--config ${opensearch_dashboards_config} --log-file ${opensearch_dashboards_log} \
${opensearch_dashboards_args}"

opensearch_dashboards_start_precmd()
{
if [ ! -e "${pidfile}" ]; then
install -m 0600 -o ${opensearch_dashboards_user} -g ${opensearch_dashboards_group} /dev/null ${pidfile}
fi
if [ ! -f ${opensearch_dashboards_log} ]; then
install -o ${opensearch_dashboards_user} -g ${opensearch_dashboards_group} -m 640 /dev/null ${opensearch_dashboards_log}
fi
if [ ! -d %%WWWDIR%%/optimize ]; then
install -d -o ${opensearch_dashboards_user} -g ${opensearch_dashboards_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 ${opensearch_dashboards_user}:${opensearch_dashboards_group} %%WWWDIR%%/optimize
fi
}

opensearch_dashboards_reload_cmd()
{
if [ -z "$rc_pid" ]; then
_run_rc_notrunning
return 1
else
pkill -HUP -P ${rc_pid}
fi
}

run_rc_command "$1"
@@ -0,0 +1,13 @@
--- bin/opensearch-dashboards-keystore.orig 2022-06-30 21:38:00 UTC
+++ bin/opensearch-dashboards-keystore
@@ -26,8 +26,8 @@ while [ -h "$SCRIPT" ] ; do
done

DIR="$(dirname "${SCRIPT}")/.."
-CONFIG_DIR=${OSD_PATH_CONF:-"$DIR/config"}
-NODE="${DIR}/node/bin/node"
+CONFIG_DIR="%%PREFIX%%/etc/opensearch-dashboards"
+NODE="%%LOCALBASE%%/bin/node"
test -x "$NODE"
if [ ! -x "$NODE" ]; then
echo "unable to find usable node.js executable."
@@ -0,0 +1,13 @@
--- bin/opensearch-dashboards-plugin.orig 2022-06-30 21:38:00 UTC
+++ bin/opensearch-dashboards-plugin
@@ -26,8 +26,8 @@ while [ -h "$SCRIPT" ] ; do
done

DIR="$(dirname "${SCRIPT}")/.."
-CONFIG_DIR=${OSD_PATH_CONF:-"$DIR/config"}
-NODE="${DIR}/node/bin/node"
+CONFIG_DIR="%%PREFIX%%/etc/opensearch-dashboards"
+NODE="%%LOCALBASE%%/bin/node"
test -x "$NODE"
if [ ! -x "$NODE" ]; then
echo "unable to find usable node.js executable."
@@ -0,0 +1,21 @@
--- node_modules/re2/binding.gyp.orig 2021-07-02 23:30:56 UTC
+++ node_modules/re2/binding.gyp
@@ -45,7 +45,7 @@
"-Wno-sign-compare",
"-Wno-unused-parameter",
"-Wno-missing-field-initializers",
- "-Wno-cast-function-type",
+ "-Wno-bad-function-cast",
"-O3",
"-g"
],
@@ -54,7 +54,8 @@
"NOMINMAX"
],
"include_dirs": [
- "<!(node -e \"require('nan')\")",
+ "%%WRKSRC%%/node_modules/nan",
+ "%%LOCALBASE%%/include",
"vendor"
],
"xcode_settings": {
@@ -0,0 +1,11 @@
--- plugins/reportsDashboards/server/routes/utils/constants.js.orig 2022-06-30 21:47:37 UTC
+++ plugins/reportsDashboards/server/routes/utils/constants.js
@@ -138,7 +138,7 @@ const replaceBlockedKeywords = htmlString => {
};

exports.replaceBlockedKeywords = replaceBlockedKeywords;
-const CHROMIUM_PATH = `${__dirname}/../../../.chromium/headless_shell`;
+const CHROMIUM_PATH = `%%LOCALBASE%%/bin/chrome`;
/**
* Metric constants
*/
20 changes: 20 additions & 0 deletions textproc/opensearch-dashboards13/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 <<EOMSG
If %%PORTNAME%%%%PKGNAMESUFFIX%% is being deleted permanently, and you do not wish to keep any
data that was in the cluster, then you may wish to delete the
%%WWWDIR%% directory. This can be done by with the command:
# rm -rf %%WWWDIR%%
Please ignore this if %%PORTNAME%%%%PKGNAMESUFFIX%% is being upgraded
EOMSG
;;
esac
3 changes: 3 additions & 0 deletions textproc/opensearch-dashboards13/pkg-descr
@@ -0,0 +1,3 @@
OpenSearch Dashboards is the default visualization tool for data in OpenSearch.
It also serves as a user interface for many of the OpenSearch plugins,
including security, alerting, Index State Management, SQL, and more.

0 comments on commit 53ec298

Please sign in to comment.