aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAleksander Morgado <aleksander@lanedo.com>2013-02-06 15:40:28 +0100
committerAleksander Morgado <aleksander@lanedo.com>2013-02-06 17:32:59 +0100
commit222825d642fd3148caf3168c6e9a33f02b4f3733 (patch)
tree2cff6e164e0c3dd9a62a9be69b0cc109f09ddecd
parent596c9ea508c005bd1e3b01b439ac5872c926d7cf (diff)
systemd: include systemd unit file support
Allow having systemd handling the life cycle of the ModemManager process.
-rw-r--r--.gitignore1
-rw-r--r--Makefile.am1
-rw-r--r--configure.ac9
-rw-r--r--data/Makefile.am43
-rw-r--r--data/ModemManager.service.in13
-rw-r--r--data/org.freedesktop.ModemManager1.service.nosystemd.in (renamed from data/org.freedesktop.ModemManager1.service.in)0
-rw-r--r--data/org.freedesktop.ModemManager1.service.systemd.in11
7 files changed, 69 insertions, 9 deletions
diff --git a/.gitignore b/.gitignore
index 0d4daf69..224204ab 100644
--- a/.gitignore
+++ b/.gitignore
@@ -57,6 +57,7 @@ libwmc/tests/test-wmc
data/org.freedesktop.ModemManager1.conf
data/org.freedesktop.ModemManager1.service
data/org.freedesktop.ModemManager1.policy
+data/ModemManager.service
data/ModemManager.pc
data/mm-common.pc
data/mm-glib.pc
diff --git a/Makefile.am b/Makefile.am
index 4083742d..5692e441 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -3,6 +3,7 @@ SUBDIRS = . build-aux data include libqcdm libwmc libmm-glib src plugins cli int
DISTCHECK_CONFIGURE_FLAGS = \
--with-udev-base-dir="$$dc_install_base" \
+ --with-systemdsystemunitdir="$$dc_install_base/$(SYSTEMD_UNIT_DIR)" \
--with-tests=yes \
--with-docs=yes
diff --git a/configure.ac b/configure.ac
index 1fc11afb..3f00a6d5 100644
--- a/configure.ac
+++ b/configure.ac
@@ -110,6 +110,14 @@ else
fi
AC_SUBST(UDEV_BASE_DIR)
+# systemd system unit directory
+AC_ARG_WITH([systemdsystemunitdir], AS_HELP_STRING([--with-systemdsystemunitdir=DIR], [where systemd service files are]),
+ [], [with_systemdsystemunitdir=$($PKG_CONFIG --variable=systemdsystemunitdir systemd)])
+if test "x$with_systemdsystemunitdir" != xno; then
+ AC_SUBST([SYSTEMD_UNIT_DIR], [$with_systemdsystemunitdir])
+fi
+AM_CONDITIONAL(HAVE_SYSTEMD, [test -n "$SYSTEMD_UNIT_DIR" -a "$SYSTEMD_UNIT_DIR" != xno ])
+
# PolicyKit
AC_ARG_WITH(polkit, AS_HELP_STRING([--with-polkit], [Build with PolicyKit support]))
AM_CONDITIONAL(WITH_POLKIT, test "x$with_polkit" = "xyes")
@@ -256,6 +264,7 @@ echo "
D-Bus system directory: ${DBUS_SYS_DIR}
udev base directory: ${UDEV_BASE_DIR}
+ systemd unit directory: ${with_systemdsystemunitdir}
PPP-enabled tests: ${have_pppd_headers}
PolicyKit support: ${with_polkit}
diff --git a/data/Makefile.am b/data/Makefile.am
index 0f7618df..eb87359b 100644
--- a/data/Makefile.am
+++ b/data/Makefile.am
@@ -1,4 +1,11 @@
+edit = @sed \
+ -e 's|@sbindir[@]|$(sbindir)|g' \
+ -e 's|@sysconfdir[@]|$(sysconfdir)|g' \
+ -e 's|@localstatedir[@]|$(localstatedir)|g' \
+ -e 's|@libexecdir[@]|$(libexecdir)|g'
+
+
# DBus Service file
dbusservicedir = $(DBUS_SYS_DIR)
dbusservice_DATA = org.freedesktop.ModemManager1.conf
@@ -14,17 +21,28 @@ org.freedesktop.ModemManager1.conf: $(top_srcdir)/data/$(dbusservice_file_nopol
endif
+# systemd unit file
+systemdsystemunitdir = $(SYSTEMD_UNIT_DIR)
+systemdsystemunit_in_files = ModemManager.service.in
+if HAVE_SYSTEMD
+systemdsystemunit_DATA = ModemManager.service
+ModemManager.service: ModemManager.service.in
+ $(edit) $< >$@
+endif
+
+
# DBus Activation file
-edit = @sed \
- -e 's|@sbindir[@]|$(sbindir)|g' \
- -e 's|@sysconfdir[@]|$(sysconfdir)|g' \
- -e 's|@localstatedir[@]|$(localstatedir)|g' \
- -e 's|@libexecdir[@]|$(libexecdir)|g'
dbusactivationdir = $(datadir)/dbus-1/system-services
-dbusactivation_in_files = org.freedesktop.ModemManager1.service.in
-dbusactivation_DATA = $(dbusactivation_in_files:.service.in=.service)
-%service: %service.in
+dbusactivation_DATA = org.freedesktop.ModemManager1.service
+dbusactivation_in_files_systemd = org.freedesktop.ModemManager1.service.systemd.in
+dbusactivation_in_files_nosystemd = org.freedesktop.ModemManager1.service.nosystemd.in
+if HAVE_SYSTEMD
+org.freedesktop.ModemManager1.service: org.freedesktop.ModemManager1.service.systemd.in
$(edit) $< >$@
+else
+org.freedesktop.ModemManager1.service: org.freedesktop.ModemManager1.service.nosystemd.in
+ $(edit) $< >$@
+endif
# Icon
@@ -59,8 +77,15 @@ DISTCLEANFILES = \
$(dbusactivation_DATA) \
$(dbusservice_DATA)
+if HAVE_SYSTEMD
+DISTCLEANFILES += $(systemdsystemunit_DATA)
+endif
+
+
EXTRA_DIST = \
- $(dbusactivation_in_files) \
+ $(systemdsystemunit_in_files) \
+ $(dbusactivation_in_files_systemd) \
+ $(dbusactivation_in_files_nosystemd) \
$(dbusservice_file_polkit) \
$(dbusservice_file_nopolkit) \
$(icon_DATA) \
diff --git a/data/ModemManager.service.in b/data/ModemManager.service.in
new file mode 100644
index 00000000..b59caeae
--- /dev/null
+++ b/data/ModemManager.service.in
@@ -0,0 +1,13 @@
+[Unit]
+Description=Modem Manager
+After=syslog.target
+
+[Service]
+Type=dbus
+BusName=org.freedesktop.ModemManager1
+ExecStart=@sbindir@/ModemManager
+StandardError=null
+
+[Install]
+WantedBy=multi-user.target
+Alias=dbus-org.freedesktop.ModemManager1.service
diff --git a/data/org.freedesktop.ModemManager1.service.in b/data/org.freedesktop.ModemManager1.service.nosystemd.in
index 4e3a273f..4e3a273f 100644
--- a/data/org.freedesktop.ModemManager1.service.in
+++ b/data/org.freedesktop.ModemManager1.service.nosystemd.in
diff --git a/data/org.freedesktop.ModemManager1.service.systemd.in b/data/org.freedesktop.ModemManager1.service.systemd.in
new file mode 100644
index 00000000..441dc1d6
--- /dev/null
+++ b/data/org.freedesktop.ModemManager1.service.systemd.in
@@ -0,0 +1,11 @@
+# This D-Bus service activation file is only for systemd support since
+# an auto-activated NetworkManager would be quite surprising for those people
+# who have MM installed but turned off. Thus the Exec path available to
+# D-Bus is /bin/false, but systemd knows the real Exec path due to the MM
+# systemd .service file.
+
+[D-BUS Service]
+Name=org.freedesktop.ModemManager1
+Exec=/bin/false
+User=root
+SystemdService=dbus-org.freedesktop.ModemManager1.service