]> granicus.if.org Git - pdns/commitdiff
Add build-auth-rpm
authorPieter Lexis <pieter.lexis@powerdns.com>
Fri, 24 Apr 2015 14:50:34 +0000 (16:50 +0200)
committerPieter Lexis <pieter.lexis@powerdns.com>
Wed, 10 Jun 2015 07:44:01 +0000 (09:44 +0200)
Makefile.am
build-scripts/build-auth-rpm [new file with mode: 0755]

index 1abdb43089780b324112ba4cd982a2478b6e4655..b7edccb7bce4593ea6bdc8c7b413c9ac1b7843f8 100644 (file)
@@ -16,7 +16,6 @@ EXTRA_DIST = \
        contrib/powerdns.solaris.init.d \
        contrib/systemd-pdns-recursor.service \
        contrib/systemd-pdns.service \
-       pdns.spec \
        pdns/named.conf.parsertest \
        regression-tests/zones/unit.test
 
diff --git a/build-scripts/build-auth-rpm b/build-scripts/build-auth-rpm
new file mode 100755 (executable)
index 0000000..d4086f9
--- /dev/null
@@ -0,0 +1,552 @@
+#!/bin/sh
+
+if [ "$0" != "./build-scripts/build-auth-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-${VERSION}.tar.bz2 ]; then
+  mv pdns-${VERSION}.tar.bz2 $HOME/rpmbuild/SOURCES
+else
+  echo "pdns-${VERSION}.tar.bz2 not found" >&2
+  exit 1
+fi
+
+# Some setups need rpmbuild in a 'special' env
+RPMBUILD_COMMAND='rpmbuild -bb pdns.spec'
+
+if [ -f /etc/redhat-release ]; then
+  OS="$(cat /etc/redhat-release)"
+  case "$OS" in
+#    Fedora\ *\ 21*)
+#      ;;
+    CentOS\ *\ 6*)
+      RPMBUILD_COMMAND="scl enable devtoolset-2 -- ${RPMBUILD_COMMAND}"
+      cat > pdns.spec << EOF
+%global backends %{nil}
+
+Name: pdns
+Version: ${VERSION}
+Release: ${RELEASE}
+Summary: A modern, advanced and high performance authoritative-only nameserver
+Group: System Environment/Daemons
+License: GPLv2
+URL: http://powerdns.com
+Source: ../%{name}-%{version}.tar.bz2
+
+Requires(pre): shadow-utils
+Requires(post): /sbin/chkconfig
+Requires(preun): /sbin/service, /sbin/chkconfig
+Requires(postun): /sbin/service
+
+BuildRequires: boost-devel
+BuildRequires: lua-devel
+BuildRequires: cryptopp-devel
+BuildRequires: bison
+Provides: powerdns = %{version}-%{release}
+
+%description
+The PowerDNS Nameserver is a modern, advanced and high performance
+authoritative-only nameserver. It is written from scratch and conforms
+to all relevant DNS standards documents.
+Furthermore, PowerDNS interfaces with almost any database.
+
+%package tools
+Summary: Extra tools for %{name}
+Group: System Environment/Daemons
+
+%description tools
+This package contains the extra tools for %{name}
+
+%package backend-mysql
+Summary: MySQL backend for %{name}
+Group: System Environment/Daemons
+Requires: %{name}%{?_isa} = %{version}-%{release}
+BuildRequires: mysql-devel
+%global backends %{backends} gmysql
+
+%description backend-mysql
+This package contains the gmysql backend for %{name}
+
+%package backend-postgresql
+Summary: PostgreSQL backend for %{name}
+Group: System Environment/Daemons
+Requires: %{name}%{?_isa} = %{version}-%{release}
+BuildRequires: postgresql-devel
+%global backends %{backends} gpgsql
+
+%description backend-postgresql
+This package contains the gpgsql backend for %{name}
+
+%package backend-pipe
+Summary: Pipe backend for %{name}
+Group: System Environment/Daemons
+Requires: %{name}%{?_isa} = %{version}-%{release}
+%global backends %{backends} pipe
+
+%description backend-pipe
+This package contains the pipe backend for %{name}
+
+%package backend-remote
+Summary: Remote backend for %{name}
+Group: System Environment/Daemons
+Requires: %{name}%{?_isa} = %{version}-%{release}
+BuildRequires: libcurl-devel
+%global backends %{backends} remote
+
+%description backend-remote
+This package contains the remote backend for %{name}
+
+%package backend-geo
+Summary: Geo backend for %{name}
+Group: System Environment/Daemons
+Requires: %{name}%{?_isa} = %{version}-%{release}
+%global backends %{backends} geo
+
+%description backend-geo
+This package contains the geo backend for %{name}
+It allows different answers to DNS queries coming from different
+IP address ranges or based on the geographic location
+
+%package backend-ldap
+Summary: LDAP backend for %{name}
+Group: System Environment/Daemons
+Requires: %{name}%{?_isa} = %{version}-%{release}
+BuildRequires: openldap-devel
+%global backends %{backends} ldap
+
+%description backend-ldap
+This package contains the LDAP backend for %{name}
+
+%package backend-lua
+Summary: Lua backend for %{name}
+Group: System Environment/Daemons
+Requires: %{name}%{?_isa} = %{version}-%{release}
+%global backends %{backends} lua
+
+%description backend-lua
+This package contains the lua backend for %{name}
+
+%package backend-sqlite
+Summary: SQLite backend for %{name}
+Group: System Environment/Daemons
+Requires: %{name}%{?_isa} = %{version}-%{release}
+BuildRequires: sqlite-devel
+%global backends %{backends} gsqlite3
+
+%description backend-sqlite
+This package contains the SQLite backend for %{name}
+
+%prep
+%setup -q
+
+%build
+export CPPFLAGS="-DLDAP_DEPRECATED"
+
+%configure \
+       --sysconfdir=%{_sysconfdir}/%{name} \
+       --libdir=%{_libdir}/%{name} \
+       --disable-static \
+       --disable-dependency-tracking \
+       --disable-silent-rules \
+       --with-modules='' \
+       --with-lua \
+       --with-dynmodules='%{backends}' \
+       --enable-cryptopp \
+       --enable-tools \
+       --enable-remotebackend-http \
+       --enable-unit-tests
+
+make %{?_smp_mflags}
+
+%install
+make install DESTDIR=%{buildroot}
+
+%{__rm} -f %{buildroot}%{_libdir}/%{name}/*.la
+%{__install} -p -D -m 0755 pdns/pdns %{buildroot}%{_initrddir}/pdns
+%{__mv} %{buildroot}%{_sysconfdir}/%{name}/pdns.conf{-dist,}
+
+chmod 600 %{buildroot}%{_sysconfdir}/%{name}/pdns.conf
+
+%check
+make %{?_smp_mflags} -C pdns check
+
+%pre
+getent group pdns >/dev/null || groupadd -r pdns
+getent passwd pdns >/dev/null || \
+       useradd -r -g pdns -d / -s /sbin/nologin \
+       -c "PowerDNS user" pdns
+exit 0
+
+%post
+/sbin/chkconfig --add pdns
+
+%preun
+if [ \$1 -eq 0 ]; then
+       /sbin/service pdns stop >/dev/null 2>&1 || :
+       /sbin/chkconfig --del pdns
+fi
+
+%postun
+if [ \$1 -ge 1 ]; then
+       /sbin/service pdns condrestart >/dev/null 2>&1 || :
+fi
+
+%files
+%doc COPYING README
+%{_bindir}/pdns_control
+%{_bindir}/pdnssec
+%{_bindir}/zone2ldap
+%{_bindir}/zone2sql
+%{_bindir}/zone2json
+%{_sbindir}/pdns_server
+%{_mandir}/man1/pdns_control.1.gz
+%{_mandir}/man1/pdns_server.1.gz
+%{_mandir}/man1/zone2sql.1.gz
+%{_mandir}/man1/zone2ldap.1.gz
+%{_mandir}/man1/pdnssec.1.gz
+%{_initrddir}/pdns
+%dir %{_libdir}/%{name}/
+%dir %{_sysconfdir}/%{name}/
+%config(noreplace) %{_sysconfdir}/%{name}/pdns.conf
+
+%files tools
+%{_bindir}/calidns
+%{_bindir}/dnsbulktest
+%{_bindir}/dnsgram
+%{_bindir}/dnsreplay
+%{_bindir}/dnsscan
+%{_bindir}/dnsscope
+%{_bindir}/dnstcpbench
+%{_bindir}/dnswasher
+%{_bindir}/dumresp
+%{_bindir}/notify
+%{_bindir}/nproxy
+%{_bindir}/nsec3dig
+%{_bindir}/saxfr
+%{_mandir}/man1/dnsbulktest.1.gz
+%{_mandir}/man1/dnsgram.1.gz
+%{_mandir}/man1/dnsreplay.1.gz
+%{_mandir}/man1/dnsscan.1.gz
+%{_mandir}/man1/dnsscope.1.gz
+%{_mandir}/man1/dnstcpbench.1.gz
+%{_mandir}/man1/dnswasher.1.gz
+%{_mandir}/man1/nsec3dig.1.gz
+%{_mandir}/man1/saxfr.1.gz
+
+%files backend-mysql
+%doc pdns/dnssec.schema.mysql.sql
+%doc pdns/no-dnssec.schema.mysql.sql
+%{_libdir}/%{name}/libgmysqlbackend.so
+
+%files backend-postgresql
+%doc pdns/dnssec.schema.pgsql.sql
+%doc pdns/no-dnssec.schema.pgsql.sql
+%{_libdir}/%{name}/libgpgsqlbackend.so
+
+%files backend-pipe
+%{_libdir}/%{name}/libpipebackend.so
+
+%files backend-remote
+%{_libdir}/%{name}/libremotebackend.so
+
+%files backend-geo
+%doc modules/geobackend/README
+%{_libdir}/%{name}/libgeobackend.so
+
+%files backend-ldap
+%{_libdir}/%{name}/libldapbackend.so
+
+%files backend-lua
+%{_libdir}/%{name}/libluabackend.so
+
+%files backend-sqlite
+%doc pdns/dnssec.schema.sqlite3.sql
+%doc pdns/no-dnssec.schema.sqlite3.sql
+%doc pdns/bind-dnssec.schema.sqlite3.sql
+%{_libdir}/%{name}/libgsqlite3backend.so
+EOF
+      ;;
+    CentOS\ Linux\ *\ 7*)
+      cat > pdns.spec << EOF
+%global _hardened_build 1
+%global backends %{nil}
+
+Name: pdns
+Version: ${VERSION}
+Release: ${RELEASE}
+Summary: A modern, advanced and high performance authoritative-only nameserver
+Group: System Environment/Daemons
+License: GPLv2
+URL: http://powerdns.com
+Source: ../pdns-%{version}.tar.bz2
+
+Requires(pre): shadow-utils
+Requires(post): systemd-sysv
+Requires(post): systemd-units
+Requires(preun): systemd-units
+Requires(postun): systemd-units
+
+BuildRequires: systemd-units
+BuildRequires: boost-devel
+BuildRequires: lua-devel
+BuildRequires: cryptopp-devel
+BuildRequires: bison
+BuildRequires: polarssl-devel
+Provides: powerdns = %{version}-%{release}
+%global backends %{backends} bind
+
+%description
+The PowerDNS Nameserver is a modern, advanced and high performance
+authoritative-only nameserver. It is written from scratch and conforms
+to all relevant DNS standards documents.
+Furthermore, PowerDNS interfaces with almost any database.
+
+%package tools
+Summary: Extra tools for %{name}
+Group: System Environment/Daemons
+
+%description tools
+This package contains the extra tools for %{name}
+
+%package backend-mysql
+Summary: MySQL backend for %{name}
+Group: System Environment/Daemons
+Requires: %{name}%{?_isa} = %{version}-%{release}
+BuildRequires: mysql-devel
+%global backends %{backends} gmysql
+
+%description backend-mysql
+This package contains the gmysql backend for %{name}
+
+%package backend-postgresql
+Summary: PostgreSQL backend for %{name}
+Group: System Environment/Daemons
+Requires: %{name}%{?_isa} = %{version}-%{release}
+BuildRequires: postgresql-devel
+%global backends %{backends} gpgsql
+
+%description backend-postgresql
+This package contains the gpgsql backend for %{name}
+
+%package backend-pipe
+Summary: Pipe backend for %{name}
+Group: System Environment/Daemons
+Requires: %{name}%{?_isa} = %{version}-%{release}
+%global backends %{backends} pipe
+
+%description backend-pipe
+This package contains the pipe backend for %{name}
+
+%package backend-remote
+Summary: Remote backend for %{name}
+Group: System Environment/Daemons
+Requires: %{name}%{?_isa} = %{version}-%{release}
+%global backends %{backends} remote
+
+%description backend-remote
+This package contains the remote backend for %{name}
+
+%package backend-geo
+Summary: Geo backend for %{name}
+Group: System Environment/Daemons
+Requires: %{name}%{?_isa} = %{version}-%{release}
+%global backends %{backends} geo
+
+%description backend-geo
+This package contains the geo backend for %{name}
+It allows different answers to DNS queries coming from different
+IP address ranges or based on the geographic location
+
+%package backend-ldap
+Summary: LDAP backend for %{name}
+Group: System Environment/Daemons
+Requires: %{name}%{?_isa} = %{version}-%{release}
+BuildRequires: openldap-devel
+%global backends %{backends} ldap
+
+%description backend-ldap
+This package contains the LDAP backend for %{name}
+
+%package backend-lua
+Summary: Lua backend for %{name}
+Group: System Environment/Daemons
+Requires: %{name}%{?_isa} = %{version}-%{release}
+%global backends %{backends} lua
+
+%description backend-lua
+This package contains the lua backend for %{name}
+
+%package backend-sqlite
+Summary: SQLite backend for %{name}
+Group: System Environment/Daemons
+Requires: %{name}%{?_isa} = %{version}-%{release}
+BuildRequires: sqlite-devel
+%global backends %{backends} gsqlite3
+
+%description backend-sqlite
+This package contains the SQLite backend for %{name}
+
+%prep
+%setup -q
+
+%build
+export CPPFLAGS="-DLDAP_DEPRECATED"
+
+%configure \
+       --sysconfdir=%{_sysconfdir}/%{name} \
+       --disable-static \
+       --disable-dependency-tracking \
+       --disable-silent-rules \
+       --with-modules='' \
+       --with-system-polarssl \
+       --with-lua \
+       --with-dynmodules='%{backends}' \
+       --enable-cryptopp \
+       --enable-tools \
+       --enable-unit-tests
+
+make %{?_smp_mflags}
+
+%install
+
+make install DESTDIR=%{buildroot}
+
+%{__rm} -f %{buildroot}%{_libdir}/%{name}/*.la
+%{__rm} -rf %{buildroot}%{_docdir}
+%{__mv} %{buildroot}%{_sysconfdir}/%{name}/pdns.conf{-dist,}
+
+chmod 600 %{buildroot}%{_sysconfdir}/%{name}/pdns.conf
+
+# rename zone2ldap to pdns-zone2ldap (#1193116)
+%{__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
+
+%pre
+getent group pdns >/dev/null || groupadd -r pdns
+getent passwd pdns >/dev/null || \
+       useradd -r -g pdns -d / -s /sbin/nologin \
+       -c "PowerDNS user" pdns
+exit 0
+
+%post
+%systemd_post pdns.service
+
+%preun
+%systemd_preun pdns.service
+
+%postun
+%systemd_postun_with_restart pdns.service
+
+%files
+%doc COPYING README
+%{_bindir}/pdns_control
+%{_bindir}/pdnssec
+%{_bindir}/pdns-zone2ldap
+%{_bindir}/zone2sql
+%{_bindir}/zone2json
+%{_sbindir}/pdns_server
+%{_libdir}/%{name}/libbindbackend.so
+%{_mandir}/man1/pdns_control.1.gz
+%{_mandir}/man1/pdns_server.1.gz
+%{_mandir}/man1/zone2sql.1.gz
+%{_mandir}/man1/pdns-zone2ldap.1.gz
+%{_mandir}/man1/pdnssec.1.gz
+%{_unitdir}/pdns.service
+%dir %{_libdir}/%{name}/
+%dir %{_sysconfdir}/%{name}/
+%config(noreplace) %{_sysconfdir}/%{name}/pdns.conf
+
+%files tools
+%{_bindir}/calidns
+%{_bindir}/dnsbulktest
+%{_bindir}/dnsgram
+%{_bindir}/dnsreplay
+%{_bindir}/dnsscan
+%{_bindir}/dnsscope
+%{_bindir}/dnstcpbench
+%{_bindir}/dnswasher
+%{_bindir}/dumresp
+%{_bindir}/notify
+%{_bindir}/nproxy
+%{_bindir}/nsec3dig
+%{_bindir}/saxfr
+%{_mandir}/man1/dnsbulktest.1.gz
+%{_mandir}/man1/dnsgram.1.gz
+%{_mandir}/man1/dnsreplay.1.gz
+%{_mandir}/man1/dnsscan.1.gz
+%{_mandir}/man1/dnsscope.1.gz
+%{_mandir}/man1/dnstcpbench.1.gz
+%{_mandir}/man1/dnswasher.1.gz
+%{_mandir}/man1/nsec3dig.1.gz
+%{_mandir}/man1/saxfr.1.gz
+
+%files backend-mysql
+%doc modules/gmysqlbackend/schema.mysql.sql
+%doc modules/gmysqlbackend/dnssec-3.x_to_3.4.0_schema.mysql.sql
+%doc modules/gmysqlbackend/nodnssec-3.x_to_3.4.0_schema.mysql.sql
+%{_libdir}/%{name}/libgmysqlbackend.so
+
+%files backend-postgresql
+%doc modules/gpgsqlbackend/schema.pgsql.sql
+%doc modules/gpgsqlbackend/dnssec-3.x_to_3.4.0_schema.pgsql.sql
+%doc modules/gpgsqlbackend/nodnssec-3.x_to_3.4.0_schema.pgsql.sql
+%{_libdir}/%{name}/libgpgsqlbackend.so
+
+%files backend-pipe
+%{_libdir}/%{name}/libpipebackend.so
+
+%files backend-remote
+%{_libdir}/%{name}/libremotebackend.so
+
+%files backend-geo
+%doc modules/geobackend/README
+%{_libdir}/%{name}/libgeobackend.so
+
+%files backend-ldap
+%{_libdir}/%{name}/libldapbackend.so
+
+%files backend-lua
+%{_libdir}/%{name}/libluabackend.so
+
+%files backend-sqlite
+%doc modules/gsqlite3backend/schema.sqlite3.sql
+%doc modules/gsqlite3backend/dnssec-3.x_to_3.4.0_schema.sqlite3.sql
+%doc modules/gsqlite3backend/nodnssec-3.x_to_3.4.0_schema.sqlite3.sql
+%{_libdir}/%{name}/libgsqlite3backend.so
+EOF
+      ;;
+    *)
+      echo "No support for $OS (yet?)"
+      exit 1
+      ;;
+  esac
+fi
+
+${RPMBUILD_COMMAND}
+
+mkdir -p rpms
+mv $HOME/rpmbuild/RPMS/x86_64/pdns-*${VERSION}-${RELEASE}.x86_64.rpm rpms