summaryrefslogtreecommitdiff
path: root/memcached.spec.in
diff options
context:
space:
mode:
Diffstat (limited to 'memcached.spec.in')
-rw-r--r--memcached.spec.in126
1 files changed, 100 insertions, 26 deletions
diff --git a/memcached.spec.in b/memcached.spec.in
index e065615..cf510a4 100644
--- a/memcached.spec.in
+++ b/memcached.spec.in
@@ -1,3 +1,21 @@
+# Set with_systemd on distros that use it, so we can install the service
+# file, otherwise the sysvinit script will be installed
+%if 0%{?fedora} >= 14 || 0%{?rhel} >= 7 || 0%{?suse_version} >= 1210
+%global with_systemd 1
+BuildRequires: systemd-units
+
+# Disable some systemd safety features on OSes without a new enough systemd
+# (new enough is systemd >= 233)
+%if 0%{?fedora} < 26 || 0%{?rhel} > 0
+%global safer_systemd 0
+%else
+%global safer_systemd 1
+%endif
+
+%else
+%global with_systemd 0
+%endif
+
Name: memcached
Version: @VERSION@
Release: @RELEASE@%{?dist}
@@ -6,16 +24,25 @@ Summary: High Performance, Distributed Memory Object Cache
Group: System Environment/Daemons
License: BSD
URL: http://memcached.org
-Source0: http://memcached.org/files/%{name}-@FULLVERSION@.tar.gz
+Source0: http://memcached.org/files/%{name}-%{version}.tar.gz
+Source1: memcached.sysconfig
+Source2: memcached.service
+Source3: memcached@.service
BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
BuildRequires: libevent-devel
BuildRequires: perl(Test::More)
BuildRequires: /usr/bin/prove
Requires: initscripts
+%if %{with_systemd}
+Requires(post): systemd-units
+Requires(preun): systemd-units
+Requires(postun): systemd-units
+%else
Requires(post): /sbin/chkconfig
Requires(preun): /sbin/chkconfig, /sbin/service
Requires(postun): /sbin/service
+%endif
%description
memcached is a high-performance, distributed memory object caching
@@ -23,7 +50,7 @@ system, generic in nature, but intended for use in speeding up dynamic
web applications by alleviating database load.
%prep
-%setup -q -n %{name}-@FULLVERSION@
+%setup -q -n %{name}-%{version}
%build
@@ -31,53 +58,90 @@ web applications by alleviating database load.
make %{?_smp_mflags}
+
%check
make test
+
%install
rm -rf %{buildroot}
make install DESTDIR=%{buildroot}
# remove memcached-debug
-rm -f %{buildroot}/%{_bindir}/memcached-debug
+rm -f %{buildroot}/%{_bindir}/%{name}-debug
# Perl script for monitoring memcached
-install -Dp -m0755 scripts/memcached-tool %{buildroot}%{_bindir}/memcached-tool
+install -Dp -m0755 scripts/memcached-tool %{buildroot}%{_bindir}/%{name}-tool
# Init script
-install -Dp -m0755 scripts/memcached.sysv %{buildroot}%{_initrddir}/memcached
+%if %{with_systemd}
+install -Dp -m0755 scripts/memcached.service %{buildroot}%{_unitdir}/%{name}.service
+install -Dp -m0755 scripts/memcached@.service %{buildroot}%{_unitdir}/%{name}@.service
+
+if [ %{safer_systemd} -gt 0 ]; then
+ sed -e -i 's/^##safer##//g' %{buildroot}%{_unitdir}/%{name}.service %{buildroot}%{_unitdir}/%{name}@.service
+else
+ sed -e -i 's/^##safer##/#/g' %{buildroot}%{_unitdir}/%{name}.service %{buildroot}%{_unitdir}/%{name}@.service
+fi
+%else
+install -Dp -m0755 scripts/memcached.sysv %{buildroot}%{_initrddir}/%{name}
+%endif
# Default configs
-mkdir -p %{buildroot}/%{_sysconfdir}/sysconfig
-cat <<EOF >%{buildroot}/%{_sysconfdir}/sysconfig/%{name}
-PORT="11211"
-USER="nobody"
-MAXCONN="1024"
-CACHESIZE="64"
-OPTIONS=""
-EOF
+install -Dp -m0644 scripts/memcached.sysconfig %{buildroot}%{_sysconfdir}/sysconfig/%{name}
# pid directory
-mkdir -p %{buildroot}/%{_localstatedir}/run/memcached
+mkdir -p %{buildroot}/%{_localstatedir}/run/%{name}
+
%clean
rm -rf %{buildroot}
%post
-/sbin/chkconfig --add %{name}
+if [ $1 -eq 1 ]; then
+ # Initial install
+%if %{with_systemd}
+ /bin/systemctl daemon-reload >/dev/null 2>&1 || :
+%else
+ /sbin/chkconfig --add %{name}
+%endif
+fi
+
%preun
if [ "$1" = 0 ] ; then
- /sbin/service %{name} stop > /dev/null 2>&1
+ # Removal, not upgrade
+%if %{with_systemd}
+ /bin/systemctl --no-reload disable %{name}.service > /dev/null 2>&1 || :
+ /bin/systemctl --no-reload disable %{name}@\*.service > /dev/null 2>&1 || :
+ /bin/systemctl stop %{name}.service > /dev/null 2>&1 || :
+ /bin/systemctl stop %{name}@\*.service > /dev/null 2>&1 || :
+%else
+ /sbin/service %{name} stop > /dev/null 2&>1 || :
/sbin/chkconfig --del %{name}
+%endif
fi
+
exit 0
+
%postun
-if [ "$1" -ge 1 ]; then
- /sbin/service %{name} condrestart > /dev/null 2>&1
-fi
+%if %{with_systemd}
+ /bin/systemctl daemon-reload >/dev/null 2>&1 || :
+%endif
+
+# Don't auto-restart memcached on upgrade -- let user control when cache flushes
+# if [ "$1" -ge 1 ]; then
+# # upgrade, not install
+# %if %{with_systemd}
+# /bin/systemctl try-restart %{name}.service
+# /bin/systemctl try-restart %{name}@\*.service
+# %else
+# /sbin/service %named condrestart 2>/dev/null || :
+# %endif
+#fi
+
exit 0
@@ -86,14 +150,24 @@ exit 0
%doc AUTHORS ChangeLog COPYING NEWS README.md doc/CONTRIBUTORS doc/*.txt
%config(noreplace) %{_sysconfdir}/sysconfig/%{name}
-%dir %attr(750,nobody,nobody) %{_localstatedir}/run/memcached
-%{_bindir}/memcached-tool
-%{_bindir}/memcached
-%{_mandir}/man1/memcached.1*
-%{_initrddir}/memcached
-%{_includedir}/memcached
+%dir %attr(750,nobody,nobody) %{_localstatedir}/run/%{name}
+%{_bindir}/%{name}-tool
+%{_bindir}/%{name}
+%{_mandir}/man1/%{name}.1*
+%{_includedir}/%{name}
+
+%if %{with_systemd}
+%{_unitdir}/%{name}.service
+%{_unitdir}/%{name}@.service
+%else
+%{_initrddir}/%{name}
+%endif
%changelog
+* Wed Jul 5 2017 J. Grizzard <jg-github@lupine.org> - 1.4.39
+- Add systemd-aware build
+- Add both static and instanced versions of memcached unit files
+
* Mon Nov 2 2009 Dormando <dormando@rydia.net> - 1.4.3-1
- Fix autogen more.
@@ -113,7 +187,7 @@ exit 0
- above suggestions from Bernard Johnson
* Mon May 7 2007 Paul Lindner <lindner@inuus.com> - 1.2.2-2
-- Tidiness improvements suggested by Ruben Kerkhof in bugzilla #238994
+- Tidyness improvements suggested by Ruben Kerkhof in bugzilla #238994
* Fri May 4 2007 Paul Lindner <lindner@inuus.com> - 1.2.2-1
- Initial spec file created via rpmdev-newspec