Browse code

systemd: Use automake tools to install unit files

If systemd is enabled we install unit files to $libdir/systemd/system
(or the path specified by SYSTEMD_UNIT_DIR).
The unit files are generated on the fly with matching $sbindir.

Signed-off-by: Christian Hesse <mail@eworm.de>
Acked-by: David Sommerseth <davids@openvpn.net>
Message-Id: <20170124143947.27385-1-list@eworm.de>
URL: https://www.mail-archive.com/openvpn-devel@lists.sourceforge.net/msg13940.html
Signed-off-by: David Sommerseth <davids@openvpn.net>

Christian Hesse authored on 2017/01/24 23:39:46
Showing 8 changed files
... ...
@@ -51,6 +51,7 @@ config-msvc-local.h
51 51
 config-msvc-version.h
52 52
 doc/openvpn.8.html
53 53
 distro/rpm/openvpn.spec
54
+distro/systemd/*.service
54 55
 sample/sample-keys/sample-ca/
55 56
 vendor/.build
56 57
 vendor/dist
... ...
@@ -378,6 +378,7 @@ AC_ARG_VAR([NETSTAT], [path to netstat utility]) # tests
378 378
 AC_ARG_VAR([MAN2HTML], [path to man2html utility])
379 379
 AC_ARG_VAR([GIT], [path to git utility])
380 380
 AC_ARG_VAR([SYSTEMD_ASK_PASSWORD], [path to systemd-ask-password utility])
381
+AC_ARG_VAR([SYSTEMD_UNIT_DIR], [Path of systemd unit directory @<:@default=LIBDIR/systemd/system@:>@])
381 382
 AC_PATH_PROGS([IFCONFIG], [ifconfig],, [$PATH:/usr/local/sbin:/usr/sbin:/sbin])
382 383
 AC_PATH_PROGS([ROUTE], [route],, [$PATH:/usr/local/sbin:/usr/sbin:/sbin])
383 384
 AC_PATH_PROGS([IPROUTE], [ip],, [$PATH:/usr/local/sbin:/usr/sbin:/sbin])
... ...
@@ -1099,6 +1100,12 @@ if test "$enable_systemd" = "yes" ; then
1099 1099
     OPTIONAL_SYSTEMD_LIBS="${libsystemd_LIBS}"
1100 1100
     AC_DEFINE(ENABLE_SYSTEMD, 1, [Enable systemd integration])
1101 1101
     LIBS="${saved_LIBS}"
1102
+
1103
+    if test -n "${SYSTEMD_UNIT_DIR}"; then
1104
+        systemdunitdir="${SYSTEMD_UNIT_DIR}"
1105
+    else
1106
+        systemdunitdir="\${libdir}/systemd/system"
1107
+    fi
1102 1108
 fi
1103 1109
 
1104 1110
 
... ...
@@ -1275,6 +1282,8 @@ sampledir="\$(docdir)/sample"
1275 1275
 AC_SUBST([plugindir])
1276 1276
 AC_SUBST([sampledir])
1277 1277
 
1278
+AC_SUBST([systemdunitdir])
1279
+
1278 1280
 VENDOR_SRC_ROOT="\$(abs_top_srcdir)/vendor/"
1279 1281
 VENDOR_DIST_ROOT="\$(abs_top_builddir)/vendor/dist"
1280 1282
 VENDOR_BUILD_ROOT="\$(abs_top_builddir)/vendor/.build"
... ...
@@ -1313,6 +1322,7 @@ AC_CONFIG_FILES([
1313 1313
 	distro/Makefile
1314 1314
 	distro/rpm/Makefile
1315 1315
 	distro/rpm/openvpn.spec
1316
+	distro/systemd/Makefile
1316 1317
 	include/Makefile
1317 1318
 	src/Makefile
1318 1319
 	src/compat/Makefile
... ...
@@ -12,6 +12,4 @@
12 12
 MAINTAINERCLEANFILES = \
13 13
 	$(srcdir)/Makefile.in
14 14
 
15
-SUBDIRS = rpm
16
-
17
-EXTRA_DIST = systemd/openvpn-client@.service systemd/openvpn-server@.service
15
+SUBDIRS = rpm systemd
18 16
new file mode 100644
... ...
@@ -0,0 +1,26 @@
0
+#
1
+#  OpenVPN -- An application to securely tunnel IP networks
2
+#             over a single UDP port, with support for SSL/TLS-based
3
+#             session authentication and key exchange,
4
+#             packet encryption, packet authentication, and
5
+#             packet compression.
6
+#
7
+#  Copyright (C) 2017 OpenVPN Technologies, Inc. <sales@openvpn.net>
8
+#
9
+
10
+%.service: %.service.in Makefile
11
+	$(AM_V_GEN)sed -e 's|\@sbindir\@|$(sbindir)|' \
12
+		$< > $@.tmp && mv $@.tmp $@
13
+
14
+EXTRA_DIST = \
15
+	openvpn-client@.service.in \
16
+	openvpn-server@.service.in
17
+
18
+if ENABLE_SYSTEMD
19
+systemdunit_DATA = \
20
+	openvpn-client@.service \
21
+	openvpn-server@.service
22
+endif
23
+
24
+MAINTAINERCLEANFILES = \
25
+	$(srcdir)/Makefile.in
0 26
deleted file mode 100644
... ...
@@ -1,22 +0,0 @@
1
-[Unit]
2
-Description=OpenVPN tunnel for %I
3
-After=syslog.target network-online.target
4
-Wants=network-online.target
5
-Documentation=man:openvpn(8)
6
-Documentation=https://community.openvpn.net/openvpn/wiki/Openvpn24ManPage
7
-Documentation=https://community.openvpn.net/openvpn/wiki/HOWTO
8
-
9
-[Service]
10
-Type=notify
11
-PrivateTmp=true
12
-RuntimeDirectory=openvpn-client
13
-RuntimeDirectoryMode=0710
14
-WorkingDirectory=/etc/openvpn/client
15
-ExecStart=/usr/sbin/openvpn --suppress-timestamps --nobind --config %i.conf
16
-CapabilityBoundingSet=CAP_IPC_LOCK CAP_NET_ADMIN CAP_NET_RAW CAP_SETGID CAP_SETUID CAP_SYS_CHROOT CAP_DAC_OVERRIDE
17
-LimitNPROC=10
18
-DeviceAllow=/dev/null rw
19
-DeviceAllow=/dev/net/tun rw
20
-
21
-[Install]
22
-WantedBy=multi-user.target
23 1
new file mode 100644
... ...
@@ -0,0 +1,22 @@
0
+[Unit]
1
+Description=OpenVPN tunnel for %I
2
+After=syslog.target network-online.target
3
+Wants=network-online.target
4
+Documentation=man:openvpn(8)
5
+Documentation=https://community.openvpn.net/openvpn/wiki/Openvpn24ManPage
6
+Documentation=https://community.openvpn.net/openvpn/wiki/HOWTO
7
+
8
+[Service]
9
+Type=notify
10
+PrivateTmp=true
11
+RuntimeDirectory=openvpn-client
12
+RuntimeDirectoryMode=0710
13
+WorkingDirectory=/etc/openvpn/client
14
+ExecStart=@sbindir@/openvpn --suppress-timestamps --nobind --config %i.conf
15
+CapabilityBoundingSet=CAP_IPC_LOCK CAP_NET_ADMIN CAP_NET_RAW CAP_SETGID CAP_SETUID CAP_SYS_CHROOT CAP_DAC_OVERRIDE
16
+LimitNPROC=10
17
+DeviceAllow=/dev/null rw
18
+DeviceAllow=/dev/net/tun rw
19
+
20
+[Install]
21
+WantedBy=multi-user.target
0 22
deleted file mode 100644
... ...
@@ -1,22 +0,0 @@
1
-[Unit]
2
-Description=OpenVPN service for %I
3
-After=syslog.target network-online.target
4
-Wants=network-online.target
5
-Documentation=man:openvpn(8)
6
-Documentation=https://community.openvpn.net/openvpn/wiki/Openvpn24ManPage
7
-Documentation=https://community.openvpn.net/openvpn/wiki/HOWTO
8
-
9
-[Service]
10
-Type=notify
11
-PrivateTmp=true
12
-RuntimeDirectory=openvpn-server
13
-RuntimeDirectoryMode=0710
14
-WorkingDirectory=/etc/openvpn/server
15
-ExecStart=/usr/sbin/openvpn --status %t/openvpn-server/status-%i.log --status-version 2 --suppress-timestamps --config %i.conf
16
-CapabilityBoundingSet=CAP_IPC_LOCK CAP_NET_ADMIN CAP_NET_BIND_SERVICE CAP_NET_RAW CAP_SETGID CAP_SETUID CAP_SYS_CHROOT CAP_DAC_OVERRIDE
17
-LimitNPROC=10
18
-DeviceAllow=/dev/null rw
19
-DeviceAllow=/dev/net/tun rw
20
-
21
-[Install]
22
-WantedBy=multi-user.target
23 1
new file mode 100644
... ...
@@ -0,0 +1,22 @@
0
+[Unit]
1
+Description=OpenVPN service for %I
2
+After=syslog.target network-online.target
3
+Wants=network-online.target
4
+Documentation=man:openvpn(8)
5
+Documentation=https://community.openvpn.net/openvpn/wiki/Openvpn24ManPage
6
+Documentation=https://community.openvpn.net/openvpn/wiki/HOWTO
7
+
8
+[Service]
9
+Type=notify
10
+PrivateTmp=true
11
+RuntimeDirectory=openvpn-server
12
+RuntimeDirectoryMode=0710
13
+WorkingDirectory=/etc/openvpn/server
14
+ExecStart=@sbindir@/openvpn --status %t/openvpn-server/status-%i.log --status-version 2 --suppress-timestamps --config %i.conf
15
+CapabilityBoundingSet=CAP_IPC_LOCK CAP_NET_ADMIN CAP_NET_BIND_SERVICE CAP_NET_RAW CAP_SETGID CAP_SETUID CAP_SYS_CHROOT CAP_DAC_OVERRIDE
16
+LimitNPROC=10
17
+DeviceAllow=/dev/null rw
18
+DeviceAllow=/dev/net/tun rw
19
+
20
+[Install]
21
+WantedBy=multi-user.target