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
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
BuildRequires: boost-devel
BuildRequires: lua-devel
BuildRequires: systemd-units
+BuildRequires: systemd-devel
BuildRequires: hostname
Requires(pre): shadow-utils
--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
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
+++ /dev/null
-[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
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 \
--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 \
portsmplexer.cc \
rec_control.1.md \
rrd/* \
- html incfiles
+ html incfiles \
+ pdns-recursor.service.in
sbin_PROGRAMS = pdns_recursor
bin_PROGRAMS = rec_control
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
--- /dev/null
+[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