]> granicus.if.org Git - pdns/commitdiff
recursor: install systemd unit file
authorPieter Lexis <pieter.lexis@powerdns.com>
Mon, 25 Apr 2016 16:31:02 +0000 (18:31 +0200)
committerPieter Lexis <pieter.lexis@powerdns.com>
Wed, 4 May 2016 14:03:09 +0000 (16:03 +0200)
build-scripts/build-recursor-debian
build-scripts/build-recursor-rpm
build-scripts/debian-recursor/control.in [moved from build-scripts/debian-recursor/control with 97% similarity]
build-scripts/debian-recursor/pdns-recursor.service [deleted file]
build-scripts/debian-recursor/rules
pdns/recursordist/Makefile.am
pdns/recursordist/pdns-recursor.service.in [new file with mode: 0644]

index 3fc56ca741f5e0100b4415aa5a16b8d4e08c9758..b70d9f96440dfd36e0b3ddad228e431e91fdbbd9 100755 (executable)
@@ -25,7 +25,10 @@ set -x
 
 rm -rf $DISTDIR/debian
 cp -r build-scripts/debian-recursor $DISTDIR/debian
-cat > $DISTDIR/debian/changelog << EOF
+
+cd $DISTDIR
+
+cat > debian/changelog << EOF
 pdns-recursor (${VERSION}-${RELEASE}) unstable; urgency=medium
 
   * Automatic build
@@ -34,6 +37,12 @@ pdns-recursor (${VERSION}-${RELEASE}) unstable; urgency=medium
 
 EOF
 
-cd $DISTDIR
+PDNS_VERSION=$VERSION
+
+. /etc/os-release
+export ID="${ID}"
+export VERSION_ID="${VERSION_ID}"
+
+fakeroot debian/rules debian/control
 
 fakeroot debian/rules binary
index d4ce269aaaad0559d6a25eebedf10d2a898c0b5f..1c5882d65f21864c5f8c015bb7bf0d9a1e1a2a2b 100755 (executable)
@@ -209,6 +209,7 @@ Provides: powerdns-recursor = %{version}-%{release}
 BuildRequires: boost-devel
 BuildRequires: lua-devel
 BuildRequires: systemd-units
+BuildRequires: systemd-devel
 BuildRequires: hostname
 
 Requires(pre): shadow-utils
@@ -231,14 +232,13 @@ package if you need a dns cache for your network.
        --disable-static \
        --disable-dependency-tracking \
        --disable-silent-rules \
-       --enable-unit-tests
+       --enable-unit-tests \
+       --enable-systemd
 
 make %{?_smp_mflags}
 
 %install
 make install DESTDIR=%{buildroot}
-# install systemd unit file
-%{__install} -D -p -m 644 contrib/systemd-pdns-recursor.service %{buildroot}%{_unitdir}/%{name}.service
 %{__mv} %{buildroot}%{_sysconfdir}/%{name}/recursor.conf-dist %{buildroot}%{_sysconfdir}/%{name}/recursor.conf
 
 # add pdns user and group to top of configfile
similarity index 97%
rename from build-scripts/debian-recursor/control
rename to build-scripts/debian-recursor/control.in
index ea9e8ac5ee1360446a5fe230e6e3f2084e003a1a..583760e69c096d54a1ce137f970c07232598695b 100644 (file)
@@ -4,7 +4,7 @@ Priority: extra
 Standards-Version: 3.9.6
 Maintainer: PowerDNS Autobuilder <powerdns.support@powerdns.com>
 Origin: PowerDNS
-Build-Depends: debhelper (>= 9~), dh-systemd, quilt, dpkg-dev (>= 1.17.0~), libboost-dev, libboost-serialization-dev, liblua5.2-dev, pkg-config
+Build-Depends: debhelper (>= 9~), dh-systemd, quilt, dpkg-dev (>= 1.17.0~), libboost-dev, libboost-serialization-dev, liblua5.2-dev, pkg-config @LIBSYSTEMDDEV@
 Homepage: http://www.powerdns.com/
 
 Package: pdns-recursor
diff --git a/build-scripts/debian-recursor/pdns-recursor.service b/build-scripts/debian-recursor/pdns-recursor.service
deleted file mode 100644 (file)
index 53a644d..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-[Unit]
-Description=PowerDNS Recursor
-Wants=network-online.target
-After=network-online.target
-
-[Service]
-Type=simple
-ExecStart=/usr/sbin/pdns_recursor --daemon=no
-PrivateTmp=true
-
-[Install]
-WantedBy=multi-user.target
index 7502230568b96c3515252de3e21215c6bb27e0c0..7e16cff734e9ef56f880e5a9f87169ab37602eb4 100755 (executable)
@@ -11,9 +11,29 @@ include /usr/share/dpkg/buildflags.mk
 version := $(shell dpkg-parsechangelog -SVersion).$(shell dpkg-vendor --query Vendor)
 CXXFLAGS += -DPACKAGEVERSION='"$(version)"'
 
+ENABLE_SYSTEMD := --enable-systemd --with-systemd=/lib/systemd/system
+LIBSYSTEMD_DEV := , libsystemd-dev
+DEBHELPER_WITH_SYSTEMD := --with systemd
+
+# $(ID) and $(VERSION_ID) come from the environment, source this from /etc/os-release
+ifeq ($(ID), ubuntu)
+  ifeq ($(VERSION_ID), 14.04)
+    # Disable building with and depending on systemd on Ubuntu Trusty
+    ENABLE_SYSTEMD=
+    LIBSYSTEMD_DEV=
+    DEBHELPER_WITH_SYSTEMD=
+  endif
+endif
+
+debian/control: debian/control.in
+       sed -e "s!@LIBSYSTEMDDEV@!$(LIBSYSTEMD_DEV)!" $< > $@
+
 # Use new build system
 %:
-       dh $@ --with autoreconf --with systemd --parallel
+       dh $@ \
+         --with autoreconf \
+         --parallel \
+         $(DEBHELPER_WITH_SYSTEMD)
 
 override_dh_auto_configure:
        ./configure \
@@ -25,7 +45,8 @@ override_dh_auto_configure:
                --infodir=\$${prefix}/share/info \
                --libdir='$${prefix}/lib/$(DEB_HOST_MULTIARCH)' \
                --libexecdir='$${prefix}/lib' \
-               --enable-unit-tests
+               --enable-unit-tests \
+               $(ENABLE_SYSTEMD)
 
 override_dh_auto_install:
        ./pdns_recursor --config | sed \
index 1e4a7578dd1005ea72be83f0e01d0650702c3045..06680a02cd872dc4b6343b89cf8f25067705a9bf 100644 (file)
@@ -54,7 +54,8 @@ EXTRA_DIST = \
        portsmplexer.cc \
        rec_control.1.md \
        rrd/* \
-       html incfiles
+       html incfiles \
+       pdns-recursor.service.in
 
 sbin_PROGRAMS = pdns_recursor
 bin_PROGRAMS = rec_control
@@ -233,3 +234,13 @@ $(MANPAGES):
        exit 1
 endif
 endif
+
+if HAVE_SYSTEMD
+pdns-recursor.service: pdns-recursor.service.in
+       $(AM_V_GEN)sed -e 's![@]sbindir[@]!$(sbindir)!' < $< > $@
+
+systemdsystemunitdir = $(SYSTEMD_DIR)
+
+systemdsystemunit_DATA = \
+       pdns-recursor.service
+endif
diff --git a/pdns/recursordist/pdns-recursor.service.in b/pdns/recursordist/pdns-recursor.service.in
new file mode 100644 (file)
index 0000000..f05c0d7
--- /dev/null
@@ -0,0 +1,23 @@
+[Unit]
+Description=PowerDNS Recursor
+Documentation=man:pdns_recursor(1) man:rec_control(1)
+Documentation=https://doc.powerdns.com
+Wants=network-online.target nss-lookup.target
+Before=nss-lookup.target
+After=network-online.target
+
+[Service]
+Type=notify
+ExecStart=@sbindir@/pdns_recursor --daemon=no --write-pid=no --disable-syslog
+Restart=on-failure
+StartLimitInterval=0
+PrivateTmp=true
+PrivateDevices=true
+CapabilityBoundingSet=CAP_NET_BIND_SERVICE CAP_SETGID CAP_SETUID CAP_CHOWN CAP_SYS_CHROOT
+NoNewPrivileges=true
+ProtectSystem=full
+ProtectHome=true
+RestrictAddressFamilies=AF_UNIX AF_INET AF_INET6
+
+[Install]
+WantedBy=multi-user.target