# 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 - 1.0.0-1 - Initial package (HEAD -> master) * Fri Mar 22 2024 Zhang An - 1.0.0-1 - 1.0.0 package release (HEAD -> master)