summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--0001-1st-man-pageis-for-redis-cli-redis-benchmark-redis-c.patch (renamed from redis-pr3491.patch)26
-rw-r--r--0001-redis-3.2-redis-conf.patch36
-rw-r--r--0002-install-redis-check-rdb-as-a-symlink-instead-of-dupl.patch (renamed from redis-pr3494.patch)18
-rw-r--r--macros.redis2
-rw-r--r--redis-sentinel.service2
-rw-r--r--redis.service2
-rw-r--r--redis.spec330
7 files changed, 233 insertions, 183 deletions
diff --git a/redis-pr3491.patch b/0001-1st-man-pageis-for-redis-cli-redis-benchmark-redis-c.patch
index 073972e..ab62c0c 100644
--- a/redis-pr3491.patch
+++ b/0001-1st-man-pageis-for-redis-cli-redis-benchmark-redis-c.patch
@@ -1,4 +1,4 @@
-From 8295483fcee6c1232ac801ff91f66e21f9d23d80 Mon Sep 17 00:00:00 2001
+From c7958ad1c0d615b81276ec2d4dbc1bf6a67dcc4d Mon Sep 17 00:00:00 2001
From: Remi Collet <fedora@famillecollet.com>
Date: Thu, 8 Sep 2016 14:51:15 +0200
Subject: [PATCH 1/2] 1st man pageis for - redis-cli - redis-benchmark -
@@ -647,26 +647,6 @@ index 0000000..1e0c9c9
+ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+--
+2.13.5
-From aabbe7ffd278a09e7583ce96e6aa781f8cd81ab9 Mon Sep 17 00:00:00 2001
-From: Remi Collet <remi@remirepo.net>
-Date: Mon, 24 Apr 2017 17:47:51 +0200
-Subject: [PATCH 2/2] typo
-
----
- man/man1/redis-server.1 | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/man/man1/redis-server.1 b/man/man1/redis-server.1
-index d6edd25..6349a25 100644
---- a/man/man1/redis-server.1
-+++ b/man/man1/redis-server.1
-@@ -22,7 +22,7 @@ used as database, cache and message broker, found at
- The \fBredis\-server\fP command is a command line to launch a Redis server.
- .LP
- The \fBredis\-sentinel\fP command is a symbolic link to the \fBredis\-server\fP
--command which imply the \fB\-\-sentionel\fP option.
-+command and implies the \fB\-\-sentionel\fP option.
-
- .SH OPTIONS
- .TP 15
diff --git a/0001-redis-3.2-redis-conf.patch b/0001-redis-3.2-redis-conf.patch
deleted file mode 100644
index f8d8791..0000000
--- a/0001-redis-3.2-redis-conf.patch
+++ /dev/null
@@ -1,36 +0,0 @@
-diff -up ./redis.conf.rpmconf ./redis.conf
---- ./redis.conf.rpmconf 2015-12-23 13:35:32.000000000 +0100
-+++ ./redis.conf 2016-01-15 16:32:22.491355290 +0100
-@@ -160,7 +160,7 @@ loglevel notice
- # Specify the log file name. Also the empty string can be used to force
- # Redis to log on the standard output. Note that if you use standard
- # output for logging but daemonize, logs will be sent to /dev/null
--logfile ""
-+logfile /var/log/redis/redis.log
-
- # To enable logging to the system logger, just set 'syslog-enabled' to yes,
- # and optionally update the other syslog parameters to suit your needs.
-@@ -244,7 +244,7 @@ dbfilename dump.rdb
- # The Append Only File will also be created inside this directory.
- #
- # Note that you must specify a directory here, not a file name.
--dir ./
-+dir /var/lib/redis/
-
- ################################# REPLICATION #################################
-
-diff -up ./sentinel.conf.rpmconf ./sentinel.conf
---- ./sentinel.conf.rpmconf 2015-12-23 13:35:32.000000000 +0100
-+++ ./sentinel.conf 2016-01-15 16:32:22.491355290 +0100
-@@ -20,6 +20,11 @@
- # The port that this sentinel instance will run on
- port 26379
-
-+# Specify the log file name. Also the empty string can be used to force
-+# Redis to log on the standard output. Note that if you use standard
-+# output for logging but daemonize, logs will be sent to /dev/null
-+logfile /var/log/redis/sentinel.log
-+
- # sentinel announce-ip <ip>
- # sentinel announce-port <port>
- #
diff --git a/redis-pr3494.patch b/0002-install-redis-check-rdb-as-a-symlink-instead-of-dupl.patch
index e45ccb9..ce09350 100644
--- a/redis-pr3494.patch
+++ b/0002-install-redis-check-rdb-as-a-symlink-instead-of-dupl.patch
@@ -1,22 +1,26 @@
-From a34f7b1ac2cfb2879cc0889da0297aee96bcb076 Mon Sep 17 00:00:00 2001
+From 992c773e70462a6fbe1536e18e673c9ab55d5901 Mon Sep 17 00:00:00 2001
From: Remi Collet <fedora@famillecollet.com>
Date: Fri, 9 Sep 2016 17:23:27 +0200
-Subject: [PATCH] install redis-check-rdb as a symlink instead of duplicating
+Subject: [PATCH 2/2] install redis-check-rdb as a symlink instead of duplicating
the binary
---
- src/Makefile | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
+ src/Makefile | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/src/Makefile b/src/Makefile
-index 6bd8d8d..4cc422e 100644
+index fdbe36a..c3083f8 100644
--- a/src/Makefile
+++ b/src/Makefile
-@@ -269,6 +269,6 @@ install: all
+@@ -287,6 +287,6 @@ install: all
$(REDIS_INSTALL) $(REDIS_SERVER_NAME) $(INSTALL_BIN)
$(REDIS_INSTALL) $(REDIS_BENCHMARK_NAME) $(INSTALL_BIN)
$(REDIS_INSTALL) $(REDIS_CLI_NAME) $(INSTALL_BIN)
- $(REDIS_INSTALL) $(REDIS_CHECK_RDB_NAME) $(INSTALL_BIN)
- $(REDIS_INSTALL) $(REDIS_CHECK_AOF_NAME) $(INSTALL_BIN)
+- $(REDIS_INSTALL) $(REDIS_CHECK_AOF_NAME) $(INSTALL_BIN)
@ln -sf $(REDIS_SERVER_NAME) $(INSTALL_BIN)/$(REDIS_SENTINEL_NAME)
+ @ln -sf $(REDIS_SERVER_NAME) $(INSTALL_BIN)/$(REDIS_CHECK_RDB_NAME)
++ @ln -sf $(REDIS_SERVER_NAME) $(INSTALL_BIN)/$(REDIS_CHECK_AOF_NAME)
+--
+2.13.5
+
diff --git a/macros.redis b/macros.redis
new file mode 100644
index 0000000..439cc2c
--- /dev/null
+++ b/macros.redis
@@ -0,0 +1,2 @@
+%redis_modules_abi 1
+%redis_modules_dir %{_libdir}/redis/modules
diff --git a/redis-sentinel.service b/redis-sentinel.service
index 242d51a..15463cf 100644
--- a/redis-sentinel.service
+++ b/redis-sentinel.service
@@ -3,9 +3,9 @@ Description=Redis Sentinel
After=network.target
[Service]
-Type=notify
ExecStart=/usr/bin/redis-sentinel /etc/redis-sentinel.conf --supervised systemd
ExecStop=/usr/libexec/redis-shutdown redis-sentinel
+Type=notify
User=redis
Group=redis
RuntimeDirectory=redis
diff --git a/redis.service b/redis.service
index f999e88..88e9edc 100644
--- a/redis.service
+++ b/redis.service
@@ -3,9 +3,9 @@ Description=Redis persistent key-value database
After=network.target
[Service]
-Type=notify
ExecStart=/usr/bin/redis-server /etc/redis.conf --supervised systemd
ExecStop=/usr/libexec/redis-shutdown
+Type=notify
User=redis
Group=redis
RuntimeDirectory=redis
diff --git a/redis.spec b/redis.spec
index f019540..619ea86 100644
--- a/redis.spec
+++ b/redis.spec
@@ -8,6 +8,7 @@
# Please preserve changelog entries
#
%global _hardened_build 1
+%global with_perftools 0
%if 0%{?fedora} >= 19 || 0%{?rhel} >= 7
%global with_redistrib 1
@@ -15,7 +16,12 @@
%global with_redistrib 0
%endif
-# systemd >= 204 with additional service config
+%if 0%{?fedora} >= 15 || 0%{?rhel} >= 6
+%global with_pandoc 1
+%else
+%global with_pandoc 0
+%endif
+
%if 0%{?fedora} >= 19 || 0%{?rhel} >= 7
%global with_systemd 1
%else
@@ -23,7 +29,7 @@
%endif
# Tests fail in mock, not in local build.
-%global with_tests 0%{?_with_tests:1}
+%global with_tests %{?_with_tests:1}%{!?_with_tests:0}
# Pre-version are only available in github
#global prever RC3
@@ -32,86 +38,128 @@
%global gh_owner antirez
%global gh_project redis
-Name: redis
-Version: 4.0.2
-Release: 2%{?dist}
-Summary: A persistent key-value database
+# Commit IDs for the (unversioned) redis-doc repository
+# https://fedoraproject.org/wiki/Packaging:SourceURL "Commit Revision"
+%global doc_commit 69a5512ae6a4ec77d7b1d0af6aac2224e8e83f95
+%global short_doc_commit %(c=%{doc_commit}; echo ${c:0:7})
-Group: Applications/Databases
-License: BSD
-URL: http://redis.io
+%global macrosdir %(d=%{_rpmconfigdir}/macros.d; [ -d $d ] || d=%{_sysconfdir}/rpm; echo $d)
+
+Name: redis
+Version: 4.0.2
+Release: 3%{?dist}
+Summary: A persistent key-value database
+Group: Applications/Databases
+License: BSD
+URL: http://redis.io
%if 0%{?prever:1}
-Source0: https://github.com/%{gh_owner}/%{gh_project}/archive/%{gh_commit}/%{name}-%{version}%{prever}-%{gh_short}.tar.gz
+Source0: https://github.com/%{gh_owner}/%{gh_project}/archive/%{gh_commit}/%{name}-%{version}%{prever}-%{gh_short}.tar.gz
%else
-Source0: http://download.redis.io/releases/%{name}-%{version}.tar.gz
+Source0: http://download.redis.io/releases/%{name}-%{version}.tar.gz
%endif
-Source1: %{name}.logrotate
-Source2: %{name}.init
-Source3: %{name}.service
-Source5: %{name}-sentinel.init
-Source6: %{name}-sentinel.service
-Source7: %{name}-shutdown
-Source8: %{name}-limit-systemd
-Source9: %{name}-limit-init
-
+Source1: %{name}.logrotate
+Source2: %{name}-sentinel.service
+Source3: %{name}.service
+Source4: %{name}-sentinel.init
+Source5: %{name}.init
+Source6: %{name}-shutdown
+Source7: %{name}-limit-systemd
+Source8: %{name}-limit-init
+Source9: macros.%{name}
+Source10: https://github.com/antirez/%{name}-doc/archive/%{doc_commit}/%{name}-doc-%{short_doc_commit}.tar.gz
+
+# To refresh patches:
+# tar xf redis-xxx.tar.gz && cd redis-xxx && git init && git add . && git commit -m "%%{version} baseline"
+# git am %%{patches}
+# Then refresh your patches
+# git format-patch HEAD~<number of expected patches>
# Update configuration for Fedora
-Patch0: 0001-redis-3.2-redis-conf.patch
-
# https://github.com/antirez/redis/pull/3491 - man pages
-Patch3: %{name}-pr3491.patch
+Patch0001: 0001-1st-man-pageis-for-redis-cli-redis-benchmark-redis-c.patch
# https://github.com/antirez/redis/pull/3494 - symlink
-Patch4: %{name}-pr3494.patch
-
-BuildRequires: tcl >= 8.5
-BuildRequires: jemalloc-devel
-
+Patch0002: 0002-install-redis-check-rdb-as-a-symlink-instead-of-dupl.patch
+%if 0%{?with_perftools}
+BuildRequires: gperftools-devel
+%else
+BuildRequires: jemalloc-devel
+%endif
+%if 0%{?with_tests}
+BuildRequires: procps-ng
+BuildRequires: tcl
+%endif
+%if 0%{?with_pandoc}
+BuildRequires: pandoc
+%endif
+%if 0%{?with_systemd}
+BuildRequires: systemd
+%endif
# Required for redis-shutdown
-Requires: /bin/awk
-Requires: logrotate
-Requires(pre): shadow-utils
-%if %{with_systemd}
-BuildRequires: systemd-units
-Requires(post): systemd-units
-Requires(preun): systemd-units
-Requires(postun): systemd-units
+Requires: /bin/awk
+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
+Requires(post): chkconfig
+Requires(preun): chkconfig
+Requires(preun): initscripts
+Requires(postun): initscripts
%endif
Provides: bundled(hiredis)
Provides: bundled(lua-libs)
Provides: bundled(linenoise)
+%global redis_modules_abi 1
+%global redis_modules_dir %{_libdir}/%{name}/modules
+Provides: redis(modules_abi)%{?_isa} = %{redis_modules_abi}
%description
-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
+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
+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
+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
+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
+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.
-Documentation: http://redis.io/documentation
+%package devel
+Summary: Development header for Redis module development
+# Header-Only Library (https://fedoraproject.org/wiki/Packaging:Guidelines)
+Provides: %{name}-static = %{version}-%{release}
+
+%description devel
+Header file required for building loadable Redis modules. Detailed
+API documentation is available in the redis-doc package.
+
+%package doc
+Summary: Documentation for Redis including man pages
+License: CC-BY-SA
+BuildArch: noarch
+
+# http://fedoraproject.org/wiki/Packaging:Conflicts "Splitting Packages"
+Conflicts: redis < 4.0
+%description doc
+Manual pages and detailed documentation for many aspects of Redis use,
+administration and development.
%if 0%{?with_redistrib}
%package trib
@@ -125,67 +173,92 @@ Redis cluster management utility providing cluster creation, node addition
and removal, status checks, resharding, rebalancing, and other operations.
%endif
-
%prep
+%setup -q -b 10
%if 0%{?prever:1}
%setup -q -n %{gh_project}-%{gh_commit}
%else
-%setup -q -n %{name}-%{version}
+%setup -q
%endif
+mv ../%{name}-doc-%{doc_commit} doc
rm -frv deps/jemalloc
-
-%patch0 -p1 -b .rpmconf
-%patch3 -p1
-%patch4 -p1 -b .old
+%patch0001 -p1
+%patch0002 -p1
# Use system jemalloc library
sed -i -e '/cd jemalloc && /d' deps/Makefile
sed -i -e 's|../deps/jemalloc/lib/libjemalloc.a|-ljemalloc -ldl|g' src/Makefile
sed -i -e 's|-I../deps/jemalloc.*|-DJEMALLOC_NO_DEMANGLE -I/usr/include/jemalloc|g' src/Makefile
+# Configuration file changes and additions
+sed -i -e 's|^logfile .*$|logfile /var/log/redis/redis.log|g' redis.conf
+sed -i -e '$ alogfile /var/log/redis/sentinel.log' sentinel.conf
+sed -i -e 's|^dir .*$|dir /var/lib/redis|g' redis.conf
+
+# Module API version safety check
+api=`sed -n -e 's/#define REDISMODULE_APIVER_[0-9][0-9]* //p' src/redismodule.h`
+if test "$api" != "%{redis_modules_abi}"; then
+ : Error: Upstream API version is now ${api}, expecting %%{redis_modules_abi}.
+ : Update the redis_modules_abi macro, the rpmmacros file, and rebuild.
+ exit 1
+fi
-%global malloc_flags MALLOC=jemalloc
-%global make_flags DEBUG="" V="echo" LDFLAGS="%{?__global_ldflags}" CFLAGS+="%{optflags} -fPIC" %{malloc_flags} INSTALL="install -p" PREFIX=%{buildroot}%{_prefix}
+%if 0%{?with_pandoc}
+docs=`find doc -name \*.md | sed -e 's|.md$||g'`
+for doc in $docs; do
+ pandoc --standalone --from markdown --to html --output $doc.html $doc.md
+done
+%endif
+%if 0%{?with_perftools}
+%global malloc_flags MALLOC=tcmalloc
+%else
+%global malloc_flags MALLOC=jemalloc
+%endif
+%global make_flags DEBUG="" V="echo" LDFLAGS="%{?__global_ldflags}" CFLAGS+="%{optflags} -fPIC" %{malloc_flags} INSTALL="install -p" PREFIX=%{buildroot}%{_prefix}
%build
make %{?_smp_mflags} %{make_flags} all
-
%install
make %{make_flags} install
# Filesystem.
-install -d -m 750 %{buildroot}%{_localstatedir}/lib/%{name}
-install -d -m 750 %{buildroot}%{_localstatedir}/log/%{name}
-install -d -m 750 %{buildroot}%{_localstatedir}/run/%{name}
+install -d %{buildroot}%{_sharedstatedir}/%{name}
+install -d %{buildroot}%{_localstatedir}/log/%{name}
+install -d %{buildroot}%{_localstatedir}/run/%{name}
+install -d %{buildroot}%{redis_modules_dir}
# Install logrotate file.
-install -p -D -m 644 %{SOURCE1} %{buildroot}%{_sysconfdir}/logrotate.d/%{name}
+install -pDm644 %{S:1} %{buildroot}%{_sysconfdir}/logrotate.d/%{name}
# Install configuration files.
-install -p -D -m 640 %{name}.conf %{buildroot}%{_sysconfdir}/%{name}.conf
-install -p -D -m 640 sentinel.conf %{buildroot}%{_sysconfdir}/%{name}-sentinel.conf
+install -pDm640 %{name}.conf %{buildroot}%{_sysconfdir}/%{name}.conf
+install -pDm640 sentinel.conf %{buildroot}%{_sysconfdir}/%{name}-sentinel.conf
# Install systemd unit files.
-%if %{with_systemd}
-install -p -D -m 644 %{SOURCE3} %{buildroot}%{_unitdir}/%{name}.service
-install -p -D -m 644 %{SOURCE6} %{buildroot}%{_unitdir}/%{name}-sentinel.service
+%if 0%{?with_systemd}
+mkdir -p %{buildroot}%{_unitdir}
+install -pm644 %{S:3} %{buildroot}%{_unitdir}
+install -pm644 %{S:2} %{buildroot}%{_unitdir}
# Install systemd limit files (requires systemd >= 204)
-install -p -D -m 644 %{SOURCE8} %{buildroot}%{_sysconfdir}/systemd/system/%{name}.service.d/limit.conf
-install -p -D -m 644 %{SOURCE8} %{buildroot}%{_sysconfdir}/systemd/system/%{name}-sentinel.service.d/limit.conf
+install -p -D -m 644 %{S:7} %{buildroot}%{_sysconfdir}/systemd/system/%{name}.service.d/limit.conf
+install -p -D -m 644 %{S:7} %{buildroot}%{_sysconfdir}/systemd/system/%{name}-sentinel.service.d/limit.conf
%else # install SysV service files
-install -p -D -m 755 %{SOURCE2} %{buildroot}%{_initrddir}/%{name}
-install -p -D -m 755 %{SOURCE5} %{buildroot}%{_initrddir}/%{name}-sentinel
-install -p -D -m 644 %{SOURCE9} %{buildroot}%{_sysconfdir}/security/limits.d/95-%{name}.conf
+install -pDm755 %{S:4} %{buildroot}%{_initrddir}/%{name}-sentinel
+install -pDm755 %{S:5} %{buildroot}%{_initrddir}/%{name}
+install -p -D -m 644 %{S:8} %{buildroot}%{_sysconfdir}/security/limits.d/95-%{name}.conf
%endif
-# Fix non-standard-executable-perm error
+# Fix non-standard-executable-perm error.
chmod 755 %{buildroot}%{_bindir}/%{name}-*
# Install redis-shutdown
-install -pDm755 %{SOURCE7} %{buildroot}%{_libexecdir}/%{name}-shutdown
+install -pDm755 %{S:6} %{buildroot}%{_libexecdir}/%{name}-shutdown
+
+# Install redis module header
+install -pDm644 src/%{name}module.h %{buildroot}%{_includedir}/%{name}module.h
%if 0%{?with_redistrib}
# Install redis-trib
@@ -200,66 +273,74 @@ done
ln -s redis-server.1 %{buildroot}%{_mandir}/man1/redis-sentinel.1
ln -s redis.conf.5 %{buildroot}%{_mandir}/man5/redis-sentinel.conf.5
+# Install markdown and html pages
+doc=$(echo %{buildroot}/%{_docdir}/%{name})
+for page in $(find doc -name \*.md | sed -e 's|.md$||g'); do
+ base=$(echo $page | sed -e 's|doc/||g')
+ install -Dpm644 $page.md $doc/$base.md
+%if 0%{?with_pandoc}
+ install -Dpm644 $page.html $doc/$base.html
+%endif
+done
+
+# Install rpm macros for redis modules
+mkdir -p %{buildroot}%{macrosdir}
+install -pDm644 %{S:9} %{buildroot}%{macrosdir}/macros.%{name}
%check
-%if %{with_tests}
+%if 0%{?with_tests}
# ERR Active defragmentation cannot be enabled: it requires a Redis server compiled
# with a modified Jemalloc like the one shipped by default with the Redis source distribution
sed -e '/memefficiency/d' -i tests/test_helper.tcl
# https://github.com/antirez/redis/issues/1417 (for "taskset -c 1")
-taskset -c 1 make test ||:
-make test-sentinel
+taskset -c 1 make %{make_flags} test
+make %{make_flags} test-sentinel
%else
: Test disabled, missing '--with tests' option.
%endif
+%pre
+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%{?systemd_post:1}
-%systemd_post redis.service
-%systemd_post redis-sentinel.service
+%if 0%{?with_systemd}
+%systemd_post %{name}.service
+%systemd_post %{name}-sentinel.service
%else
-# Initial installation (always, for new service)
-/sbin/chkconfig --add redis
-/sbin/chkconfig --add redis-sentinel
+chkconfig --add %{name}
+chkconfig --add %{name}-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
-exit 0
-
%preun
-%if 0%{?systemd_preun:1}
-%systemd_preun redis.service
-%systemd_preun redis-sentinel.service
+%if 0%{?with_systemd}
+%systemd_preun %{name}.service
+%systemd_preun %{name}-sentinel.service
%else
-if [ $1 = 0 ]; then
- # Package removal, not upgrade
- /sbin/service redis-sentinel stop &> /dev/null
- /sbin/chkconfig --del redis-sentinel &> /dev/null
-
- /sbin/service redis stop &> /dev/null
- /sbin/chkconfig --del redis &> /dev/null
+if [ $1 -eq 0 ] ; then
+ service %{name} stop &> /dev/null
+ chkconfig --del %{name} &> /dev/null
+ service %{name}-sentinel stop &> /dev/null
+ chkconfig --del %{name}-sentinel &> /dev/null
fi
%endif
%postun
-%if 0%{?systemd_postun_with_restart:1}
-%systemd_postun_with_restart redis.service
-%systemd_postun_with_restart redis-sentinel.service
+%if 0%{?with_systemd}
+%systemd_postun_with_restart %{name}.service
+%systemd_postun_with_restart %{name}-sentinel.service
%else
-if [ $1 -ge 1 ]; then
- /sbin/service redis condrestart >/dev/null 2>&1 || :
- /sbin/service redis-sentinel condrestart >/dev/null 2>&1 || :
+if [ "$1" -ge "1" ] ; then
+ service %{name} condrestart >/dev/null 2>&1 || :
+ service %{name}-sentinel condrestart >/dev/null 2>&1 || :
fi
%endif
-
%files
%{!?_licensedir:%global license %%doc}
%license COPYING
@@ -267,22 +348,28 @@ fi
%config(noreplace) %{_sysconfdir}/logrotate.d/%{name}
%attr(0640, redis, root) %config(noreplace) %{_sysconfdir}/%{name}.conf
%attr(0640, redis, root) %config(noreplace) %{_sysconfdir}/%{name}-sentinel.conf
-%dir %attr(0750, redis, redis) %{_localstatedir}/lib/%{name}
+%dir %attr(0750, redis, redis) %{_libdir}/%{name}
+%dir %attr(0750, redis, redis) %{redis_modules_dir}
+%dir %attr(0750, redis, redis) %{_sharedstatedir}/%{name}
%dir %attr(0750, redis, redis) %{_localstatedir}/log/%{name}
%if 0%{?with_redistrib}
%exclude %{_bindir}/%{name}-trib
%endif
+%exclude %{macrosdir}
+%exclude %{_includedir}
+%exclude %{_docdir}/%{name}/*
%{_bindir}/%{name}-*
%{_libexecdir}/%{name}-*
-%{_mandir}/man1/redis*
-%{_mandir}/man5/redis*
-%if %{with_systemd}
+%{_mandir}/man1/%{name}*
+%{_mandir}/man5/%{name}*
+%if 0%{?with_systemd}
%{_unitdir}/%{name}.service
%{_unitdir}/%{name}-sentinel.service
%dir %{_sysconfdir}/systemd/system/%{name}.service.d
%config(noreplace) %{_sysconfdir}/systemd/system/%{name}.service.d/limit.conf
%dir %{_sysconfdir}/systemd/system/%{name}-sentinel.service.d
%config(noreplace) %{_sysconfdir}/systemd/system/%{name}-sentinel.service.d/limit.conf
+%dir %attr(0750, redis, redis) %ghost %{_localstatedir}/run/%{name}
%else
%{_initrddir}/%{name}
%{_initrddir}/%{name}-sentinel
@@ -290,6 +377,14 @@ fi
%dir %attr(0755, redis, redis) %{_localstatedir}/run/%{name}
%endif
+%files devel
+%license COPYING
+%{_includedir}/%{name}module.h
+%{macrosdir}/*
+
+%files doc
+%docdir %{_docdir}/%{name}
+%{_docdir}/%{name}/*
%if 0%{?with_redistrib}
%files trib
@@ -299,6 +394,11 @@ fi
%changelog
+* Tue Nov 21 2017 Remi Collet <remi@remirepo.net> - 4.0.2-3
+- add doc and devel subpackages, synced from Fedora
+- keep man pages in main package
+- minor fix for EL-6 and tests
+
* Tue Sep 26 2017 Remi Collet <remi@remirepo.net> - 4.0.2-2
- simplify build, synced from Fedora