[sheepdog] [PATCH] initial systemd support
Hitoshi Mitake
mitake.hitoshi at lab.ntt.co.jp
Fri Oct 24 03:23:39 CEST 2014
At Thu, 23 Oct 2014 19:40:47 +0400,
Vasiliy Tolstov wrote:
>
> Signed-off-by: Vasiliy Tolstov <v.tolstov at selfip.ru>
> ---
> configure.ac | 33 +++++++++++++++++++++++++++++++++
> script/Makefile.am | 11 +++++++----
> script/sheepdog.in | 7 +++++++
> script/sheepdog.service.in | 15 +++++++++++++++
> 4 files changed, 62 insertions(+), 4 deletions(-)
> create mode 100644 script/sheepdog.service.in
Applied, thanks.
Hitoshi
>
> diff --git a/configure.ac b/configure.ac
> index 69a2b40..6e7c141 100644
> --- a/configure.ac
> +++ b/configure.ac
> @@ -265,6 +265,39 @@ AC_ARG_ENABLE([diskvnodes],
> [ enable_diskvnodes="no" ],)
> AM_CONDITIONAL(BUILD_DISKVNODES, test x$enable_diskvnodes = xyes)
>
> +AC_ARG_ENABLE(systemd, AS_HELP_STRING([--enable-systemd],[enable systemd support]),enable_systemd=$enableval,enable_systemd="no")
> +
> +dnl systemd detection
> +if test x$enable_systemd = xno ; then
> + have_systemd=no;
> +else
> + PKG_CHECK_MODULES([SYSTEMD],
> + [libsystemd >= 209],
> + [have_systemd=yes])
> +fi
> +
> +if test x$have_systemd = xyes; then
> + AC_DEFINE(HAVE_SYSTEMD,1,[Have systemd])
> +fi
> +
> +if test x$enable_systemd = xyes -a x$have_systemd != xyes ; then
> + AC_MSG_ERROR([Explicitly requested systemd support, but systemd not found])
> +fi
> +
> +##### systemd unit files
> +AC_ARG_WITH([systemdsystemunitdir],
> +AS_HELP_STRING([--with-systemdsystemunitdir=DIR], [Directory for systemd service files]),
> + [],
> + [
> + PKG_CHECK_EXISTS([systemd],
> + [with_systemdsystemunitdir=$($PKG_CONFIG --variable=systemdsystemunitdir systemd)],
> + [with_systemdsystemunitdir=no])
> + ])
> +if test "x$with_systemdsystemunitdir" != xno; then
> + AC_SUBST([systemdsystemunitdir], [$with_systemdsystemunitdir])
> +fi
> +AM_CONDITIONAL(HAVE_SYSTEMD, [test "x$have_systemd" != "xno" -a -n "$with_systemdsystemunitdir" -a "x$with_systemdsystemunitdir" != xno ])
> +
>
> CP=cp
> OS_LDL="-ldl"
> diff --git a/script/Makefile.am b/script/Makefile.am
> index a2fa93e..5e88b59 100644
> --- a/script/Makefile.am
> +++ b/script/Makefile.am
> @@ -1,12 +1,15 @@
> MAINTAINERCLEANFILES = Makefile.in
>
> -EXTRA_DIST = sheepdog.in
> +EXTRA_DIST = sheepdog.in sheepdog.service.in
>
> noinst_HEADERS = checkarch.sh vditest gen_man.pl gen_bash_completion.pl
>
> initscript_SCRIPTS = sheepdog
> initscriptdir = $(INITDDIR)
>
> +systemd_DATA = sheepdog.service
> +systemddir = $(systemdsystemunitdir)
> +
> completion_DATA = dog
> completiondir = $(sysconfdir)/bash_completion.d
>
> @@ -23,10 +26,10 @@ dog: gen_bash_completion.pl Makefile
> -e 's#@''INITDDIR@#$(INITDDIR)#g' \
> -e 's#@''LOCALSTATEDIR@#$(localstatedir)#g' \
> $< > $@-t
> - chmod 0755 $@-t
> + if [ $@ != "sheepdog.service" ]; then chmod 0755 $@-t; fi
> mv $@-t $@
>
> -all-local: $(initscript_SCRIPTS) $(completion_DATA)
> +all-local: $(initscript_SCRIPTS) $(systemd_SERVICES) $(completion_DATA)
>
> clean-local:
> - rm -rf $(initscript_SCRIPTS) $(completion_DATA)
> + rm -rf $(initscript_SCRIPTS) $(systemd_SERVICES) $(completion_DATA)
> diff --git a/script/sheepdog.in b/script/sheepdog.in
> index 81a6ebe..bb38eea 100755
> --- a/script/sheepdog.in
> +++ b/script/sheepdog.in
> @@ -55,6 +55,13 @@ if [ -d @SYSCONFDIR@/default ]; then
> [ -z "$LOCK_FILE" ] && LOCK_FILE="@LOCALSTATEDIR@/lock/$prog"
> fi
>
> +# gentoo/exherbo/sabayon based distros
> +if [ -d @SYSCONFDIR@/conf.d ]; then
> + [ -f @SYSCONFDIR@/conf.d/$prog.conf ] && . @SYSCONFDIR@/conf.d/$prog.conf
> + [ -z "$LOCK_FILE" ] && LOCK_FILE="@LOCALSTATEDIR@/lock/$prog"
> +fi
> +
> +
> # The version of __pids_pidof in /etc/init.d/functions calls pidof with -x
> # This means it matches scripts, including this one.
> # Redefine it here so that status (from the same file) works.
> diff --git a/script/sheepdog.service.in b/script/sheepdog.service.in
> new file mode 100644
> index 0000000..555083e
> --- /dev/null
> +++ b/script/sheepdog.service.in
> @@ -0,0 +1,15 @@
> +[Unit]
> +Description=Sheepdog QEMU/KVM Block Storage
> +After=network.target
> +Wants=syslog.target
> +
> +[Service]
> +EnvironmentFile=- at SYSCONFDIR@/conf.d/sheepdog.conf
> +EnvironmentFile=- at SYSCONFDIR@/sysconfig/sheepdog
> +EnvironmentFile=- at SYSCONFDIR@/default/sheepdog
> +ExecStart=@SBINDIR@/sheep --pidfile @LOCALSTATEDIR@/run/sheep.pid ${SHEEP_OPTS:-"--cluster local --log syslog --pidfile @LOCALSTATEDIR@/run/sheep.pid --upgrade @LOCALSTATEDIR@/lib/sheepdog"}
> +PIDFile=@LOCALSTATEDIR@/run/sheep.pid
> +Type=forking
> +
> +[Install]
> +WantedBy=multi-user.target
> --
> 2.0.1
>
> --
> sheepdog mailing list
> sheepdog at lists.wpkg.org
> http://lists.wpkg.org/mailman/listinfo/sheepdog
More information about the sheepdog
mailing list