e2ef7e9055
- Run %fdupes on man folder as suggested by rpmlint OBS-URL: https://build.opensuse.org/package/show/science/lapack?expand=0&rev=53
509 lines
16 KiB
RPMSpec
509 lines
16 KiB
RPMSpec
#
|
|
# spec file for package lapack
|
|
#
|
|
# Copyright (c) 2024 SUSE LLC
|
|
#
|
|
# All modifications and additions to the file contributed by third parties
|
|
# remain the property of their copyright owners, unless otherwise agreed
|
|
# upon. The license for this file, and modifications and additions to the
|
|
# file, is the same license as for the pristine package itself (unless the
|
|
# license for the pristine package is not an Open Source License, in which
|
|
# case the license is the MIT License). An "Open Source License" is a
|
|
# license that conforms to the Open Source Definition (Version 1.9)
|
|
# published by the Open Source Initiative.
|
|
|
|
# Please submit bugfixes or comments via https://bugs.opensuse.org/
|
|
#
|
|
|
|
|
|
%global flavor @BUILD_FLAVOR@%{nil}
|
|
%global pname lapack
|
|
%if "%{flavor}" == "static"
|
|
%define psuffix -static
|
|
%bcond_with shared
|
|
# Generate man files for the static flavour to avoid additional deps/build time
|
|
# for main flavour
|
|
%bcond_without man
|
|
%else
|
|
%define psuffix %{nil}
|
|
%bcond_without shared
|
|
%bcond_with man
|
|
%endif
|
|
%define __builder ninja
|
|
%define so_ver 3
|
|
%bcond_without tmg
|
|
|
|
# For Leap 15.X, we do not need arch dependent symlink names because no baselibs are generated
|
|
%if 0%{?suse_version} >= 1500
|
|
%define a_x _%{_arch}
|
|
%endif
|
|
Name: %{pname}%{?psuffix}
|
|
Version: 3.12.0
|
|
Release: 0
|
|
Summary: Linear Algebra PACKage
|
|
License: BSD-3-Clause
|
|
URL: https://www.netlib.org/lapack/
|
|
Source0: https://github.com/Reference-LAPACK/lapack/archive/v%{version}.tar.gz#/%{pname}-%{version}.tar.gz
|
|
# PATCH-FIX-UPSTREAM fix-lapack-testing.patch gh#Reference-LAPACK/lapack@5b0687f429cf
|
|
Patch1: fix-lapack-testing.patch
|
|
Source98: lapack.rpmlintrc
|
|
Source99: baselibs.conf
|
|
BuildRequires: cmake
|
|
BuildRequires: fdupes
|
|
BuildRequires: gcc-c++
|
|
BuildRequires: gcc-fortran
|
|
BuildRequires: ninja
|
|
BuildRequires: python-rpm-macros
|
|
BuildRequires: python3-base
|
|
# SECTION Requirements for MAN files
|
|
%if %{with man}
|
|
BuildRequires: doxygen
|
|
BuildRequires: graphviz
|
|
%endif
|
|
# /SECTION
|
|
|
|
%description
|
|
LAPACK provides routines for solving systems of simultaneous linear
|
|
equations, least-squares solutions of linear systems of equations,
|
|
eigenvalue problems, and singular value problems. The associated matrix
|
|
factorizations (LU, Cholesky, QR, SVD, Schur, generalized Schur) are
|
|
also provided, as are related computations such as reordering of the
|
|
Schur factorizations and estimating condition numbers. Dense and banded
|
|
matrices are handled, but not general sparse matrices. In all areas,
|
|
similar functionality is provided for real and complex matrices, in
|
|
both single and double precision.
|
|
|
|
|
|
# LAPACK
|
|
%package -n liblapack%{so_ver}
|
|
Summary: Linear Algebra PACKage: Shared Library
|
|
Requires(post): update-alternatives
|
|
Requires(postun): update-alternatives
|
|
|
|
%description -n liblapack%{so_ver}
|
|
LAPACK provides routines for solving systems of simultaneous linear
|
|
equations, least-squares solutions of linear systems of equations,
|
|
eigenvalue problems, and singular value problems. The associated matrix
|
|
factorizations (LU, Cholesky, QR, SVD, Schur, generalized Schur) are
|
|
also provided, as are related computations such as reordering of the
|
|
Schur factorizations and estimating condition numbers. Dense and banded
|
|
matrices are handled, but not general sparse matrices. In all areas,
|
|
similar functionality is provided for real and complex matrices, in
|
|
both single and double precision.
|
|
|
|
This package provides the shared library for LAPACK.
|
|
|
|
%package -n %{pname}-devel
|
|
Summary: Linear Algebra PACKage: headers and source files for development
|
|
Requires: blas-devel = %{version}
|
|
Requires: liblapack%{so_ver} = %{version}
|
|
Recommends: lapack-man = %{version}
|
|
Provides: lapack = %{version}
|
|
Obsoletes: lapack < %{version}
|
|
|
|
%description -n %{pname}-devel
|
|
LAPACK provides routines for solving systems of simultaneous linear
|
|
equations, least-squares solutions of linear systems of equations,
|
|
eigenvalue problems, and singular value problems. The associated matrix
|
|
factorizations (LU, Cholesky, QR, SVD, Schur, generalized Schur) are
|
|
also provided, as are related computations such as reordering of the
|
|
Schur factorizations and estimating condition numbers. Dense and banded
|
|
matrices are handled, but not general sparse matrices. In all areas,
|
|
similar functionality is provided for real and complex matrices, in
|
|
both single and double precision.
|
|
|
|
%package -n %{pname}-devel-static
|
|
Summary: Linear Algebra PACKage - static libraries
|
|
Requires: lapack-devel = %{version}
|
|
|
|
%description -n %{pname}-devel-static
|
|
LAPACK provides routines for solving systems of simultaneous linear
|
|
equations, least-squares solutions of linear systems of equations,
|
|
eigenvalue problems, and singular value problems. The associated matrix
|
|
factorizations (LU, Cholesky, QR, SVD, Schur, generalized Schur) are
|
|
also provided, as are related computations such as reordering of the
|
|
Schur factorizations and estimating condition numbers. Dense and banded
|
|
matrices are handled, but not general sparse matrices. In all areas,
|
|
similar functionality is provided for real and complex matrices, in
|
|
both single and double precision.
|
|
|
|
This package provides the static library for LAPACK.
|
|
|
|
|
|
# BLAS
|
|
%package -n libblas%{so_ver}
|
|
Summary: Basic Linear Algebra Subprograms: Shared Library
|
|
Requires(post): update-alternatives
|
|
Requires(postun): update-alternatives
|
|
|
|
%description -n libblas%{so_ver}
|
|
BLAS (Basic Linear Algebra Subprograms) is a standard library for
|
|
numerical algebra. BLAS provides a number of basic algorithms for
|
|
linear algebra.
|
|
|
|
This package provides the shared library for BLAS.
|
|
|
|
%package -n blas-devel
|
|
Summary: Basic Linear Algebra Subprograms: headers and sources for development
|
|
Requires: libblas%{so_ver} = %{version}
|
|
Recommends: lapack-man = %{version}
|
|
Provides: blas = %{version}
|
|
Obsoletes: blas < %{version}
|
|
|
|
%description -n blas-devel
|
|
BLAS (Basic Linear Algebra Subprograms) is a standard library for
|
|
numerical algebra. BLAS provides a number of basic algorithms for
|
|
linear algebra. BLAS is fast and well-tested, was written in FORTRAN 77
|
|
and built with gfortran. BLAS manual pages are available in the
|
|
blas-man package.
|
|
|
|
%package -n blas-devel-static
|
|
Summary: Basic Linear Algebra Subprograms: static library
|
|
Requires: blas-devel = %{version}
|
|
|
|
%description -n blas-devel-static
|
|
BLAS (Basic Linear Algebra Subprograms) is a standard library for
|
|
numerical algebra. BLAS provides a number of basic algorithms for
|
|
linear algebra. BLAS is fast and well-tested, was written in FORTRAN 77
|
|
and built with gfortran. BLAS manual pages are available in the
|
|
blas-man package.
|
|
|
|
This package provides the static library for BLAS.
|
|
|
|
|
|
# LAPACKE
|
|
%package -n liblapacke%{so_ver}
|
|
Summary: Native C Interface to LAPACK: shared library
|
|
Requires(post): update-alternatives
|
|
Requires(postun): update-alternatives
|
|
|
|
%description -n liblapacke%{so_ver}
|
|
This library provides a native C interface to LAPACK routines available
|
|
at www.netlib.org/lapack to facilitate usage of LAPACK functionality
|
|
for C programmers.
|
|
|
|
%package -n lapacke-devel
|
|
Summary: Native C Interface to LAPACK: headers and sources for development
|
|
Requires: liblapacke%{so_ver} = %{version}
|
|
Recommends: lapack-man = %{version}
|
|
Provides: lapacke = %{version}
|
|
|
|
%description -n lapacke-devel
|
|
LAPACKE provides a native C interface to LAPACK routines available
|
|
at www.netlib.org/lapack to facilitate usage of LAPACK functionality
|
|
for C programmers.
|
|
|
|
This package provides LAPACKE headers and development files.
|
|
|
|
%package -n lapacke-devel-static
|
|
Summary: Native C Interface to LAPACK: static library
|
|
Requires: lapacke-devel = %{version}
|
|
|
|
%description -n lapacke-devel-static
|
|
LAPACKE provides a native C interface to LAPACK routines available
|
|
at www.netlib.org/lapack to facilitate usage of LAPACK functionality
|
|
for C programmers.
|
|
|
|
This package provides the static library for LAPACKE.
|
|
|
|
|
|
# CBLAS
|
|
%package -n libcblas%{so_ver}
|
|
Summary: Native C interface to BLAS: Shared Library
|
|
Requires(post): update-alternatives
|
|
Requires(postun): update-alternatives
|
|
|
|
%description -n libcblas%{so_ver}
|
|
This library provides a native C interface to BLAS routines available
|
|
at www.netlib.org/blas to facilitate usage of BLAS functionality
|
|
for C programmers.
|
|
|
|
%package -n cblas-devel
|
|
Summary: Native C interface to BLAS: headers and sources for development
|
|
Requires: libcblas%{so_ver} = %{version}
|
|
Recommends: lapack-man = %{version}
|
|
Provides: cblas = %{version}
|
|
|
|
%description -n cblas-devel
|
|
This library provides a native C interface to BLAS routines available
|
|
at www.netlib.org/blas to facilitate usage of BLAS functionality
|
|
for C programmers.
|
|
|
|
This package provides the cblas headers and development files.
|
|
|
|
%package -n cblas-devel-static
|
|
Summary: Native C interface to BLAS: static library
|
|
Requires: cblas-devel = %{version}
|
|
|
|
%description -n cblas-devel-static
|
|
This library provides a native C interface to BLAS routines available
|
|
at www.netlib.org/blas to facilitate usage of BLAS functionality
|
|
for C programmers.
|
|
|
|
This package contains the CBLAS static libraries.
|
|
|
|
|
|
# TMGLIB
|
|
%package -n libtmglib%{so_ver}
|
|
Summary: Test Matrix Generator Library: shared library
|
|
|
|
%description -n libtmglib%{so_ver}
|
|
This package provides the shared library for tmglib, the Test Matrix Generator
|
|
Library.
|
|
|
|
%package -n tmglib-devel
|
|
Summary: Test Matrix Generator Library: headers and sources for development
|
|
Requires: libtmglib%{so_ver} = %{version}
|
|
|
|
%description -n tmglib-devel
|
|
This package provides the headers and sources needed to develop against tmglib,
|
|
the Test Matrix Generator Library.
|
|
|
|
%package -n tmglib-devel-static
|
|
Summary: Test Matrix Generator Library: static library
|
|
Requires: tmglib-devel
|
|
|
|
%description -n tmglib-devel-static
|
|
This package provides the headers and sources needed to develop against the
|
|
tmglib as a static library.
|
|
|
|
|
|
# MAN Pages
|
|
%package -n lapack-man
|
|
Summary: Man pages for BLAS, CBLAS, and LAPACK
|
|
|
|
%description -n lapack-man
|
|
This package provides the man pages for BLAS, CBLAS, and LAPACK.
|
|
|
|
%prep
|
|
%autosetup -p1 -n %{pname}-%{version}
|
|
sed -i -E '1{s@#!/usr/bin/env python[0-9]*@#!%{_bindir}/python%{python3_version}@}' lapack_testing.py
|
|
|
|
%build
|
|
%ifarch %{ix86}
|
|
%if 0%{?sle_version:%sle_version} >= 150000
|
|
%global precflags "-mfpmath=sse"
|
|
%global test_precflags %{precflags}
|
|
%else
|
|
%global test_precflags "-ffloat-store"
|
|
%endif
|
|
%endif
|
|
|
|
%if %{without shared}
|
|
%global _lto_cflags %{_lto_cflags} -ffat-lto-objects
|
|
%endif
|
|
%ifarch aarch64
|
|
# https://github.com/scipy/scipy/issues/21475#issuecomment-2454203196
|
|
%global optflags %{optflags} "-ffp-contract=off" %{_lto_cflags}
|
|
%endif
|
|
%global optflags_f %{optflags}
|
|
|
|
%cmake \
|
|
-DBUILD_SHARED_LIBS=%{?with_shared:ON}%{!?with_shared:OFF} \
|
|
-DBLAS++=OFF \
|
|
-DLAPACK++=OFF \
|
|
-DCBLAS=ON \
|
|
-DLAPACKE=ON \
|
|
-DLAPACKE_WITH_TMG=%{?with_tmglib:ON}%{!?with_tmglib:OFF} \
|
|
-DBUILD_DEPRECATED=ON \
|
|
-DBUILD_MAN_DOCUMENTATION=%{?with_man:ON}%{!?with_man:OFF} \
|
|
-DBUILD_TESTING=ON \
|
|
%{nil}
|
|
%cmake_build
|
|
|
|
%if %{with man}
|
|
doxygen Doxyfile.man
|
|
%endif
|
|
|
|
%install
|
|
%cmake_install
|
|
|
|
%if %{with shared}
|
|
# Prepare for update-alternatives
|
|
install -d %{buildroot}%{_sysconfdir}/alternatives
|
|
install -d %{buildroot}%{_libdir}/{lapack,blas}
|
|
mv %{buildroot}%{_libdir}/liblapack{,e}.so.* %{buildroot}%{_libdir}/lapack/
|
|
mv %{buildroot}%{_libdir}/lib{,c}blas.so.* %{buildroot}%{_libdir}/blas/
|
|
|
|
# Create the symlinks
|
|
for t in blas cblas lapack lapacke
|
|
do
|
|
ln -s %{_sysconfdir}/alternatives/lib${t}.so.%{so_ver}%{?a_x} %{buildroot}%{_libdir}/lib${t}.so.%{so_ver}
|
|
done
|
|
|
|
%else
|
|
# Remove headers and script files for static flavour to avoid file conflicts
|
|
rm -fr %{buildroot}%{_includedir}/*.h \
|
|
%{buildroot}%{_libdir}/cmake \
|
|
%{buildroot}%{_libdir}/pkgconfig
|
|
%endif
|
|
|
|
%if %{with man}
|
|
# Delete weirdly named man files
|
|
rm %{__builddir}/DOCS/man/man3/_*_.3
|
|
# Rename isnan to avoid conflict with libm's isnan man file (package man-pages)
|
|
mv %{__builddir}/DOCS/man/man3/isnan{,-lapack}.3
|
|
# Install man pages
|
|
mkdir -p %{buildroot}%{_mandir}
|
|
cp -r %{__builddir}/DOCS/man/man3 %{buildroot}%{_mandir}/
|
|
%fdupes -s %{buildroot}/%{_mandir}
|
|
%endif
|
|
|
|
%check
|
|
%ctest
|
|
|
|
%if %{with shared}
|
|
%ldconfig_scriptlets -n libtmglib%{so_ver}
|
|
|
|
# BLAS
|
|
%post -n libblas%{so_ver}
|
|
%{_sbindir}/update-alternatives --install \
|
|
%{_libdir}/libblas.so.%{so_ver} libblas.so.%{so_ver}%{?a_x} %{_libdir}/blas/libblas.so.%{so_ver} 50
|
|
/sbin/ldconfig
|
|
|
|
%postun -n libblas%{so_ver}
|
|
/sbin/ldconfig
|
|
if [ ! %{_libdir}/blas/libblas.so.%{so_ver} ] ; then
|
|
%{_sbindir}/update-alternatives --remove libblas.so.%{so_ver}%{?a_x} %{_libdir}/blas/libblas.so.%{so_ver}
|
|
fi
|
|
# /BLAS
|
|
|
|
# LAPACK
|
|
%post -n liblapack%{so_ver}
|
|
%{_sbindir}/update-alternatives --install \
|
|
%{_libdir}/liblapack.so.%{so_ver} liblapack.so.%{so_ver}%{?a_x} %{_libdir}/lapack/liblapack.so.%{so_ver} 50
|
|
/sbin/ldconfig
|
|
|
|
%postun -n liblapack%{so_ver}
|
|
/sbin/ldconfig
|
|
if [ ! -f %{_libdir}/lapack/liblapack.so.%{so_ver} ] ; then
|
|
%{_sbindir}/update-alternatives --remove liblapack.so.%{so_ver}%{?a_x} %{_libdir}/lapack/liblapack.so.%{so_ver}
|
|
fi
|
|
# /LAPACK
|
|
|
|
# CBLAS
|
|
%post -n libcblas%{so_ver}
|
|
%{_sbindir}/update-alternatives --install \
|
|
%{_libdir}/libcblas.so.%{so_ver} libcblas.so.%{so_ver}%{?a_x} %{_libdir}/blas/libcblas.so.%{so_ver} 50
|
|
/sbin/ldconfig
|
|
|
|
%postun -n libcblas%{so_ver}
|
|
/sbin/ldconfig
|
|
if [ ! -f %{_libdir}/blas/libcblas.so.%{so_ver} ] ; then
|
|
%{_sbindir}/update-alternatives --remove libcblas.so.%{so_ver}%{?a_x} %{_libdir}/blas/libcblas.so.%{so_ver}
|
|
fi
|
|
# /CBLAS
|
|
|
|
# LAPACKE
|
|
%post -n liblapacke%{so_ver}
|
|
%{_sbindir}/update-alternatives --install \
|
|
%{_libdir}/liblapacke.so.%{so_ver} liblapacke.so.%{so_ver}%{?a_x} %{_libdir}/lapack/liblapacke.so.%{so_ver} 50
|
|
/sbin/ldconfig
|
|
|
|
%postun -n liblapacke%{so_ver}
|
|
/sbin/ldconfig
|
|
if [ ! -f %{_libdir}/lapack/liblapacke.so.%{so_ver} ] ; then
|
|
%{_sbindir}/update-alternatives --remove liblapacke.so.%{so_ver}%{?a_x} %{_libdir}/lapack/liblapacke.so.%{so_ver}
|
|
fi
|
|
# /LAPACKE
|
|
%endif
|
|
|
|
# SECTION main vs static flavour packages
|
|
%if %{with shared}
|
|
%files -n liblapack%{so_ver}
|
|
%doc README.md
|
|
%license LICENSE
|
|
%dir %{_libdir}/lapack
|
|
%{_libdir}/lapack/liblapack.so.*
|
|
%ghost %{_libdir}/liblapack.so.%{so_ver}
|
|
%ghost %{_sysconfdir}/alternatives/liblapack.so.%{so_ver}%{?a_x}
|
|
|
|
%files -n libblas%{so_ver}
|
|
%doc README.md
|
|
%license LICENSE
|
|
%dir %{_libdir}/blas
|
|
%{_libdir}/blas/libblas.so.*
|
|
%ghost %{_libdir}/libblas.so.%{so_ver}
|
|
%ghost %{_sysconfdir}/alternatives/libblas.so.%{so_ver}%{?a_x}
|
|
|
|
%files -n liblapacke%{so_ver}
|
|
%dir %{_libdir}/lapack
|
|
%{_libdir}/lapack/liblapacke.so.*
|
|
%ghost %{_libdir}/liblapacke.so.%{so_ver}
|
|
%ghost %{_sysconfdir}/alternatives/liblapacke.so.%{so_ver}%{?a_x}
|
|
|
|
%files -n libcblas%{so_ver}
|
|
%doc README.md
|
|
%license LICENSE
|
|
%dir %{_libdir}/blas
|
|
%{_libdir}/blas/libcblas.so.*
|
|
%ghost %{_libdir}/libcblas.so.%{so_ver}
|
|
%ghost %{_sysconfdir}/alternatives/libcblas.so.%{so_ver}%{?a_x}
|
|
|
|
%files -n libtmglib%{so_ver}
|
|
%license LICENSE
|
|
%{_libdir}/libtmglib.so.%{so_ver}*
|
|
|
|
%files -n tmglib-devel
|
|
%license LICENSE
|
|
%{_libdir}/libtmglib.so
|
|
|
|
%files -n %{pname}-devel
|
|
%{_libdir}/liblapack.so
|
|
%{_includedir}/lapack.h
|
|
%{_libdir}/cmake/lapack-%{version}/
|
|
%{_libdir}/pkgconfig/lapack.pc
|
|
|
|
%files -n blas-devel
|
|
%{_libdir}/libblas.so
|
|
%{_libdir}/pkgconfig/blas.pc
|
|
|
|
%files -n lapacke-devel
|
|
%doc LAPACKE/README
|
|
%license LAPACKE/LICENSE
|
|
%{_libdir}/liblapacke.so
|
|
%{_includedir}/lapacke*.h
|
|
%{_libdir}/cmake/lapacke-%{version}/
|
|
%{_libdir}/pkgconfig/lapacke.pc
|
|
|
|
%files -n cblas-devel
|
|
%doc CBLAS/README
|
|
%{_libdir}/libcblas.so
|
|
%{_includedir}/cblas*.h
|
|
%{_libdir}/cmake/cblas-%{version}/
|
|
%{_libdir}/pkgconfig/cblas.pc
|
|
|
|
# End of packages built for main flavour
|
|
%else
|
|
|
|
# Start of static flavour
|
|
%files -n %{pname}-devel-static
|
|
%license LICENSE
|
|
%{_libdir}/liblapack.a
|
|
|
|
%files -n cblas-devel-static
|
|
%license LICENSE
|
|
%{_libdir}/libcblas.a
|
|
|
|
%files -n blas-devel-static
|
|
%license LICENSE
|
|
%{_libdir}/libblas.a
|
|
|
|
%files -n lapacke-devel-static
|
|
%license LICENSE
|
|
%{_libdir}/liblapacke.a
|
|
|
|
%files -n tmglib-devel-static
|
|
%license LICENSE
|
|
%{_libdir}/libtmglib.a
|
|
|
|
%endif
|
|
# /SECTION main vs static flavour pkgs
|
|
|
|
%if %{with man}
|
|
%files -n lapack-man
|
|
%{_mandir}/man3/*.3%{?ext_man}
|
|
%endif
|
|
|
|
%changelog
|