libssl-dev,
libfuse-dev,
libzookeeper-mt-dev,
- yasm
+ yasm,
+ dh-systemd (>= 1.4)
Standards-Version: 3.8.4
Homepage: http://www.osrg.net/sheepdog/
Package: pve-sheepdog
Architecture: any
-Depends: ${shlibs:Depends}, ${misc:Depends} corosync-pve, libzookeeper-mt2
+Depends: ${shlibs:Depends}, ${misc:Depends}, corosync-pve, libzookeeper-mt2, systemd
Description: Distributed storage system for KVM/QEMU
Sheepdog provides highly available block level storage volumes that can be
attached to KVM/QEMU virtual machines. Sheepdog scales to several hundreds
--- /dev/null
+Index: new/script/sheepdog.service.in
+===================================================================
+--- new.orig/script/sheepdog.service.in
++++ new/script/sheepdog.service.in
+@@ -2,6 +2,7 @@
+ Description=Sheepdog QEMU/KVM Block Storage
+ After=network.target
+ Wants=syslog.target
++ConditionFileIsExecutable=/usr/sbin/sheep
+
+ [Service]
+ EnvironmentFile=-@SYSCONFDIR@/default/sheepdog
--- /dev/null
+Index: new/script/sheepdog.service.in
+===================================================================
+--- new.orig/script/sheepdog.service.in
++++ new/script/sheepdog.service.in
+@@ -4,10 +4,8 @@ After=network.target
+ Wants=syslog.target
+
+ [Service]
+-EnvironmentFile=-@SYSCONFDIR@/conf.d/sheepdog.conf
+-EnvironmentFile=-@SYSCONFDIR@/sysconfig/sheepdog
+ EnvironmentFile=-@SYSCONFDIR@/default/sheepdog
+-ExecStart=/bin/sh -c '@SBINDIR@/sheep --pidfile @LOCALSTATEDIR@/run/sheep.pid $(if [ -z "$SHEEP_OPTS" ]; then echo "--cluster local --log dst=syslog --upgrade @LOCALSTATEDIR@/lib/sheepdog"; else echo $SHEEP_OPTS; fi)'
++ExecStart=/usr/lib/sheepdog/sheepdog-start-wrapper
+ PIDFile=@LOCALSTATEDIR@/run/sheep.pid
+ Type=forking
+ Restart=on-abort
#do-not-install-generic-init-script.patch
simplify-log-rotation.patch
+set-no-file-limit.patch
+cleanup-systemd-service.patch
+add-service-start-condition.patch
+++ /dev/null
-disable-test-suite.patch
-do-not-install-generic-init.d-script.patch
-fix-manual-path.patch
--- /dev/null
+Index: new/script/sheepdog.service.in
+===================================================================
+--- new.orig/script/sheepdog.service.in
++++ new/script/sheepdog.service.in
+@@ -13,6 +13,7 @@ Type=forking
+ Restart=on-abort
+ StartLimitInterval=10s
+ StartLimitBurst=3
++LimitNOFILE=infinity
+
+ [Install]
+ WantedBy=multi-user.target
-# Defaults for pve-sheepdog initscript
-# sourced by /etc/init.d/pve-sheepdog
+# Defaults for sheepdog service
-# start sheepdog at boot [yes|no]
-START=yes
# sheepdog root directory
#ROOTDIR=/var/lib/sheepdog/
#JOURNALSIZE=256M
+++ /dev/null
-#!/bin/sh
-### BEGIN INIT INFO
-# Provides: sheepdog
-# Required-Start: $network $remote_fs $syslog cman
-# Required-Stop: $network $remote_fs $syslog cman
-# Default-Start: 2 3 4 5
-# Default-Stop: 0 1 6
-# Short-Description: Sheepdog server
-# Description: Sheepdog server
-### END INIT INFO
-
-# Author: Proxmox Support Team <support@proxmox.com>
-
-# PATH should only include /usr/* if it runs after the mountnfs.sh script
-PATH=/sbin:/usr/sbin:/bin:/usr/bin
-DESC="Sheepdog Server" # Introduce a short description here
-NAME=sheepdog # Introduce the short server's name here
-DAEMON=/usr/sbin/sheep # Introduce the server's location here
-SCRIPTNAME=/etc/init.d/$NAME
-PIDFILE="/var/run/sheep.pid"
-
-# Exit if the package is not installed
-[ -x $DAEMON ] || exit 0
-
-ROOTDIR="/var/lib/sheepdog/"
-JOURNALSIZE="256M"
-DAEMON_ARGS=""
-
-# Read configuration variable file if it is present
-[ -r /etc/default/$NAME ] && . /etc/default/$NAME
-
-if [ "$START" != "yes" ]; then
- exit 0
-fi
-
-. /lib/lsb/init-functions
-
-#
-# Function that starts the daemon/service
-#
-do_start()
-{
- mkdir -p /var/run
-
- # Return
- # 0 if daemon has been started
- # 1 if daemon was already running
- # 2 if daemon could not be started
- ulimit -n 1024000 #avoid check_host_env(395) WARN: Allowed open files 1024 too small, suggested 1024000 warning message
- ulimit -c unlimited #avoid check_host_env(404) Allowed core file size 0, suggested unlimited warning message
- DAEMON_ARGS="${DAEMON_ARGS} --pidfile ${PIDFILE}"
- DAEMON_ARGS="${DAEMON_ARGS} $ROOTDIR"
-
- # /path/to/meta-store,/path/to/disk1{,/path/to/disk2,...}
- for d in $ROOTDIR/disc*
- do
- if [ -d "$d" ]; then
- DAEMON_ARGS="${DAEMON_ARGS},$d"
- fi
- done
-
- if [ -d "$ROOTDIR/journal" ]; then
- DAEMON_ARGS="${DAEMON_ARGS} -j dir=$ROOTDIR/journal,size=$JOURNALSIZE"
-
- fi
- status_of_proc -p ${PIDFILE} $DAEMON "$NAME" >/dev/null && continue
- start-stop-daemon --start --quiet --pidfile ${PIDFILE} --exec $DAEMON -- $DAEMON_ARGS || return 2
-
- return 0
-}
-
-#
-# Function that stops the daemon/service
-#
-do_stop()
-{
- # Return
- # 0 if daemon has been stopped
- # 1 if daemon was already stopped
- # 2 if daemon could not be stopped
- # other if a failure occurred
-
- start-stop-daemon --stop --oknodo --retry=TERM/20/KILL/5 --quiet --pidfile ${PIDFILE} --exec $DAEMON || return 2
-}
-
-case "$1" in
- start)
- log_daemon_msg "Starting $DESC " "$NAME"
- do_start
- case "$?" in
- 0|1) log_end_msg 0 ;;
- 2) log_end_msg 1 ;;
- esac
- ;;
- stop)
- log_daemon_msg "Stopping $DESC" "$NAME"
- do_stop
- case "$?" in
- 0|1) log_end_msg 0 ;;
- 2) log_end_msg 1 ;;
- esac
-
- ;;
- status)
- status_of_proc -p ${PIDFILE} $DAEMON "$NAME ${dir}" || exit 1
- ;;
- restart|force-reload)
- log_daemon_msg "Restarting $DESC" "$NAME"
- do_stop
- case "$?" in
- 0|1)
- do_start
- case "$?" in
- 0) log_end_msg 0 ;;
- 1) log_end_msg 1 ;; # Old process is still running
- *) log_end_msg 1 ;; # Failed to start
- esac
- ;;
- *)
- # Failed to stop
- log_end_msg 1
- ;;
- esac
- ;;
- *)
- echo "Usage: $SCRIPTNAME {start|stop|status|restart|force-reload}" >&2
- exit 3
- ;;
-esac
-
-:
-
export DEB_BUILD_HARDENING=1
%:
- dh --with quilt $@
+ dh --with quilt,systemd $@
+
+override_dh_auto_install:
+ dh_auto_install
+ rm debian/pve-sheepdog/etc/init.d/sheepdog
+ rmdir debian/pve-sheepdog/etc/init.d
+ install -D -m 0755 debian/sheepdog-start-wrapper debian/pve-sheepdog/usr/lib/sheepdog/sheepdog-start-wrapper
override_dh_installinit:
+ # just install install pve-sheepdog.sheepdog.default
dh_installinit --name sheepdog
override_dh_auto_configure:
./autogen.sh
- dh_auto_configure -- --enable-zookeeper
+ dh_auto_configure -- --enable-zookeeper --enable-systemd
--- /dev/null
+#!/bin/sh
+
+DAEMON=/usr/sbin/sheep
+PIDFILE="/var/run/sheep.pid"
+
+[ -z "$ROOTDIR" ] && ROOTDIR="/var/lib/sheepdog/"
+[ -z "$JOURNALSIZE" ] && JOURNALSIZE="256M"
+[ -z "$DAEMON_ARGS" ] && DAEMON_ARGS=""
+
+DAEMON_ARGS="${DAEMON_ARGS} --pidfile ${PIDFILE}"
+DAEMON_ARGS="${DAEMON_ARGS} $ROOTDIR"
+
+# /path/to/meta-store,/path/to/disk1{,/path/to/disk2,...}
+for d in $ROOTDIR/disc*
+do
+ if [ -d "$d" ]; then
+ DAEMON_ARGS="${DAEMON_ARGS},$d"
+ fi
+done
+
+if [ -d "$ROOTDIR/journal" ]; then
+ DAEMON_ARGS="${DAEMON_ARGS} -j dir=$ROOTDIR/journal,size=$JOURNALSIZE"
+fi
+
+$DAEMON $DAEMON_ARGS