From 0a45402a80c4a7bad4b48268aa95e6f82dfa434d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Petr=20Men=C5=A1=C3=ADk?= Date: Fri, 30 Jun 2017 16:15:18 +0200 Subject: [PATCH] Support for python3 package (#1323248) --- ldns.spec | 181 +++++++++++++++++++++++++++++++++++++++--------------- 1 file changed, 133 insertions(+), 48 deletions(-) diff --git a/ldns.spec b/ldns.spec index fbb27cf..fe826da 100644 --- a/ldns.spec +++ b/ldns.spec @@ -1,10 +1,13 @@ %global _hardened_build 1 %{?!with_python: %global with_python 1} +%{?!with_python3: %global with_python3 1} %{?!with_perl: %global with_perl 1} %{?!with_ecdsa: %global with_ecdsa 1} # GOST is not allowed in Fedora/RHEL due to legal reasons (not NIST ECC) %{?!with_gost: %global with_gost 0} -%{?!disable_dane: %global disable_dane 0} +# Useful to build against openssl 1.0 +%{?!disable_dane: %global disable_dane 0} +%{?!snapshot: %global snapshot 0} %if %{with_python} %{!?python_sitelib: %global python_sitelib %(%{__python} -c "from distutils.sysconfig import get_python_lib; print get_python_lib()")} @@ -27,7 +30,7 @@ Summary: Low-level DNS(SEC) library with API Name: ldns Version: 1.7.0 -Release: 12%{?dist} +Release: 13%{?dist} License: BSD Url: http://www.nlnetlabs.nl/%{name}/ @@ -38,9 +41,11 @@ Patch3: ldns-1.7.0-realloc.patch Group: System Environment/Libraries # Only needed for builds from svn snapshot -# BuildRequires: libtool -# BuildRequires: autoconf -# BuildRequires: automake +%if 0%{snapshot} +BuildRequires: libtool +BuildRequires: autoconf +BuildRequires: automake +%endif BuildRequires: libpcap-devel %if %{disable_dane} @@ -56,6 +61,9 @@ BuildRequires: doxygen %if %{with_python} BuildRequires: python2-devel, swig %endif +%if %{with_python3} +BuildRequires: python3-devel +%endif %if %{with_perl} BuildRequires: perl-devel BuildRequires: perl-ExtUtils-MakeMaker @@ -87,18 +95,31 @@ Requires: %{name}%{?_isa} = %{version}-%{release} %description utils Collection of tools to get, check or alter DNS(SEC) data. + %if %{with_python} %package -n python2-ldns -%{?python_provide:%python_provide python2-ldns} -Summary: Python extensions for ldns +Summary: Python2 extensions for ldns Group: Applications/System Requires: %{name}%{?_isa} = %{version}-%{release} - +%{?python_provide:%python_provide python2-ldns} %description -n python2-ldns -Python extensions for ldns +Python2 extensions for ldns %endif + +%if %{with_python3} +%package -n python3-ldns +Summary: Python3 extensions for ldns +Group: Applications/System +Requires: %{name}%{?_isa} = %{version}-%{release} +%{?python_provide:%python_provide python3-ldns} + +%description -n python3-ldns +Python3 extensions for ldns +%endif + + %if %{with_perl} %package -n perl-ldns Summary: Perl extensions for ldns @@ -119,20 +140,43 @@ BuildArch: noarch This package contains documentation for the ldns library %prep -%setup -q +%{?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 +%else +pushd %{pkgname} +%endif # with_python + %patch1 -p1 %patch2 -p1 -b .limit %patch3 -p1 -b .realloc # To built svn snapshots -# rm config.guess config.sub ltmain.sh -# aclocal -# libtoolize -c --install -# autoreconf --install +%if 0%{snapshot} + rm config.guess config.sub ltmain.sh + aclocal + libtoolize -c --install + autoreconf --install +%endif -%build # fixup .pc file sed -i "s/@includedir@/@includedir@\/ldns/" packaging/libldns.pc.in +# copy common doc files - after here, since it may be patched +cp -pr doc LICENSE README* Changelog ../ +cp -p contrib/ldnsx/LICENSE ../LICENSE.ldnsx +cp -p contrib/ldnsx/README ../README.ldnsx +popd + +%if 0%{?with_python3} +cp -a %{pkgname}_python2 %{pkgname}_python3 +%endif # with_python3 + + +%build CFLAGS="%{optflags} -fPIC" CXXFLAGS="%{optflags} -fPIC" LDFLAGS="-Wl,-z,relro,-z,now -pie" @@ -151,36 +195,34 @@ export CFLAGS CXXFLAGS LDFLAGS %global enable_ecdsa --disable-ecdsa %endif +%if %{disable_dane} + %global disable_dane_ta --disable-dane-ta-usage +%endif + %global common_args \\\ --disable-rpath \\\ - %{enable_gost} %{enable_ecdsa} \\\ + %{enable_gost} %{enable_ecdsa} %{?disable_dane_ta} \\\ --with-ca-file=/etc/pki/tls/certs/ca-bundle.trust.crt \\\ --with-ca-path=/etc/pki/tls/certs/ \\\ - --with-trust-anchor=%{_sharedstatedir}/unbound/root.key + --with-trust-anchor=%{_sharedstatedir}/unbound/root.key \\\ + --disable-static \\\ + + +%if 0%{with_python} +pushd %{pkgname}_python2 +%else +pushd %{pkgname} +%endif # with_python %configure \ %{common_args} \ - --disable-static \ + --with-examples \ + --with-drill \ %if %{with_python} - --with-pyldns \ + --with-pyldns PYTHON_VERSION=2 %endif - --enable-rrtype-cds --enable-rrtype-uri \ -%if %{disable_dane} - --disable-dane-ta-usage \ -%endif - - -pushd drill -%configure %{common_args} -popd - -pushd examples -%configure %{common_args} -popd make %{?_smp_mflags} -make -C drill %{?_smp_mflags} -make -C examples %{?_smp_mflags} make %{?_smp_mflags} doc # We cannot use the built-in --with-p5-dns-ldns @@ -194,31 +236,60 @@ make %{?_smp_mflags} doc # specfic hardening options should not end up in ldns-config sed -i "s/-Wl,-z,relro,-z,now -pie//" packaging/ldns-config +popd + +%if 0%{with_python3} + pushd %{pkgname}_python3 + %configure \ + %{common_args} \ + --with-pyldns PYTHON_VERSION=3 + + make %{?_smp_mflags} + popd +%endif + %install rm -rf %{buildroot} +%if 0%{with_python} +pushd %{pkgname}_python2 +%else +pushd %{pkgname} +%endif + make DESTDIR=%{buildroot} INSTALL="%{__install} -p" install make DESTDIR=%{buildroot} INSTALL="%{__install} -p" install-doc +# remove .la files +rm -rf %{buildroot}%{_libdir}/*.la +%if 0%{with_python} +rm -rf %{buildroot}%{python2_sitearch}/*.la +%endif + +# install pkg-config file +install -D -m644 packaging/libldns.pc %{buildroot}%{_libdir}/pkgconfig/ldns.pc +%if %{with_perl} + make -C contrib/DNS-LDNS DESTDIR=%{buildroot} pure_install + chmod 755 %{buildroot}%{perl_vendorarch}/auto/DNS/LDNS/LDNS.so + rm -f %{buildroot}%{perl_vendorarch}/auto/DNS/LDNS/{.packlist,LDNS.bs} +%endif +popd + +%if %{with_python3} + pushd %{pkgname}_python3 + make DESTDIR=%{buildroot} INSTALL="%{__install} -p" install-pyldns install-pyldnsx + rm -rf %{buildroot}%{_libdir}/*.la %{buildroot}%{python3_sitearch}/*.la + popd +%endif + # don't package xml files rm doc/*.xml # don't package building script for install-doc in doc section rm doc/doxyparse.pl # remove double set of man pages rm -rf doc/man -# remove .la files -rm -rf %{buildroot}%{_libdir}/*.la %{buildroot}%{python_sitearch}/*.la -# install pkg-config file -install -D -m644 packaging/libldns.pc %{buildroot}%{_libdir}/pkgconfig/ldns.pc -make -C drill DESTDIR=%{buildroot} install -make -C examples DESTDIR=%{buildroot} install -%if %{with_perl} - make -C contrib/DNS-LDNS DESTDIR=%{buildroot} pure_install - chmod 755 %{buildroot}%{perl_vendorarch}/auto/DNS/LDNS/LDNS.so - rm -f %{buildroot}%{perl_vendorarch}/auto/DNS/LDNS/{.packlist,LDNS.bs} -%endif %post -p /sbin/ldconfig @@ -238,29 +309,43 @@ make -C examples DESTDIR=%{buildroot} install %{_mandir}/man1/* %files devel -%doc Changelog +%doc Changelog README.git %{_libdir}/libldns.so %{_libdir}/pkgconfig/ldns.pc %{_bindir}/ldns-config %dir %{_includedir}/ldns %{_includedir}/ldns/*.h -%{_mandir}/man3/* +%{_mandir}/man3/*.3.gz %if %{with_python} %files -n python2-ldns -%{python_sitearch}/* +%doc %{pkgname}_python2/contrib/python/Changelog README.ldnsx +%license LICENSE.ldnsx +%{python2_sitearch}/* +%endif + +%if %{with_python3} +%files -n python3-ldns +%doc %{pkgname}_python3/contrib/python/Changelog README.ldnsx +%license LICENSE.ldnsx +%{python3_sitearch}/* %endif %if %{with_perl} %files -n perl-ldns %{perl_vendorarch}/* %exclude %dir %{perl_vendorarch}/auto/ +%{_mandir}/man3/*.3pm.gz %endif %files doc %doc doc %changelog +* Wed Feb 21 2018 Petr Menšík - 1.7.0-13 +- Support for python3 package (#1323248) +- Moved perl manual pages to perl-ldns + * Wed Feb 07 2018 Fedora Release Engineering - 1.7.0-12 - Rebuilt for https://fedoraproject.org/wiki/Fedora_28_Mass_Rebuild