make separate packages for 64-bit versions with and without suffix (bz1295965)

This commit is contained in:
Iñaki Úcar 2020-06-21 20:03:45 +02:00
parent 2b14903831
commit 08e68c6922
4 changed files with 207 additions and 131 deletions

View File

@ -1,7 +1,7 @@
OBJCOPY = objcopy OBJCOPY = objcopy
ifndef SYMBOLPREFIX ifndef SYMBOLSUFFIX
SYMBOLPREFIX = SYMBOLSUFFIX =
endif endif
clean: clean:
@ -56,29 +56,29 @@ OBJS= $(SBLAS1) $(SBLAS2) $(SBLAS3) $(DBLAS1) $(DBLAS2) $(DBLAS3) \
$(ALLBLAS) $(ALLBLAS)
static: $(OBJS) static: $(OBJS)
ifeq "$(SYMBOLPREFIX)" "" ifeq "$(SYMBOLSUFFIX)" ""
ar ruv libblas.a $(OBJS) ar ruv libblas.a $(OBJS)
ranlib libblas.a ranlib libblas.a
else else
ar ruv libblas$(SYMBOLPREFIX).a $(OBJS) ar ruv libblas$(SYMBOLSUFFIX).a $(OBJS)
ranlib libblas$(SYMBOLPREFIX).a ranlib libblas$(SYMBOLSUFFIX).a
for i in `nm libblas$(SYMBOLPREFIX).a |grep " T " | awk '{print $$3}'`; do echo "$$i" "64_$$i"; done > blas-static-prefix.def.dirty for i in `nm libblas$(SYMBOLSUFFIX).a |grep " T " | awk '{print $$3}'`; do echo "$$i" "64_$$i"; done > blas-static-prefix.def.dirty
sort -n blas-static-prefix.def.dirty | uniq > blas-static-prefix.def sort -n blas-static-prefix.def.dirty | uniq > blas-static-prefix.def
$(OBJCOPY) --redefine-syms blas-static-prefix.def libblas$(SYMBOLPREFIX).a libblas$(SYMBOLPREFIX).a.fixed $(OBJCOPY) --redefine-syms blas-static-prefix.def libblas$(SYMBOLSUFFIX).a libblas$(SYMBOLSUFFIX).a.fixed
rm -rf libblas$(SYMBOLPREFIX).a rm -rf libblas$(SYMBOLSUFFIX).a
mv libblas$(SYMBOLPREFIX).a.fixed libblas$(SYMBOLPREFIX).a mv libblas$(SYMBOLSUFFIX).a.fixed libblas$(SYMBOLSUFFIX).a
endif endif
shared: $(OBJS) shared: $(OBJS)
ifeq "$(SYMBOLPREFIX)" "" ifeq "$(SYMBOLSUFFIX)" ""
# No renaming needed # No renaming needed
cc $(CFLAGS) -shared -Wl,-soname,libblas.so.@SHORTVER@ -o libblas.so.@LONGVER@ $(OBJS) $(LDFLAGS) -lm -lgfortran -lc cc $(CFLAGS) -shared -Wl,-soname,libblas.so.@SHORTVER@ -o libblas.so.@LONGVER@ $(OBJS) $(LDFLAGS) -lm -lgfortran -lc
else else
cc $(CFLAGS) -shared -Wl,-soname,libblas$(SYMBOLPREFIX).so.@SHORTVER@ -o libblas$(SYMBOLPREFIX).so.@LONGVER@ $(OBJS) $(LDFLAGS) -lm -lgfortran -lc cc $(CFLAGS) -shared -Wl,-soname,libblas$(SYMBOLSUFFIX).so.@SHORTVER@ -o libblas$(SYMBOLSUFFIX).so.@LONGVER@ $(OBJS) $(LDFLAGS) -lm -lgfortran -lc
# generate a list of all symbols in shared library and rename with SYMBOLPREFIX # generate a list of all symbols in shared library and rename with SYMBOLSUFFIX
for i in `readelf -Ws libblas$(SYMBOLPREFIX).so.@LONGVER@ | awk '{print $$8}' | grep -v GLIBC |grep -v GFORTRAN |grep -v "Name" `; do echo "$$i" "64_$$i"; done > blas-prefix.def.dirty for i in `readelf -Ws libblas$(SYMBOLSUFFIX).so.@LONGVER@ | awk '{print $$8}' | grep -v GLIBC |grep -v GFORTRAN |grep -v "Name" `; do echo "$$i" "64_$$i"; done > blas-prefix.def.dirty
sort -n blas-prefix.def.dirty | uniq > blas-prefix.def sort -n blas-prefix.def.dirty | uniq > blas-prefix.def
$(OBJCOPY) --redefine-syms blas-prefix.def libblas$(SYMBOLPREFIX).so.@LONGVER@ libblas$(SYMBOLPREFIX).so.@LONGVER@.fixed $(OBJCOPY) --redefine-syms blas-prefix.def libblas$(SYMBOLSUFFIX).so.@LONGVER@ libblas$(SYMBOLSUFFIX).so.@LONGVER@.fixed
rm -rf libblas$(SYMBOLPREFIX).so.@LONGVER@ rm -rf libblas$(SYMBOLSUFFIX).so.@LONGVER@
mv libblas$(SYMBOLPREFIX).so.@LONGVER@.fixed libblas$(SYMBOLPREFIX).so.@LONGVER@ mv libblas$(SYMBOLSUFFIX).so.@LONGVER@.fixed libblas$(SYMBOLSUFFIX).so.@LONGVER@
endif endif

View File

@ -1,7 +1,7 @@
OBJCOPY = objcopy OBJCOPY = objcopy
ifndef SYMBOLPREFIX ifndef SYMBOLSUFFIX
SYMBOLPREFIX = SYMBOLSUFFIX =
endif endif
clean: clean:
@ -70,30 +70,30 @@ OBJS= $(SLEV1) $(DLEV1) $(CLEV1) $(ZLEV1) $(SCLEV1) $(SLEV2) $(DLEV2) $(CLEV2) \
$(ZLEV2) $(SLEV3) $(DLEV3) $(CLEV3) $(ZLEV3) $(ERRHAND) $(ZLEV2) $(SLEV3) $(DLEV3) $(CLEV3) $(ZLEV3) $(ERRHAND)
static: $(OBJS) static: $(OBJS)
ifeq "$(SYMBOLPREFIX)" "" ifeq "$(SYMBOLSUFFIX)" ""
ar ruv libcblas.a $(OBJS) ar ruv libcblas.a $(OBJS)
ranlib libcblas.a ranlib libcblas.a
else else
ar ruv libcblas$(SYMBOLPREFIX).a $(OBJS) ar ruv libcblas$(SYMBOLSUFFIX).a $(OBJS)
ranlib libcblas$(SYMBOLPREFIX).a ranlib libcblas$(SYMBOLSUFFIX).a
for i in `nm libcblas$(SYMBOLPREFIX).a |grep " T " | awk '{print $$3}'`; do echo "$$i" "64_$$i"; done > cblas-static-prefix.def.dirty for i in `nm libcblas$(SYMBOLSUFFIX).a |grep " T " | awk '{print $$3}'`; do echo "$$i" "64_$$i"; done > cblas-static-prefix.def.dirty
sort -n cblas-static-prefix.def.dirty | uniq > cblas-static-prefix.def sort -n cblas-static-prefix.def.dirty | uniq > cblas-static-prefix.def
$(OBJCOPY) --redefine-syms cblas-static-prefix.def libcblas$(SYMBOLPREFIX).a libcblas$(SYMBOLPREFIX).a.fixed $(OBJCOPY) --redefine-syms cblas-static-prefix.def libcblas$(SYMBOLSUFFIX).a libcblas$(SYMBOLSUFFIX).a.fixed
rm -rf libcblas$(SYMBOLPREFIX).a rm -rf libcblas$(SYMBOLSUFFIX).a
mv libcblas$(SYMBOLPREFIX).a.fixed libcblas$(SYMBOLPREFIX).a mv libcblas$(SYMBOLSUFFIX).a.fixed libcblas$(SYMBOLSUFFIX).a
endif endif
shared: $(OBJS) shared: $(OBJS)
ifeq "$(SYMBOLPREFIX)" "" ifeq "$(SYMBOLSUFFIX)" ""
# No renaming needed # No renaming needed
cc $(CFLAGS) -shared -Wl,-soname,libcblas.so.@SHORTVER@ -o libcblas.so.@LONGVER@ $(OBJS) $(LDFLAGS) -L../../ -lblas -lm -lgfortran -lc cc $(CFLAGS) -shared -Wl,-soname,libcblas.so.@SHORTVER@ -o libcblas.so.@LONGVER@ $(OBJS) $(LDFLAGS) -L../../ -lblas -lm -lgfortran -lc
else else
cc $(CFLAGS) -shared -Wl,-soname,libcblas$(SYMBOLPREFIX).so.@SHORTVER@ -o libcblas$(SYMBOLPREFIX).so.@LONGVER@ $(OBJS) $(LDFLAGS) -L../.. -lblas -lm -lgfortran -lc cc $(CFLAGS) -shared -Wl,-soname,libcblas$(SYMBOLSUFFIX).so.@SHORTVER@ -o libcblas$(SYMBOLSUFFIX).so.@LONGVER@ $(OBJS) $(LDFLAGS) -L../.. -lblas -lm -lgfortran -lc
# generate a list of all symbols in shared library and rename with SYMBOLPREFIX # generate a list of all symbols in shared library and rename with SYMBOLSUFFIX
for i in `readelf -Ws libcblas$(SYMBOLPREFIX).so.@LONGVER@ | awk '{print $$8}' | grep -v GLIBC |grep -v GFORTRAN |grep -v "Name" `; do echo "$$i" "64_$$i"; done > cblas-prefix.def.dirty for i in `readelf -Ws libcblas$(SYMBOLSUFFIX).so.@LONGVER@ | awk '{print $$8}' | grep -v GLIBC |grep -v GFORTRAN |grep -v "Name" `; do echo "$$i" "64_$$i"; done > cblas-prefix.def.dirty
sort -n cblas-prefix.def.dirty | uniq > cblas-prefix.def sort -n cblas-prefix.def.dirty | uniq > cblas-prefix.def
$(OBJCOPY) --redefine-syms cblas-prefix.def libcblas$(SYMBOLPREFIX).so.@LONGVER@ libcblas$(SYMBOLPREFIX).so.@LONGVER@.fixed $(OBJCOPY) --redefine-syms cblas-prefix.def libcblas$(SYMBOLSUFFIX).so.@LONGVER@ libcblas$(SYMBOLSUFFIX).so.@LONGVER@.fixed
rm -rf libcblas$(SYMBOLPREFIX).so.@LONGVER@ rm -rf libcblas$(SYMBOLSUFFIX).so.@LONGVER@
mv libcblas$(SYMBOLPREFIX).so.@LONGVER@.fixed libcblas$(SYMBOLPREFIX).so.@LONGVER@ mv libcblas$(SYMBOLSUFFIX).so.@LONGVER@.fixed libcblas$(SYMBOLSUFFIX).so.@LONGVER@
endif endif

View File

@ -2,8 +2,8 @@ include ../make.inc
OBJCOPY = objcopy OBJCOPY = objcopy
ifndef SYMBOLPREFIX ifndef SYMBOLSUFFIX
SYMBOLPREFIX = SYMBOLSUFFIX =
endif endif
clean: clean:
@ -450,29 +450,29 @@ ALLXOBJ=$(SXLASRC) $(DXLASRC) $(CXLASRC) $(ZXLASRC) $(ALLXAUX)
endif endif
static: $(ALLOBJ) $(ALLXOBJ) static: $(ALLOBJ) $(ALLXOBJ)
ifeq "$(SYMBOLPREFIX)" "" ifeq "$(SYMBOLSUFFIX)" ""
ar ruv liblapack.a $(ALLOBJ) $(ALLXOBJ) ar ruv liblapack.a $(ALLOBJ) $(ALLXOBJ)
ranlib liblapack.a ranlib liblapack.a
else else
ar ruv liblapack$(SYMBOLPREFIX).a $(ALLOBJ) $(ALLXOBJ) ar ruv liblapack$(SYMBOLSUFFIX).a $(ALLOBJ) $(ALLXOBJ)
ranlib liblapack$(SYMBOLPREFIX).a ranlib liblapack$(SYMBOLSUFFIX).a
for i in `nm liblapack$(SYMBOLPREFIX).a |grep " T " | awk '{print $$3}'`; do echo "$$i" "64_$$i"; done > lapack-static-prefix.def.dirty for i in `nm liblapack$(SYMBOLSUFFIX).a |grep " T " | awk '{print $$3}'`; do echo "$$i" "64_$$i"; done > lapack-static-prefix.def.dirty
sort -n lapack-static-prefix.def.dirty | uniq > lapack-static-prefix.def sort -n lapack-static-prefix.def.dirty | uniq > lapack-static-prefix.def
$(OBJCOPY) --redefine-syms lapack-static-prefix.def liblapack$(SYMBOLPREFIX).a liblapack$(SYMBOLPREFIX).a.fixed $(OBJCOPY) --redefine-syms lapack-static-prefix.def liblapack$(SYMBOLSUFFIX).a liblapack$(SYMBOLSUFFIX).a.fixed
rm -rf liblapack$(SYMBOLPREFIX).a rm -rf liblapack$(SYMBOLSUFFIX).a
mv liblapack$(SYMBOLPREFIX).a.fixed liblapack$(SYMBOLPREFIX).a mv liblapack$(SYMBOLSUFFIX).a.fixed liblapack$(SYMBOLSUFFIX).a
endif endif
shared: $(ALLOBJ) $(ALLXOBJ) shared: $(ALLOBJ) $(ALLXOBJ)
ifeq "$(SYMBOLPREFIX)" "" ifeq "$(SYMBOLSUFFIX)" ""
# No renaming needed # No renaming needed
cc $(CFLAGS) -shared -Wl,-soname,liblapack.so.@SHORTVER@ -o liblapack.so.@LONGVER@ $(ALLOBJ) $(ALLXOBJ) $(LDFLAGS) -L.. -lblas -lm -lgfortran -lc cc $(CFLAGS) -shared -Wl,-soname,liblapack.so.@SHORTVER@ -o liblapack.so.@LONGVER@ $(ALLOBJ) $(ALLXOBJ) $(LDFLAGS) -L.. -lblas -lm -lgfortran -lc
else else
cc $(CFLAGS) -shared -Wl,-soname,liblapack$(SYMBOLPREFIX).so.@SHORTVER@ -o liblapack$(SYMBOLPREFIX).so.@LONGVER@ $(ALLOBJ) $(ALLXOBJ) $(LDFLAGS) -L.. -lblas -lm -lgfortran -lc cc $(CFLAGS) -shared -Wl,-soname,liblapack$(SYMBOLSUFFIX).so.@SHORTVER@ -o liblapack$(SYMBOLSUFFIX).so.@LONGVER@ $(ALLOBJ) $(ALLXOBJ) $(LDFLAGS) -L.. -lblas -lm -lgfortran -lc
# generate a list of all symbols in shared library and rename with SYMBOLPREFIX # generate a list of all symbols in shared library and rename with SYMBOLSUFFIX
for i in `readelf -Ws liblapack$(SYMBOLPREFIX).so.@LONGVER@ | awk '{print $$8}' | grep -v GLIBC |grep -v GFORTRAN |grep -v "Name" `; do echo "$$i" "64_$$i"; done > lapack-prefix.def.dirty for i in `readelf -Ws liblapack$(SYMBOLSUFFIX).so.@LONGVER@ | awk '{print $$8}' | grep -v GLIBC |grep -v GFORTRAN |grep -v "Name" `; do echo "$$i" "64_$$i"; done > lapack-prefix.def.dirty
sort -n lapack-prefix.def.dirty | uniq > lapack-prefix.def sort -n lapack-prefix.def.dirty | uniq > lapack-prefix.def
$(OBJCOPY) --redefine-syms lapack-prefix.def liblapack$(SYMBOLPREFIX).so.@LONGVER@ liblapack$(SYMBOLPREFIX).so.@LONGVER@.fixed $(OBJCOPY) --redefine-syms lapack-prefix.def liblapack$(SYMBOLSUFFIX).so.@LONGVER@ liblapack$(SYMBOLSUFFIX).so.@LONGVER@.fixed
rm -rf liblapack$(SYMBOLPREFIX).so.@LONGVER@ rm -rf liblapack$(SYMBOLSUFFIX).so.@LONGVER@
mv liblapack$(SYMBOLPREFIX).so.@LONGVER@.fixed liblapack$(SYMBOLPREFIX).so.@LONGVER@ mv liblapack$(SYMBOLSUFFIX).so.@LONGVER@.fixed liblapack$(SYMBOLSUFFIX).so.@LONGVER@
endif endif

View File

@ -10,7 +10,7 @@
Summary: Numerical linear algebra package libraries Summary: Numerical linear algebra package libraries
Name: lapack Name: lapack
Version: %{mediumver}.0 Version: %{mediumver}.0
Release: 3%{?dist} Release: 4%{?dist}
License: BSD License: BSD
URL: http://www.netlib.org/lapack/ URL: http://www.netlib.org/lapack/
Source0: https://github.com/Reference-LAPACK/lapack/archive/v%{version}.tar.gz Source0: https://github.com/Reference-LAPACK/lapack/archive/v%{version}.tar.gz
@ -30,7 +30,7 @@ Patch8: https://github.com/Reference-LAPACK/lapack/commit/87536aa3c8bb0af00f6608
BuildRequires: gcc-gfortran, gawk BuildRequires: gcc-gfortran, gawk
Requires: blas%{?_isa} = %{version}-%{release} Requires: blas%{?_isa} = %{version}-%{release}
%description %global _description_lapack %{expand:
LAPACK (Linear Algebra PACKage) is a standard library for numerical LAPACK (Linear Algebra PACKage) is a standard library for numerical
linear algebra. LAPACK provides routines for solving systems of linear algebra. LAPACK provides routines for solving systems of
simultaneous linear equations, least-squares solutions of linear simultaneous linear equations, least-squares solutions of linear
@ -42,6 +42,14 @@ are also included. LAPACK can handle dense and banded matrices, but
not general sparse matrices. Similar functionality is provided for not general sparse matrices. Similar functionality is provided for
real and complex matrices in both single and double precision. LAPACK real and complex matrices in both single and double precision. LAPACK
is coded in Fortran90 and built with gcc. is coded in Fortran90 and built with gcc.
}
%global _description_blas %{expand:
BLAS (Basic Linear Algebra Subprograms) is a standard library which
provides a number of basic algorithms for numerical algebra.
}
%description %_description_lapack
%package devel %package devel
Summary: LAPACK development libraries Summary: LAPACK development libraries
@ -61,9 +69,7 @@ LAPACK static libraries.
%package -n blas %package -n blas
Summary: The Basic Linear Algebra Subprograms library Summary: The Basic Linear Algebra Subprograms library
%description -n blas %description -n blas %_description_blas
BLAS (Basic Linear Algebra Subprograms) is a standard library which
provides a number of basic algorithms for numerical algebra.
%package -n blas-devel %package -n blas-devel
Summary: BLAS development libraries Summary: BLAS development libraries
@ -85,59 +91,27 @@ BLAS static libraries.
Summary: Numerical linear algebra package libraries Summary: Numerical linear algebra package libraries
Requires: blas64%{?_isa} = %{version}-%{release} Requires: blas64%{?_isa} = %{version}-%{release}
%description -n lapack64 %description -n lapack64 %_description_lapack
LAPACK (Linear Algebra PACKage) is a standard library for numerical
linear algebra. LAPACK provides routines for solving systems of
simultaneous linear equations, least-squares solutions of linear
systems of equations, eigenvalue problems, and singular value
problems. Associated matrix factorizations (LU, Cholesky, QR, SVD,
Schur, and generalized Schur) and related computations (i.e.,
reordering of Schur factorizations and estimating condition numbers)
are also included. LAPACK can handle dense and banded matrices, but
not general sparse matrices. Similar functionality is provided for
real and complex matrices in both single and double precision. LAPACK
is coded in Fortran90 and built with gcc.
This build has 64bit INTEGER support. This build has 64bit INTEGER support.
%package -n lapack64-devel
Summary: LAPACK development libraries (64bit INTEGER)
Requires: lapack64%{?_isa} = %{version}-%{release}
Requires: lapack-devel%{?_isa} = %{version}-%{release}
Requires: blas64-devel%{?_isa} = %{version}-%{release}
%description -n lapack64-devel
LAPACK development libraries (shared, 64bit INTEGER).
%package -n lapack64-static
Summary: LAPACK static libraries (64bit INTEGER)
Requires: lapack64-devel%{?_isa} = %{version}-%{release}
%description -n lapack64-static
LAPACK static libraries (64bit INTEGER).
%package -n blas64 %package -n blas64
Summary: The Basic Linear Algebra Subprograms library (64bit INTEGER) Summary: The Basic Linear Algebra Subprograms library (64bit INTEGER)
%description -n blas64 %description -n blas64 %_description_blas
BLAS (Basic Linear Algebra Subprograms) is a standard library which This build has 64bit INTEGER support.
provides a number of basic algorithms for numerical algebra. This build
has 64bit INTEGER support.
%package -n blas64-devel %package -n lapack64_
Summary: BLAS development libraries Summary: Numerical linear algebra package libraries
Requires: blas64%{?_isa} = %{version}-%{release} Requires: blas64_%{?_isa} = %{version}-%{release}
Requires: blas-devel%{?_isa} = %{version}-%{release}
Requires: gcc-gfortran
%description -n blas64-devel %description -n lapack64_ %_description_lapack
BLAS development libraries (shared). This build has 64bit INTEGER support and a symbol name suffix.
%package -n blas64-static %package -n blas64_
Summary: BLAS static libraries (64bit INTEGER) Summary: The Basic Linear Algebra Subprograms library (64bit INTEGER)
Requires: blas64-devel%{?_isa} = %{version}-%{release}
%description -n blas64-static %description -n blas64_ %_description_blas
BLAS static libraries (64bit INTEGER). This build has 64bit INTEGER support and a symbol name suffix.
%endif %endif
%prep %prep
@ -184,17 +158,26 @@ cp libblas.so.%{version} ${RPM_BUILD_DIR}/%{name}-%{version}/
%if 0%{?arch64} %if 0%{?arch64}
make clean make clean
FFLAGS="$RPM_OPT_O_FLAGS -fdefault-integer-8" make dcabs1.o FFLAGS="$RPM_OPT_O_FLAGS -fdefault-integer-8" make dcabs1.o
SYMBOLPREFIX="64_" FFLAGS="$RPM_OPT_FLAGS -fdefault-integer-8" CFLAGS="$RPM_OPT_FLAGS" make static FFLAGS="$RPM_OPT_FLAGS -fdefault-integer-8" CFLAGS="$RPM_OPT_FLAGS" make static
cp libblas.a ${RPM_BUILD_DIR}/%{name}-%{version}/libblas64.a
make clean
FFLAGS="$RPM_OPT_O_FLAGS -fPIC -fdefault-integer-8" make dcabs1.o
FFLAGS="$RPM_OPT_FLAGS -fPIC -fdefault-integer-8" CFLAGS="$RPM_OPT_FLAGS -fPIC" LDFLAGS="%{build_ldflags}" make shared
cp libblas.so.%{version} ${RPM_BUILD_DIR}/%{name}-%{version}/libblas64.so.%{version}
make clean
FFLAGS="$RPM_OPT_O_FLAGS -fdefault-integer-8" make dcabs1.o
SYMBOLSUFFIX="64_" FFLAGS="$RPM_OPT_FLAGS -fdefault-integer-8" CFLAGS="$RPM_OPT_FLAGS" make static
cp libblas64_.a ${RPM_BUILD_DIR}/%{name}-%{version}/libblas64_.a cp libblas64_.a ${RPM_BUILD_DIR}/%{name}-%{version}/libblas64_.a
make clean make clean
FFLAGS="$RPM_OPT_O_FLAGS -fPIC -fdefault-integer-8" make dcabs1.o FFLAGS="$RPM_OPT_O_FLAGS -fPIC -fdefault-integer-8" make dcabs1.o
SYMBOLPREFIX="64_" FFLAGS="$RPM_OPT_FLAGS -fPIC -fdefault-integer-8" CFLAGS="$RPM_OPT_FLAGS -fPIC" LDFLAGS="%{build_ldflags}" make shared SYMBOLSUFFIX="64_" FFLAGS="$RPM_OPT_FLAGS -fPIC -fdefault-integer-8" CFLAGS="$RPM_OPT_FLAGS -fPIC" LDFLAGS="%{build_ldflags}" make shared
cp libblas64_.so.%{version} ${RPM_BUILD_DIR}/%{name}-%{version}/libblas64_.so.%{version} cp libblas64_.so.%{version} ${RPM_BUILD_DIR}/%{name}-%{version}/libblas64_.so.%{version}
%endif %endif
popd popd
ln -s libblas.so.%{version} libblas.so ln -s libblas.so.%{version} libblas.so
%if 0%{?arch64} %if 0%{?arch64}
ln -s libblas64.so.%{version} libblas64.so
ln -s libblas64_.so.%{version} libblas64_.so ln -s libblas64_.so.%{version} libblas64_.so
%endif %endif
@ -208,16 +191,23 @@ FFLAGS="$RPM_OPT_FLAGS -fPIC" CFLAGS="$RPM_OPT_FLAGS -fPIC -I../include" LDFLAGS
cp libcblas.so.%{version} ${RPM_BUILD_DIR}/%{name}-%{version}/ cp libcblas.so.%{version} ${RPM_BUILD_DIR}/%{name}-%{version}/
%if 0%{?arch64} %if 0%{?arch64}
make clean make clean
SYMBOLPREFIX="64_" FFLAGS="$RPM_OPT_FLAGS -fdefault-integer-8" CFLAGS="$RPM_OPT_FLAGS -I../include" make static FFLAGS="$RPM_OPT_FLAGS -fdefault-integer-8" CFLAGS="$RPM_OPT_FLAGS -I../include" make static
cp libcblas.a ${RPM_BUILD_DIR}/%{name}-%{version}/libcblas64.a
make clean
FFLAGS="$RPM_OPT_FLAGS -fPIC -fdefault-integer-8" CFLAGS="$RPM_OPT_FLAGS -fPIC -I../include" LDFLAGS="%{build_ldflags}" make shared
cp libcblas.so.%{version} ${RPM_BUILD_DIR}/%{name}-%{version}/libcblas64.so.%{version}
make clean
SYMBOLSUFFIX="64_" FFLAGS="$RPM_OPT_FLAGS -fdefault-integer-8" CFLAGS="$RPM_OPT_FLAGS -I../include" make static
cp libcblas64_.a ${RPM_BUILD_DIR}/%{name}-%{version}/libcblas64_.a cp libcblas64_.a ${RPM_BUILD_DIR}/%{name}-%{version}/libcblas64_.a
make clean make clean
SYMBOLPREFIX="64_" FFLAGS="$RPM_OPT_FLAGS -fPIC -fdefault-integer-8" CFLAGS="$RPM_OPT_FLAGS -fPIC -I../include" LDFLAGS="%{build_ldflags}" make shared SYMBOLSUFFIX="64_" FFLAGS="$RPM_OPT_FLAGS -fPIC -fdefault-integer-8" CFLAGS="$RPM_OPT_FLAGS -fPIC -I../include" LDFLAGS="%{build_ldflags}" make shared
cp libcblas64_.so.%{version} ${RPM_BUILD_DIR}/%{name}-%{version}/libcblas64_.so.%{version} cp libcblas64_.so.%{version} ${RPM_BUILD_DIR}/%{name}-%{version}/libcblas64_.so.%{version}
%endif %endif
popd popd
ln -s libcblas.so.%{version} libcblas.so ln -s libcblas.so.%{version} libcblas.so
%if 0%{?arch64} %if 0%{?arch64}
ln -s libcblas64.so.%{version} libcblas64.so
ln -s libcblas64_.so.%{version} libcblas64_.so ln -s libcblas64_.so.%{version} libcblas64_.so
%endif %endif
@ -248,12 +238,40 @@ popd
%if 0%{?arch64} %if 0%{?arch64}
# Build the static dlamch, dsecnd, lsame, second, slamch bits # Build the static dlamch, dsecnd, lsame, second, slamch bits
pushd INSTALL pushd INSTALL
make clean
make FFLAGS_NOOPT="$RPM_OPT_O_FLAGS -fdefault-integer-8" FFLAGS="$RPM_OPT_FLAGS -fdefault-integer-8" make FFLAGS_NOOPT="$RPM_OPT_O_FLAGS -fdefault-integer-8" FFLAGS="$RPM_OPT_FLAGS -fdefault-integer-8"
popd popd
# Build the static lapack library # Build the static lapack library
pushd SRC pushd SRC
make SYMBOLPREFIX="64_" FFLAGS="$RPM_OPT_FLAGS -fdefault-integer-8" CFLAGS="$RPM_OPT_FLAGS" static make clean
make FFLAGS="$RPM_OPT_FLAGS -fdefault-integer-8" CFLAGS="$RPM_OPT_FLAGS" static
cp liblapack.a ${RPM_BUILD_DIR}/%{name}-%{version}/liblapack64.a
popd
# Build the static with pic dlamch, dsecnd, lsame, second, slamch bits (64bit INTEGER)
pushd INSTALL
make clean
make FFLAGS_NOOPT="$RPM_OPT_O_FLAGS -fPIC -fdefault-integer-8" FFLAGS="$RPM_OPT_FLAGS -fPIC -fdefault-integer-8"
popd
# Build the static with pic lapack library (64bit INTEGER)
pushd SRC
make clean
make FFLAGS="$RPM_OPT_FLAGS -fPIC -fdefault-integer-8" CFLAGS="$RPM_OPT_FLAGS -fPIC" static
cp liblapack.a ${RPM_BUILD_DIR}/%{name}-%{version}/liblapack_pic64.a
popd
# Build the static dlamch, dsecnd, lsame, second, slamch bits
pushd INSTALL
make clean
make FFLAGS_NOOPT="$RPM_OPT_O_FLAGS -fdefault-integer-8" FFLAGS="$RPM_OPT_FLAGS -fdefault-integer-8"
popd
# Build the static lapack library
pushd SRC
make clean
make SYMBOLSUFFIX="64_" FFLAGS="$RPM_OPT_FLAGS -fdefault-integer-8" CFLAGS="$RPM_OPT_FLAGS" static
cp liblapack64_.a ${RPM_BUILD_DIR}/%{name}-%{version}/liblapack64_.a cp liblapack64_.a ${RPM_BUILD_DIR}/%{name}-%{version}/liblapack64_.a
popd popd
@ -266,8 +284,8 @@ popd
# Build the static with pic lapack library (64bit INTEGER) # Build the static with pic lapack library (64bit INTEGER)
pushd SRC pushd SRC
make clean make clean
make SYMBOLPREFIX="64_" FFLAGS="$RPM_OPT_FLAGS -fPIC -fdefault-integer-8" CFLAGS="$RPM_OPT_FLAGS -fPIC" static make SYMBOLSUFFIX="64_" FFLAGS="$RPM_OPT_FLAGS -fPIC -fdefault-integer-8" CFLAGS="$RPM_OPT_FLAGS -fPIC" static
cp liblapack64_.a ${RPM_BUILD_DIR}/%{name}-%{version}/liblapack64_pic.a cp liblapack64_.a ${RPM_BUILD_DIR}/%{name}-%{version}/liblapack_pic64_.a
popd popd
%endif %endif
@ -294,14 +312,27 @@ popd
# Build the shared lapack library # Build the shared lapack library
pushd SRC pushd SRC
make clean make clean
make SYMBOLPREFIX="64_" FFLAGS="$RPM_OPT_FLAGS -fPIC -fdefault-integer-8" CFLAGS="$RPM_OPT_FLAGS -fPIC -fdefault-integer-8" LDFLAGS="%{build_ldflags}" shared make FFLAGS="$RPM_OPT_FLAGS -fPIC -fdefault-integer-8" CFLAGS="$RPM_OPT_FLAGS -fPIC -fdefault-integer-8" LDFLAGS="%{build_ldflags}" shared
cp liblapack.so.%{version} ${RPM_BUILD_DIR}/%{name}-%{version}/liblapack64.so.%{version}
popd
# Build the shared dlamch, dsecnd, lsame, second, slamch bits
pushd INSTALL
make clean
make FFLAGS_NOOPT="$RPM_OPT_O_FLAGS -fPIC -fdefault-integer-8" FFLAGS="$RPM_OPT_FLAGS -fPIC -fdefault-integer-8"
popd
# Build the shared lapack library
pushd SRC
make clean
make SYMBOLSUFFIX="64_" FFLAGS="$RPM_OPT_FLAGS -fPIC -fdefault-integer-8" CFLAGS="$RPM_OPT_FLAGS -fPIC -fdefault-integer-8" LDFLAGS="%{build_ldflags}" shared
cp liblapack64_.so.%{version} ${RPM_BUILD_DIR}/%{name}-%{version}/liblapack64_.so.%{version} cp liblapack64_.so.%{version} ${RPM_BUILD_DIR}/%{name}-%{version}/liblapack64_.so.%{version}
popd popd
%endif %endif
ln -s liblapack.so.%{version} liblapack.so ln -s liblapack.so.%{version} liblapack.so
%if 0%{?arch64} %if 0%{?arch64}
ln -s liblapack64.so.%{version} liblapack64.so
ln -s liblapack64_.so.%{version} liblapack64_.so ln -s liblapack64_.so.%{version} liblapack64_.so
%endif %endif
@ -323,12 +354,16 @@ mkdir -p %{buildroot}%{_libdir}
mkdir -p %{buildroot}%{_mandir}/man3 mkdir -p %{buildroot}%{_mandir}/man3
chmod 755 %{buildroot}%{_mandir}/man3 chmod 755 %{buildroot}%{_mandir}/man3
for f in liblapack.so.%{version} libblas.so.%{version} libcblas.so.%{version} liblapacke.so.%{version} libblas.a libcblas.a liblapack.a liblapack_pic.a liblapacke.a; do for f in liblapack.so.%{version} libblas.so.%{version} libcblas.so.%{version} liblapacke.so.%{version} \
libblas.a libcblas.a liblapack.a liblapack_pic.a liblapacke.a; do
cp -f $f ${RPM_BUILD_ROOT}%{_libdir}/$f cp -f $f ${RPM_BUILD_ROOT}%{_libdir}/$f
done done
%if 0%{?arch64} %if 0%{?arch64}
for f in liblapack64_.so.%{version} libblas64_.so.%{version} libcblas64_.so.%{version} libblas64_.a libcblas64_.a liblapack64_.a liblapack64_pic.a; do for f in liblapack64.so.%{version} libblas64.so.%{version} libcblas64.so.%{version} \
liblapack64_.so.%{version} libblas64_.so.%{version} libcblas64_.so.%{version} \
libblas64.a libcblas64.a liblapack64.a liblapack_pic64.a \
libblas64_.a libcblas64_.a liblapack64_.a liblapack_pic64_.a; do
cp -f $f ${RPM_BUILD_ROOT}%{_libdir}/$f cp -f $f ${RPM_BUILD_ROOT}%{_libdir}/$f
done done
%endif %endif
@ -405,6 +440,15 @@ ln -sf liblapacke.so.%{version} liblapacke.so
ln -sf liblapacke.so.%{version} liblapacke.so.%{shortver} ln -sf liblapacke.so.%{version} liblapacke.so.%{shortver}
ln -sf liblapacke.so.%{version} liblapacke.so.%{mediumver} ln -sf liblapacke.so.%{version} liblapacke.so.%{mediumver}
%if 0%{?arch64} %if 0%{?arch64}
ln -sf liblapack64.so.%{version} liblapack64.so
ln -sf liblapack64.so.%{version} liblapack64.so.%{shortver}
ln -sf liblapack64.so.%{version} liblapack64.so.%{mediumver}
ln -sf libblas64.so.%{version} libblas64.so
ln -sf libblas64.so.%{version} libblas64.so.%{shortver}
ln -sf libblas64.so.%{version} libblas64.so.%{mediumver}
ln -sf libcblas64.so.%{version} libcblas64.so
ln -sf libcblas64.so.%{version} libcblas64.so.%{shortver}
ln -sf libcblas64.so.%{version} libcblas64.so.%{mediumver}
ln -sf liblapack64_.so.%{version} liblapack64_.so ln -sf liblapack64_.so.%{version} liblapack64_.so
ln -sf liblapack64_.so.%{version} liblapack64_.so.%{shortver} ln -sf liblapack64_.so.%{version} liblapack64_.so.%{shortver}
ln -sf liblapack64_.so.%{version} liblapack64_.so.%{mediumver} ln -sf liblapack64_.so.%{version} liblapack64_.so.%{mediumver}
@ -425,8 +469,11 @@ sed -i 's|@CMAKE_INSTALL_FULL_INCLUDEDIR@|%{_includedir}|g' %{buildroot}%{_libdi
sed -i 's|@LAPACK_VERSION@|%{version}|g' %{buildroot}%{_libdir}/pkgconfig/lapack.pc sed -i 's|@LAPACK_VERSION@|%{version}|g' %{buildroot}%{_libdir}/pkgconfig/lapack.pc
%if 0%{?arch64} %if 0%{?arch64}
cp -a %{buildroot}%{_libdir}/pkgconfig/lapack.pc %{buildroot}%{_libdir}/pkgconfig/lapack64.pc cp -a %{buildroot}%{_libdir}/pkgconfig/lapack.pc %{buildroot}%{_libdir}/pkgconfig/lapack64.pc
sed -i 's|-llapack|-llapack64_|g' %{buildroot}%{_libdir}/pkgconfig/lapack64.pc sed -i 's|-llapack|-llapack64|g' %{buildroot}%{_libdir}/pkgconfig/lapack64.pc
sed -i 's|blas|blas64|g' %{buildroot}%{_libdir}/pkgconfig/lapack64.pc sed -i 's|blas|blas64|g' %{buildroot}%{_libdir}/pkgconfig/lapack64.pc
cp -a %{buildroot}%{_libdir}/pkgconfig/lapack.pc %{buildroot}%{_libdir}/pkgconfig/lapack64_.pc
sed -i 's|-llapack|-llapack64_|g' %{buildroot}%{_libdir}/pkgconfig/lapack64_.pc
sed -i 's|blas|blas64_|g' %{buildroot}%{_libdir}/pkgconfig/lapack64_.pc
%endif %endif
cp -a BLAS/blas.pc.in %{buildroot}%{_libdir}/pkgconfig/blas.pc cp -a BLAS/blas.pc.in %{buildroot}%{_libdir}/pkgconfig/blas.pc
sed -i 's|@CMAKE_INSTALL_FULL_LIBDIR@|%{_libdir}|g' %{buildroot}%{_libdir}/pkgconfig/blas.pc sed -i 's|@CMAKE_INSTALL_FULL_LIBDIR@|%{_libdir}|g' %{buildroot}%{_libdir}/pkgconfig/blas.pc
@ -434,7 +481,9 @@ sed -i 's|@CMAKE_INSTALL_FULL_INCLUDEDIR@|%{_includedir}|g' %{buildroot}%{_libdi
sed -i 's|@LAPACK_VERSION@|%{version}|g' %{buildroot}%{_libdir}/pkgconfig/blas.pc sed -i 's|@LAPACK_VERSION@|%{version}|g' %{buildroot}%{_libdir}/pkgconfig/blas.pc
%if 0%{?arch64} %if 0%{?arch64}
cp -a %{buildroot}%{_libdir}/pkgconfig/blas.pc %{buildroot}%{_libdir}/pkgconfig/blas64.pc cp -a %{buildroot}%{_libdir}/pkgconfig/blas.pc %{buildroot}%{_libdir}/pkgconfig/blas64.pc
sed -i 's|-lblas|-lblas64_|g' %{buildroot}%{_libdir}/pkgconfig/blas64.pc sed -i 's|-lblas|-lblas64|g' %{buildroot}%{_libdir}/pkgconfig/blas64.pc
cp -a %{buildroot}%{_libdir}/pkgconfig/blas.pc %{buildroot}%{_libdir}/pkgconfig/blas64_.pc
sed -i 's|-lblas|-lblas64_|g' %{buildroot}%{_libdir}/pkgconfig/blas64_.pc
%endif %endif
cp -a LAPACKE/lapacke.pc.in %{buildroot}%{_libdir}/pkgconfig/lapacke.pc cp -a LAPACKE/lapacke.pc.in %{buildroot}%{_libdir}/pkgconfig/lapacke.pc
sed -i 's|@CMAKE_INSTALL_FULL_LIBDIR@|%{_libdir}|g' %{buildroot}%{_libdir}/pkgconfig/lapacke.pc sed -i 's|@CMAKE_INSTALL_FULL_LIBDIR@|%{_libdir}|g' %{buildroot}%{_libdir}/pkgconfig/lapacke.pc
@ -446,8 +495,11 @@ sed -i 's|@CMAKE_INSTALL_FULL_INCLUDEDIR@|%{_includedir}/cblas|g' %{buildroot}%{
sed -i 's|@LAPACK_VERSION@|%{version}|g' %{buildroot}%{_libdir}/pkgconfig/cblas.pc sed -i 's|@LAPACK_VERSION@|%{version}|g' %{buildroot}%{_libdir}/pkgconfig/cblas.pc
%if 0%{?arch64} %if 0%{?arch64}
cp -a %{buildroot}%{_libdir}/pkgconfig/cblas.pc %{buildroot}%{_libdir}/pkgconfig/cblas64.pc cp -a %{buildroot}%{_libdir}/pkgconfig/cblas.pc %{buildroot}%{_libdir}/pkgconfig/cblas64.pc
sed -i 's|-lcblas|-lcblas64_|g' %{buildroot}%{_libdir}/pkgconfig/cblas64.pc sed -i 's|-lcblas|-lcblas64|g' %{buildroot}%{_libdir}/pkgconfig/cblas64.pc
sed -i 's|Requires.private: blas|Requires.private: blas64|g' %{buildroot}%{_libdir}/pkgconfig/cblas64.pc sed -i 's|Requires.private: blas|Requires.private: blas64|g' %{buildroot}%{_libdir}/pkgconfig/cblas64.pc
cp -a %{buildroot}%{_libdir}/pkgconfig/cblas.pc %{buildroot}%{_libdir}/pkgconfig/cblas64_.pc
sed -i 's|-lcblas|-lcblas64_|g' %{buildroot}%{_libdir}/pkgconfig/cblas64_.pc
sed -i 's|Requires.private: blas|Requires.private: blas64_|g' %{buildroot}%{_libdir}/pkgconfig/cblas64_.pc
%endif %endif
%ldconfig_scriptlets %ldconfig_scriptlets
@ -456,8 +508,10 @@ sed -i 's|Requires.private: blas|Requires.private: blas64|g' %{buildroot}%{_libd
%if 0%{?arch64} %if 0%{?arch64}
%ldconfig_scriptlets -n lapack64 %ldconfig_scriptlets -n lapack64
%ldconfig_scriptlets -n lapack64_
%ldconfig_scriptlets -n blas64 %ldconfig_scriptlets -n blas64
%ldconfig_scriptlets -n blas64_
%endif %endif
%files -f lapackmans %files -f lapackmans
@ -471,11 +525,23 @@ sed -i 's|Requires.private: blas|Requires.private: blas64|g' %{buildroot}%{_libd
%{_libdir}/liblapacke.so %{_libdir}/liblapacke.so
%{_libdir}/pkgconfig/lapack.pc %{_libdir}/pkgconfig/lapack.pc
%{_libdir}/pkgconfig/lapacke.pc %{_libdir}/pkgconfig/lapacke.pc
%if 0%{?arch64}
%{_libdir}/liblapack64.so
%{_libdir}/pkgconfig/lapack64.pc
%{_libdir}/liblapack64_.so
%{_libdir}/pkgconfig/lapack64_.pc
%endif
%files static %files static
%{_libdir}/liblapack.a %{_libdir}/liblapack.a
%{_libdir}/liblapack_pic.a %{_libdir}/liblapack_pic.a
%{_libdir}/liblapacke.a %{_libdir}/liblapacke.a
%if 0%{?arch64}
%{_libdir}/liblapack64.a
%{_libdir}/liblapack_pic64.a
%{_libdir}/liblapack64_.a
%{_libdir}/liblapack_pic64_.a
%endif
%files -n blas -f blasmans %files -n blas -f blasmans
%doc blasqr.ps LICENSE %doc blasqr.ps LICENSE
@ -488,41 +554,51 @@ sed -i 's|Requires.private: blas|Requires.private: blas64|g' %{buildroot}%{_libd
%{_libdir}/libcblas.so %{_libdir}/libcblas.so
%{_libdir}/pkgconfig/blas.pc %{_libdir}/pkgconfig/blas.pc
%{_libdir}/pkgconfig/cblas.pc %{_libdir}/pkgconfig/cblas.pc
%if 0%{?arch64}
%{_libdir}/libblas64.so
%{_libdir}/libcblas64.so
%{_libdir}/pkgconfig/blas64.pc
%{_libdir}/pkgconfig/cblas64.pc
%{_libdir}/libblas64_.so
%{_libdir}/libcblas64_.so
%{_libdir}/pkgconfig/blas64_.pc
%{_libdir}/pkgconfig/cblas64_.pc
%endif
%files -n blas-static %files -n blas-static
%{_libdir}/libblas.a %{_libdir}/libblas.a
%{_libdir}/libcblas.a %{_libdir}/libcblas.a
%if 0%{?arch64}
%{_libdir}/libblas64.a
%{_libdir}/libcblas64.a
%{_libdir}/libblas64_.a
%{_libdir}/libcblas64_.a
%endif
%if 0%{?arch64} %if 0%{?arch64}
%files -n blas64 %files -n blas64
%doc LICENSE %doc LICENSE
%{_libdir}/libblas64_.so.* %{_libdir}/libblas64.so.*
%{_libdir}/libcblas64_.so.* %{_libdir}/libcblas64.so.*
%files -n blas64-devel
%{_libdir}/libblas64_.so
%{_libdir}/libcblas64_.so
%{_libdir}/pkgconfig/blas64.pc
%{_libdir}/pkgconfig/cblas64.pc
%files -n blas64-static
%{_libdir}/libblas64_.a
%{_libdir}/libcblas64_.a
%files -n lapack64 %files -n lapack64
%doc README.md LICENSE %doc README.md LICENSE
%{_libdir}/liblapack64.so.*
%files -n blas64_
%doc LICENSE
%{_libdir}/libblas64_.so.*
%{_libdir}/libcblas64_.so.*
%files -n lapack64_
%doc README.md LICENSE
%{_libdir}/liblapack64_.so.* %{_libdir}/liblapack64_.so.*
%files -n lapack64-devel
%{_libdir}/liblapack64_.so
%{_libdir}/pkgconfig/lapack64.pc
%files -n lapack64-static
%{_libdir}/liblapack64_.a
%{_libdir}/liblapack64_pic.a
%endif %endif
%changelog %changelog
* Sun Jun 21 2020 Iñaki Úcar <iucar@fedoraproject.org> - 3.9.0-4
- make separate packages for 64-bit versions with and without suffix (bz1295965)
* Thu Mar 19 2020 Tom Callaway <spot@fedoraproject.org> - 3.9.0-3 * Thu Mar 19 2020 Tom Callaway <spot@fedoraproject.org> - 3.9.0-3
- apply upstream fix for accidental removal of deprecated symbols from header file - apply upstream fix for accidental removal of deprecated symbols from header file