textproc/opensearch219: New port: Full-text search engine for Java

OpenSearch is a fork of Elasticsearch which aims to be a Distributed,
RESTful, Search Engine built on top of Apache Lucene.
This commit is contained in:
Jose Alonso Cardenas Marquez
2025-05-10 23:26:14 -07:00
parent 9cc6c874fb
commit 431b97fd68
8 changed files with 342 additions and 0 deletions
+1
View File
@@ -526,6 +526,7 @@
SUBDIR += opensearch210
SUBDIR += opensearch213
SUBDIR += opensearch216
SUBDIR += opensearch219
SUBDIR += opensp
SUBDIR += openvanilla-framework
SUBDIR += or-aspell
+154
View File
@@ -0,0 +1,154 @@
PORTNAME= opensearch
DISTVERSION= 2.19.1
PORTREVISION= 0
DISTVERSIONSUFFIX= -linux-${OPENSEARCH_ARCH}
CATEGORIES= textproc java devel
MASTER_SITES= https://artifacts.opensearch.org/releases/bundle/${PORTNAME}/${DISTVERSION}/
PKGNAMESUFFIX= 219
MAINTAINER= opensearch@FreeBSD.org
COMMENT?= Full-text search engine for Java
WWW= https://opensearch.org
LICENSE= APACHE20
ONLY_FOR_ARCHS= aarch64 amd64
BUILD_DEPENDS= jna>0:devel/jna
RUN_DEPENDS= bash>0:shells/bash \
jna>0:devel/jna
CONFLICTS= opensearch opensearch13 opensearch210 opensearch213 opensearch216
USES= cpe java shebangfix
JAVA_VERSION= 17+
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 \
plugins/opensearch-security/tools/audit_config_migrater.sh \
plugins/opensearch-security/tools/hash.sh \
plugins/opensearch-security/tools/install_demo_configuration.sh \
plugins/opensearch-security/tools/securityadmin.sh
NO_BUILD= yes
WRKSRC= ${WRKDIR}/${PORTNAME}-${PORTVERSION}
OPTIONS_DEFINE= PLUGINS
OPTIONS_DEFAULT=PLUGINS
.include <bsd.port.options.mk>
.if ${ARCH} == "aarch64"
OPENSEARCH_ARCH= arm64
.else
OPENSEARCH_ARCH= x64
.endif
CONFIG_FILES= opensearch.yml jvm.options log4j2.properties
PLUGINS_CONFIG_FILES?= \
opensearch-notifications-core/notifications-core.yml \
opensearch-notifications/notifications.yml \
opensearch-observability/observability.yml \
opensearch-performance-analyzer/agent-stats-metadata \
opensearch-performance-analyzer/log4j2.xml \
opensearch-performance-analyzer/opensearch_security.policy \
opensearch-performance-analyzer/performance-analyzer.properties \
opensearch-performance-analyzer/plugin-stats-metadata \
opensearch-performance-analyzer/rca.conf \
opensearch-performance-analyzer/rca_idle_cluster_manager.conf \
opensearch-performance-analyzer/rca_cluster_manager.conf \
opensearch-performance-analyzer/supervisord.conf \
opensearch-reports-scheduler/reports-scheduler.yml \
opensearch-security/action_groups.yml \
opensearch-security/allowlist.yml \
opensearch-security/audit.yml \
opensearch-security/config.yml \
opensearch-security/internal_users.yml \
opensearch-security/nodes_dn.yml \
opensearch-security/roles.yml \
opensearch-security/roles_mapping.yml \
opensearch-security/tenants.yml \
opensearch-security/whitelist.yml
# Upstream provide some *.example files. These are also copied as sample filse
# but we do not register them as @sample to avoid installing filse that needs
# to be tuned a site specific way.
PLUGINS_SAMPLE_CONFIG_FILES= \
opensearch-security/opensearch.yml
BINS= opensearch opensearch-cli opensearch-env \
opensearch-env-from-file opensearch-keystore \
opensearch-node opensearch-plugin \
opensearch-shard
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/extensions
${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:
${MKDIR} ${STAGEDIR}${ETCDIR}/opensearch-notifications-core \
${STAGEDIR}${ETCDIR}/opensearch-notifications \
${STAGEDIR}${ETCDIR}/opensearch-observability \
${STAGEDIR}${ETCDIR}/opensearch-reports-scheduler \
${STAGEDIR}${ETCDIR}/opensearch-security \
${STAGEDIR}${ETCDIR}/opensearch-performance-analyzer
.for f in ${PLUGINS_CONFIG_FILES}
${INSTALL} ${WRKSRC}/config/${f} ${STAGEDIR}${ETCDIR}/${f}.sample
${ECHO} "@sample(opensearch,opensearch,640) ${ETCDIR}/${f}.sample" >> ${TMPPLIST}
.endfor
.for f in ${PLUGINS_SAMPLE_CONFIG_FILES}
${INSTALL} ${WRKSRC}/config/${f}.example ${STAGEDIR}${ETCDIR}/${f}.sample
${ECHO} "@(opensearch,opensearch,640) ${ETCDIR}/${f}.sample" >> ${TMPPLIST}
.endfor
(cd ${WRKSRC}/ && ${COPYTREE_SHARE} "plugins" ${STAGEDIR}${PREFIX}/lib/opensearch/)
(cd ${WRKSRC}/plugins/opensearch-security/tools && ${COPYTREE_BIN} "*.sh" ${STAGEDIR}${PREFIX}/lib/opensearch/plugins/opensearch-security/tools)
post-install:
.for f in ${CONFIG_FILES}
${ECHO} "@sample(opensearch,opensearch,640) ${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/extensions" >> ${TMPPLIST}
${ECHO} "@dir libexec/opensearch" >> ${TMPPLIST}
.if ${PORT_OPTIONS:MPLUGINS}
${ECHO} "@dir lib/opensearch/plugins" >> ${TMPPLIST}
${ECHO} "@dir(opensearch,opensearch,0750) ${ETCDIR}/opensearch-notifications-core" >> ${TMPPLIST}
${ECHO} "@dir(opensearch,opensearch,0750) ${ETCDIR}/opensearch-notifications" >> ${TMPPLIST}
${ECHO} "@dir(opensearch,opensearch,0750) ${ETCDIR}/opensearch-observability" >> ${TMPPLIST}
${ECHO} "@dir(opensearch,opensearch,0750) ${ETCDIR}/opensearch-performance-analyzer" >> ${TMPPLIST}
${ECHO} "@dir(opensearch,opensearch,0750) ${ETCDIR}/opensearch-reports-scheduler" >> ${TMPPLIST}
${ECHO} "@dir(opensearch,opensearch,0750) ${ETCDIR}/opensearch-security" >> ${TMPPLIST}
.endif
${ECHO} "@dir(opensearch,opensearch,0750) ${ETCDIR}/" >> ${TMPPLIST}
.include <bsd.port.mk>
+5
View File
@@ -0,0 +1,5 @@
TIMESTAMP = 1746943739
SHA256 (opensearch-2.19.1-linux-arm64.tar.gz) = fc25c886a7f45c5c94699b217dcbb87528c2c25adf67797247a4e07fadc7326f
SIZE (opensearch-2.19.1-linux-arm64.tar.gz) = 715801679
SHA256 (opensearch-2.19.1-linux-x64.tar.gz) = b243aaa7d8dcebb87881f70f71613903c36dda077fd90ee11ea377412d6d569f
SIZE (opensearch-2.19.1-linux-x64.tar.gz) = 964414604
+115
View File
@@ -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"
@@ -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
@@ -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 -----------------------------------
#
@@ -0,0 +1,27 @@
[
{ type: install
message: <<EOM
Opensearch was installed
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
}
]
+2
View File
@@ -0,0 +1,2 @@
OpenSearch is a fork of Elasticsearch which aims to be a Distributed,
RESTful, Search Engine built on top of Apache Lucene.