Accepting request 760070 from home:kukuk:ei-demo
- Make redis useable in a container (drop size from 100MB to 20MB): - Change user generation from shadow to sysusers - Drop redis-initscript.patch and sudo requires, we use systemd - Drop BuildRequires for procps and tcl, they are not needed - Make logrotate recommend, it's not required for redis to work OBS-URL: https://build.opensuse.org/request/show/760070 OBS-URL: https://build.opensuse.org/package/show/server:database/redis?expand=0&rev=129
This commit is contained in:
parent
01c9427147
commit
95ad5c7d59
@ -1,176 +0,0 @@
|
|||||||
Index: utils/redis_init_script
|
|
||||||
===================================================================
|
|
||||||
--- utils/redis_init_script.orig
|
|
||||||
+++ utils/redis_init_script
|
|
||||||
@@ -1,50 +1,133 @@
|
|
||||||
#!/bin/sh
|
|
||||||
-#
|
|
||||||
-# Simple Redis init.d script conceived to work on Linux systems
|
|
||||||
-# as it does use of the /proc filesystem.
|
|
||||||
|
|
||||||
+# System startup script for Redis for OpenSUSE >= 11.4
|
|
||||||
+#
|
|
||||||
+# Author: Marcello Barnaba <m.barnaba@ifad.org>
|
|
||||||
+# Tue Jul 31 17:32:27 CEST 2012
|
|
||||||
+#
|
|
||||||
+# LSB-compatible service control script; see http://www.linuxbase.org/spec/
|
|
||||||
+# Install it in /etc/init.d/redis and run insserv /etc/init.d/redis
|
|
||||||
+# Define configurations in /etc/init.d/redis/NAME.conf
|
|
||||||
+#
|
|
||||||
+# Source: https://gist.github.com/804026
|
|
||||||
+#
|
|
||||||
### BEGIN INIT INFO
|
|
||||||
-# Provides: redis_6379
|
|
||||||
-# Default-Start: 2 3 4 5
|
|
||||||
-# Default-Stop: 0 1 6
|
|
||||||
-# Short-Description: Redis data structure server
|
|
||||||
-# Description: Redis data structure server. See https://redis.io
|
|
||||||
+# Provides: redis
|
|
||||||
+# Required-Start: $syslog $remote_fs
|
|
||||||
+# Required-Stop: $syslog $remote_fs
|
|
||||||
+# Default-Start: 3 5
|
|
||||||
+# Default-Stop: 0 1 2 6
|
|
||||||
+# Short-Description: Redis server
|
|
||||||
+# Description: Starts and stops the configured Redis instances
|
|
||||||
### END INIT INFO
|
|
||||||
|
|
||||||
-REDISPORT=6379
|
|
||||||
-EXEC=/usr/local/bin/redis-server
|
|
||||||
-CLIEXEC=/usr/local/bin/redis-cli
|
|
||||||
+EXEC=/usr/sbin/redis-server
|
|
||||||
+USER=redis
|
|
||||||
+STATE=/var/run/redis
|
|
||||||
+CONF=/etc/redis
|
|
||||||
+
|
|
||||||
+. /etc/rc.status
|
|
||||||
+
|
|
||||||
+if [ ! -d $STATE ]; then
|
|
||||||
+ install -d $state -o $USER -g $USER -m 0755 $STATE
|
|
||||||
+fi
|
|
||||||
+
|
|
||||||
+_get_env() {
|
|
||||||
+ INSTANCE=$1
|
|
||||||
+ PIDFILE=${STATE}/${INSTANCE}.pid
|
|
||||||
+ CONFIG=${CONF}/${INSTANCE}.conf
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+_foreach_config() {
|
|
||||||
+ command=$1
|
|
||||||
+
|
|
||||||
+ if [ -n "$2" ]; then
|
|
||||||
+ $command $2
|
|
||||||
+ else
|
|
||||||
+ for file in /etc/redis/*.conf; do
|
|
||||||
+ $command `basename "$file" .conf`
|
|
||||||
+ done
|
|
||||||
+ fi
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+start() {
|
|
||||||
+ _get_env $1
|
|
||||||
+
|
|
||||||
+ echo -n "Starting Redis server '${INSTANCE}'... "
|
|
||||||
+
|
|
||||||
+ if [ ! -f ${CONFIG} ]; then
|
|
||||||
+ echo "$CONFIG not found"
|
|
||||||
+ rc_failed
|
|
||||||
+
|
|
||||||
+ elif [ -f ${PIDFILE} ] && [ -x /proc/`cat ${PIDFILE}` ]; then
|
|
||||||
+ echo -n "already running (PID `cat ${PIDFILE}`)"
|
|
||||||
+
|
|
||||||
+ else
|
|
||||||
+ rm -f ${PIDFILE}
|
|
||||||
+ sudo -u $USER $EXEC $CONFIG
|
|
||||||
+ fi
|
|
||||||
+ rc_status -v
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+stop() {
|
|
||||||
+ _get_env $1
|
|
||||||
+
|
|
||||||
+ echo -n "Stopping Redis server '${INSTANCE}' ... "
|
|
||||||
+
|
|
||||||
+ if [ ! -f $PIDFILE ]; then
|
|
||||||
+ echo -n "not running"
|
|
||||||
+ else
|
|
||||||
+ PID=`cat $PIDFILE`
|
|
||||||
+ CLI='/usr/bin/redis-cli'
|
|
||||||
+ PASS=`grep ^requirepass $CONFIG | awk '{print $2}'`
|
|
||||||
+ PORT=`grep ^port $CONFIG | awk '{print $2}'`
|
|
||||||
+ BIND=`grep ^bind $CONFIG | awk '{print $2}'`
|
|
||||||
+
|
|
||||||
+ CLI="$CLI -p $PORT"
|
|
||||||
+ [ -n "$PASS" ] && CLI="$CLI -a $PASS"
|
|
||||||
+ [ -n "$BIND" ] && CLI="$CLI -h $BIND"
|
|
||||||
+
|
|
||||||
+ $CLI shutdown
|
|
||||||
+ echo -n "Waiting... "
|
|
||||||
+
|
|
||||||
+ while [ -x /proc/${PID} ]; do
|
|
||||||
+ sleep 1
|
|
||||||
+ echo -n '.'
|
|
||||||
+ done
|
|
||||||
+ rm -f ${PIDFILE}
|
|
||||||
+ fi
|
|
||||||
+ rc_status -v
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+status() {
|
|
||||||
+ _get_env $1
|
|
||||||
+
|
|
||||||
+ echo -n "Checking for redis '${INSTANCE}'"
|
|
||||||
+ /sbin/checkproc -p $PIDFILE $EXEC
|
|
||||||
+ rc_status -v
|
|
||||||
+}
|
|
||||||
|
|
||||||
-PIDFILE=/var/run/redis_${REDISPORT}.pid
|
|
||||||
-CONF="/etc/redis/${REDISPORT}.conf"
|
|
||||||
|
|
||||||
case "$1" in
|
|
||||||
start)
|
|
||||||
- if [ -f $PIDFILE ]
|
|
||||||
- then
|
|
||||||
- echo "$PIDFILE exists, process is already running or crashed"
|
|
||||||
- else
|
|
||||||
- echo "Starting Redis server..."
|
|
||||||
- $EXEC $CONF
|
|
||||||
- fi
|
|
||||||
- ;;
|
|
||||||
+ _foreach_config start $2
|
|
||||||
+ ;;
|
|
||||||
+
|
|
||||||
stop)
|
|
||||||
- if [ ! -f $PIDFILE ]
|
|
||||||
- then
|
|
||||||
- echo "$PIDFILE does not exist, process is not running"
|
|
||||||
- else
|
|
||||||
- PID=$(cat $PIDFILE)
|
|
||||||
- echo "Stopping ..."
|
|
||||||
- $CLIEXEC -p $REDISPORT shutdown
|
|
||||||
- while [ -x /proc/${PID} ]
|
|
||||||
- do
|
|
||||||
- echo "Waiting for Redis to shutdown ..."
|
|
||||||
- sleep 1
|
|
||||||
- done
|
|
||||||
- echo "Redis stopped"
|
|
||||||
- fi
|
|
||||||
- ;;
|
|
||||||
+ _foreach_config stop $2
|
|
||||||
+ ;;
|
|
||||||
+
|
|
||||||
+ status)
|
|
||||||
+ _foreach_config status $2
|
|
||||||
+ ;;
|
|
||||||
+
|
|
||||||
+ restart)
|
|
||||||
+ $0 stop $2
|
|
||||||
+ $0 start $2
|
|
||||||
+ ;;
|
|
||||||
+
|
|
||||||
*)
|
|
||||||
- echo "Please use start or stop as first argument"
|
|
||||||
- ;;
|
|
||||||
+ echo "Usage: $0 <start|stop|restart|status>"
|
|
||||||
+ exit 1
|
|
||||||
+ ;;
|
|
||||||
esac
|
|
2
redis-user.conf
Normal file
2
redis-user.conf
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
# Type Name ID GECOS [HOME]
|
||||||
|
u redis - "User for redis key-value store" /var/lib/redis
|
@ -1,3 +1,12 @@
|
|||||||
|
-------------------------------------------------------------------
|
||||||
|
Mon Dec 30 17:59:52 UTC 2019 - Thorsten Kukuk <kukuk@suse.com>
|
||||||
|
|
||||||
|
- Make redis useable in a container (drop size from 100MB to 20MB):
|
||||||
|
- Change user generation from shadow to sysusers
|
||||||
|
- Drop redis-initscript.patch and sudo requires, we use systemd
|
||||||
|
- Drop BuildRequires for procps and tcl, they are not needed
|
||||||
|
- Make logrotate recommend, it's not required for redis to work
|
||||||
|
|
||||||
-------------------------------------------------------------------
|
-------------------------------------------------------------------
|
||||||
Sun Dec 1 15:47:06 UTC 2019 - Илья Индиго <ilya@ilya.pp.ua>
|
Sun Dec 1 15:47:06 UTC 2019 - Илья Индиго <ilya@ilya.pp.ua>
|
||||||
|
|
||||||
|
36
redis.spec
36
redis.spec
@ -35,20 +35,18 @@ Source5: README.SUSE
|
|||||||
Source6: %{name}.sysctl
|
Source6: %{name}.sysctl
|
||||||
Source7: %{name}-sentinel@.service
|
Source7: %{name}-sentinel@.service
|
||||||
Source8: %{name}-sentinel.target
|
Source8: %{name}-sentinel.target
|
||||||
# PATCH-FIX-OPENSUSE -- openSUSE-style init script
|
Source9: %{name}-user.conf
|
||||||
Patch0: %{name}-initscript.patch
|
|
||||||
# PATCH-MISSING-TAG -- See https://wiki.opensuse.org/openSUSE:Packaging_Patches_guidelines
|
# PATCH-MISSING-TAG -- See https://wiki.opensuse.org/openSUSE:Packaging_Patches_guidelines
|
||||||
Patch1: %{name}-conf.patch
|
Patch0: %{name}-conf.patch
|
||||||
Patch2: %{name}-enable-bactrace-on-x86-ia64-and_arm32_only.patch
|
Patch1: %{name}-enable-bactrace-on-x86-ia64-and_arm32_only.patch
|
||||||
Patch3: %{name}-disable_integration_logging.patch
|
Patch2: %{name}-disable_integration_logging.patch
|
||||||
Patch4: reproducible.patch
|
Patch3: reproducible.patch
|
||||||
BuildRequires: pkgconfig
|
BuildRequires: pkgconfig
|
||||||
BuildRequires: procps
|
BuildRequires: sysuser-shadow
|
||||||
BuildRequires: tcl
|
BuildRequires: sysuser-tools
|
||||||
BuildRequires: pkgconfig(systemd)
|
BuildRequires: pkgconfig(systemd)
|
||||||
Requires: logrotate
|
Recommends: logrotate
|
||||||
Requires: sudo
|
%sysusers_requires
|
||||||
Requires(pre): shadow
|
|
||||||
|
|
||||||
%description
|
%description
|
||||||
%{name} is an advanced key-value store. It is similar to memcached but the dataset
|
%{name} is an advanced key-value store. It is similar to memcached but the dataset
|
||||||
@ -62,16 +60,16 @@ different kind of sorting abilities.
|
|||||||
%setup -q
|
%setup -q
|
||||||
%patch0
|
%patch0
|
||||||
%patch1
|
%patch1
|
||||||
%patch2
|
|
||||||
%ifnarch %{ix86} x86_64 ia64 %{arm}
|
%ifnarch %{ix86} x86_64 ia64 %{arm}
|
||||||
# We have no backtrace, so disable logging test
|
# We have no backtrace, so disable logging test
|
||||||
%patch3
|
%patch2
|
||||||
%endif
|
%endif
|
||||||
%patch4 -p1
|
%patch3 -p1
|
||||||
|
|
||||||
%build
|
%build
|
||||||
export HOST=OBS # for reproducible builds
|
export HOST=OBS # for reproducible builds
|
||||||
make %{?_smp_mflags} CFLAGS="%{optflags}" V=1
|
make %{?_smp_mflags} CFLAGS="%{optflags}" V=1
|
||||||
|
%sysusers_generate_pre %{SOURCE9} redis
|
||||||
|
|
||||||
%install
|
%install
|
||||||
install -m 0750 -d \
|
install -m 0750 -d \
|
||||||
@ -110,6 +108,9 @@ install -Dm 0644 %{SOURCE8} %{buildroot}%{_unitdir}/%{name}-sentinel.target
|
|||||||
ln -sf %{_sbindir}/service %{buildroot}%{_sbindir}/rc%{name}
|
ln -sf %{_sbindir}/service %{buildroot}%{_sbindir}/rc%{name}
|
||||||
cp %{SOURCE5} README.SUSE
|
cp %{SOURCE5} README.SUSE
|
||||||
|
|
||||||
|
mkdir -p %{buildroot}%{_sysusersdir}
|
||||||
|
install -m 644 %{SOURCE9} %{buildroot}%{_sysusersdir}/
|
||||||
|
|
||||||
%check
|
%check
|
||||||
%ifnarch ppc ppc64
|
%ifnarch ppc ppc64
|
||||||
cat <<EOF
|
cat <<EOF
|
||||||
@ -121,11 +122,7 @@ EOF
|
|||||||
make %{?_smp_mflags} test || true
|
make %{?_smp_mflags} test || true
|
||||||
%endif
|
%endif
|
||||||
|
|
||||||
%pre
|
%pre -f redis.pre
|
||||||
getent group %{name} >/dev/null || %{_sbindir}/groupadd -r %{name} || :
|
|
||||||
getent passwd %{name} >/dev/null || \
|
|
||||||
%{_sbindir}/useradd -g %{name} -s /bin/false -r \
|
|
||||||
-c "User for %{name} key-value store" -d %{_data_dir} %{name} || :
|
|
||||||
%service_add_pre redis.target redis@.service redis-sentinel.target redis-sentinel@.service
|
%service_add_pre redis.target redis@.service redis-sentinel.target redis-sentinel@.service
|
||||||
|
|
||||||
%post
|
%post
|
||||||
@ -148,6 +145,7 @@ echo "See %{_docdir}/%{name}/README.SUSE to continue"
|
|||||||
%{_sbindir}/%{name}-*
|
%{_sbindir}/%{name}-*
|
||||||
%{_sbindir}/rc%{name}
|
%{_sbindir}/rc%{name}
|
||||||
%{_libexecdir}/tmpfiles.d/%{name}.conf
|
%{_libexecdir}/tmpfiles.d/%{name}.conf
|
||||||
|
%{_sysusersdir}/redis-user.conf
|
||||||
%{_unitdir}/%{name}@.service
|
%{_unitdir}/%{name}@.service
|
||||||
%{_unitdir}/%{name}.target
|
%{_unitdir}/%{name}.target
|
||||||
%{_unitdir}/%{name}-sentinel@.service
|
%{_unitdir}/%{name}-sentinel@.service
|
||||||
|
Loading…
Reference in New Issue
Block a user