thozza pushed to unbound (f22). "Fix FTBFS and build Python 2 and 3 bindings (..more)"

notifications at fedoraproject.org notifications at fedoraproject.org
Fri Apr 17 07:51:06 UTC 2015


>From 9d0daced90701cc0fadeed038c836b116d2779e8 Mon Sep 17 00:00:00 2001
From: Tomas Hozza <thozza at redhat.com>
Date: Thu, 16 Apr 2015 16:18:59 +0200
Subject: Fix FTBFS and build Python 2 and 3 bindings

- Fix FTBFS (#1206129)
- Build python3-unbound and python-unbound bindings for Python 3 and 2 (#1188080)

Signed-off-by: Tomas Hozza <thozza at redhat.com>

diff --git a/unbound.spec b/unbound.spec
index 9b586a0..6463fb7 100644
--- a/unbound.spec
+++ b/unbound.spec
@@ -1,18 +1,18 @@
 %{?!with_python:      %global with_python      1}
-%{?!with_munin:      %global with_munin      1}
-
-%if %{with_python}
-%if 0%{?fedora} >= 22
-%global python python3
-%global __python %{__python3}
-%else
-%global python python2
-%global __python %{__python2}
-%endif
-
-%{!?python_sitelib: %global python_sitelib %(%{__python} -c "from distutils.sysconfig import get_python_lib; print get_python_lib()")}
-%{!?python_sitearch: %global python_sitearch %(%{__python} -c "from distutils.sysconfig import get_python_lib; print get_python_lib(1)")}
-%endif
+%{?!with_python3:     %global with_python3     1}
+%{?!with_munin:       %global with_munin       1}
+
+%if 0%{with_python} == 0
+# if not building Python, don't build Python3
+%global with_python3 0
+%else # with_python
+# needed just for EPEL
+%if 0%{?rhel} <= 6
+%{!?__python2: %global __python2 /usr/bin/python2}
+%{!?python2_sitelib: %global python2_sitelib %(%{__python2} -c "from distutils.sysconfig import get_python_lib; print(get_python_lib())")}
+%{!?python2_sitearch: %global python2_sitearch %(%{__python2} -c "from distutils.sysconfig import get_python_lib; print(get_python_lib(1))")}
+%endif # rhel <= 6
+%endif # with_python
 
 %global _hardened_build 1
 
@@ -21,7 +21,7 @@
 Summary: Validating, recursive, and caching DNS(SEC) resolver
 Name: unbound
 Version: 1.5.3
-Release: 1%{?extra_version:.%{extra_version}}%{?dist}
+Release: 2%{?extra_version:.%{extra_version}}%{?dist}
 License: BSD
 Url: http://www.nlnetlabs.nl/unbound/
 Source: http://www.unbound.net/downloads/%{name}-%{version}%{?extra_version}.tar.gz
@@ -43,16 +43,25 @@ Source14: unbound.sysconfig
 Source15: unbound.cron
 Source16: unbound-munin.README
 
+# https://www.nlnetlabs.nl/bugs-script/show_bug.cgi?id=664
+Patch0:     0001-Use-print_function-also-for-Python2.patch
+Patch1:     0002-libunbound-examples-produce-sorted-output.patch
+Patch2:     0003-libunbound-Python-libldns-is-not-used-anymore.patch
+Patch3:     0004-Resolve-Python-3-incompatibilities-in-libunbound-and.patch
+
 Group: System Environment/Daemons
 BuildRequires: flex, openssl-devel
 BuildRequires: libevent-devel expat-devel
-%if %{with_python}
-BuildRequires: %{python}-devel swig
-%endif
+%if 0%{with_python}
+BuildRequires: python2-devel swig
+%endif # with_python
+%if 0%{with_python3}
+BuildRequires: python3-devel
+%endif # with_python3
 BuildRequires: systemd
 # Required for SVN versions
 # BuildRequires: bison
-# BuildRequires: automake autoconf
+BuildRequires: automake autoconf libtool
 
 Requires(post): systemd
 Requires(preun): systemd
@@ -103,40 +112,115 @@ Requires: crontabs
 %description libs
 Contains libraries used by the unbound server and client applications
 
-%if %{with_python}
-%package python
-Summary: Python modules and extensions for unbound
+%if 0%{with_python}
+%package -n python-unbound
+Summary: Python 2 modules and extensions for unbound
 Group: Applications/System
 Requires: %{name}-libs%{?_isa} = %{version}-%{release}
+Provides: unbound-python = %{version}-%{release}
+Obsoletes: unbound-python < %{version}-%{release}
+
+%description -n python-unbound
+Python 2 modules and extensions for unbound
+%endif # with_python
+
+%if 0%{with_python3}
+%package -n python3-unbound
+Summary: Python 3 modules and extensions for unbound
+Group: Applications/System
+Requires: %{name}-libs%{?_isa} = %{version}-%{release}
+
+%description -n python3-unbound
+Python 3 modules and extensions for unbound
+%endif # with_python3
 
-%description python
-Python modules and extensions for unbound
-%endif
 
 %prep
-%setup -q %{?extra_version:-n %{name}-%{version}%{extra_version}}
+%{?extra_version:%global pkgname %{name}-%{version}%{extra_version}}%{!?extra_version:%global pkgname %{name}-%{version}}
+%setup -qcn %{pkgname}
+
+%if 0%{with_python}
+mv %{pkgname} %{pkgname}_python2
+pushd %{pkgname}_python2
+%endif # with_python
+
+#Add patches here
+%patch0 -p1
+%patch1 -p1
+%patch2 -p1
+%patch3 -p1
+
+autoreconf -iv
+
+%if 0%{with_python}
+# copy common doc files - after here, since it may be patched
+cp -pr doc pythonmod libunbound ../
+popd
+%endif # with_python
+
+%if 0%{?with_python3}
+cp -a %{pkgname}_python2 %{pkgname}_python3
+%endif # with_python3
+
 
 %build
 # This is needed to rebuild the configure script to support Python 3.x
-#autoreconf
+# autoreconf -iv
 export LDFLAGS="-Wl,-z,relro,-z,now -pie -specs=/usr/lib/rpm/redhat/redhat-hardened-ld"
 export CFLAGS="$RPM_OPT_FLAGS -fPIE -pie"
 export CXXFLAGS="$RPM_OPT_FLAGS -fPIE -pie"
-%configure  --with-libevent --with-pthreads --with-ssl \
-            --disable-rpath --disable-static \
-            --with-conf-file=%{_sysconfdir}/%{name}/unbound.conf \
-            --with-pidfile=%{_localstatedir}/run/%{name}/%{name}.pid \
-%if %{with_python}
-            --with-pythonmodule --with-pyunbound PYTHON=%{__python} \
-%endif
-            --enable-sha2 --disable-gost --enable-ecdsa \
+
+# ./configure script common arguments
+%global configure_args --with-libevent --with-pthreads --with-ssl \\\
+            --disable-rpath --disable-static \\\
+            --with-conf-file=%{_sysconfdir}/%{name}/unbound.conf \\\
+            --with-pidfile=%{_localstatedir}/run/%{name}/%{name}.pid \\\
+            --enable-sha2 --disable-gost --enable-ecdsa \\\
             --with-rootkey-file=%{_sharedstatedir}/unbound/root.key
 
+%if 0%{with_python}
+pushd %{pkgname}_python2
+%endif # with_python
+
+%configure  \
+%if %{with_python}
+            --with-pythonmodule --with-pyunbound PYTHON=%{__python2} \
+%endif # with_python
+            %{configure_args}
+
 %{__make} %{?_smp_mflags}
 %{__make} %{?_smp_mflags} streamtcp
 
+%if 0%{with_python}
+popd
+%endif # with_python
+
+%if 0%{with_python3}
+pushd %{pkgname}_python3
+%configure  \
+            --with-pythonmodule --with-pyunbound PYTHON=%{__python3} \
+            %{configure_args}
+
+%{__make} %{?_smp_mflags}
+popd
+%endif # with_python3
+
+
 %install
+%if 0%{with_python3}
+pushd %{pkgname}_python3
+%{__make} DESTDIR=%{buildroot} install
+popd
+%endif # with_python3
+
+%if 0%{with_python}
+pushd %{pkgname}_python2
+%endif # with_python
 %{__make} DESTDIR=%{buildroot} install
+%if 0%{with_python}
+popd
+%endif # with_python
+
 install -d -m 0755 %{buildroot}%{_unitdir} %{buildroot}%{_sysconfdir}/sysconfig
 install -p -m 0644 %{SOURCE1} %{buildroot}%{_unitdir}/unbound.service
 install -p -m 0644 %{SOURCE7} %{buildroot}%{_unitdir}/unbound-keygen.service
@@ -157,11 +241,19 @@ for plugin in unbound_munin_hits unbound_munin_queue unbound_munin_memory unboun
 done
 %endif
 
+%if 0%{with_python}
+pushd %{pkgname}_python2
+%endif # with_python
+
 # install streamtcp used for monitoring / debugging unbound's port 80/443 modes
 install -m 0755 streamtcp %{buildroot}%{_sbindir}/unbound-streamtcp
 # install streamtcp man page
 install -m 0644 testcode/streamtcp.1 %{buildroot}/%{_mandir}/man1/unbound-streamtcp.1
 
+%if 0%{with_python}
+popd
+%endif # with_python
+
 # Install tmpfiles.d config
 install -d -m 0755 %{buildroot}%{_tmpfilesdir} %{buildroot}%{_sharedstatedir}/unbound
 install -m 0644 %{SOURCE8} %{buildroot}%{_tmpfilesdir}/unbound.conf
@@ -173,9 +265,14 @@ install -m 0644 %{SOURCE13} %{buildroot}%{_sharedstatedir}/unbound/root.key
 
 # remove static library from install (fedora packaging guidelines)
 rm %{buildroot}%{_libdir}/*.la
-%if %{with_python}
-rm %{buildroot}%{python_sitearch}/*.la
-%endif
+
+%if 0%{with_python}
+rm %{buildroot}%{python2_sitearch}/*.la
+%endif # with_python
+
+%if 0%{with_python3}
+rm %{buildroot}%{python3_sitearch}/*.la
+%endif # with_python3
 
 # create softlink for all functions of libunbound man pages
 for mpage in ub_ctx ub_result ub_ctx_create ub_ctx_delete ub_ctx_set_option ub_ctx_get_option ub_ctx_config ub_ctx_set_fwd ub_ctx_resolvconf ub_ctx_hosts ub_ctx_add_ta ub_ctx_add_ta_file ub_ctx_trustedkeys ub_ctx_debugout ub_ctx_debuglevel ub_ctx_async ub_poll ub_wait ub_fd ub_process ub_resolve ub_resolve_async ub_cancel ub_resolve_free ub_strerror ub_ctx_print_local_zones ub_ctx_zone_add ub_ctx_zone_remove ub_ctx_data_add ub_ctx_data_remove;
@@ -195,11 +292,70 @@ install -p %{SOURCE11} %{buildroot}%{_sysconfdir}/unbound/local.d/
 # Link unbound-control-setup.8 manpage to unbound-control.8
 echo ".so man8/unbound-control.8" > %{buildroot}/%{_mandir}/man8/unbound-control-setup.8
 
+
+%pre libs
+getent group unbound >/dev/null || groupadd -r unbound
+getent passwd unbound >/dev/null || \
+useradd -r -g unbound -d %{_sysconfdir}/unbound -s /sbin/nologin \
+-c "Unbound DNS resolver" unbound
+
+%post
+%systemd_post unbound.service
+%systemd_post unbound-keygen.service
+
+%post libs
+/sbin/ldconfig
+%{_sbindir}/runuser  --command="%{_sbindir}/unbound-anchor -a %{_sharedstatedir}/unbound/root.anchor -c %{_sysconfdir}/unbound/icannbundle.pem"  --shell /bin/sh unbound ||:
+
+%preun
+%systemd_preun unbound.service
+%systemd_preun unbound-keygen.service
+
+%postun
+%systemd_postun_with_restart unbound.service
+%systemd_postun unbound-keygen.service
+
+%postun libs -p /sbin/ldconfig
+
+%triggerun -- unbound < 1.4.12-4
+# Save the current service runlevel info
+# User must manually run systemd-sysv-convert --apply unbound
+# to migrate them to systemd targets
+/usr/bin/systemd-sysv-convert --save unbound >/dev/null 2>&1 ||:
+
+# Run these because the SysV package being removed won't do them
+/sbin/chkconfig --del unbound >/dev/null 2>&1 || :
+/bin/systemctl try-restart unbound.service >/dev/null 2>&1 || :
+/bin/systemctl try-restart unbound-keygen.service >/dev/null 2>&1 || :
+
+
 %check
+%if 0%{with_python}
+pushd %{pkgname}_python2
+
+#pushd pythonmod
+#make test
+#popd
+%endif # with_python
+
 make check
 
+%if 0%{with_python}
+popd
+%endif # with_python
+
+%if 0%{with_python3}
+pushd %{pkgname}_python3
+#pushd pythonmod
+#make test
+#popd
+make check
+popd
+%endif # with_python3
+
+
 %files 
-%doc doc/README doc/CREDITS doc/LICENSE doc/FEATURES
+%doc doc/CREDITS doc/FEATURES
 %{_unitdir}/%{name}.service
 %{_unitdir}/%{name}-keygen.service
 %attr(0755,unbound,unbound) %dir %{_localstatedir}/run/%{name}
@@ -222,27 +378,37 @@ make check
 %{_mandir}/man5/*
 %{_mandir}/man8/*
 
-%if %{with_python}
-%files python
-%{python_sitearch}/*
+%if 0%{with_python}
+%files -n python-unbound
+%license pythonmod/LICENSE
+%{python2_sitearch}/*
 %doc libunbound/python/examples/*
 %doc pythonmod/examples/*
 %endif
 
-%if %{with_munin}
+%if 0%{with_python3}
+%files -n python3-unbound
+%license pythonmod/LICENSE
+%{python3_sitearch}/*
+%doc libunbound/python/examples/*
+%doc pythonmod/examples/*
+%endif
+
+%if 0%{with_munin}
 %files munin
+%doc unbound-munin.README
 %config(noreplace) %{_sysconfdir}/munin/plugin-conf.d/unbound
 %{_datadir}/munin/plugins/unbound*
-%doc unbound-munin.README
 %endif
 
 %files devel
 %{_libdir}/libunbound.so
 %{_includedir}/unbound.h
 %{_mandir}/man3/*
-%doc README
 
 %files libs
+%doc doc/README
+%license doc/LICENSE
 %attr(0755,root,root) %dir %{_sysconfdir}/%{name}
 %{_sbindir}/unbound-anchor
 %{_libdir}/libunbound.so.*
@@ -253,45 +419,13 @@ make check
 %attr(0644,root,root) %config(noreplace) %{_sysconfdir}/%{name}/dlv.isc.org.key
 # just left for backwards compat with user changed unbound.conf files - format is different!
 %attr(0644,root,root) %config(noreplace) %{_sysconfdir}/%{name}/root.key
-%doc doc/README doc/LICENSE
 
-%pre libs
-getent group unbound >/dev/null || groupadd -r unbound
-getent passwd unbound >/dev/null || \
-useradd -r -g unbound -d %{_sysconfdir}/unbound -s /sbin/nologin \
--c "Unbound DNS resolver" unbound
-exit 0
-
-%post
-%systemd_post unbound.service
-%systemd_post unbound-keygen.service
-
-%post libs 
-/sbin/ldconfig
-%{_sbindir}/runuser  --command="%{_sbindir}/unbound-anchor -a %{_sharedstatedir}/unbound/root.anchor -c %{_sysconfdir}/unbound/icannbundle.pem"  --shell /bin/sh unbound ||:
-
-%preun
-%systemd_preun unbound.service
-%systemd_preun unbound-keygen.service
-
-%postun 
-%systemd_postun_with_restart unbound.service
-%systemd_postun unbound-keygen.service
-
-%postun libs -p /sbin/ldconfig
-
-%triggerun -- unbound < 1.4.12-4
-# Save the current service runlevel info
-# User must manually run systemd-sysv-convert --apply unbound
-# to migrate them to systemd targets
-/usr/bin/systemd-sysv-convert --save unbound >/dev/null 2>&1 ||:
-
-# Run these because the SysV package being removed won't do them
-/sbin/chkconfig --del unbound >/dev/null 2>&1 || :
-/bin/systemctl try-restart unbound.service >/dev/null 2>&1 || :
-/bin/systemctl try-restart unbound-keygen.service >/dev/null 2>&1 || :
 
 %changelog
+* Thu Apr 16 2015 Tomas Hozza <thozza at redhat.com> - 1.5.3-2
+- Fix FTBFS (#1206129)
+- Build python3-unbound and python-unbound bindings for Python 3 and 2 (#1188080)
+
 * Mon Mar 16 2015 Paul Wouters <pwouters at redhat.com> - 1.5.3-1
 - Updated to 1.5.3 which is a bugfix on 1.5.2 for sighup handling
 - Updated to 1.5.2 which fixes DNSSEC validation with different
-- 
cgit v0.10.2


	http://pkgs.fedoraproject.org/cgit/unbound.git/commit/?h=f22&id=9d0daced90701cc0fadeed038c836b116d2779e8


More information about the scm-commits mailing list