]> git.ipfire.org Git - thirdparty/pdns.git/commitdiff
Add buildscript for recursor RPMs
authorPieter Lexis <pieter.lexis@powerdns.com>
Tue, 19 May 2015 19:30:24 +0000 (21:30 +0200)
committerPieter Lexis <pieter.lexis@powerdns.com>
Wed, 10 Jun 2015 07:44:02 +0000 (09:44 +0200)
build-scripts/build-recursor-rpm [new file with mode: 0755]

diff --git a/build-scripts/build-recursor-rpm b/build-scripts/build-recursor-rpm
new file mode 100755 (executable)
index 0000000..49c60fc
--- /dev/null
@@ -0,0 +1,288 @@
+#!/bin/sh
+
+if [ "$0" != "./build-scripts/build-recursor-rpm" ]; then
+  echo "Please run me from the root checkout dir"
+  exit 1
+fi
+
+if [ -z "$VERSION" ]; then
+  echo 'Please set $VERSION' >&2
+  exit 1
+fi
+
+if [ -z "$RELEASE" ];then
+  echo 'Please set $RELEASE' >&2
+  exit 1
+fi
+
+set -e
+set -x
+
+# Prepare the build environment
+rpmdev-setuptree
+
+# This is somethat ugly...
+if [ -f pdns-recursor-${VERSION}.tar.bz2 ]; then
+  mv pdns-recursor-${VERSION}.tar.bz2 $HOME/rpmbuild/SOURCES
+else
+  echo "pdns-recursor-${VERSION}.tar.bz2 not found" >&2
+  exit 1
+fi
+
+# Some setups need rpmbuild in a 'special' env
+RPMBUILD_COMMAND='rpmbuild -bb pdns-recursor.spec'
+
+if [ -f /etc/redhat-release ]; then
+  OS="$(cat /etc/redhat-release)"
+  case "$OS" in
+    Fedora\ *\ 21*)
+      exit 1
+      ;;
+    CentOS\ *\ 6*)
+      RPMBUILD_COMMAND="scl enable devtoolset-2 -- ${RPMBUILD_COMMAND}"
+      cat > $HOME/rpmbuild/SOURCES/pdns-recursor.init << EOF
+#!/bin/bash
+#
+# pdns-recursor  This shell script controls the PowerDNS Recursor
+#
+# Author:       Ruben Kerkhof <ruben@rubenkerkhof.com>
+#
+# chkconfig:    - 49 51
+#
+# description:  PowerDNS Recursor is a non authoritative/recursing DNS server
+# processname:  pdns-recursor
+# config: /etc/pdns-recursor/recursor.conf
+# pidfile: /var/run/pdns_recursor.pid
+#
+
+# source function library
+. /etc/rc.d/init.d/functions
+
+RETVAL=0
+
+start() {
+       echo -n \$"Starting pdns-recursor: "
+       daemon /usr/sbin/pdns_recursor --daemon 2>/dev/null
+       RETVAL=\$?
+       echo
+       [ \$RETVAL -eq 0 ] && touch /var/lock/subsys/pdns-recursor
+}
+
+stop() {
+       echo -n \$"Stopping pdns-recursor: "
+       killproc pdns_recursor
+       echo
+       [ \$RETVAL -eq 0 ] && rm -f /var/lock/subsys/pdns-recursor && rm -f /var/run/pdns_recursor.controlsocket
+}
+
+restart() {
+       stop
+       start
+}
+
+case "\$1" in
+  start)
+       start
+       ;;
+  stop) 
+       stop
+       ;;
+  restart|force-reload|reload)
+       restart
+       ;;
+  condrestart)
+       [ -f /var/lock/subsys/pdns-recursor ] && restart
+       ;;
+  status)
+       status pdns_recursor
+       RETVAL=\$?
+       ;;
+  *)
+       echo \$"Usage: \$0 {start|stop|status|restart|reload|force-reload|condrestart}"
+       exit 1
+esac
+
+exit \$RETVAL
+EOF
+      cat > pdns-recursor.spec << EOF
+Name: pdns-recursor
+Version: ${VERSION}
+Release: ${RELEASE}
+Summary: Modern, advanced and high performance recursing/non authoritative name server
+Group: System Environment/Daemons
+License: GPLv2
+URL: http://powerdns.com
+Source0: ../%{name}-%{version}.tar.bz2
+Source1: pdns-recursor.init
+
+Provides: powerdns-recursor = %{version}-%{release}
+BuildRequires: boost-devel
+BuildRequires: lua-devel
+
+Requires(pre): shadow-utils
+Requires(post): /sbin/chkconfig
+Requires(preun): /sbin/service, /sbin/chkconfig
+Requires(postun): /sbin/service
+
+%description
+PowerDNS Recursor is a non authoritative/recursing DNS server. Use this
+package if you need a dns cache for your network.
+
+%prep
+%setup -q
+sed -i -e 's!SYSCONFDIR=/etc/powerdns!SYSCONFDIR=/etc/pdns-recursor!' -e 's!STRIP_BINARIES?=1!STRIP_BINARIES?=0!' $HOME/rpmbuild/BUILD/pdns-recursor-${VERSION}/Makefile.in
+sed -i -e 's!OS_SPECIFIC_INSTALL=.*!OS_SPECIFIC_INSTALL=!' $HOME/rpmbuild/BUILD/pdns-recursor-${VERSION}/sysdeps/Linux.inc
+
+%build
+%configure
+LUA=1 LUA_CPPFLAGS_CONFIG= LUA_LIBS_CONFIG=-llua OPTFLAGS="%{optflags}" LDFLAGS="%{?__global_ldflags}" make %{?_smp_mflags}
+
+%install
+%{__rm} -rf %{buildroot}
+make install DESTDIR=%{buildroot} CONFIGDIR="%{_sysconfdir}/%{name}"
+chmod 0755 %{buildroot}/%{_bindir}/rec_control
+chmod 0755 %{buildroot}/%{_sbindir}/pdns_recursor
+%{__install} -D -p %{SOURCE1} %{buildroot}%{_initrddir}/pdns-recursor
+
+%{__mv} %{buildroot}%{_sysconfdir}/%{name}/recursor.conf{-dist,}
+
+# add pdns user and group to top of configfile
+sed -i '1i\\setuid=pdns-recursor' %{buildroot}%{_sysconfdir}/%{name}/recursor.conf
+sed -i '2i\\setgid=pdns-recursor' %{buildroot}%{_sysconfdir}/%{name}/recursor.conf
+
+%pre
+getent group pdns-recursor > /dev/null || groupadd -r pdns-recursor
+getent passwd pdns-recursor > /dev/null || \
+    useradd -r -g pdns-recursor -d / -s /sbin/nologin \
+    -c "PowerDNS Recursor user" pdns-recursor
+exit 0
+
+%post
+chkconfig --add %{name}
+
+%preun
+if [ \$1 -eq 0 ]; then
+    service %{name} stop >/dev/null 2>&1 || :
+    chkconfig --del %{name}
+fi
+
+%postun
+if [ \$1 -ge 1 ]; then
+    service %{name} condrestart >/dev/null 2>&1 || :
+fi
+
+%clean
+%{__rm} -rf %{buildroot}
+
+%files
+%defattr(-,root,root,-)
+%{_bindir}/rec_control
+%{_sbindir}/pdns_recursor
+%{_mandir}/man1/pdns_recursor.1.gz
+%{_mandir}/man1/rec_control.1.gz
+%{_initrddir}/pdns-recursor
+%dir %{_sysconfdir}/%{name}
+%config(noreplace) %{_sysconfdir}/%{name}/recursor.conf
+%doc COPYING README
+EOF
+      ;;
+    CentOS\ Linux\ *\ 7*)
+      cat > pdns-recursor.spec << EOF
+%global _hardened_build 1
+
+Name: pdns-recursor
+Version: ${VERSION}
+Release: ${RELEASE}
+Summary: Modern, advanced and high performance recursing/non authoritative name server
+Group: System Environment/Daemons
+License: GPLv2
+URL: http://powerdns.com
+Source0: ../%{name}-%{version}.tar.bz2
+
+Provides: powerdns-recursor = %{version}-%{release}
+BuildRequires: boost-devel
+BuildRequires: lua-devel
+BuildRequires: systemd-units
+BuildRequires: hostname
+
+Requires(pre): shadow-utils
+Requires(post): systemd-sysv
+Requires(post): systemd-units
+Requires(preun): systemd-units
+Requires(postun): systemd-units
+
+%description
+PowerDNS Recursor is a non authoritative/recursing DNS server. Use this
+package if you need a dns cache for your network.
+
+%prep
+%setup -q
+sed -i -e 's!SYSCONFDIR=/etc/powerdns!SYSCONFDIR=/etc/pdns-recursor!' -e 's!STRIP_BINARIES?=1!STRIP_BINARIES?=0!' $HOME/rpmbuild/BUILD/pdns-recursor-${VERSION}/Makefile.in
+sed -i -e 's!OS_SPECIFIC_INSTALL=.*!OS_SPECIFIC_INSTALL=!' $HOME/rpmbuild/BUILD/pdns-recursor-${VERSION}/sysdeps/Linux.inc
+
+%build
+%configure
+LUA=1 LUA_CPPFLAGS_CONFIG= LUA_LIBS_CONFIG=-llua OPTFLAGS="%{optflags}" LDFLAGS="%{?__global_ldflags}" make %{?_smp_mflags}
+
+%install
+make install DESTDIR=%{buildroot} CONFIGDIR="%{_sysconfdir}/%{name}"
+chmod 0755 %{buildroot}/%{_bindir}/rec_control
+chmod 0755 %{buildroot}/%{_sbindir}/pdns_recursor
+# 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,}
+
+# add pdns user and group to top of configfile
+sed -i '1i\\setuid=pdns-recursor' %{buildroot}%{_sysconfdir}/%{name}/recursor.conf
+sed -i '2i\\setgid=pdns-recursor' %{buildroot}%{_sysconfdir}/%{name}/recursor.conf
+
+%pre
+getent group pdns-recursor > /dev/null || groupadd -r pdns-recursor
+getent passwd pdns-recursor > /dev/null || \
+    useradd -r -g pdns-recursor -d / -s /sbin/nologin \
+    -c "PowerDNS Recursor user" pdns-recursor
+exit 0
+
+%post
+%systemd_post pdns-recursor.service
+
+%preun
+%systemd_preun pdns-recursor.service
+
+%postun
+%systemd_postun_with_restart pdns-recursor.service
+
+%triggerun -- pdns-recursor < 3.3-4
+# Save the current service runlevel info
+# User must manually run systemd-sysv-convert --apply pdns-recursor
+# to migrate them to systemd targets
+/usr/bin/systemd-sysv-convert --save pdns-recursor >/dev/null 2>&1 ||:
+
+# Run these because the SysV package being removed won't do them
+/sbin/chkconfig --del pdns-recursor >/dev/null 2>&1 || :
+/bin/systemctl try-restart pdns-recursor.service >/dev/null 2>&1 || :
+
+%files
+%{_bindir}/rec_control
+%{_sbindir}/pdns_recursor
+%{_mandir}/man1/pdns_recursor.1.gz
+%{_mandir}/man1/rec_control.1.gz
+%{_unitdir}/pdns-recursor.service
+%dir %{_sysconfdir}/%{name}
+%config(noreplace) %{_sysconfdir}/%{name}/recursor.conf
+%doc COPYING README
+EOF
+      ;;
+    *)
+      echo "No support for $OS (yet?)"
+      exit 1
+      ;;
+  esac
+fi
+
+
+${RPMBUILD_COMMAND}
+
+mv $HOME/rpmbuild/RPMS/x86_64/pdns-recursor-${VERSION}-${RELEASE}.x86_64.rpm .
+[ -f $HOME/rpmbuild/RPMS/x86_64/pdns-recursor-debuginfo-${VERSION}-${RELEASE}.x86_64.rpm ] && mv $HOME/rpmbuild/RPMS/x86_64/pdns-recursor-debuginfo-${VERSION}-${RELEASE}.x86_64.rpm . || true