From 38bbad6f63a720bf51c712c0d232794a519792b1 Mon Sep 17 00:00:00 2001 From: Mike Brady <4265913+mikebrady@users.noreply.github.com> Date: Tue, 5 Apr 2022 07:22:34 +0100 Subject: [PATCH] Remove the requirement for Avahi in the systemd startup file unless Avahi is included in the build. --- .gitignore | 1 + Makefile.am | 4 ++++ configure.ac | 6 +++++- scripts/shairport-sync.service-avahi.in | 15 +++++++++++++++ scripts/shairport-sync.service.in | 2 -- 5 files changed, 25 insertions(+), 3 deletions(-) create mode 100644 scripts/shairport-sync.service-avahi.in diff --git a/.gitignore b/.gitignore index 276d276e..a094f6e7 100644 --- a/.gitignore +++ b/.gitignore @@ -25,6 +25,7 @@ stamp-h1 man/Makefile man/Makefile.in scripts/shairport-sync.service +scripts/shairport-sync.service-avahi scripts/shairport-sync shairport-sync.core gitversion.h diff --git a/Makefile.am b/Makefile.am index c8d53440..6949127a 100644 --- a/Makefile.am +++ b/Makefile.am @@ -236,8 +236,12 @@ if INSTALL_SYSTEMD getent group shairport-sync &>/dev/null || groupadd -r shairport-sync >/dev/null getent passwd shairport-sync &> /dev/null || useradd -r -M -g shairport-sync -s /usr/bin/nologin -G audio shairport-sync >/dev/null [ -e $(DESTDIR)$(systemdsystemunitdir) ] || mkdir -p $(DESTDIR)$(systemdsystemunitdir) +if USE_AVAHI + [ -e $(DESTDIR)$(systemdsystemunitdir)/shairport-sync.service ] || cp scripts/shairport-sync.service-avahi $(DESTDIR)$(systemdsystemunitdir)/shairport-sync.service +else [ -e $(DESTDIR)$(systemdsystemunitdir)/shairport-sync.service ] || cp scripts/shairport-sync.service $(DESTDIR)$(systemdsystemunitdir) endif +endif if INSTALL_FREEBSD_SERVICE # Choose a uid and gid of 801 completely arbitrarity, except that it should be below 1000. FreeBSD doesn't seem to allow you to say "an ID in the range of..." pw showgroup shairport-sync > /dev/null 2>&1 || pw addgroup -n shairport-sync -g 801 > /dev/null 2>&1 diff --git a/configure.ac b/configure.ac index a3c9a529..356d3d4c 100644 --- a/configure.ac +++ b/configure.ac @@ -230,6 +230,9 @@ if test "x$with_avahi" = "xyes" ; then AC_DEFINE([CONFIG_AVAHI], 1, [Include Avahi-based mDNS support.]) AC_CHECK_LIB([avahi-client], [avahi_client_new], , AC_MSG_ERROR(Avahi support requires the avahi-client library!)) AC_CHECK_LIB([avahi-common],[avahi_strerror], , AC_MSG_ERROR(Avahi support requires the avahi-common library!)) + AC_CONFIG_FILES([scripts/shairport-sync.service-avahi]) +else + AC_CONFIG_FILES([scripts/shairport-sync.service]) fi AM_CONDITIONAL([USE_AVAHI], [test "x$with_avahi" = "xyes"]) @@ -473,6 +476,7 @@ AC_FUNC_ERROR_AT_LINE AC_FUNC_FORK AC_CHECK_FUNCS([atexit clock_gettime gethostname inet_ntoa memchr memmove memset mkfifo pow select socket stpcpy strcasecmp strchr strdup strerror strstr strtol strtoul]) -AC_CONFIG_FILES([Makefile man/Makefile scripts/shairport-sync.service]) +# Note -- there are AC_CONFIG_FILES directives further back, conditional on Avahi +AC_CONFIG_FILES([Makefile man/Makefile]) AC_CONFIG_FILES([scripts/shairport-sync],[chmod +x scripts/shairport-sync]) AC_OUTPUT diff --git a/scripts/shairport-sync.service-avahi.in b/scripts/shairport-sync.service-avahi.in new file mode 100644 index 00000000..d1dca5af --- /dev/null +++ b/scripts/shairport-sync.service-avahi.in @@ -0,0 +1,15 @@ +[Unit] +Description=Shairport Sync - AirPlay Audio Receiver +After=sound.target +Requires=avahi-daemon.service +After=avahi-daemon.service +Wants=network-online.target +After=network.target network-online.target + +[Service] +ExecStart=@prefix@/bin/shairport-sync +User=shairport-sync +Group=shairport-sync + +[Install] +WantedBy=multi-user.target diff --git a/scripts/shairport-sync.service.in b/scripts/shairport-sync.service.in index d1dca5af..aca6453f 100644 --- a/scripts/shairport-sync.service.in +++ b/scripts/shairport-sync.service.in @@ -1,8 +1,6 @@ [Unit] Description=Shairport Sync - AirPlay Audio Receiver After=sound.target -Requires=avahi-daemon.service -After=avahi-daemon.service Wants=network-online.target After=network.target network-online.target