summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.gitignore3
-rw-r--r--Makefile.am7
-rw-r--r--configure.ac15
-rw-r--r--data/Makefile.am26
-rw-r--r--data/NetworkManager.service.in12
-rw-r--r--data/org.freedesktop.NetworkManager.service.in11
6 files changed, 73 insertions, 1 deletions
diff --git a/.gitignore b/.gitignore
index 22f990911d..2fee0804a2 100644
--- a/.gitignore
+++ b/.gitignore
@@ -108,4 +108,7 @@ m4/lt*.m4
policy/org.freedesktop.network-manager-settings.system.policy
policy/org.freedesktop.NetworkManager.policy
+data/NetworkManager.service
+data/org.freedesktop.NetworkManager.service
+
cli/src/nmcli
diff --git a/Makefile.am b/Makefile.am
index 7e34571218..64be5c8526 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -10,6 +10,7 @@ SUBDIRS = \
cli \
tools \
policy \
+ data \
initscript \
test \
po \
@@ -24,7 +25,11 @@ EXTRA_DIST = \
intltool-merge.in \
intltool-update.in
-DISTCHECK_CONFIGURE_FLAGS = --with-tests=yes --with-docs=yes --with-udev-dir=$$dc_install_base/lib/udev
+DISTCHECK_CONFIGURE_FLAGS = \
+ --with-tests=yes \
+ --with-docs=yes \
+ --with-udev-dir=$$dc_install_base/lib/udev \
+ --with-systemdsystemunitdir=$$dc_install_base/$(systemdsystemunitdir)
DISTCLEANFILES = intltool-extract intltool-merge intltool-update
diff --git a/configure.ac b/configure.ac
index 3217734dcc..cfc2122b08 100644
--- a/configure.ac
+++ b/configure.ac
@@ -237,6 +237,14 @@ else
fi
AC_SUBST(UDEV_BASE_DIR)
+# 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"])
+
PKG_CHECK_MODULES(LIBNL, libnl-1 >= 1.0-pre8)
AC_SUBST(LIBNL_CFLAGS)
AC_SUBST(LIBNL_LIBS)
@@ -528,6 +536,7 @@ man/nm-online.1
man/nmcli.1
po/Makefile.in
policy/Makefile
+data/Makefile
docs/Makefile
docs/libnm-glib/Makefile
docs/libnm-util/Makefile
@@ -555,6 +564,12 @@ else
echo dhcpcd support: no
fi
+if test -n "${with_systemdsystemunitdir}"; then
+ echo systemd support: ${with_systemdsystemunitdir}
+else
+ echo systemd support: no
+fi
+
echo
echo Building documentation: ${with_docs}
echo Building tests: ${with_tests}
diff --git a/data/Makefile.am b/data/Makefile.am
new file mode 100644
index 0000000000..f91d3a8255
--- /dev/null
+++ b/data/Makefile.am
@@ -0,0 +1,26 @@
+
+if HAVE_SYSTEMD
+systemdsystemunit_DATA = NetworkManager.service
+
+NetworkManager.service: NetworkManager.service.in
+ $(edit) $< >$@
+
+servicedir = $(datadir)/dbus-1/system-services
+service_in_files = org.freedesktop.NetworkManager.service.in
+service_DATA = $(service_in_files:.service.in=.service)
+
+$(service_DATA): $(service_in_files) Makefile
+ $(edit) $< >$@
+endif
+
+edit = sed \
+ -e 's|@sbindir[@]|$(sbindir)|g' \
+ -e 's|@sysconfdir[@]|$(sysconfdir)|g' \
+ -e 's|@localstatedir[@]|$(localstatedir)|g'
+
+EXTRA_DIST = \
+ NetworkManager.service.in \
+ org.freedesktop.NetworkManager.service.in
+
+CLEANFILES = NetworkManager.service org.freedesktop.NetworkManager.service
+
diff --git a/data/NetworkManager.service.in b/data/NetworkManager.service.in
new file mode 100644
index 0000000000..c2741fcc19
--- /dev/null
+++ b/data/NetworkManager.service.in
@@ -0,0 +1,12 @@
+[Unit]
+Description=Network Manager
+After=syslog.target
+
+[Service]
+Type=dbus
+BusName=org.freedesktop.NetworkManager
+ExecStart=@sbindir@/NetworkManager --no-daemon
+
+[Install]
+WantedBy=network.target multi-user.target
+Alias=NetworkManager-by-dbus
diff --git a/data/org.freedesktop.NetworkManager.service.in b/data/org.freedesktop.NetworkManager.service.in
new file mode 100644
index 0000000000..7434903bad
--- /dev/null
+++ b/data/org.freedesktop.NetworkManager.service.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 NM 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 NM
+# systemd .service file.
+
+[D-BUS Service]
+Name=org.freedesktop.NetworkManager
+Exec=/bin/false
+User=root
+SystemdService=NetworkManager-by-dbus.service