Make mpfr3 and mpfr3-devel subpackages.

Also:
- Drop the compat-libmpc package; nothing in Fedora needs it
- Update project URL
- Add a -doc subpackage to hold the GFDL-licensed content
- Drop unnecessary texinfo BR
- Drop ldconfig_scriptlets; this version cannot appear in distros that need it
- Make sure there are no rpaths and that -Wl,--as-needed takes effect
This commit is contained in:
Jerry James 2019-10-08 14:56:29 -06:00
parent 5448a0540d
commit d469b80cdf
3 changed files with 170 additions and 64 deletions

8
libmpc.rpmlintrc Normal file
View File

@ -0,0 +1,8 @@
# THIS FILE IS FOR WHITELISTING RPMLINT ERRORS AND WARNINGS IN TASKOTRON
# https://fedoraproject.org/wiki/Taskotron/Tasks/dist.rpmlint#Whitelisting_errors
# The dictionary lacks some technical words
addFilter(r'spelling-error .* symlinks')
# Documentation is in the -doc subpackage
addFilter(r'^libmpc.*-devel\.[^:]+: W: no-documentation')

View File

@ -1,22 +1,26 @@
# build compat-libmpc for bootstrapping purposes
%define bootstrap 1
%define bootstrap_version 0.9
%global bootstrap 0
%global bootstrap_version 0.9
Summary: C library for multiple precision complex arithmetic
Name: libmpc
Version: 1.1.0
Release: 4%{?dist}
License: LGPLv3+ and GFDL
URL: http://www.multiprecision.org/
Release: 5%{?dist}
License: LGPLv3+
URL: http://www.multiprecision.org/mpc/
Source0: https://ftp.gnu.org/gnu/mpc/mpc-%{version}.tar.gz
%if 0%{?bootstrap}
Source1: https://ftp.gnu.org/gnu/mpc/mpc-%{bootstrap_version}.tar.gz
%endif
BuildRequires: gcc
BuildRequires: gmp-devel >= 5.0.0
BuildRequires: mpfr-devel >= 3.0.0
BuildRequires: texinfo
BuildRequires: mpfr-devel
BuildRequires: mpfr3-devel
%if 0%{?bootstrap}
Source1: http://www.multiprecision.org/downloads/mpc-%{bootstrap_version}.tar.gz
%if 0%{?bootstrap} == 0
Obsoletes: compat-libmpc < %{version}-1
Provides: compat-libmpc = %{version}-%{release}
%endif
%description
@ -24,64 +28,45 @@ MPC is a C library for the arithmetic of complex numbers with
arbitrarily high precision and correct rounding of the result. It is
built upon and follows the same principles as Mpfr.
%prep
%if 0%{?bootstrap}
%setup -q -n mpc-%{version} -a 1
%else
%setup -q -n mpc-%{version}
%endif
%build
%configure --disable-static
make %{?_smp_mflags}
export CPPFLAGS="%{optflags} -std=gnu99"
export CFLAGS="%{optflags} -std=gnu99"
export EGREP=egrep
%if 0%{?bootstrap}
pushd mpc-%{bootstrap_version}
%configure --disable-static
%make_build
popd
%endif
%check
make check
%install
%if 0%{?bootstrap}
%make_install -C mpc-%{bootstrap_version}
## remove everything but shlib
rm -fv $RPM_BUILD_ROOT%{_libdir}/libmpc.so
rm -fv $RPM_BUILD_ROOT%{_includedir}/*
rm -fv $RPM_BUILD_ROOT%{_infodir}/*
%endif
%make_install
rm -f $RPM_BUILD_ROOT/%{_libdir}/libmpc.la
rm -f ${RPM_BUILD_ROOT}/%{_infodir}/dir
%ldconfig_scriptlets
%files
%license COPYING.LESSER
%doc README NEWS
%{_libdir}/libmpc.so.3*
%package devel
Summary: Header and shared development libraries for MPC
Summary: Headers and shared development libraries for MPC
Requires: %{name}%{?_isa} = %{version}-%{release}
Requires: mpfr-devel gmp-devel
Requires: gmp-devel%{?_isa}
Requires: mpfr-devel%{?_isa}
%description devel
Header files and shared object symlinks for MPC is a C library.
Header files and shared library symlinks for the MPC library.
%files devel
%{_libdir}/libmpc.so
%{_includedir}/mpc.h
%{_infodir}/*.info*
%package doc
Summary: Documentation for the MPC library
License: GFDL
BuildArch: noarch
%description doc
Documentation for the MPC library.
%package mpfr3
Summary: C library for multiple-precision complex arithmetic (MPFR 3)
%description mpfr3
MPC is a C library for the arithmetic of complex numbers with arbitrarily
high precision and correct rounding of the result. It is built upon and
follows the same principles as Mpfr.
This is the same as the libmpc package, except this package is linked
with MPFR 3. The libmpc package is linked with MPFR 4.
%package mpfr3-devel
Summary: Headers and shared development libraries for MPC (MPFR 3)
Requires: %{name}-mpfr3%{?_isa} = %{version}-%{release}
Requires: gmp-devel%{?_isa}
Requires: mpfr3-devel%{?_isa}
%description mpfr3-devel
Header files and shared library symlinks for the MPC library.
This is the same as the libmpc-devel package, except this package is for
use with MPFR 3. The libmpc-devel package is for use with MPFR 4.
%if 0%{?bootstrap}
%package -n compat-libmpc
@ -89,14 +74,128 @@ Summary: compat/bootstrap mpc-%{bootstrap_version} library
%description -n compat-libmpc
Contains the .so files for mpc version %{bootstrap-version}.
%endif
%ldconfig_scriptlets -n compat-libmpc
%prep
%if 0%{?bootstrap}
%setup -q -n mpc-%{version} -a 1
%else
%setup -q -n mpc-%{version}
%setup -q -T -D -a 0 -n mpc-%{version}
%endif
# Prepare the mpfr3 build so it does not collide with the main package
mv mpc-%{version} mpc-%{version}-mpfr3
cd mpc-%{version}-mpfr3
sed -i 's/-lmpfr/&3/g;s/mpfr\.h/mpfr3.h/g' configure src/mpc{,-impl}.h
sed -e 's/libmpc_la/libmpc_mpfr3_la/g' \
-e 's/libmpc\.la/libmpc-mpfr3.la/'g \
-i {src,tests}/Makefile.in
cd -
# For the bootstrap build, link both packages with mpfr3
sed -i 's/-lmpfr/&3/g;s/mpfr\.h/mpfr3.h/g' configure src/mpc{,-impl}.h
%build
%configure --disable-static
# Get rid of undesirable hardcoded rpaths; workaround libtool reordering
# -Wl,--as-needed after all the libraries.
sed -e 's|^hardcode_libdir_flag_spec=.*|hardcode_libdir_flag_spec=""|g' \
-e 's|^runpath_var=LD_RUN_PATH|runpath_var=DIE_RPATH_DIE|g' \
-e 's|CC="\(g..\)"|CC="\1 -Wl,--as-needed"|' \
-i libtool
%make_build
%if 0%{?bootstrap}
export CPPFLAGS="%{optflags} -std=gnu99"
export CFLAGS="%{optflags} -std=gnu99"
export EGREP=egrep
pushd mpc-%{bootstrap_version}
%configure --disable-static
%make_build
popd
%endif
cd mpc-%{version}-mpfr3
%configure --disable-static
# Get rid of undesirable hardcoded rpaths; workaround libtool reordering
# -Wl,--as-needed after all the libraries.
sed -e 's|^hardcode_libdir_flag_spec=.*|hardcode_libdir_flag_spec=""|g' \
-e 's|^runpath_var=LD_RUN_PATH|runpath_var=DIE_RPATH_DIE|g' \
-e 's|CC="\(g..\)"|CC="\1 -Wl,--as-needed"|' \
-i libtool
%make_build
cd -
%install
%if 0%{?bootstrap}
%make_install -C mpc-%{bootstrap_version}
## remove everything but shlib
rm -fv %{buildroot}%{_libdir}/libmpc.so
rm -fv %{buildroot}%{_includedir}/*
rm -fv %{buildroot}%{_infodir}/*
%endif
cd mpc-%{version}-mpfr3
%make_install
rm -fr %{buildroot}/%{_infodir}
mv %{buildroot}%{_includedir}/mpc.h %{buildroot}%{_includedir}/mpc-mpfr3.h
cd -
%make_install
rm -f %{buildroot}/%{_libdir}/*.la
rm -f %{buildroot}/%{_infodir}/dir
%check
export LD_LIBRARY_PATH=%{buildroot}%{_libdir}
make check
cd mpc-%{version}-mpfr3
make check
cd -
%files
%license COPYING.LESSER
%doc README NEWS
%{_libdir}/libmpc.so.3*
%files devel
%{_libdir}/libmpc.so
%{_includedir}/mpc.h
%files doc
%doc AUTHORS
%{_infodir}/*.info*
%files mpfr3
%license mpc-%{version}-mpfr3/COPYING.LESSER
%doc mpc-%{version}-mpfr3/NEWS mpc-%{version}-mpfr3/README
%{_libdir}/libmpc-mpfr3.so.3*
%files mpfr3-devel
%{_libdir}/libmpc-mpfr3.so
%{_includedir}/mpc-mpfr3.h
%if 0%{?bootstrap}
%files -n compat-libmpc
%{_libdir}/libmpc.so.2*
%endif
%changelog
* Tue Oct 8 2019 Jerry James <loganjerry@gmail.com> - 1.1.0-5
- Make mpfr3 and mpfr3-devel subpackages
- Drop the compat-libmpc package; nothing in Fedora needs it
- Update project URL
- Add a -doc subpackage to hold the GFDL-licensed content
- Drop unnecessary texinfo BR
- Drop ldconfig_scriptlets; this version cannot appear in distros that need it
- Make sure there are no rpaths and that -Wl,--as-needed takes effect
* Thu Jul 25 2019 Fedora Release Engineering <releng@fedoraproject.org> - 1.1.0-4
- Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild

View File

@ -1,2 +1 @@
SHA512 (mpc-0.9.tar.gz) = 84daf8e6f63c876ba4c58bd1f25aea2766dd42d6e020aa02e93682e7a1d03da6c30d02c09ac006a507feedb46ea18de415e2affa1cdb71d37d63f3130bb7dfc4
SHA512 (mpc-1.1.0.tar.gz) = 72d657958b07c7812dc9c7cbae093118ce0e454c68a585bfb0e2fa559f1bf7c5f49b93906f580ab3f1073e5b595d23c6494d4d76b765d16dde857a18dd239628