Skip to content

Commit

Permalink
textproc/opensearch: New port
Browse files Browse the repository at this point in the history
OpenSearch is a fork of Elasticsearch which aims to be a Distributed,
RESTful, Search Engine built on top of Apache Lucene.

WWW: http://opensearch.org

PR:		257558
With hat:	opensearch
  • Loading branch information
hackacad authored and smortex committed Sep 18, 2021
1 parent 2ed6338 commit 913bfd5
Show file tree
Hide file tree
Showing 11 changed files with 289 additions and 2 deletions.
2 changes: 1 addition & 1 deletion GIDs
Original file line number Diff line number Diff line change
Expand Up @@ -795,7 +795,7 @@ cassandra:*:851:
p0f:*:852:
_geodns:*:853:
ebusd:*:854:
# free: 855
opensearch:*:855:
# free: 856
# free: 857
# free: 858
Expand Down
2 changes: 1 addition & 1 deletion UIDs
Original file line number Diff line number Diff line change
Expand Up @@ -800,7 +800,7 @@ cassandra:*:851:851::0:0:Cassandra DB Daemon User:/var/db/cassandra:/usr/sbin/no
p0f:*:852:852::0:0:p0f unprivileged user:/var/empty:/usr/sbin/nologin
_geodns:*:853:853::0:0:GeoDNS User:/var/empty:/usr/sbin/nologin
ebusd:*:854:854::0:0:eBUS Daemon user:/nonexistent:/usr/sbin/nologin
# free: 855
opensearch:*:855:855::0:0:opensearch user:/nonexistent:/usr/sbin/nologin
# free: 856
# free: 857
# free: 858
Expand Down
1 change: 1 addition & 0 deletions textproc/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -483,6 +483,7 @@
SUBDIR += odt2txt
SUBDIR += openfts
SUBDIR += openjade
SUBDIR += opensearch
SUBDIR += opensp
SUBDIR += openvanilla-framework
SUBDIR += or-aspell
Expand Down
84 changes: 84 additions & 0 deletions textproc/opensearch/Makefile
Original file line number Diff line number Diff line change
@@ -0,0 +1,84 @@
# Created by: Sven R <[email protected]>

PORTNAME= opensearch
DISTVERSION= 1.0.1
DISTVERSIONSUFFIX= -linux-x64
CATEGORIES= textproc java devel
MASTER_SITES= https://artifacts.opensearch.org/releases/bundle/${PORTNAME}/${PORTVERSION}/

MAINTAINER= [email protected]
COMMENT= Full-text search engine for Java

LICENSE= APACHE20

BUILD_DEPENDS= jna>0:devel/jna
RUN_DEPENDS= bash>0:shells/bash \
jna>0:devel/jna

USES= cpe shebangfix
USE_JAVA= yes
JAVA_VERSION= 11+
USE_RC_SUBR= ${PORTNAME}

SHEBANG_FILES= bin/opensearch bin/opensearch-cli \
bin/opensearch-env bin/opensearch-env-from-file \
bin/opensearch-keystore bin/opensearch-node \
bin/opensearch-plugin bin/opensearch-shard \
bin/performance-analyzer-agent-cli

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

OPTIONS_DEFINE= PLUGINS
OPTIONS_DEFAULT=PLUGINS

.include <bsd.port.options.mk>

CONFIG_FILES= opensearch.yml jvm.options log4j2.properties

BINS= opensearch opensearch-cli opensearch-env \
opensearch-env-from-file opensearch-keystore \
opensearch-node opensearch-plugin \
opensearch-shard performance-analyzer-agent-cli

SEARCHUSER?= opensearch
SEARCHGROUP?= ${SEARCHUSER}
USERS= ${SEARCHUSER}
GROUPS= ${SEARCHGROUP}

SUB_FILES= pkg-message
SUB_LIST= ETCDIR=${ETCDIR} \
JAVA_HOME=${JAVA_HOME}

post-patch:
${RM} ${WRKSRC}/lib/jna-*.jar

do-install:
${MKDIR} ${STAGEDIR}${PREFIX}/etc/opensearch
.for f in ${CONFIG_FILES}
${INSTALL} ${WRKSRC}/config/${f} ${STAGEDIR}${ETCDIR}/${f}.sample
.endfor
${MKDIR} ${STAGEDIR}${PREFIX}/lib/opensearch/bin
.for f in ${BINS}
${INSTALL_SCRIPT} ${WRKSRC}/bin/${f} ${STAGEDIR}${PREFIX}/lib/opensearch/bin
.endfor
${MKDIR} ${STAGEDIR}${PREFIX}/lib/opensearch/lib
(cd ${WRKSRC}/ && ${COPYTREE_SHARE} "lib modules" ${STAGEDIR}${PREFIX}/lib/opensearch/)
${MKDIR} ${STAGEDIR}${PREFIX}/libexec/opensearch
${INSTALL} -lrs ${STAGEDIR}${ETCDIR} ${STAGEDIR}${PREFIX}/lib/opensearch/config
${LN} -s ${JAVASHAREDIR}/classes/jna.jar ${STAGEDIR}${PREFIX}/lib/opensearch/lib/jna.jar

do-install-PLUGINS-on:
(cd ${WRKSRC}/ && ${COPYTREE_SHARE} "plugins" ${STAGEDIR}${PREFIX}/lib/opensearch/)

post-install:
.for f in ${CONFIG_FILES}
${ECHO} "@sample ${ETCDIR}/${f}.sample" >> ${TMPPLIST}
.endfor
${FIND} -s ${STAGEDIR}${PREFIX}/lib/opensearch -not -type d | ${SORT} | \
${SED} -e 's#^${STAGEDIR}${PREFIX}/##' >> ${TMPPLIST}
${ECHO} "@dir lib/opensearch/plugins" >> ${TMPPLIST}
${ECHO} "@dir libexec/opensearch" >> ${TMPPLIST}
${ECHO} "@dir(opensearch,opensearch,0755) ${ETCDIR}" >> ${TMPPLIST}

.include <bsd.port.mk>
3 changes: 3 additions & 0 deletions textproc/opensearch/distinfo
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
TIMESTAMP = 1630980635
SHA256 (opensearch-1.0.1-linux-x64.tar.gz) = 86816266f5b6a129e301b18168ff6b96cf54e1d712f903c6985dabe51e230655
SIZE (opensearch-1.0.1-linux-x64.tar.gz) = 431148224
115 changes: 115 additions & 0 deletions textproc/opensearch/files/opensearch.in
Original file line number Diff line number Diff line change
@@ -0,0 +1,115 @@
#!/bin/sh

# PROVIDE: opensearch
# REQUIRE: DAEMON
# BEFORE: LOGIN
# KEYWORD: shutdown
#
# Add the following line to /etc/rc.conf to enable opensearch:
#
# opensearch_enable="YES"
#
# opensearch_user (username): Set to opensearch by default.
# Set it to required username.
# opensearch_group (group): Set to opensearch by default.
# Set it to required group.
# opensearch_config (path): Set to %%PREFIX%%/etc/opensearch/opensearch.yml by default.
# Set it to the config file location.
# opensearch_java_home (path): Set to %%JAVA_HOME%% by default.
# Set it to the root of the JDK to use.
#
. /etc/rc.subr

name=opensearch
rcvar=opensearch_enable

load_rc_config ${name}

: ${opensearch_enable:=NO}
: ${opensearch_user=opensearch}
: ${opensearch_group=opensearch}
: ${opensearch_config=%%PREFIX%%/etc/opensearch}
: ${opensearch_login_class=root}
: ${opensearch_java_home="%%JAVA_HOME%%"}

required_files="${opensearch_config}/opensearch.yml"
_pidprefix=/var/run/opensearch/opensearch
pidfile=${_pidprefix}.pid
procname=${opensearch_java_home}/bin/java

extra_commands="console status"
console_cmd=opensearch_console
start_precmd=opensearch_precmd
command=%%PREFIX%%/lib/opensearch/bin/opensearch
command_args="-d --pidfile=${pidfile}"

export OPENSEARCH_PATH_CONF=${opensearch_config}
export JAVA_HOME=${opensearch_java_home}

opensearch_precmd()
{
/usr/bin/install -d -o ${opensearch_user} -g ${opensearch_group} -m 755 ${pidfile%/*}
/usr/bin/install -d -o ${opensearch_user} -g ${opensearch_group} -m 755 /var/db/opensearch
/usr/bin/install -d -o ${opensearch_user} -g ${opensearch_group} -m 755 /var/log/opensearch
}

opensearch_console()
{
command_args=""
run_rc_command "start"
}

if [ -n "$2" ]; then
profile="$2"
if [ "x${opensearch_profiles}" != "x" ]; then
eval opensearch_config="\${opensearch_${profile}_config:-}"
if [ "x${opensearch_config}" = "x" ]; then
echo "You must define a configuration (opensearch_${profile}_config)"
exit 1
fi
export OPENSEARCH_PATH_CONF=${opensearch_config}
required_files="${opensearch_config}/opensearch.yml"
required_files="${opensearch_config}/jvm.options"
eval opensearch_enable="\${opensearch_${profile}_enable:-${opensearch_enable}}"
pidfile="${_pidprefix}.${profile}.pid"
command_args="-d --pidfile=${pidfile}"
echo "===> opensearch profile: ${profile}"
else
echo "$0: extra argument ignored"
fi
else
if [ "x${opensearch_profiles}" != "x" -a "x$1" != "x" ]; then
for profile in ${opensearch_profiles}; do
eval _enable="\${opensearch_${profile}_enable}"
case "x${_enable:-${opensearch_enable}}" in
x|x[Nn][Oo]|x[Nn][Oo][Nn][Ee])
continue
;;
x[Yy][Ee][Ss])
;;
*)
if test -z "$_enable"; then
_var=opensearch_enable
else
_var=opensearch_"${profile}"_enable
fi
echo "Bad value" \
"'${_enable:-${opensearch_enable}}'" \
"for ${_var}. " \
"Profile ${profile} skipped."
continue
;;
esac
%%PREFIX%%/etc/rc.d/opensearch $1 ${profile}
retcode="$?"
if [ "0${retcode}" -ne 0 ]; then
failed="${profile} (${retcode}) ${failed:-}"
else
success="${profile} ${success:-}"
fi
done
exit 0
fi
fi

run_rc_command "$1"
17 changes: 17 additions & 0 deletions textproc/opensearch/files/patch-bin_opensearch-env
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
--- bin/opensearch-env.orig 2021-07-30 13:39:40 UTC
+++ bin/opensearch-env
@@ -40,13 +40,7 @@ if [ ! -z "$JAVA_HOME" ]; then
JAVA="$JAVA_HOME/bin/java"
JAVA_TYPE="JAVA_HOME"
else
- if [ "$(uname -s)" = "Darwin" ]; then
- # macOS has a different structure
- JAVA="$OPENSEARCH_HOME/jdk.app/Contents/Home/bin/java"
- else
- JAVA="$OPENSEARCH_HOME/jdk/bin/java"
- fi
- JAVA_TYPE="bundled jdk"
+ JAVA="/usr/local/bin/java"
fi

if [ ! -x "$JAVA" ]; then
23 changes: 23 additions & 0 deletions textproc/opensearch/files/patch-config_jvm.options
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
--- config/jvm.options.orig 2021-07-30 14:01:34 UTC
+++ config/jvm.options
@@ -61,17 +61,17 @@
-XX:HeapDumpPath=data

# specify an alternative path for JVM fatal error logs
--XX:ErrorFile=logs/hs_err_pid%p.log
+-XX:ErrorFile=/hs_err_pid%p.log

## JDK 8 GC logging
8:-XX:+PrintGCDetails
8:-XX:+PrintGCDateStamps
8:-XX:+PrintTenuringDistribution
8:-XX:+PrintGCApplicationStoppedTime
-8:-Xloggc:logs/gc.log
+8:-Xloggc:${OPENSEARCH_TMPDIR}/gc.log
8:-XX:+UseGCLogFileRotation
8:-XX:NumberOfGCLogFiles=32
8:-XX:GCLogFileSize=64m

# JDK 9+ GC logging
-9-:-Xlog:gc*,gc+age=trace,safepoint:file=logs/gc.log:utctime,pid,tags:filecount=32,filesize=64m
+9-:-Xlog:gc*,gc+age=trace,safepoint:file=${OPENSEARCH_TMPDIR}/gc.log:utctime,pid,tags:filecount=32,filesize=64m
15 changes: 15 additions & 0 deletions textproc/opensearch/files/patch-config_opensearch.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
--- config/opensearch.yml.orig 2021-07-02 23:22:08 UTC
+++ config/opensearch.yml
@@ -31,10 +31,12 @@
# Path to directory where to store the data (separate multiple locations by comma):
#
#path.data: /path/to/data
+path.data: /var/db/opensearch
#
# Path to log files:
#
#path.logs: /path/to/logs
+path.logs: /var/log/opensearch
#
# ----------------------------------- Memory -----------------------------------
#
25 changes: 25 additions & 0 deletions textproc/opensearch/files/pkg-message.in
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
[
{ type: install
message: <<EOM
Please see %%ETCDIR%% for a sample version of
opensearch.yml.

OpenSearch requires memory locking of large amounts of RAM.
You may need to set:

sysctl security.bsd.unprivileged_mlock=1

When running within a jail, it's highly advisable to set:

enforce_statfs = 1

for the jail running opensearch instance.

If OpenSearch was built with the PLUGINS option enabled (default) it will not
start until the security plugin is properly configured. Please refer to the
OpenSearch documentation for setting-up TLS:

https://opensearch.org/docs/security-plugin/configuration/tls
EOM
}
]
4 changes: 4 additions & 0 deletions textproc/opensearch/pkg-descr
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
OpenSearch is a fork of Elasticsearch which aims to be a Distributed,
RESTful, Search Engine built on top of Apache Lucene.

WWW: http://opensearch.org

0 comments on commit 913bfd5

Please sign in to comment.