From: Pieter Lexis Date: Fri, 24 Apr 2015 14:50:34 +0000 (+0200) Subject: Add build-auth-rpm X-Git-Tag: dnsdist-1.0.0-alpha1~248^2~78^2~9^2~11 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=836ed67e42679b8545b4d1db0e5e5d9bece1c8b6;p=thirdparty%2Fpdns.git Add build-auth-rpm --- diff --git a/Makefile.am b/Makefile.am index 1abdb43089..b7edccb7bc 100644 --- a/Makefile.am +++ b/Makefile.am @@ -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 index 0000000000..d4086f9b27 --- /dev/null +++ b/build-scripts/build-auth-rpm @@ -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