+# FIXME:
+# - stop using nobody group
#
# Conditional build:
%bcond_without python # Python binding
+%bcond_with dnstap # dnstap replication support
+%bcond_with systemd # systemd support
+%bcond_without tests
#
Summary: Recursive, validating DNS resolver
Summary(pl.UTF-8): Rekurencyjny, weryfikujÄ…cy resolver DNS
Name: unbound
-Version: 1.4.22
+Version: 1.8.2
Release: 1
License: BSD
Group: Applications/Network
Source0: http://www.unbound.net/downloads/%{name}-%{version}.tar.gz
-# Source0-md5: 59728c74fef8783f8bad1d7451eba97f
+# Source0-md5: 3b2f1024df47ccc59a8100c3b40c6dc1
Source1: %{name}.init
+Source2: %{name}.service
+Source3: https://data.iana.org/root-anchors/icannbundle.pem
+# Source3-md5: 24a426d59b61524623695f1b849f159b
+Source4: ftp://ftp.internic.net/domain/named.cache
+# Source4-md5: a2d36ae713cf5e8ea59641b320b6ec5d
+Patch0: %{name}-default_trust_anchor.patch
+Patch1: %{name}-sh.patch
+Patch2: %{name}-pythondir.patch
+Patch3: %{name}-flex.patch
URL: http://unbound.net/
+BuildRequires: autoconf >= 2.56
+BuildRequires: automake
+BuildRequires: bison
BuildRequires: expat-devel
+BuildRequires: flex
+%{?with_dnstap:BuildRequires: fstrm-devel}
BuildRequires: libevent-devel
-BuildRequires: openssl-devel
-BuildRequires: rpmbuild(macros) >= 1.228
+BuildRequires: libtool
+BuildRequires: openssl-devel >= 1.0
+%{?with_dnstap:BuildRequires: protobuf-c-devel}
+BuildRequires: rpmbuild(macros) >= 1.671
+%{?with_systemd:BuildRequires: systemd-devel}
%if %{with python}
BuildRequires: python-devel >= 1:2.4.0
BuildRequires: swig-python
%endif
-Requires(post,preun): /sbin/chkconfig
-BuildRequires: rpmbuild(macros) >= 1.202
Provides: user(unbound)
+Requires(post,preun): /sbin/chkconfig
Requires(postun): /usr/sbin/userdel
Requires(pre): /bin/id
Requires(pre): /usr/sbin/useradd
+Requires: systemd-units >= 38
Requires: %{name}-libs = %{version}-%{release}
BuildRoot: %{tmpdir}/%{name}-%{version}-root-%(id -u -n)
%package -n python-unbound
Summary: Python interface to unbound library
Summary(pl.UTF-8): Pythonowy interfejs do biblioteki unbound
-Group: Python/Libraries
+Group: Libraries/Python
Requires: %{name}-libs = %{version}-%{release}
%description -n python-unbound
%prep
%setup -q
+%patch0 -p1
+%patch1 -p1
+%patch2 -p1
+%patch3 -p1
%build
+%{__libtoolize}
+%{__aclocal}
+%{__autoconf}
+%{__autoheader}
%configure \
- %{?with_python:--with-pyunbound}
+ %{?with_dnstap:--enable-dnstap} \
+ %{?with_systemd:--enable-systemd} \
+ %{__with_without python pyunbound} \
+ %{__with_without python pythonmodule} \
+ --with-libevent \
+ --with-pidfile=/run/%{name}.pid \
+ --with-chroot-dir="" \
+ --with-conf-file=%{_sysconfdir}/%{name}/%{name}.conf \
+ --with-rootkey-file=/var/lib/%{name}/root.key \
+ --with-rootcert-file=%{_sysconfdir}/%{name}/icannbundle.pem
+
%{__make}
+%if %{with tests}
+%{__make} check
+%endif
+
%install
rm -rf $RPM_BUILD_ROOT
-install -d $RPM_BUILD_ROOT/etc/rc.d/init.d
-install %{SOURCE1} $RPM_BUILD_ROOT/etc/rc.d/init.d/%{name}
+install -d $RPM_BUILD_ROOT{/etc/rc.d/init.d,%{systemdunitdir},/var/lib/%{name}}
%{__make} install \
DESTDIR=$RPM_BUILD_ROOT
+cp -p %{SOURCE1} $RPM_BUILD_ROOT/etc/rc.d/init.d/%{name}
+cp -p %{SOURCE2} $RPM_BUILD_ROOT%{systemdunitdir}/%{name}.service
+cp -p %{SOURCE3} $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/icannbundle.pem
+cp -p %{SOURCE4} $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/named.cache
+
+touch $RPM_BUILD_ROOT/var/lib/%{name}/root.key
+
%if %{with python}
-%{__rm} $RPM_BUILD_ROOT%{py_sitedir}/_unbound.{la,a}
+%{__rm} $RPM_BUILD_ROOT%{py_sitedir}/_unbound.la
%py_comp $RPM_BUILD_ROOT%{py_sitedir}
%py_ocomp $RPM_BUILD_ROOT%{py_sitedir}
%py_postclean
%post
/sbin/chkconfig --add %{name}
+%systemd_post %{name}.service
%service %{name} restart
%pre
%service -q %{name} stop
/sbin/chkconfig --del %{name}
fi
+%systemd_preun %{name}.service
%postun
if [ "$1" = "0" ]; then
%userremove unbound
fi
+%systemd_reload
+
+%triggerpostun -- %{name} < 1.4.22-1
+%systemd_trigger %{name}.service
%post libs -p /sbin/ldconfig
%postun libs -p /sbin/ldconfig
%defattr(644,root,root,755)
%doc doc/{CREDITS,Changelog,FEATURES,LICENSE,README,TODO,control_proto_spec.txt,example.conf,ietf67-design-02.pdf,requirements.txt}
%attr(754,root,root) /etc/rc.d/init.d/unbound
+%{systemdunitdir}/%{name}.service
%dir %{_sysconfdir}/%{name}
%config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/%{name}/unbound.conf
+%config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/%{name}/named.cache
+%config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/%{name}/icannbundle.pem
%attr(755,root,root) %{_sbindir}/unbound
%attr(755,root,root) %{_sbindir}/unbound-anchor
%attr(755,root,root) %{_sbindir}/unbound-checkconf
%{_mandir}/man8/unbound.8*
%{_mandir}/man8/unbound-anchor.8*
%{_mandir}/man8/unbound-control*.8*
+%dir %attr(755,unbound,nobody) /var/lib/%{name}
+%ghost /var/lib/%{name}/root.key
%files libs
%defattr(644,root,root,755)
%attr(755,root,root) %{_libdir}/libunbound.so.*.*.*
-%attr(755,root,root) %ghost %{_libdir}/libunbound.so.2
+%attr(755,root,root) %ghost %{_libdir}/libunbound.so.8
%files devel
%defattr(644,root,root,755)
%attr(755,root,root) %{_libdir}/libunbound.so
%{_libdir}/libunbound.la
+%{_pkgconfigdir}/libunbound.pc
%{_includedir}/unbound.h
%{_mandir}/man3/libunbound.3*
%{_mandir}/man3/ub_*.3*
%defattr(644,root,root,755)
%attr(755,root,root) %{py_sitedir}/_unbound.so*
%{py_sitedir}/unbound.py[co]
+%{py_sitedir}/unboundmodule.py[co]
%endif