[redis] Update to 2.8.11; Major SPEC rewrite; Compiler flags conformed to the guideline; Patches refreshed;
Christopher Meng
cicku at fedoraproject.org
Thu Jun 19 06:23:28 UTC 2014
commit dde8ff44acd447b4ca31291c2691dd627e8c63fe
Author: Christopher Meng <i at cicku.me>
Date: Thu Jun 19 14:21:29 2014 +0800
Update to 2.8.11;
Major SPEC rewrite;
Compiler flags conformed to the guideline;
Patches refreshed;
Remove obsoleted syslog.target in systemd units;
Add ExecStartPre to units to ensure tmpdirs are available before start;
Add new systemd+sysv files for redis-sentinel;
Use jemalloc instead of tcmalloc as memory allocator;
Tests enabled(not verified in Koji yet);
More stricted directory permissions;
Move back %_sbindir binaries;
Use redis-prefix for some files;
.gitignore | 1 +
redis-2.6.13-redis.conf.patch | 38 -----
redis-deps-PIC.patch | 23 ---
redis-deps-unbundle-jemalloc.patch | 14 --
redis.init | 88 -----------
redis.service | 12 --
redis.spec | 291 ++++++++++++++++++++++++------------
redis.tmpfiles | 2 +-
sources | 2 +-
9 files changed, 201 insertions(+), 270 deletions(-)
---
diff --git a/.gitignore b/.gitignore
index 1bd2bb0..c2d015f 100644
--- a/.gitignore
+++ b/.gitignore
@@ -12,3 +12,4 @@
/redis-2.6.7.tar.gz
/redis-2.6.13.tar.gz
/redis-2.6.16.tar.gz
+/redis-2.8.11.tar.gz
diff --git a/redis.spec b/redis.spec
index f0ac7d9..418fb2a 100644
--- a/redis.spec
+++ b/redis.spec
@@ -1,136 +1,241 @@
-# Check for status of man pages
-# http://code.google.com/p/redis/issues/detail?id=202
-
%global _hardened_build 1
-%ifarch %{ix86} x86_64 ppc %{arm}
-# available only on selected architectures
-%global with_perftools 1
+%global with_perftools 0
+
+# Prior to redis 2.8 sentinel didn't work correctly.
+%global with_sentinel 1
+
+%if 0%{?fedora} >= 15 || 0%{?el} >= 7
+%global with_systemd 1
+%else
+%global with_systemd 0
%endif
-Name: redis
-Version: 2.6.16
-Release: 2%{?dist}
-Summary: A persistent key-value database
+%if 0%{?el} && 0%{?el} <= 5
+%global with_tests 0
+%else
+%global with_tests 1
+%endif
-Group: Applications/Databases
-License: BSD
-URL: http://redis.io
-Source0: http://download.redis.io/releases/%{name}-%{version}.tar.gz
-Source1: %{name}.logrotate
-Source2: %{name}.init
-Source3: %{name}.service
-Source4: %{name}.tmpfiles
+Name: redis
+Version: 2.8.11
+Release: 1%{?dist}
+Summary: A persistent caching system, key-value and data structures database
+License: BSD
+URL: http://redis.io
+Source0: http://download.redis.io/releases/%{name}-%{version}.tar.gz
+Source1: %{name}.logrotate
+Source2: %{name}-sentinel.service
+Source3: %{name}-server.service
+Source4: %{name}.tmpfiles
+Source5: %{name}-sentinel.init
+Source6: %{name}-server.init
# Update configuration for Fedora
-Patch0: %{name}-2.6.13-redis.conf.patch
-Patch1: %{name}-deps-PIC.patch
-Patch2: %{name}-deps-unbundle-jemalloc.patch
-
-BuildRequires: systemd-units
-%if !0%{?el5}
-BuildRequires: tcl >= 8.5
+Patch0: redis-2.8.11-redis-conf-location-variables.patch
+Patch1: redis-2.8.11-deps-library-fPIC-performance-tuning.patch
+Patch2: redis-2.8.11-use-system-jemalloc.patch
+# tests/integration/replication-psync.tcl failed on slow machines(GITHUB #1417)
+Patch3: redis-2.8.11-disable-test-failed-on-slow-machine.patch
%if 0%{?with_perftools}
-BuildRequires: gperftools-devel
+BuildRequires: gperftools-devel
%endif
+BuildRequires: jemalloc-devel
+%if 0%{?with_systemd}
+BuildRequires: systemd
+%endif
+%if 0%{?with_tests}
+BuildRequires: tcl >= 8.5
+%endif
+Requires: logrotate
+Requires(pre): shadow-utils
+%if 0%{?with_systemd}
+Requires(post): systemd
+Requires(preun): systemd
+Requires(postun): systemd
+%else
+Requires(post): chkconfig
+Requires(preun): chkconfig
+Requires(preun): initscripts
+Requires(postun): initscripts
%endif
-BuildRequires: jemalloc-devel
-
-Requires: logrotate
-Requires(post): chkconfig
-Requires(postun): initscripts
-Requires(pre): shadow-utils
-Requires(preun): chkconfig
-Requires(preun): initscripts
%description
-Redis is an advanced key-value store. It is similar to memcached but the data
-set is not volatile, and values can be strings, exactly like in memcached, but
-also lists, sets, and ordered sets. All this data types can be manipulated with
-atomic operations to push/pop elements, add/remove elements, perform server side
-union, intersection, difference between sets, and so forth. Redis supports
-different kind of sorting abilities.
+Redis is an advanced key-value store. It is often referred to as a data
+structure server since keys can contain strings, hashes, lists, sets and
+sorted sets.
+
+You can run atomic operations on these types, like appending to a string;
+incrementing the value in a hash; pushing to a list; computing set
+intersection, union and difference; or getting the member with highest
+ranking in a sorted set.
+
+In order to achieve its outstanding performance, Redis works with an
+in-memory dataset. Depending on your use case, you can persist it either
+by dumping the dataset to disk every once in a while, or by appending
+each command to a log.
+
+Redis also supports trivial-to-setup master-slave replication, with very
+fast non-blocking first synchronization, auto-reconnection on net split
+and so forth.
+
+Other features include Transactions, Pub/Sub, Lua scripting, Keys with a
+limited time-to-live, and configuration settings to make Redis behave like
+a cache.
+
+You can use Redis from most programming languages also.
%prep
%setup -q
+rm -rvf deps/jemalloc
+
%patch0 -p1
%patch1 -p1
%patch2 -p1
+%if 0%{?with_tests}
+%patch3 -p1
+%endif
-%build
-rm -rvf deps/jemalloc
+# No hidden build.
+sed -i -e 's|\t@|\t|g' deps/lua/src/Makefile
+sed -i -e 's|$(QUIET_CC)||g' src/Makefile
+sed -i -e 's|$(QUIET_LINK)||g' src/Makefile
+sed -i -e 's|$(QUIET_INSTALL)||g' src/Makefile
+# Ensure deps are built with proper flags
+sed -i -e 's|$(CFLAGS)|%{optflags}|g' deps/Makefile
+sed -i -e 's|OPTIMIZATION?=-O3|OPTIMIZATION=%{optflags}|g' deps/hiredis/Makefile
+sed -i -e 's|$(LDFLAGS)|%{?__global_ldflags}|g' deps/hiredis/Makefile
+sed -i -e 's|$(CFLAGS)|%{optflags}|g' deps/linenoise/Makefile
+sed -i -e 's|$(LDFLAGS)|%{?__global_ldflags}|g' deps/linenoise/Makefile
-export CFLAGS="$RPM_OPT_FLAGS"
-make %{?_smp_mflags} V=1 \
- DEBUG="" \
- LDFLAGS="%{?__global_ldflags}" \
- CFLAGS="$RPM_OPT_FLAGS -fPIC" \
- LUA_CFLAGS="-fPIC" \
-%if !0%{?el5}
+%build
+make %{?_smp_mflags} \
+ DEBUG="" \
+ LDFLAGS="%{?__global_ldflags}" \
+ CFLAGS+="%{optflags}" \
+ LUA_LDFLAGS+="%{?__global_ldflags}" \
%if 0%{?with_perftools}
- USE_TCMALLOC=yes \
+ MALLOC=tcmalloc \
+%else
+ MALLOC=jemalloc \
%endif
+ all
+
+%install
+make install INSTALL="install -p" PREFIX=%{buildroot}%{_prefix}
+
+# Filesystem.
+install -d %{buildroot}%{_sharedstatedir}/%{name}
+install -d %{buildroot}%{_localstatedir}/log/%{name}
+install -d %{buildroot}%{_localstatedir}/run/%{name}
+
+# Install logrotate file.
+install -pDm644 %{S:1} %{buildroot}%{_sysconfdir}/logrotate.d/%{name}
+
+# Install configuration files.
+install -pDm644 %{name}.conf %{buildroot}%{_sysconfdir}/%{name}.conf
+%if 0%{?with_sentinel}
+install -pDm644 sentinel.conf %{buildroot}%{_sysconfdir}/%{name}-sentinel.conf
%endif
- all
-%check
-%if !0%{?el5}
-# make test
+# Install Systemd/SysV files.
+%if 0%{?with_systemd}
+mkdir -p %{buildroot}%{_unitdir}
+install -pm644 %{S:3} %{buildroot}%{_unitdir}
+%if 0%{?with_sentinel}
+install -pm644 %{S:2} %{buildroot}%{_unitdir}
%endif
-%install
-make install PREFIX=%{buildroot}%{_prefix}
-# Install misc other
-install -p -D -m 644 %{SOURCE1} %{buildroot}%{_sysconfdir}/logrotate.d/%{name}
-install -p -D -m 755 %{SOURCE2} %{buildroot}%{_initrddir}/%{name}
-install -p -D -m 644 %{name}.conf %{buildroot}%{_sysconfdir}/%{name}.conf
-install -d -m 755 %{buildroot}%{_localstatedir}/lib/%{name}
-install -d -m 755 %{buildroot}%{_localstatedir}/log/%{name}
-install -d -m 755 %{buildroot}%{_localstatedir}/run/%{name}
-
-# Install systemd unit
-install -p -D -m 644 %{SOURCE3} %{buildroot}/%{_unitdir}/%{name}.service
-
-# Install systemd tmpfiles config
-install -p -D -m 644 %{SOURCE4} %{buildroot}%{_tmpfilesdir}/%{name}.conf
-
-# Fix non-standard-executable-perm error
-chmod 755 %{buildroot}%{_bindir}/%{name}-*
+# Install systemd tmpfiles config.
+install -pDm644 %{S:4} %{buildroot}%{_tmpfilesdir}/%{name}.conf
+%else
+%if 0%{?with_sentinel}
+install -pDm755 %{S:5} %{buildroot}%{_initrddir}/%{name}-sentinel
+%endif
+install -pDm755 %{S:6} %{buildroot}%{_initrddir}/%{name}-server
+%endif
-# Ensure redis-server location doesn't change
-mkdir -p %{buildroot}%{_sbindir}
-mv %{buildroot}%{_bindir}/%{name}-server %{buildroot}%{_sbindir}/%{name}-server
+# Fix non-standard-executable-perm error.
+chmod 755 %{buildroot}%{_bindir}/%{name}-*
-%post
-/sbin/chkconfig --add redis
+%check
+make test
+%if 0%{?with_sentinel}
+make test-sentinel
+%endif
%pre
-getent group redis &> /dev/null || groupadd -r redis &> /dev/null
-getent passwd redis &> /dev/null || \
-useradd -r -g redis -d %{_sharedstatedir}/redis -s /sbin/nologin \
--c 'Redis Server' redis &> /dev/null
+getent group %{name} &> /dev/null || groupadd -r %{name} &> /dev/null
+getent passwd %{name} &> /dev/null || \
+useradd -r -g %{name} -d %{_sharedstatedir}/%{name} -s /sbin/nologin \
+-c 'Redis Database Server' %{name} &> /dev/null
exit 0
+%post
+%if 0%{?with_systemd}
+%if 0%{?with_sentinel}
+%systemd_post %{name}-sentinel.service
+%endif
+%systemd_post %{name}-server.service
+%else
+chkconfig --add %{name}-sentinel
+chkconfig --add %{name}-server
+%endif
+
%preun
-if [ $1 = 0 ]; then
- /sbin/service redis stop &> /dev/null
- /sbin/chkconfig --del redis &> /dev/null
+%if 0%{?with_systemd}
+%if 0%{?with_sentinel}
+%systemd_preun %{name}-sentinel.service
+%endif
+%systemd_preun %{name}-server.service
+%else
+if [ $1 -eq 0 ] ; then
+service %{name}-sentinel stop &> /dev/null
+chkconfig --del %{name}-sentinel &> /dev/null
+service %{name}-server stop &> /dev/null
+chkconfig --del %{name}-server &> /dev/null
+%endif
+
+%postun
+%if 0%{?with_systemd}
+%if 0%{?with_sentinel}
+%systemd_postun_with_restart %{name}-sentinel.service
+%endif
+%systemd_postun_with_restart %{name}-server.service
+%else
+if [ "$1" -ge "1" ] ; then
+ service %{name}-sentinel condrestart >/dev/null 2>&1 || :
+ service %{name}-server condrestart >/dev/null 2>&1 || :
fi
+%endif
%files
-%defattr(-,root,root,-)
-%doc 00-RELEASENOTES BUGS CONTRIBUTING COPYING README
+%doc 00-RELEASENOTES BUGS CONTRIBUTING COPYING MANIFESTO README
%config(noreplace) %{_sysconfdir}/logrotate.d/%{name}
%config(noreplace) %{_sysconfdir}/%{name}.conf
-%{_tmpfilesdir}/%{name}.conf
-%dir %attr(0755, redis, root) %{_localstatedir}/lib/%{name}
-%dir %attr(0755, redis, root) %{_localstatedir}/log/%{name}
-%ghost %dir %attr(0755, redis, root) %{_localstatedir}/run/%{name}
+%if 0%{?with_sentinel}
+%config(noreplace) %{_sysconfdir}/%{name}-sentinel.conf
+%endif
+%dir %attr(0750, redis, redis) %{_sharedstatedir}/%{name}
+%dir %attr(0750, redis, redis) %{_localstatedir}/log/%{name}
+%ghost %dir %attr(0750, redis, redis) %{_localstatedir}/run/%{name}
%{_bindir}/%{name}-*
-%{_sbindir}/%{name}-*
-%{_initrddir}/%{name}
-%{_unitdir}/%{name}.service
+%if 0%{?with_systemd}
+%{_tmpfilesdir}/%{name}.conf
+%if 0%{?with_sentinel}
+%{_unitdir}/%{name}-sentinel.service
+%endif
+%{_unitdir}/%{name}-server.service
+%else
+%if 0%{?with_sentinel}
+%{_initrddir}/%{name}-sentinel
+%endif
+%{_initrddir}/%{name}-server
+%endif
%changelog
+* Wed Jun 18 2014 Christopher Meng <rpm at cicku.me> - 2.8.11-1
+- Update to 2.8.11
+
* Sun Jun 08 2014 Fedora Release Engineering <rel-eng at lists.fedoraproject.org> - 2.6.16-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_Mass_Rebuild
diff --git a/redis.tmpfiles b/redis.tmpfiles
index 657d8a5..d8d26ed 100644
--- a/redis.tmpfiles
+++ b/redis.tmpfiles
@@ -1,2 +1,2 @@
# redis runtime directory
-d /var/run/redis 0755 redis root -
+d /run/redis 0755 redis redis -
diff --git a/sources b/sources
index c0c8fd0..73f7ea1 100644
--- a/sources
+++ b/sources
@@ -1 +1 @@
-ca1b81bd56fe0c5e2c8ec443a95c908d redis-2.6.16.tar.gz
+196e0cf387d8885439add8a3e1cab469 redis-2.8.11.tar.gz
More information about the scm-commits
mailing list