From 07a6c353a26689e9907788d29d78f8b5c0212b31 Mon Sep 17 00:00:00 2001 From: Benedikt Morbach Date: Thu, 12 Jan 2012 15:17:26 +0100 Subject: Install a systemd service file if systemd is used This makes dbus defer starting upowerd to systemd instead of doing it itself and thus puts the daemon under proper systemd supervision. Signed-off-by: Richard Hughes --- Makefile.am | 3 ++- configure.ac | 8 ++++++++ src/Makefile.am | 27 ++++++++++++++++++++------- src/org.freedesktop.UPower.service.in | 1 + src/upower.service.in | 14 ++++++++++++++ 5 files changed, 45 insertions(+), 8 deletions(-) create mode 100644 src/upower.service.in diff --git a/Makefile.am b/Makefile.am index ee9ec84..d03baf7 100644 --- a/Makefile.am +++ b/Makefile.am @@ -52,7 +52,8 @@ pkgconfigdir = $(libdir)/pkgconfig pkgconfig_DATA = upower-glib.pc # xsltproc barfs on 'make distcheck'; disable for now -DISTCHECK_CONFIGURE_FLAGS=--disable-man-pages --enable-gtk-doc +DISTCHECK_CONFIGURE_FLAGS=--disable-man-pages --enable-gtk-doc \ + --with-systemdsystemunitdir=$$dc_install_base/$(systemdsystemunitdir) clean-local : rm -f *~ diff --git a/configure.ac b/configure.ac index 85ff22e..4d04cdc 100644 --- a/configure.ac +++ b/configure.ac @@ -210,6 +210,14 @@ fi AM_CONDITIONAL(HAVE_IDEVICE, [test x$have_idevice = xyes]) +# systemd +AC_ARG_WITH([systemdsystemunitdir], + AS_HELP_STRING([--with-systemdsystemunitdir=DIR], [Directory for systemd service files]), + [], + [with_systemdsystemunitdir=$($PKG_CONFIG --variable=systemdsystemunitdir systemd)]) +AC_SUBST([systemdsystemunitdir], [$with_systemdsystemunitdir]) +AM_CONDITIONAL(HAVE_SYSTEMD, [test -n "$with_systemdsystemunitdir"]) + # export to Makefile.am AM_CONDITIONAL(BACKEND_TYPE_DUMMY, [test x$with_backend = xdummy]) AM_CONDITIONAL(BACKEND_TYPE_LINUX, [test x$with_backend = xlinux]) diff --git a/src/Makefile.am b/src/Makefile.am index b8981ce..0166861 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -182,11 +182,11 @@ TESTS = up-self-test endif -servicedir = $(datadir)/dbus-1/system-services -service_in_files = org.freedesktop.UPower.service.in -service_DATA = $(service_in_files:.service.in=.service) +dbusservicedir = $(datadir)/dbus-1/system-services +dbusservice_in_files = org.freedesktop.UPower.service.in +dbusservice_DATA = $(dbusservice_in_files:.service.in=.service) -$(service_DATA): $(service_in_files) Makefile +$(dbusservice_DATA): $(dbusservice_in_files) Makefile @sed -e "s|\@libexecdir\@|$(libexecdir)|" $< > $@ dbusconfdir = $(sysconfdir)/dbus-1/system.d @@ -196,6 +196,15 @@ dbusconf_DATA = $(dbusconf_in_files:.conf.in=.conf) $(dbusconf_DATA): $(dbusconf_in_files) Makefile cp $< $@ +if HAVE_SYSTEMD +systemdservicedir = $(systemdsystemunitdir) +systemdservice_in_files = upower.service.in +systemdservice_DATA = $(systemdservice_in_files:.service.in=.service) + +$(systemdservice_DATA): $(systemdservice_in_files) Makefile + @sed -e "s|\@libexecdir\@|$(libexecdir)|" $< > $@ +endif + install-data-hook: if test -w $(DESTDIR)$(prefix)/; then \ mkdir -p $(DESTDIR)$(historydir); \ @@ -205,7 +214,7 @@ CLEANFILES = $(BUILT_SOURCES) MAINTAINERCLEANFILES = \ $(dbusconf_DATA) \ - $(service_DATA) + $(dbusservice_DATA) EXTRA_DIST = \ org.freedesktop.UPower.xml \ @@ -214,10 +223,14 @@ EXTRA_DIST = \ org.freedesktop.UPower.KbdBacklight.xml \ org.freedesktop.UPower.Wakeups.xml \ up-marshal.list \ - $(service_in_files) \ + $(dbusservice_in_files) \ $(dbusconf_in_files) +if HAVE_SYSTEMD +EXTRA_DIST += $(systemdservice_in_files) +endif + clean-local : - rm -f *~ $(service_DATA) $(dbusconf_DATA) + rm -f *~ $(dbusservice_DATA) $(dbusconf_DATA) $(systemdservice_DATA) -include $(top_srcdir)/git.mk diff --git a/src/org.freedesktop.UPower.service.in b/src/org.freedesktop.UPower.service.in index 0c30555..199d7d3 100644 --- a/src/org.freedesktop.UPower.service.in +++ b/src/org.freedesktop.UPower.service.in @@ -2,4 +2,5 @@ Name=org.freedesktop.UPower Exec=@libexecdir@/upowerd User=root +SystemdService=upower.service diff --git a/src/upower.service.in b/src/upower.service.in new file mode 100644 index 0000000..3aea9e2 --- /dev/null +++ b/src/upower.service.in @@ -0,0 +1,14 @@ +[Unit] +Description=Daemon for power management + +[Service] +Type=dbus +BusName=org.freedesktop.UPower +ExecStart=@libexecdir@/upowerd + +[Install] +# We pull this in by graphical.target instead of waiting for the bus +# activation, to speed things up a little: gdm uses this anyway so it is nice +# if it is already around when gdm wants to use it and doesn't have to wait for +# it. +WantedBy=graphical.target -- cgit v1.2.1