blob: b90007350568b03d96a8b918843cf4cd237e9c28 [file] [log] [blame]
%define __jar_repack %{nil}
%define user ignite
#-------------------------------------------------------------------------------
#
# Packages' descriptions
#
Name: apache-ignite
Version: 2.4.0
Release: 1%{?dist}
Summary: Apache Ignite In-Memory Computing Platform
Group: Development/System
License: ASL 2.0
URL: https://ignite.apache.org/
Source: %{name}.zip
Requires: java-1.8.0, chkconfig
Requires(pre): shadow-utils
Provides: %{name}
AutoReq: no
AutoProv: no
BuildArch: noarch
%description
Apache Ignite is the in-memory computing platform composed of a strongly
consistent distributed database with powerful SQL, key-value and processing APIs
#-------------------------------------------------------------------------------
#
# Prepare step: unpack sources
#
%prep
%setup -q -c -n %{name}
#-------------------------------------------------------------------------------
#
# Preinstall scripts
# $1 can be:
# 1 - Initial install
# 2 - Upgrade
#
#-------------------------------------------------------------------------------
#
# Postinstall scripts
# $1 can be:
# 1 - Initial installation
# 2 - Upgrade
#
%post
case $1 in
1)
# Add user for service operation
useradd -r -d %{_datadir}/%{name} -s /usr/sbin/nologin %{user}
# Change ownership for work and log directories
chown -vR %{user}:%{user} %{_sharedstatedir}/%{name} %{_var}/log/%{name}
# 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)
:
;;
esac
#-------------------------------------------------------------------------------
#
# Pre-uninstall scripts
# $1 can be:
# 0 - Uninstallation
# 1 - Upgrade
#
%preun
case $1 in
0)
# 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)
:
;;
esac
#-------------------------------------------------------------------------------
#
# Post-uninstall scripts
# $1 can be:
# 0 - Uninstallation
# 1 - Upgrade
#
%postun
case $1 in
0)
# 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)
:
;;
esac
#-------------------------------------------------------------------------------
#
# Prepare packages' layout
#
%install
cd $(ls)
# 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}%{_var}/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 %{_var}/log/%{name} %{buildroot}%{_sharedstatedir}/%{name}/log
#-------------------------------------------------------------------------------
#
# Package file list check
#
%files
%dir %{_datadir}/%{name}
%dir %{_sysconfdir}/%{name}
%dir %{_sharedstatedir}/%{name}
%dir %{_var}/log/%{name}
%{_datadir}/%{name}/benchmarks
%{_datadir}/%{name}/bin
%{_datadir}/%{name}/config
%{_datadir}/%{name}/libs
%{_datadir}/%{name}/platforms
%{_datadir}/%{name}/work
%{_libdir}/%{name}
%{_sysconfdir}/systemd/system/%{name}@.service
%{_sharedstatedir}/%{name}/log
%config(noreplace) %{_sysconfdir}/%{name}/*
%doc %{name}-*/README.txt
%doc %{name}-*/NOTICE
%doc %{name}-*/RELEASE_NOTES.txt
%license %{name}-*/LICENSE
#-------------------------------------------------------------------------------
#
# Changelog
#
%changelog
* Wed Jan 17 2018 GridGain Systems <ggs@gridgain.com> - 2.4.0-1
- Initial package release