From c5ce3658ef378ba2a246bd89dd124f4a0e86e276 Mon Sep 17 00:00:00 2001 From: Pieter Lexis Date: Mon, 25 Apr 2016 16:09:17 +0200 Subject: [PATCH] auth Install systemd unit file --- Makefile.am | 1 - build-scripts/build-auth-debian | 19 ++++++++++---- build-scripts/build-auth-rpm | 19 ++++++-------- .../{control => control.in} | 2 +- .../debian-authoritative/pdns-server.install | 1 + .../pdns-server.pdns.service | 15 ----------- build-scripts/debian-authoritative/rules | 25 +++++++++++++++++-- pdns/.gitignore | 2 +- pdns/Makefile.am | 13 +++++++++- .../pdns.service.in | 2 +- 10 files changed, 61 insertions(+), 38 deletions(-) rename build-scripts/debian-authoritative/{control => control.in} (99%) delete mode 100644 build-scripts/debian-authoritative/pdns-server.pdns.service rename contrib/systemd-pdns.service => pdns/pdns.service.in (92%) diff --git a/Makefile.am b/Makefile.am index b808b183b..7d3812d1b 100644 --- a/Makefile.am +++ b/Makefile.am @@ -12,7 +12,6 @@ EXTRA_DIST = \ build-aux/gen-version \ codedocs/doxygen.conf \ contrib/powerdns.solaris.init.d \ - contrib/systemd-pdns.service \ pdns/named.conf.parsertest \ regression-tests/zones/unit.test diff --git a/build-scripts/build-auth-debian b/build-scripts/build-auth-debian index c5696aece..3f86f5dc5 100755 --- a/build-scripts/build-auth-debian +++ b/build-scripts/build-auth-debian @@ -28,11 +28,6 @@ cp -r build-scripts/debian-authoritative $DISTDIR/debian cd $DISTDIR -if $(echo $VERSION | grep -q -E '^0\.0\.'); then - # make sure we don't break dependencies for master releases - sed -i '/pdns-server (<< 3.4.6-2)/d' debian/control -fi - cat > debian/changelog << EOF pdns (${VERSION}-${RELEASE}) unstable; urgency=medium @@ -41,4 +36,18 @@ pdns (${VERSION}-${RELEASE}) unstable; urgency=medium -- ${DEBFULLNAME} <${DEBEMAIL}> $(date -R) EOF + +PDNS_VERSION=$VERSION + +. /etc/os-release +export ID="${ID}" +export VERSION_ID="${VERSION_ID}" + +fakeroot debian/rules debian/control + +if $(echo $PDNS_VERSION | grep -q -E '^0\.0\.'); then + # make sure we don't break dependencies for master releases + sed -i '/pdns-server (<< 3.4.6-2)/d' debian/control +fi + DH_OPTIONS=--parallel fakeroot debian/rules binary diff --git a/build-scripts/build-auth-rpm b/build-scripts/build-auth-rpm index e29c2dec5..8354d4f93 100755 --- a/build-scripts/build-auth-rpm +++ b/build-scripts/build-auth-rpm @@ -312,6 +312,7 @@ Requires(preun): systemd-units Requires(postun): systemd-units BuildRequires: systemd-units +BuildRequires: systemd-devel BuildRequires: boost-devel BuildRequires: lua-devel BuildRequires: bison @@ -437,20 +438,20 @@ export CPPFLAGS="-DLDAP_DEPRECATED" --with-lua \ --with-dynmodules='%{backends} random' \ --enable-tools \ - --enable-unit-tests + --enable-unit-tests \ + --enable-systemd make %{?_smp_mflags} %install - make install DESTDIR=%{buildroot} %{__rm} -f %{buildroot}%{_libdir}/%{name}/*.la %{__rm} -rf %{buildroot}%{_docdir} %{buildroot}/usr/sbin/pdns_server --no-config --config | sed \ -e 's!# config-dir=.*!config-dir=%{_sysconfdir}%{name}!' \ - -e 's!# daemon=.*!daemon=yes!' \ - -e 's!# guardian=.*!guardian=yes!' \ + -e 's!# daemon=.*!daemon=no!' \ + -e 's!# guardian=.*!guardian=no!' \ -e 's!# launch=.*!&\\nlaunch=!' \ -e 's!# setgid=.*!setgid=pdns!' \ -e 's!# setuid=.*!setuid=pdns!' \ @@ -463,9 +464,6 @@ chmod 600 %{buildroot}%{_sysconfdir}/%{name}/pdns.conf %{__mv} %{buildroot}/%{_bindir}/zone2ldap %{buildroot}/%{_bindir}/pdns-zone2ldap %{__mv} %{buildroot}/%{_mandir}/man1/zone2ldap.1 %{buildroot}/%{_mandir}/man1/pdns-zone2ldap.1 -# install systemd unit file -%{__install} -D -p -m 644 contrib/systemd-pdns.service %{buildroot}%{_unitdir}/%{name}.service - %check make %{?_smp_mflags} -C pdns check @@ -597,6 +595,7 @@ BuildRequires: lua-devel BuildRequires: bison BuildRequires: openssl-devel BuildRequires: systemd-rpm-macros +BuildRequires: systemd-devel Provides: powerdns = %{version}-%{release} %global backends %{backends} bind @@ -695,7 +694,8 @@ export CPPFLAGS="-DLDAP_DEPRECATED" --with-lua \ --with-dynmodules='%{backends} random' \ --enable-tools \ - --enable-unit-tests + --enable-unit-tests \ + --enable-systemd make %{?_smp_mflags} @@ -720,9 +720,6 @@ chmod 600 %{buildroot}%{_sysconfdir}/%{name}/pdns.conf %{__mv} %{buildroot}/%{_bindir}/zone2ldap %{buildroot}/%{_bindir}/pdns-zone2ldap %{__mv} %{buildroot}/%{_mandir}/man1/zone2ldap.1 %{buildroot}/%{_mandir}/man1/pdns-zone2ldap.1 -# install systemd unit file -%{__install} -D -p -m 644 contrib/systemd-pdns.service %{buildroot}%{_unitdir}/%{name}.service - %check make %{?_smp_mflags} -C pdns check diff --git a/build-scripts/debian-authoritative/control b/build-scripts/debian-authoritative/control.in similarity index 99% rename from build-scripts/debian-authoritative/control rename to build-scripts/debian-authoritative/control.in index af7aedf30..d1c0272a3 100644 --- a/build-scripts/debian-authoritative/control +++ b/build-scripts/debian-authoritative/control.in @@ -4,7 +4,7 @@ Priority: extra Standards-Version: 3.9.6 Maintainer: PowerDNS Autobuilder Origin: PowerDNS -Build-Depends: debhelper (>= 9~), dh-autoreconf, dh-systemd, po-debconf, libtool, flex, bison, libmysqlclient-dev, libpq-dev, libssl-dev, libpolarssl-dev, libgdbm-dev, libldap2-dev, libsqlite3-dev, dpkg-dev (>= 1.17.0~), libboost-dev, libboost-serialization-dev, libboost-program-options-dev, libboost-test-dev, autotools-dev, automake, autoconf, liblua5.2-dev, pkg-config, ragel, libgmp-dev, libbotan1.10-dev, libcurl4-openssl-dev, libzmq-dev, libyaml-cpp-dev (>= 0.5), libgeoip-dev, libopendbx1-dev, libcdb-dev, unixodbc-dev (>= 2.3.1) +Build-Depends: debhelper (>= 9~), dh-autoreconf, dh-systemd, po-debconf, libtool, flex, bison, libmysqlclient-dev, libpq-dev, libssl-dev, libpolarssl-dev, libgdbm-dev, libldap2-dev, libsqlite3-dev, dpkg-dev (>= 1.17.0~), libboost-dev, libboost-serialization-dev, libboost-program-options-dev, libboost-test-dev, autotools-dev, automake, autoconf, liblua5.2-dev, pkg-config, ragel, libgmp-dev, libbotan1.10-dev, libcurl4-openssl-dev, libzmq-dev, libyaml-cpp-dev (>= 0.5), libgeoip-dev, libopendbx1-dev, libcdb-dev, unixodbc-dev (>= 2.3.1) @LIBSYSTEMDDEV@ Homepage: http://www.powerdns.com/ Package: pdns-server diff --git a/build-scripts/debian-authoritative/pdns-server.install b/build-scripts/debian-authoritative/pdns-server.install index 70034d8db..79ea031e2 100644 --- a/build-scripts/debian-authoritative/pdns-server.install +++ b/build-scripts/debian-authoritative/pdns-server.install @@ -9,3 +9,4 @@ debian/config/pdns usr/share/pdns-server/ debian/config/pdns.simplebind.conf usr/share/pdns-server/ debian/resolvconf/pdns etc/resolvconf/update.d/ debian/insserv.d/pdns-server etc/insserv.d/ +lib/systemd/system/pdns.service diff --git a/build-scripts/debian-authoritative/pdns-server.pdns.service b/build-scripts/debian-authoritative/pdns-server.pdns.service deleted file mode 100644 index 9d3ba43dd..000000000 --- a/build-scripts/debian-authoritative/pdns-server.pdns.service +++ /dev/null @@ -1,15 +0,0 @@ -[Unit] -Description=PowerDNS Authoritative Server -After=network-online.target - -[Service] -Type=simple -ExecStart=/usr/sbin/pdns_server --daemon=no -ExecStop=/usr/bin/pdns_control quit -TimeoutStopSec=5 -Restart=on-failure -RestartSec=2 -PrivateTmp=true - -[Install] -WantedBy=multi-user.target diff --git a/build-scripts/debian-authoritative/rules b/build-scripts/debian-authoritative/rules index ffe6a0459..9b3d8b4ca 100755 --- a/build-scripts/debian-authoritative/rules +++ b/build-scripts/debian-authoritative/rules @@ -9,9 +9,29 @@ backends := bind ldap pipe gmysql godbc gpgsql gsqlite3 geoip lua mydns remote r DEB_HOST_MULTIARCH ?= $(shell dpkg-architecture -qDEB_HOST_MULTIARCH) +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 --parallel + dh $@ \ + --with autoreconf \ + --parallel \ + $(DEBHELPER_WITH_SYSTEMD) override_dh_auto_configure: test -f pdns/dnslabeltext.cc && mv pdns/dnslabeltext.cc debian/dnslabeltext.cc.moved || true @@ -29,7 +49,8 @@ override_dh_auto_configure: --with-pgsql-includes=`pg_config --includedir` \ --enable-botan1.10 \ --enable-tools \ - --enable-unit-tests + --enable-unit-tests \ + $(ENABLE_SYSTEMD) # pdns-server has a debug package override_dh_strip: diff --git a/pdns/.gitignore b/pdns/.gitignore index ccd618494..f3b291434 100644 --- a/pdns/.gitignore +++ b/pdns/.gitignore @@ -57,4 +57,4 @@ version_generated.h effective_tld_names.dat /dnsmessage.pb.cc /dnsmessage.pb.h - +/pdns.service diff --git a/pdns/Makefile.am b/pdns/Makefile.am index 92a7290b8..f06feb34d 100644 --- a/pdns/Makefile.am +++ b/pdns/Makefile.am @@ -50,7 +50,8 @@ EXTRA_DIST = \ bindparser.h \ named.conf.parsertest \ pdns.conf-dist \ - delaypipe.hh delaypipe.cc + delaypipe.hh delaypipe.cc \ + pdns.service.in BUILT_SOURCES = \ bind-dnssec.schema.sqlite3.sql.h \ @@ -1178,3 +1179,13 @@ pdns_recursor rec_control: dnsdist: @echo "Please build dnsdist from the dnsdistdist/ dir" @exit 1 + +if HAVE_SYSTEMD +pdns.service: pdns.service.in + $(AM_V_GEN)sed -e 's![@]sbindir[@]!$(sbindir)!' < $< > $@ + +systemdsystemunitdir = $(SYSTEMD_DIR) + +systemdsystemunit_DATA = \ + pdns.service +endif diff --git a/contrib/systemd-pdns.service b/pdns/pdns.service.in similarity index 92% rename from contrib/systemd-pdns.service rename to pdns/pdns.service.in index f16f07c77..a1ff509bc 100644 --- a/contrib/systemd-pdns.service +++ b/pdns/pdns.service.in @@ -7,7 +7,7 @@ After=network-online.target mysqld.service postgresql.service slapd.service [Service] Type=notify -ExecStart=/usr/sbin/pdns_server --guardian=no --daemon=no --disable-syslog --write-pid=no +ExecStart=@sbindir@/pdns_server --guardian=no --daemon=no --disable-syslog --write-pid=no Restart=on-failure StartLimitInterval=0 PrivateTmp=true -- 2.49.0