diff options
author | Aleksander Morgado <aleksander@lanedo.com> | 2013-02-06 15:40:28 +0100 |
---|---|---|
committer | Aleksander Morgado <aleksander@lanedo.com> | 2013-02-06 17:32:59 +0100 |
commit | 222825d642fd3148caf3168c6e9a33f02b4f3733 (patch) | |
tree | 2cff6e164e0c3dd9a62a9be69b0cc109f09ddecd | |
parent | 596c9ea508c005bd1e3b01b439ac5872c926d7cf (diff) |
systemd: include systemd unit file support
Allow having systemd handling the life cycle of the ModemManager process.
-rw-r--r-- | .gitignore | 1 | ||||
-rw-r--r-- | Makefile.am | 1 | ||||
-rw-r--r-- | configure.ac | 9 | ||||
-rw-r--r-- | data/Makefile.am | 43 | ||||
-rw-r--r-- | data/ModemManager.service.in | 13 | ||||
-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.in | 11 |
7 files changed, 69 insertions, 9 deletions
@@ -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 |