From: Pieter Lexis Date: Mon, 25 Apr 2016 16:31:02 +0000 (+0200) Subject: recursor: install systemd unit file X-Git-Tag: rec-4.0.0-alpha3~5^2 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=4ff58b7586d28fe8ad9b848236022d4ce8736a9f;p=pdns recursor: install systemd unit file --- diff --git a/build-scripts/build-recursor-debian b/build-scripts/build-recursor-debian index 3fc56ca74..b70d9f964 100755 --- a/build-scripts/build-recursor-debian +++ b/build-scripts/build-recursor-debian @@ -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 diff --git a/build-scripts/build-recursor-rpm b/build-scripts/build-recursor-rpm index d4ce269aa..1c5882d65 100755 --- a/build-scripts/build-recursor-rpm +++ b/build-scripts/build-recursor-rpm @@ -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 diff --git a/build-scripts/debian-recursor/control b/build-scripts/debian-recursor/control.in similarity index 97% rename from build-scripts/debian-recursor/control rename to build-scripts/debian-recursor/control.in index ea9e8ac5e..583760e69 100644 --- a/build-scripts/debian-recursor/control +++ b/build-scripts/debian-recursor/control.in @@ -4,7 +4,7 @@ Priority: extra Standards-Version: 3.9.6 Maintainer: PowerDNS Autobuilder 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 index 53a644dec..000000000 --- a/build-scripts/debian-recursor/pdns-recursor.service +++ /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 diff --git a/build-scripts/debian-recursor/rules b/build-scripts/debian-recursor/rules index 750223056..7e16cff73 100755 --- a/build-scripts/debian-recursor/rules +++ b/build-scripts/debian-recursor/rules @@ -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 \ diff --git a/pdns/recursordist/Makefile.am b/pdns/recursordist/Makefile.am index 1e4a7578d..06680a02c 100644 --- a/pdns/recursordist/Makefile.am +++ b/pdns/recursordist/Makefile.am @@ -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 index 000000000..f05c0d76f --- /dev/null +++ b/pdns/recursordist/pdns-recursor.service.in @@ -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