blob: 124469af1ab88ec75f0c072a17e44912e1596618 [file] [log] [blame]
%define __jar_repack %{nil}
%define user ignite
%define _libdir /usr/lib
%define _log %{_var}/log
%define _sharedstatedir /var/lib
#-------------------------------------------------------------------------------
#
# Packages' descriptions
#
Name: apache-ignite
Version: 2.10.0
Release: 1
Summary: Apache Ignite In-Memory Computing, Database and Caching Platform
Group: Development/System
License: ASL 2.0
URL: https://ignite.apache.org/
Source: %{name}-%{version}-bin.zip
Requires: java-1.8.0, chkconfig
Requires(pre): shadow-utils
Provides: %{name}
AutoReq: no
AutoProv: no
BuildArch: noarch
%description
Ignite is a memory-centric distributed database, caching, and processing
platform for transactional, analytical, and streaming workloads, delivering
in-memory speeds at petabyte scale
%prep
#-------------------------------------------------------------------------------
#
# Prepare step: unpack sources
#
%setup -q -n %{name}-%{version}-bin
#%pre
#-------------------------------------------------------------------------------
#
# Preinstall scripts
# $1 can be:
# 1 - Initial install
# 2 - Upgrade
#
%post
#-------------------------------------------------------------------------------
#
# Postinstall scripts
# $1 can be:
# 1 - Initial installation
# 2 - Upgrade
#
echoUpgradeMessage () {
echo "======================================================================================================="
echo " WARNING: Updating Apache Ignite's cluster version requires updating every node before starting grid "
echo "======================================================================================================="
}
setPermissions () {
chown -R %{user}:%{user} %{_sharedstatedir}/%{name} %{_log}/%{name}
}
case $1 in
1|configure)
# DEB postinst upgrade
if [ ! -z "${2}" ]; then
echoUpgradeMessage
fi
# Add user for service operation
useradd -r -d %{_datadir}/%{name} -s /usr/sbin/nologin %{user}
# Change ownership for work and log directories
setPermissions
# Install alternatives
# Commented out until ignitevisorcmd / ignitesqlline is ready to work from any user
#update-alternatives --install %{_bindir}/ignitevisorcmd ignitevisorcmd %{_datadir}/%{name}/bin/ignitevisorcmd.sh 0
#update-alternatives --auto ignitevisorcmd
#update-alternatives --display ignitevisorcmd
#update-alternatives --install %{_bindir}/ignitesqlline ignitesqlline %{_datadir}/%{name}/bin/sqlline.sh 0
#update-alternatives --auto ignitesqlline
#update-alternatives --display ignitesqlline
;;
2)
# RPM postinst upgrade
echoUpgradeMessage
# Workaround for upgrade from 2.4.0
if [ -d /usr/com/apache-ignite/ ]; then
for file in /usr/com/apache-ignite/*; do
if [ ! -h $file ]; then
cp -rf $file %{_sharedstatedir}/%{name}/
fi
done
fi
# Change ownership for work and log directories (yum resets permissions on upgrade nevertheless)
setPermissions
;;
esac
%preun
#-------------------------------------------------------------------------------
#
# Pre-uninstall scripts
# $1 can be:
# 0 - Uninstallation
# 1 - Upgrade
#
stopIgniteNodes () {
if ! $(grep -q "Microsoft" /proc/version); then
systemctl stop 'apache-ignite@*'
fi
ps ax | grep '\-DIGNITE_HOME' | head -n-1 | awk {'print $1'} | while read pid; do
kill -INT ${pid}
done
}
case $1 in
0|remove)
# Stop all nodes (both service and standalone)
stopIgniteNodes
# Remove alternatives
# Commented out until ignitevisorcmd / ignitesqlline is ready to work from any user
#update-alternatives --remove ignitevisorcmd /usr/share/%{name}/bin/ignitevisorcmd.sh
#update-alternatives --display ignitevisorcmd || true
#update-alternatives --remove ignitesqlline /usr/share/%{name}/bin/sqlline.sh
#update-alternatives --display ignitesqlline || true
;;
1|upgrade)
# Stop all nodes (both service and standalone)
echo "=================================================================================="
echo " WARNING: All running Apache Ignite's nodes will be stopped upon package update "
echo "=================================================================================="
stopIgniteNodes
;;
esac
%postun
#-------------------------------------------------------------------------------
#
# Post-uninstall scripts
# $1 can be:
# 0 - Uninstallation
# 1 - Upgrade
#
case $1 in
0|remove)
# Remove user
userdel %{user}
# Remove service PID directory
rm -rfv /var/run/%{name}
# Remove firewalld rules if firewalld is installed and running
if [[ "$(type firewall-cmd &>/dev/null; echo $?)" -eq 0 && "$(systemctl is-active firewalld)" == "active" ]]
then
for port in s d
do
firewall-cmd --permanent --direct --remove-rule ipv4 filter INPUT 0 -p tcp -m multiport --${port}ports 11211:11220,47500:47509,47100:47109 -j ACCEPT &>/dev/null
firewall-cmd --permanent --direct --remove-rule ipv4 filter INPUT 0 -p udp -m multiport --${port}ports 47400:47409 -j ACCEPT &>/dev/null
done
firewall-cmd --permanent --direct --remove-rule ipv4 filter INPUT 0 -m pkttype --pkt-type multicast -j ACCEPT &>/dev/null
systemctl restart firewalld
fi
;;
1|upgrade)
:
;;
esac
%install
#-------------------------------------------------------------------------------
#
# Prepare packages' layout
#
# Create base directory structure
mkdir -p %{buildroot}%{_datadir}/%{name}
mkdir -p %{buildroot}%{_libdir}/%{name}
mkdir -p %{buildroot}%{_datadir}/doc/%{name}-%{version}/bin
mkdir -p %{buildroot}%{_log}/%{name}
mkdir -p %{buildroot}%{_sharedstatedir}/%{name}
mkdir -p %{buildroot}%{_sysconfdir}/systemd/system
mkdir -p %{buildroot}%{_bindir}
# Copy nessessary files and remove *.bat files
cp -rf benchmarks bin platforms %{buildroot}%{_datadir}/%{name}
cp -rf docs/* examples %{buildroot}%{_datadir}/doc/%{name}-%{version}
mv -f %{buildroot}%{_datadir}/%{name}/bin/ignitevisorcmd.sh %{buildroot}%{_datadir}/doc/%{name}-%{version}/bin/
find %{buildroot}%{_datadir}/%{name}/ -name *.bat -exec rm -rf {} \;
# Copy libs to /usr/lib and map them to IGNITE_HOME
cp -rf libs/* %{buildroot}%{_libdir}/%{name}
ln -sf %{_libdir}/%{name} %{buildroot}%{_datadir}/%{name}/libs
# Setup configuration
cp -rf config %{buildroot}%{_sysconfdir}/%{name}
ln -sf %{_sysconfdir}/%{name} %{buildroot}%{_datadir}/%{name}/config
# Setup systemctl service
cp -rf %{_sourcedir}/name.service %{buildroot}%{_sysconfdir}/systemd/system/%{name}@.service
cp -rf %{_sourcedir}/service.sh %{buildroot}%{_datadir}/%{name}/bin/
chmod +x %{buildroot}%{_datadir}/%{name}/bin/service.sh
for file in %{buildroot}%{_sysconfdir}/systemd/system/%{name}@.service %{buildroot}%{_datadir}/%{name}/bin/service.sh
do
sed -i -r -e "s|#name#|%{name}|g" \
-e "s|#user#|%{user}|g" \
${file}
done
# Map work and log directories
ln -sf %{_sharedstatedir}/%{name} %{buildroot}%{_datadir}/%{name}/work
ln -sf %{_log}/%{name} %{buildroot}%{_sharedstatedir}/%{name}/log
%files
#-------------------------------------------------------------------------------
#
# Package file list check
#
%dir %{_datadir}/%{name}
%dir %{_sysconfdir}/%{name}
%dir %{_sharedstatedir}/%{name}
%dir %{_log}/%{name}
%{_datadir}/%{name}/benchmarks
%{_datadir}/%{name}/bin
%{_datadir}/%{name}/config
%{_datadir}/%{name}/libs
%{_datadir}/%{name}/platforms
%{_datadir}/%{name}/work
%{_datadir}/doc/%{name}-%{version}
%{_libdir}/%{name}
%{_sysconfdir}/systemd/system/%{name}@.service
%{_sharedstatedir}/%{name}/log
%config(noreplace) %{_sysconfdir}/%{name}/*
%doc README.txt
%doc NOTICE
%doc RELEASE_NOTES.txt
%doc MIGRATION_GUIDE.txt
%license LICENSE
%changelog
#-------------------------------------------------------------------------------
#
# Changelog
#
* Mon Feb 01 2021 Maxim Muzafarov <mmuzaf@apache.org> - 2.10.0-1
- Updated Apache Ignite to version 2.10.0
* Wed Nov 25 2020 Yaroslav Molochkov <y.n.molochkov@gmail.com> - 2.9.1-1
- Updated Apache Ignite to version 2.9.1
* Mon Sep 28 2020 Alexey Plekhanov <alexpl@apache.org> - 2.9.0-1
- Updated Apache Ignite to version 2.9.0
* Wed May 20 2020 Nikolay Izhikov <nizhikov@apache.org> - 2.8.1-1
- Updated Apache Ignite to version 2.8.1
* Thu Feb 20 2020 Maxim Muzafarov <mmuzaf@apache.org> - 2.8.0-1
- Updated Apache Ignite to version 2.8.0
* Tue Sep 10 2019 Peter Ivanov <mr.weider@gmail.com> - 2.7.6-1
- Updated Apache Ignite to version 2.7.6
* Fri Apr 12 2019 Peter Ivanov <mr.weider@gmail.com> - 2.7.5-1
- Updated Apache Ignite to version 2.7.5
* Thu Jul 26 2018 Peter Ivanov <mr.weider@gmail.com> - 2.7.0-1
- Updated Apache Ignite to version 2.7.0
* Fri Jun 15 2018 Peter Ivanov <mr.weider@gmail.com> - 2.6.0-1
- Updated Apache Ignite to version 2.6.0
* Tue Apr 17 2018 Peter Ivanov <mr.weider@gmail.com> - 2.5.0-1
- Updated Apache Ignite to version 2.5.0
* Wed Jan 17 2018 Peter Ivanov <mr.weider@gmail.com> - 2.4.0-1
- Initial package release