diff --git a/textproc/Makefile b/textproc/Makefile index 4d2fcc8ebcc2..66113a002e0b 100644 --- a/textproc/Makefile +++ b/textproc/Makefile @@ -164,6 +164,7 @@ SUBDIR += elasticsearch5 SUBDIR += elasticsearch5-search-guard SUBDIR += elasticsearch6 + SUBDIR += elasticsearch7 SUBDIR += elixir-earmark SUBDIR += elixir-funnel SUBDIR += elixir-sweet_xml diff --git a/textproc/elasticsearch7/Makefile b/textproc/elasticsearch7/Makefile new file mode 100644 index 000000000000..b35cefd6dc3d --- /dev/null +++ b/textproc/elasticsearch7/Makefile @@ -0,0 +1,135 @@ +# Created by: Tom Judge +# $FreeBSD$ + +PORTNAME= elasticsearch +PORTVERSION= 7.5.2 +CATEGORIES= textproc java devel +MASTER_SITES= https://artifacts.elastic.co/downloads/${PORTNAME}/ +PKGNAMESUFFIX= 7 +DISTNAME= ${PORTNAME}-${PORTVERSION}-no-jdk-linux-x86_64 + +MAINTAINER= elastic@FreeBSD.org +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 + +CONFLICTS= elasticsearch[56]-[0-9]* + +NO_ARCH= yes +USE_JAVA= yes +NO_BUILD= yes +WRKSRC= ${WRKDIR}/${PORTNAME}-${PORTVERSION} +JAVA_VERSION= 8+ +USE_RC_SUBR= ${PORTNAME} +SHEBANG_FILES= bin/elasticsearch \ + bin/elasticsearch-certgen \ + bin/elasticsearch-certutil \ + bin/elasticsearch-cli \ + bin/elasticsearch-croneval \ + bin/elasticsearch-env \ + bin/elasticsearch-keystore \ + bin/elasticsearch-migrate \ + bin/elasticsearch-node \ + bin/elasticsearch-plugin \ + bin/elasticsearch-saml-metadata \ + bin/elasticsearch-setup-passwords \ + bin/elasticsearch-shard \ + bin/elasticsearch-sql-cli \ + bin/elasticsearch-syskeygen \ + bin/elasticsearch-users \ + bin/x-pack-env \ + bin/x-pack-security-env \ + bin/x-pack-watcher-env + +OPTIONS_DEFINE= DOCS + +.include + +CONFIG_FILES= elasticsearch.yml \ + jvm.options \ + log4j2.properties \ + role_mapping.yml \ + roles.yml +BINS= elasticsearch \ + elasticsearch-certgen \ + elasticsearch-certutil \ + elasticsearch-cli \ + elasticsearch-croneval \ + elasticsearch-env \ + elasticsearch-keystore \ + elasticsearch-migrate \ + elasticsearch-node \ + elasticsearch-plugin \ + elasticsearch-saml-metadata \ + elasticsearch-setup-passwords \ + elasticsearch-shard \ + elasticsearch-sql-cli \ + elasticsearch-sql-cli-${PORTVERSION}.jar \ + elasticsearch-syskeygen \ + elasticsearch-users \ + x-pack-env \ + x-pack-security-env \ + x-pack-watcher-env + +PORTDOCS= LICENSE.txt \ + NOTICE.txt \ + README.asciidoc + +SIGAR_ARCH= ${ARCH:S|i386|x86|} +SEARCHUSER?= elasticsearch +SEARCHGROUP?= ${SEARCHUSER} +USERS= ${SEARCHUSER} +GROUPS= ${SEARCHGROUP} + +SUB_LIST= ETCDIR=${ETCDIR} JAVA_HOME=${JAVA_HOME} +SUB_FILES= pkg-message + +post-patch: + ${RM} ${WRKSRC}/lib/jna-*.jar + # ML plugin not supported on FreeBSD + ${RM} -rf ${WRKSRC}/modules/x-pack/x-pack-ml + +do-install: + ${MKDIR} ${STAGEDIR}${PREFIX}/etc/elasticsearch +.for f in ${CONFIG_FILES} + ${INSTALL} ${WRKSRC}/config/${f} ${STAGEDIR}${ETCDIR}/${f}.sample +.endfor + ${MKDIR} ${STAGEDIR}${PREFIX}/lib/elasticsearch/bin +.for f in ${BINS} + ${INSTALL_SCRIPT} ${WRKSRC}/bin/${f} ${STAGEDIR}${PREFIX}/lib/elasticsearch/bin +.endfor + ${MKDIR} ${STAGEDIR}${PREFIX}/lib/elasticsearch/lib + (cd ${WRKSRC}/lib && ${COPYTREE_SHARE} . ${STAGEDIR}${PREFIX}/lib/elasticsearch/lib/ "-name *\.jar") + + ${MKDIR} ${STAGEDIR}${PREFIX}/lib/elasticsearch/modules + (cd ${WRKSRC}/modules && ${COPYTREE_SHARE} . ${STAGEDIR}${PREFIX}/lib/elasticsearch/modules/) + ${MKDIR} ${STAGEDIR}${PREFIX}/lib/elasticsearch/plugins + ${MKDIR} ${STAGEDIR}${PREFIX}/libexec/elasticsearch + ${INSTALL} -lrs ${STAGEDIR}${ETCDIR} ${STAGEDIR}${PREFIX}/lib/elasticsearch/config + ${LN} -s ${JAVASHAREDIR}/classes/jna.jar ${STAGEDIR}${PREFIX}/lib/elasticsearch/lib/jna.jar + +do-install-DOCS-on: + ${MKDIR} ${STAGEDIR}${DOCSDIR} +.for f in ${PORTDOCS} + ${INSTALL_DATA} ${WRKSRC}/${f} ${STAGEDIR}${DOCSDIR} +.endfor + +post-install: + ${ECHO} "@sample ${ETCDIR}/elasticsearch.yml.sample" >> ${TMPPLIST} + ${ECHO} "@sample ${ETCDIR}/jvm.options.sample" >> ${TMPPLIST} + ${ECHO} "@sample ${ETCDIR}/log4j2.properties.sample" >> ${TMPPLIST} + ${ECHO} "@sample ${ETCDIR}/role_mapping.yml.sample" >> ${TMPPLIST} + ${ECHO} "@sample ${ETCDIR}/roles.yml.sample" >> ${TMPPLIST} + ${FIND} -s ${STAGEDIR}${PREFIX}/lib/elasticsearch -not -type d | ${SORT} | \ + ${SED} -e 's#^${STAGEDIR}${PREFIX}/##' >> ${TMPPLIST} + ${ECHO} "@dir lib/elasticsearch/plugins" >> ${TMPPLIST} + ${ECHO} "@dir libexec/elasticsearch" >> ${TMPPLIST} + ${ECHO} "@dir(elasticsearch,elasticsearch,0755) ${ETCDIR}" >> ${TMPPLIST} + +.include diff --git a/textproc/elasticsearch7/distinfo b/textproc/elasticsearch7/distinfo new file mode 100644 index 000000000000..d9281f740077 --- /dev/null +++ b/textproc/elasticsearch7/distinfo @@ -0,0 +1,3 @@ +TIMESTAMP = 1579833580 +SHA256 (elasticsearch-7.5.2-no-jdk-linux-x86_64.tar.gz) = 5e7d47e2a154400ea2f3ce25ebff621b2661a259cfab53811142f574f21397e5 +SIZE (elasticsearch-7.5.2-no-jdk-linux-x86_64.tar.gz) = 141758515 diff --git a/textproc/elasticsearch7/files/elasticsearch.in b/textproc/elasticsearch7/files/elasticsearch.in new file mode 100644 index 000000000000..00779163c412 --- /dev/null +++ b/textproc/elasticsearch7/files/elasticsearch.in @@ -0,0 +1,130 @@ +#!/bin/sh +# +# $FreeBSD$ +# +# PROVIDE: elasticsearch +# REQUIRE: NETWORKING SERVERS +# BEFORE: DAEMON +# KEYWORD: shutdown +# +# Add the following line to /etc/rc.conf to enable elasticsearch: +# +# elasticsearch_enable="YES" +# +# elasticsearch_user (username): Set to elasticsearch by default. +# Set it to required username. +# elasticsearch_group (group): Set to elasticsearch by default. +# Set it to required group. +# elasticsearch_config (path): Set to %%PREFIX%%/etc/elasticsearch/elasticsearch.yml by default. +# Set it to the config file location. +# elasticsearch_java_home (path): Set to %%JAVA_HOME%% by default. +# Set it to the root of the JDK to use. +# +. /etc/rc.subr + +name=elasticsearch +rcvar=elasticsearch_enable + +load_rc_config ${name} + +: ${elasticsearch_enable:=NO} +: ${elasticsearch_user=elasticsearch} +: ${elasticsearch_group=elasticsearch} +: ${elasticsearch_config=%%PREFIX%%/etc/elasticsearch} +: ${elasticsearch_login_class=root} +: ${elasticsearch_java_home="%%JAVA_HOME%%"} + +required_files="${elasticsearch_config}/elasticsearch.yml" +_pidprefix=/var/run/elasticsearch/elasticsearch +pidfile=${_pidprefix}.pid +procname=${elasticsearch_java_home}/bin/java + +extra_commands="console status" +console_cmd=elasticsearch_console +start_precmd=elasticsearch_precmd +command=%%PREFIX%%/lib/elasticsearch/bin/elasticsearch +command_args="-d --pidfile=${pidfile}" + +export ES_PATH_CONF=${elasticsearch_config} +export JAVA_HOME=${elasticsearch_java_home} + +elasticsearch_precmd() +{ + /usr/bin/install -d -o ${elasticsearch_user} -g ${elasticsearch_group} -m 755 ${pidfile%/*} + /usr/bin/install -d -o ${elasticsearch_user} -g ${elasticsearch_group} -m 755 /var/db/elasticsearch + /usr/bin/install -d -o ${elasticsearch_user} -g ${elasticsearch_group} -m 755 /var/log/elasticsearch +} + +elasticsearch_console() +{ + command_args="" + run_rc_command "start" +} + +if [ -n "$2" ]; then + profile="$2" + if [ "x${elasticsearch_profiles}" != "x" ]; then + eval elasticsearch_config="\${elasticsearch_${profile}_config:-}" + if [ "x${elasticsearch_config}" = "x" ]; then + echo "You must define a configuration (elasticsearch_${profile}_config)" + exit 1 + fi + export ES_PATH_CONF=${elasticsearch_config} + required_files="${elasticsearch_config}/elasticsearch.yml" + required_files="${elasticsearch_config}/jvm.options" + eval elasticsearch_enable="\${elasticsearch_${profile}_enable:-${elasticsearch_enable}}" + pidfile="${_pidprefix}.${profile}.pid" + command_args="-d --pidfile=${pidfile}" + echo "===> elasticsearch profile: ${profile}" + else + echo "$0: extra argument ignored" + fi +else + if [ "x${elasticsearch_profiles}" != "x" -a "x$1" != "x" ]; then + for profile in ${elasticsearch_profiles}; do + eval _enable="\${elasticsearch_${profile}_enable}" + case "x${_enable:-${elasticsearch_enable}}" in + x|x[Nn][Oo]|x[Nn][Oo][Nn][Ee]) + continue + ;; + x[Yy][Ee][Ss]) + ;; + *) + if test -z "$_enable"; then + _var=elasticsearch_enable + else + _var=elasticsearch_"${profile}"_enable + fi + echo "Bad value" \ + "'${_enable:-${elasticsearch_enable}}'" \ + "for ${_var}. " \ + "Profile ${profile} skipped." + continue + ;; + esac + %%PREFIX%%/etc/rc.d/elasticsearch $1 ${profile} + retcode="$?" + if [ "0${retcode}" -ne 0 ]; then + failed="${profile} (${retcode}) ${failed:-}" + else + success="${profile} ${success:-}" + fi + done + exit 0 + fi +fi + +if [ "x${elasticsearch_mem_min}" != "x" ]; then + echo "The elasticsearch_mem_min variable is no longer supported please set this in %%PREFIX%%/etc/jvm.options" + exit 1; +fi +if [ "x${elasticsearch_mem_max}" != "x" ]; then + echo "The elasticsearch_mem_max variable is no longer supported please set this in %%PREFIX%%/etc/jvm.options" + exit 1; +fi +if [ "x${elasticsearch_props}" != "x" ]; then + echo "The elasticsearch_props variable is no longer supported please set this in %%PREFIX%%/etc/jvm.options" + exit 1; +fi + +run_rc_command "$1" diff --git a/textproc/elasticsearch7/files/patch-config_elasticsearch.yml b/textproc/elasticsearch7/files/patch-config_elasticsearch.yml new file mode 100644 index 000000000000..a39468ea84c9 --- /dev/null +++ b/textproc/elasticsearch7/files/patch-config_elasticsearch.yml @@ -0,0 +1,22 @@ +--- config/elasticsearch.yml.orig 2018-09-26 13:30:23 UTC ++++ config/elasticsearch.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/elasticsearch + # + # Path to log files: + # + #path.logs: /path/to/logs ++path.logs: /var/log/elasticsearch + # + # ----------------------------------- Memory ----------------------------------- + # +@@ -86,3 +88,6 @@ + # Require explicit names when deleting indices: + # + #action.destructive_requires_name: true ++ ++# ml is not supported on FreeBSD ++xpack.ml.enabled: false diff --git a/textproc/elasticsearch7/files/patch-config_jvm.options b/textproc/elasticsearch7/files/patch-config_jvm.options new file mode 100644 index 000000000000..6289563798a9 --- /dev/null +++ b/textproc/elasticsearch7/files/patch-config_jvm.options @@ -0,0 +1,15 @@ +--- config/jvm.options.orig 2020-01-15 04:09:47 UTC ++++ config/jvm.options +@@ -67,10 +67,10 @@ + 8:-XX:+PrintGCDateStamps + 8:-XX:+PrintTenuringDistribution + 8:-XX:+PrintGCApplicationStoppedTime +-8:-Xloggc:logs/gc.log ++8:-Xloggc:${ES_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=${ES_TMPDIR}/gc.log:utctime,pid,tags:filecount=32,filesize=64m diff --git a/textproc/elasticsearch7/files/pkg-message.in b/textproc/elasticsearch7/files/pkg-message.in new file mode 100644 index 000000000000..f664cda07807 --- /dev/null +++ b/textproc/elasticsearch7/files/pkg-message.in @@ -0,0 +1,34 @@ +[ +{ type: install + message: <