1PORTNAME=	opensearch
2DISTVERSION=	2.19.4
3PORTREVISION=	0
4DISTVERSIONSUFFIX=	-linux-${OPENSEARCH_ARCH}
5CATEGORIES=	textproc java devel
6MASTER_SITES=	https://artifacts.opensearch.org/releases/bundle/${PORTNAME}/${DISTVERSION}/
7PKGNAMESUFFIX=	219
8
9MAINTAINER=	ports@MidnightBSD.org
10COMMENT?=	Full-text search engine for Java
11WWW=		https://opensearch.org
12
13LICENSE=	Apache-2.0
14
15ONLY_FOR_ARCHS=	aarch64 amd64
16
17BUILD_DEPENDS=	jna>0:devel/jna
18RUN_DEPENDS=	bash>0:shells/bash \
19		jna>0:devel/jna
20
21CONFLICTS=	opensearch opensearch13 opensearch210 opensearch213 opensearch216
22
23USES=		cpe java shebangfix
24JAVA_VERSION=	17+
25USE_RC_SUBR=	${PORTNAME}
26
27SHEBANG_FILES=	bin/opensearch bin/opensearch-cli \
28		bin/opensearch-env bin/opensearch-env-from-file \
29		bin/opensearch-keystore bin/opensearch-node \
30		bin/opensearch-plugin bin/opensearch-shard \
31		plugins/opensearch-security/tools/audit_config_migrater.sh \
32		plugins/opensearch-security/tools/hash.sh \
33		plugins/opensearch-security/tools/install_demo_configuration.sh \
34		plugins/opensearch-security/tools/securityadmin.sh
35
36NO_BUILD=	yes
37WRKSRC=		${WRKDIR}/${PORTNAME}-${PORTVERSION}
38
39OPTIONS_DEFINE=	PLUGINS
40OPTIONS_DEFAULT=PLUGINS
41
42.include <bsd.mport.options.mk>
43
44.if ${ARCH} == "aarch64"
45OPENSEARCH_ARCH=     arm64
46.else
47OPENSEARCH_ARCH=     x64
48.endif
49
50CONFIG_FILES=	opensearch.yml jvm.options log4j2.properties
51
52PLUGINS_CONFIG_FILES?= \
53		opensearch-notifications-core/notifications-core.yml \
54		opensearch-notifications/notifications.yml \
55		opensearch-observability/observability.yml \
56		opensearch-performance-analyzer/agent-stats-metadata \
57		opensearch-performance-analyzer/log4j2.xml \
58		opensearch-performance-analyzer/opensearch_security.policy \
59		opensearch-performance-analyzer/performance-analyzer.properties \
60		opensearch-performance-analyzer/plugin-stats-metadata \
61		opensearch-performance-analyzer/rca.conf \
62		opensearch-performance-analyzer/rca_idle_cluster_manager.conf \
63		opensearch-performance-analyzer/rca_cluster_manager.conf \
64		opensearch-performance-analyzer/supervisord.conf \
65		opensearch-reports-scheduler/reports-scheduler.yml \
66		opensearch-security/action_groups.yml \
67		opensearch-security/allowlist.yml \
68		opensearch-security/audit.yml \
69		opensearch-security/config.yml \
70		opensearch-security/internal_users.yml \
71		opensearch-security/nodes_dn.yml \
72		opensearch-security/roles.yml \
73		opensearch-security/roles_mapping.yml \
74		opensearch-security/tenants.yml \
75		opensearch-security/whitelist.yml
76
77# Upstream provide some *.example files.  These are also copied as sample filse
78# but we do not register them as @sample to avoid installing filse that needs
79# to be tuned a site specific way.
80PLUGINS_SAMPLE_CONFIG_FILES= \
81		opensearch-security/opensearch.yml
82
83BINS=		opensearch opensearch-cli opensearch-env \
84		opensearch-env-from-file opensearch-keystore \
85		opensearch-node opensearch-plugin \
86		opensearch-shard
87
88SEARCHUSER?=	opensearch
89SEARCHGROUP?=	${SEARCHUSER}
90USERS=		${SEARCHUSER}
91GROUPS=		${SEARCHGROUP}
92
93SUB_FILES=	pkg-message
94SUB_LIST=	ETCDIR=${ETCDIR} \
95		JAVA_HOME=${JAVA_HOME}
96
97post-patch:
98	${RM} ${WRKSRC}/lib/jna-*.jar
99
100do-install:
101	${MKDIR} ${PREFIX}/etc/opensearch
102.for f in ${CONFIG_FILES}
103	${INSTALL} ${WRKSRC}/config/${f} ${ETCDIR}/${f}.sample
104.endfor
105	${MKDIR} ${PREFIX}/lib/opensearch/bin
106.for f in ${BINS}
107	${INSTALL_SCRIPT} ${WRKSRC}/bin/${f} ${PREFIX}/lib/opensearch/bin
108.endfor
109	${MKDIR} ${PREFIX}/lib/opensearch/extensions
110	${MKDIR} ${PREFIX}/lib/opensearch/lib
111	(cd ${WRKSRC}/ && ${COPYTREE_SHARE} "lib modules" ${PREFIX}/lib/opensearch/)
112	${MKDIR} ${PREFIX}/libexec/opensearch
113	${INSTALL} -lrs ${ETCDIR} ${PREFIX}/lib/opensearch/config
114	${LN} -s ${JAVASHAREDIR}/classes/jna.jar ${PREFIX}/lib/opensearch/lib/jna.jar
115
116do-install-PLUGINS-on:
117	${MKDIR} ${FAKE_DESTDIR}${ETCDIR}/opensearch-notifications-core \
118		 ${FAKE_DESTDIR}${ETCDIR}/opensearch-notifications \
119		 ${FAKE_DESTDIR}${ETCDIR}/opensearch-observability \
120		 ${FAKE_DESTDIR}${ETCDIR}/opensearch-reports-scheduler \
121		 ${FAKE_DESTDIR}${ETCDIR}/opensearch-security \
122		 ${FAKE_DESTDIR}${ETCDIR}/opensearch-performance-analyzer
123
124
125.for f in ${PLUGINS_CONFIG_FILES}
126	${INSTALL} ${WRKSRC}/config/${f} ${FAKE_DESTDIR}${ETCDIR}/${f}.sample
127	${ECHO} "@sample ${ETCDIR}/${f}.sample" >> ${TMPPLIST}
128.endfor
129.for f in ${PLUGINS_SAMPLE_CONFIG_FILES}
130	${INSTALL} ${WRKSRC}/config/${f}.example ${FAKE_DESTDIR}${ETCDIR}/${f}.sample
131	${ECHO} "${ETCDIR}/${f}.sample" >> ${TMPPLIST}
132.endfor
133	(cd ${WRKSRC}/ && ${COPYTREE_SHARE} "plugins" ${FAKE_DESTDIR}${PREFIX}/lib/opensearch/)
134	(cd ${WRKSRC}/plugins/opensearch-security/tools && ${COPYTREE_BIN} "*.sh" ${FAKE_DESTDIR}${PREFIX}/lib/opensearch/plugins/opensearch-security/tools)
135
136post-install:
137.for f in ${CONFIG_FILES}
138	${ECHO} "@sample ${ETCDIR_REL}/${f}.sample" >> ${TMPPLIST}
139.endfor
140	${FIND} -s ${PREFIX}/lib/opensearch -not -type d | ${SORT} | \
141		${SED} -e 's#^${FAKE_DESTDIR}${TRUE_PREFIX}/##' >> ${TMPPLIST}
142	${ECHO} "@dir lib/opensearch/extensions" >> ${TMPPLIST}
143	${ECHO} "@dir libexec/opensearch" >> ${TMPPLIST}
144.if ${PORT_OPTIONS:MPLUGINS}
145	${ECHO} "@dir lib/opensearch/plugins" >> ${TMPPLIST}
146	${ECHO} "@dir(opensearch,opensearch,0750) ${ETCDIR_REL}/opensearch-notifications-core" >> ${TMPPLIST}
147	${ECHO} "@dir(opensearch,opensearch,0750) ${ETCDIR_REL}/opensearch-notifications" >> ${TMPPLIST}
148	${ECHO} "@dir(opensearch,opensearch,0750) ${ETCDIR_REL}/opensearch-observability" >> ${TMPPLIST}
149	${ECHO} "@dir(opensearch,opensearch,0750) ${ETCDIR_REL}/opensearch-performance-analyzer" >> ${TMPPLIST}
150	${ECHO} "@dir(opensearch,opensearch,0750) ${ETCDIR_REL}/opensearch-reports-scheduler" >> ${TMPPLIST}
151	${ECHO} "@dir(opensearch,opensearch,0750) ${ETCDIR_REL}/opensearch-security" >> ${TMPPLIST}
152.endif
153	${ECHO} "@dir(opensearch,opensearch,0750) ${ETCDIR_REL}/" >> ${TMPPLIST}
154
155.include <bsd.port.mk>
156