591 lines
17 KiB
Ruby
591 lines
17 KiB
Ruby
# Disable brp-java-repack-jars, so jars will not be decompressed and repackaged
|
|
%define __jar_repack 0
|
|
|
|
# Generate digests, 8 means algorithm of sha256
|
|
# This is different from rpm sig algorithm
|
|
# Requires rpm version 4.12 + to generate but b/c run on older versions
|
|
%define _source_filedigest_algorithm 8
|
|
%define _binary_filedigest_algorithm 8
|
|
|
|
# User Define Variables
|
|
%define product_name poissonsearch
|
|
%define product_dir %{_datadir}/%{product_name}
|
|
%define config_dir %{_sysconfdir}/%{product_name}
|
|
%define data_dir %{_sharedstatedir}/%{product_name}
|
|
%define log_dir %{_localstatedir}/log/%{product_name}
|
|
%define pid_dir %{_localstatedir}/run/%{product_name}
|
|
%define build_arch x86_64
|
|
|
|
Name: poissonsearch-oss
|
|
Version: 1.0.0
|
|
%define package_version 1.0.0
|
|
Release: 1
|
|
License: ASL 2.0
|
|
Summary: Distributed RESTful search engine built for the cloud
|
|
URL: https://gitee.com/openeuler/poissonsearch-oss
|
|
Source0: https://gitee.com/openEuler/poissonsearch-oss/archive/refs/tags/%{package_version}.tar.gz
|
|
Group: Application/Internet
|
|
ExclusiveArch: %{build_arch}
|
|
BuildArch: %{build_arch}
|
|
|
|
BuildRequires: java-17-openjdk-devel,java-11-openjdk-devel,tar,gzip,rpmdevtools,dos2unix
|
|
Requires: java-11-openjdk-headless
|
|
Provides: elasticsearch-oss = 7.10.2-1
|
|
|
|
%description
|
|
poissonsearch-oss is a distributed RESTful search engine built for the cloud, forked from elasticsearch-oss 7.10.2.
|
|
|
|
%prep
|
|
tar -xzf %{_sourcedir}/%{package_version}.tar.gz -C %{_builddir}
|
|
|
|
%build
|
|
|
|
# need to add java home and runtime java home
|
|
export JAVA_HOME=/etc/alternatives/java_sdk_17
|
|
export RUNTIME_JAVA_HOME=$JAVA_HOME
|
|
|
|
cd %{name}-%{package_version}
|
|
dos2unix gradlew
|
|
./gradlew buildOssNoJdkRpm --no-daemon --warning-mode none -Dorg.gradle.java.home=/etc/alternatives/java_sdk_17
|
|
cd ..
|
|
mv %{name}-%{package_version}/distribution/packages/oss-no-jdk-rpm/build/distributions/%{name}-7.10.2-no-jdk-x86_64.rpm ./%{name}-%{version}-%{_architecture}.rpm
|
|
rpm2cpio %{name}-%{version}-%{_architecture}.rpm | cpio -divm
|
|
|
|
# dos2unix for all scripts
|
|
find etc -type f -print0 | xargs -0 dos2unix
|
|
find usr/lib -type f -print0 | xargs -0 dos2unix
|
|
find usr/share/poissonsearch/bin -type f -print0 | xargs -0 dos2unix
|
|
|
|
%install
|
|
# Create necessary directories
|
|
mkdir -p %{buildroot}%{pid_dir}
|
|
cp -a usr etc var %{buildroot}
|
|
|
|
%check
|
|
cd %{name}-%{package_version}
|
|
|
|
export JAVA_HOME=/etc/alternatives/java_sdk_11
|
|
export RUNTIME_JAVA_HOME=$JAVA_HOME
|
|
|
|
# need to build with java 17 in openEuler, jdk 11 will be recognized as jre in gradle 7.5.1 for some reason
|
|
# for 20.03, gralde daemon got killed for no reason, disable test until fix this issue
|
|
#./gradlew test --warning-mode none --no-daemon -Dorg.gradle.java.home=/etc/alternatives/java_sdk_17 > test.report
|
|
|
|
%pre -p /bin/bash
|
|
#!/bin/bash
|
|
RPM_ARCH=x86_64
|
|
RPM_OS=linux
|
|
RPM_PACKAGE_NAME=poissonsearch-oss
|
|
RPM_PACKAGE_VERSION=7.10.2
|
|
RPM_PACKAGE_RELEASE=1
|
|
|
|
#
|
|
# This script is executed in the pre-installation phase
|
|
#
|
|
# On Debian,
|
|
# $1=install : indicates an new install
|
|
# $1=upgrade : indicates an upgrade
|
|
#
|
|
# On RedHat,
|
|
# $1=1 : indicates an new install
|
|
# $1=2 : indicates an upgrade
|
|
|
|
err_exit() {
|
|
echo "$@" >&2
|
|
exit 1
|
|
}
|
|
|
|
# source the default env file
|
|
if [ -f "/etc/sysconfig/poissonsearch" ]; then
|
|
. "/etc/sysconfig/poissonsearch"
|
|
fi
|
|
|
|
export ES_PATH_CONF=${ES_PATH_CONF:-/etc/poissonsearch}
|
|
|
|
case "$1" in
|
|
|
|
# Debian ####################################################
|
|
install|upgrade)
|
|
|
|
# Create poissonsearch group if not existing
|
|
if ! getent group poissonsearch > /dev/null 2>&1 ; then
|
|
echo -n "Creating poissonsearch group..."
|
|
addgroup --quiet --system poissonsearch
|
|
echo " OK"
|
|
fi
|
|
|
|
# Create poissonsearch user if not existing
|
|
if ! id poissonsearch > /dev/null 2>&1 ; then
|
|
echo -n "Creating poissonsearch user..."
|
|
adduser --quiet \
|
|
--system \
|
|
--no-create-home \
|
|
--home /nonexistent \
|
|
--ingroup poissonsearch \
|
|
--disabled-password \
|
|
--shell /bin/false \
|
|
poissonsearch
|
|
echo " OK"
|
|
fi
|
|
;;
|
|
abort-deconfigure|abort-upgrade|abort-remove)
|
|
;;
|
|
|
|
# RedHat ####################################################
|
|
1|2)
|
|
|
|
# Create poissonsearch group if not existing
|
|
if ! getent group poissonsearch > /dev/null 2>&1 ; then
|
|
echo -n "Creating poissonsearch group..."
|
|
groupadd -r poissonsearch
|
|
echo " OK"
|
|
fi
|
|
|
|
# Create poissonsearch user if not existing
|
|
if ! id poissonsearch > /dev/null 2>&1 ; then
|
|
echo -n "Creating poissonsearch user..."
|
|
useradd --system \
|
|
--no-create-home \
|
|
--home-dir /nonexistent \
|
|
--gid poissonsearch \
|
|
--shell /sbin/nologin \
|
|
--comment "poissonsearch user" \
|
|
poissonsearch
|
|
echo " OK"
|
|
fi
|
|
;;
|
|
|
|
*)
|
|
err_exit "pre install script called with unknown argument \`$1'"
|
|
;;
|
|
esac
|
|
|
|
|
|
|
|
%post -p /bin/sh
|
|
RPM_ARCH=x86_64
|
|
RPM_OS=linux
|
|
RPM_PACKAGE_NAME=poissonsearch-oss
|
|
RPM_PACKAGE_VERSION=7.10.2
|
|
RPM_PACKAGE_RELEASE=1
|
|
|
|
#
|
|
# This script is executed in the post-installation phase
|
|
#
|
|
# On Debian,
|
|
# $1=configure : is set to 'configure' and if $2 is set, it is an upgrade
|
|
#
|
|
# On RedHat,
|
|
# $1=0 : indicates a removal
|
|
# $1=1 : indicates an upgrade
|
|
|
|
# source the default env file
|
|
if [ -f "/etc/sysconfig/poissonsearch" ]; then
|
|
. "/etc/sysconfig/poissonsearch"
|
|
fi
|
|
|
|
export ES_PATH_CONF=${ES_PATH_CONF:-/etc/poissonsearch}
|
|
|
|
IS_UPGRADE=false
|
|
|
|
case "$1" in
|
|
|
|
# Debian ####################################################
|
|
configure)
|
|
|
|
# If $1=configure and $2 is set, this is an upgrade
|
|
if [ -n $2 ]; then
|
|
IS_UPGRADE=true
|
|
fi
|
|
PACKAGE=deb
|
|
;;
|
|
abort-upgrade|abort-remove|abort-deconfigure)
|
|
PACKAGE=deb
|
|
;;
|
|
|
|
# RedHat ####################################################
|
|
1)
|
|
# If $1=1 this is an install
|
|
IS_UPGRADE=false
|
|
PACKAGE=rpm
|
|
;;
|
|
2)
|
|
# If $1=1 this is an upgrade
|
|
IS_UPGRADE=true
|
|
PACKAGE=rpm
|
|
;;
|
|
|
|
*)
|
|
echo "post install script called with unknown argument \`$1'" >&2
|
|
exit 1
|
|
;;
|
|
esac
|
|
|
|
# to pick up /usr/lib/sysctl.d/poissonsearch.conf
|
|
if command -v systemctl > /dev/null; then
|
|
systemctl restart systemd-sysctl.service || true
|
|
fi
|
|
|
|
if [ "x$IS_UPGRADE" != "xtrue" ]; then
|
|
if command -v systemctl >/dev/null; then
|
|
echo "### NOT starting on installation, please execute the following statements to configure poissonsearch service to start automatically using systemd"
|
|
echo " sudo systemctl daemon-reload"
|
|
echo " sudo systemctl enable poissonsearch.service"
|
|
echo "### You can start poissonsearch service by executing"
|
|
echo " sudo systemctl start poissonsearch.service"
|
|
|
|
elif command -v chkconfig >/dev/null; then
|
|
echo "### NOT starting on installation, please execute the following statements to configure poissonsearch service to start automatically using chkconfig"
|
|
echo " sudo chkconfig --add poissonsearch"
|
|
echo "### You can start poissonsearch service by executing"
|
|
echo " sudo service poissonsearch start"
|
|
|
|
elif command -v update-rc.d >/dev/null; then
|
|
echo "### NOT starting on installation, please execute the following statements to configure poissonsearch service to start automatically using chkconfig"
|
|
echo " sudo update-rc.d poissonsearch defaults 95 10"
|
|
echo "### You can start poissonsearch service by executing"
|
|
echo " sudo /etc/init.d/poissonsearch start"
|
|
fi
|
|
elif [ "$RESTART_ON_UPGRADE" = "true" ]; then
|
|
|
|
echo -n "Restarting poissonsearch service..."
|
|
if command -v systemctl >/dev/null; then
|
|
systemctl daemon-reload
|
|
systemctl restart poissonsearch.service || true
|
|
|
|
elif [ -x /etc/init.d/poissonsearch ]; then
|
|
if command -v invoke-rc.d >/dev/null; then
|
|
invoke-rc.d poissonsearch stop || true
|
|
invoke-rc.d poissonsearch start || true
|
|
else
|
|
/etc/init.d/poissonsearch restart || true
|
|
fi
|
|
|
|
# older suse linux distributions do not ship with systemd
|
|
# but do not have an /etc/init.d/ directory
|
|
# this tries to start the poissonsearch service on these
|
|
# as well without failing this script
|
|
elif [ -x /etc/rc.d/init.d/poissonsearch ] ; then
|
|
/etc/rc.d/init.d/poissonsearch restart || true
|
|
fi
|
|
echo " OK"
|
|
fi
|
|
|
|
# the equivalent code for rpm is in posttrans
|
|
if [ "$PACKAGE" = "deb" ]; then
|
|
if [ ! -f "${ES_PATH_CONF}"/elasticsearch.keystore ]; then
|
|
/usr/share/poissonsearch/bin/elasticsearch-keystore create
|
|
chown root:poissonsearch "${ES_PATH_CONF}"/elasticsearch.keystore
|
|
chmod 660 "${ES_PATH_CONF}"/elasticsearch.keystore
|
|
md5sum "${ES_PATH_CONF}"/elasticsearch.keystore > "${ES_PATH_CONF}"/.elasticsearch.keystore.initial_md5sum
|
|
else
|
|
if /usr/share/poissonsearch/bin/elasticsearch-keystore has-passwd --silent ; then
|
|
echo "### Warning: unable to upgrade encrypted keystore" 1>&2
|
|
echo " Please run elasticsearch-keystore upgrade and enter password" 1>&2
|
|
else
|
|
/usr/share/poissonsearch/bin/elasticsearch-keystore upgrade
|
|
fi
|
|
fi
|
|
fi
|
|
|
|
|
|
%posttrans -p /bin/sh
|
|
RPM_ARCH=x86_64
|
|
RPM_OS=linux
|
|
RPM_PACKAGE_NAME=poissonsearch-oss
|
|
RPM_PACKAGE_VERSION=7.10.2
|
|
RPM_PACKAGE_RELEASE=1
|
|
|
|
# source the default env file
|
|
if [ -f "/etc/sysconfig/poissonsearch" ]; then
|
|
. "/etc/sysconfig/poissonsearch"
|
|
fi
|
|
|
|
export ES_PATH_CONF=${ES_PATH_CONF:-/etc/poissonsearch}
|
|
|
|
if [ ! -f "${ES_PATH_CONF}"/elasticsearch.keystore ]; then
|
|
/usr/share/poissonsearch/bin/elasticsearch-keystore create
|
|
chown root:poissonsearch "${ES_PATH_CONF}"/elasticsearch.keystore
|
|
chmod 660 "${ES_PATH_CONF}"/elasticsearch.keystore
|
|
md5sum "${ES_PATH_CONF}"/elasticsearch.keystore > "${ES_PATH_CONF}"/.elasticsearch.keystore.initial_md5sum
|
|
else
|
|
if /usr/share/poissonsearch/bin/elasticsearch-keystore has-passwd --silent ; then
|
|
echo "### Warning: unable to upgrade encrypted keystore" 1>&2
|
|
echo " Please run elasticsearch-keystore upgrade and enter password" 1>&2
|
|
else
|
|
/usr/share/poissonsearch/bin/elasticsearch-keystore upgrade
|
|
fi
|
|
fi
|
|
|
|
|
|
%preun -p /bin/sh
|
|
RPM_ARCH=x86_64
|
|
RPM_OS=linux
|
|
RPM_PACKAGE_NAME=poissonsearch-oss
|
|
RPM_PACKAGE_VERSION=7.10.2
|
|
RPM_PACKAGE_RELEASE=1
|
|
|
|
#
|
|
# This script is executed in the pre-remove phase
|
|
#
|
|
# On Debian,
|
|
# $1=remove : indicates a removal
|
|
# $1=upgrade : indicates an upgrade
|
|
#
|
|
# On RedHat,
|
|
# $1=0 : indicates a removal
|
|
# $1=1 : indicates an upgrade
|
|
|
|
# source the default env file
|
|
if [ -f "/etc/sysconfig/poissonsearch" ]; then
|
|
. "/etc/sysconfig/poissonsearch"
|
|
fi
|
|
|
|
export ES_PATH_CONF=${ES_PATH_CONF:-/etc/poissonsearch}
|
|
|
|
STOP_REQUIRED=false
|
|
REMOVE_SERVICE=false
|
|
|
|
case "$1" in
|
|
|
|
# Debian ####################################################
|
|
remove)
|
|
STOP_REQUIRED=true
|
|
REMOVE_SERVICE=true
|
|
;;
|
|
upgrade)
|
|
if [ "$RESTART_ON_UPGRADE" = "true" ]; then
|
|
STOP_REQUIRED=true
|
|
fi
|
|
;;
|
|
deconfigure|failed-upgrade)
|
|
;;
|
|
|
|
# RedHat ####################################################
|
|
0)
|
|
STOP_REQUIRED=true
|
|
REMOVE_SERVICE=true
|
|
;;
|
|
1)
|
|
# Dont do anything on upgrade, because the preun script in redhat gets executed after the postinst (madness!)
|
|
;;
|
|
|
|
*)
|
|
echo "pre remove script called with unknown argument \`$1'" >&2
|
|
exit 1
|
|
;;
|
|
esac
|
|
|
|
# Stops the service
|
|
if [ "$STOP_REQUIRED" = "true" ]; then
|
|
echo -n "Stopping poissonsearch service..."
|
|
if command -v systemctl >/dev/null; then
|
|
systemctl --no-reload stop poissonsearch.service
|
|
|
|
elif [ -x /etc/init.d/poissonsearch ]; then
|
|
if command -v invoke-rc.d >/dev/null; then
|
|
invoke-rc.d poissonsearch stop
|
|
else
|
|
/etc/init.d/poissonsearch stop
|
|
fi
|
|
|
|
# older suse linux distributions do not ship with systemd
|
|
# but do not have an /etc/init.d/ directory
|
|
# this tries to start the poissonsearch service on these
|
|
# as well without failing this script
|
|
elif [ -x /etc/rc.d/init.d/poissonsearch ] ; then
|
|
/etc/rc.d/init.d/poissonsearch stop
|
|
fi
|
|
echo " OK"
|
|
fi
|
|
|
|
if [ -f "${ES_PATH_CONF}"/elasticsearch.keystore ]; then
|
|
if md5sum --status -c "${ES_PATH_CONF}"/.elasticsearch.keystore.initial_md5sum; then
|
|
rm "${ES_PATH_CONF}"/elasticsearch.keystore "${ES_PATH_CONF}"/.elasticsearch.keystore.initial_md5sum
|
|
fi
|
|
fi
|
|
|
|
if [ "$REMOVE_SERVICE" = "true" ]; then
|
|
if command -v systemctl >/dev/null; then
|
|
systemctl disable poissonsearch.service > /dev/null 2>&1 || true
|
|
fi
|
|
|
|
if command -v chkconfig >/dev/null; then
|
|
chkconfig --del poissonsearch 2> /dev/null || true
|
|
fi
|
|
|
|
if command -v update-rc.d >/dev/null; then
|
|
update-rc.d poissonsearch remove >/dev/null || true
|
|
fi
|
|
fi
|
|
|
|
# Built for packages-7.10.2 (rpm)
|
|
|
|
|
|
%postun -p /bin/sh
|
|
RPM_ARCH=x86_64
|
|
RPM_OS=linux
|
|
RPM_PACKAGE_NAME=poissonsearch-oss
|
|
RPM_PACKAGE_VERSION=7.10.2
|
|
RPM_PACKAGE_RELEASE=1
|
|
|
|
#
|
|
# This script is executed in the post-removal phase
|
|
#
|
|
# On Debian,
|
|
# $1=remove : indicates a removal
|
|
# $1=purge : indicates an upgrade
|
|
#
|
|
# On RedHat,
|
|
# $1=0 : indicates a removal
|
|
# $1=1 : indicates an upgrade
|
|
|
|
# source the default env file
|
|
if [ -f "/etc/sysconfig/poissonsearch" ]; then
|
|
. "/etc/sysconfig/poissonsearch"
|
|
fi
|
|
|
|
export ES_PATH_CONF=${ES_PATH_CONF:-/etc/poissonsearch}
|
|
|
|
REMOVE_DIRS=false
|
|
REMOVE_JVM_OPTIONS_DIRECTORY=false
|
|
REMOVE_USER_AND_GROUP=false
|
|
|
|
case "$1" in
|
|
|
|
# Debian ####################################################
|
|
remove)
|
|
REMOVE_DIRS=true
|
|
;;
|
|
|
|
purge)
|
|
REMOVE_DIRS=true
|
|
REMOVE_JVM_OPTIONS_DIRECTORY=true
|
|
REMOVE_USER_AND_GROUP=true
|
|
;;
|
|
failed-upgrade|abort-install|abort-upgrade|disappear|upgrade|disappear)
|
|
;;
|
|
|
|
# RedHat ####################################################
|
|
0)
|
|
REMOVE_DIRS=true
|
|
REMOVE_USER_AND_GROUP=true
|
|
;;
|
|
1)
|
|
# If $1=1 this is an upgrade
|
|
IS_UPGRADE=true
|
|
;;
|
|
|
|
*)
|
|
echo "post remove script called with unknown argument \`$1'" >&2
|
|
exit 1
|
|
;;
|
|
esac
|
|
|
|
if [ "$REMOVE_DIRS" = "true" ]; then
|
|
|
|
if [ -d /var/log/poissonsearch ]; then
|
|
echo -n "Deleting log directory..."
|
|
rm -rf /var/log/poissonsearch
|
|
echo " OK"
|
|
fi
|
|
|
|
if [ -d /usr/share/poissonsearch/plugins ]; then
|
|
echo -n "Deleting plugins directory..."
|
|
rm -rf /usr/share/poissonsearch/plugins
|
|
echo " OK"
|
|
fi
|
|
|
|
# plugins may have contained bin files
|
|
if [ -d /usr/share/poissonsearch/bin ]; then
|
|
echo -n "Deleting plugin bin directories..."
|
|
rm -rf /usr/share/poissonsearch/bin
|
|
echo " OK"
|
|
fi
|
|
|
|
if [ -d /var/run/poissonsearch ]; then
|
|
echo -n "Deleting PID directory..."
|
|
rm -rf /var/run/poissonsearch
|
|
echo " OK"
|
|
fi
|
|
|
|
# Delete the data directory if and only if empty
|
|
if [ -d /var/lib/poissonsearch ]; then
|
|
rmdir --ignore-fail-on-non-empty /var/lib/poissonsearch
|
|
fi
|
|
|
|
# delete the jvm.options.d directory if and only if empty
|
|
if [ -d "${ES_PATH_CONF}/jvm.options.d" ]; then
|
|
rmdir --ignore-fail-on-non-empty "${ES_PATH_CONF}/jvm.options.d"
|
|
fi
|
|
|
|
# delete the jvm.options.d directory if we are purging
|
|
if [ "$REMOVE_JVM_OPTIONS_DIRECTORY" = "true" ]; then
|
|
if [ -d "${ES_PATH_CONF}/jvm.options.d" ]; then
|
|
echo -n "Deleting jvm.options.d directory..."
|
|
rm -rf "${ES_PATH_CONF}/jvm.options.d"
|
|
echo " OK"
|
|
fi
|
|
fi
|
|
|
|
# delete the conf directory if and only if empty
|
|
if [ -d "${ES_PATH_CONF}" ]; then
|
|
rmdir --ignore-fail-on-non-empty "${ES_PATH_CONF}"
|
|
fi
|
|
|
|
fi
|
|
|
|
if [ "$REMOVE_USER_AND_GROUP" = "true" ]; then
|
|
if id poissonsearch > /dev/null 2>&1 ; then
|
|
userdel poissonsearch
|
|
fi
|
|
|
|
if getent group poissonsearch > /dev/null 2>&1 ; then
|
|
groupdel poissonsearch
|
|
fi
|
|
fi
|
|
|
|
|
|
%files
|
|
# Permissions
|
|
%defattr(-, %{product_name}, %{product_name})
|
|
|
|
# Root dirs/docs/licenses
|
|
# /usr/share/poissonsearch
|
|
%dir %{product_dir}
|
|
%doc %{product_dir}/NOTICE.txt
|
|
%doc %{product_dir}/README.asciidoc
|
|
%license %{product_dir}/LICENSE.txt
|
|
|
|
# Config dirs/files
|
|
# /etc/poissonsearch
|
|
%dir %{config_dir}
|
|
%{config_dir}/jvm.options.d
|
|
%config(noreplace) %{config_dir}/elasticsearch.yml
|
|
%config(noreplace) %{config_dir}/jvm.options
|
|
%config(noreplace) %{config_dir}/log4j2.properties
|
|
|
|
# Service files
|
|
# /etc/init.d/poissonsearch
|
|
%attr(0644, root, root) %{_sysconfdir}/init.d/%{product_name}
|
|
%attr(0644, root, root) %config(noreplace) %{_sysconfdir}/sysconfig/%{product_name}
|
|
# /usr/lib/
|
|
%attr(0644, root, root) %{_prefix}/lib/systemd/system/%{product_name}.service
|
|
%attr(0644, root, root) %config(noreplace) %{_prefix}/lib/sysctl.d/%{product_name}.conf
|
|
%attr(0644, root, root) %config(noreplace) %{_prefix}/lib/tmpfiles.d/%{product_name}.conf
|
|
|
|
# Main dirs
|
|
%{product_dir}/bin
|
|
%{product_dir}/lib
|
|
%{product_dir}/modules
|
|
%{product_dir}/plugins
|
|
%{log_dir}
|
|
%{pid_dir}
|
|
%dir %{data_dir}
|
|
|
|
%changelog
|
|
* Tue Mar 19 2024 Zhang An <zhangan9@huawei.com> - 1.0.0-1
|
|
- Initial package (HEAD -> master)
|
|
* Fri Mar 22 2024 Zhang An <zhangan9@huawei.com> - 1.0.0-1
|
|
- 1.0.0 package release (HEAD -> master)
|