RHEL-24851: Fix soname of the 64-bit version libraries
Build lib*64.so libraries with correct soname to avoid creating mangled symlinks (e.g., libblas.so.3 -> libblas64.so.3.9.0). This issue arises because rpmbuild automatically generates a symbolic link baed on the soname. Signed-off-by: Takuya Wakazono <takuya.wakazono@miraclelinux.com>
This commit is contained in:
parent
7a9d9ef6f8
commit
a856400fb8
@ -62,12 +62,14 @@ ifeq "$(SYMBOLSUFFIX)" ""
|
||||
else
|
||||
ar ruv libblas$(SYMBOLSUFFIX).a $(OBJS)
|
||||
ranlib libblas$(SYMBOLSUFFIX).a
|
||||
ifndef RENAMEONLY
|
||||
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
|
||||
$(OBJCOPY) --redefine-syms blas-static-prefix.def libblas$(SYMBOLSUFFIX).a libblas$(SYMBOLSUFFIX).a.fixed
|
||||
rm -rf libblas$(SYMBOLSUFFIX).a
|
||||
mv libblas$(SYMBOLSUFFIX).a.fixed libblas$(SYMBOLSUFFIX).a
|
||||
endif
|
||||
endif
|
||||
|
||||
shared: $(OBJS)
|
||||
ifeq "$(SYMBOLSUFFIX)" ""
|
||||
@ -75,6 +77,7 @@ ifeq "$(SYMBOLSUFFIX)" ""
|
||||
cc $(CFLAGS) -shared -Wl,-soname,libblas.so.@SHORTVER@ -o libblas.so.@LONGVER@ $(OBJS) $(LDFLAGS) -lm -lgfortran -lc
|
||||
else
|
||||
cc $(CFLAGS) -shared -Wl,-soname,libblas$(SYMBOLSUFFIX).so.@SHORTVER@ -o libblas$(SYMBOLSUFFIX).so.@LONGVER@ $(OBJS) $(LDFLAGS) -lm -lgfortran -lc
|
||||
ifndef RENAMEONLY
|
||||
# generate a list of all symbols in shared library and rename with SYMBOLSUFFIX
|
||||
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
|
||||
@ -82,3 +85,4 @@ else
|
||||
rm -rf libblas$(SYMBOLSUFFIX).so.@LONGVER@
|
||||
mv libblas$(SYMBOLSUFFIX).so.@LONGVER@.fixed libblas$(SYMBOLSUFFIX).so.@LONGVER@
|
||||
endif
|
||||
endif
|
||||
|
@ -76,12 +76,14 @@ ifeq "$(SYMBOLSUFFIX)" ""
|
||||
else
|
||||
ar ruv libcblas$(SYMBOLSUFFIX).a $(OBJS)
|
||||
ranlib libcblas$(SYMBOLSUFFIX).a
|
||||
ifndef RENAMEONLY
|
||||
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
|
||||
$(OBJCOPY) --redefine-syms cblas-static-prefix.def libcblas$(SYMBOLSUFFIX).a libcblas$(SYMBOLSUFFIX).a.fixed
|
||||
rm -rf libcblas$(SYMBOLSUFFIX).a
|
||||
mv libcblas$(SYMBOLSUFFIX).a.fixed libcblas$(SYMBOLSUFFIX).a
|
||||
endif
|
||||
endif
|
||||
|
||||
shared: $(OBJS)
|
||||
ifeq "$(SYMBOLSUFFIX)" ""
|
||||
@ -89,6 +91,7 @@ ifeq "$(SYMBOLSUFFIX)" ""
|
||||
cc $(CFLAGS) -shared -Wl,-soname,libcblas.so.@SHORTVER@ -o libcblas.so.@LONGVER@ $(OBJS) $(LDFLAGS) -L../../ -lblas -lm -lgfortran -lc
|
||||
else
|
||||
cc $(CFLAGS) -shared -Wl,-soname,libcblas$(SYMBOLSUFFIX).so.@SHORTVER@ -o libcblas$(SYMBOLSUFFIX).so.@LONGVER@ $(OBJS) $(LDFLAGS) -L../.. -lblas -lm -lgfortran -lc
|
||||
ifndef RENAMEONLY
|
||||
# generate a list of all symbols in shared library and rename with SYMBOLSUFFIX
|
||||
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
|
||||
@ -96,4 +99,4 @@ else
|
||||
rm -rf libcblas$(SYMBOLSUFFIX).so.@LONGVER@
|
||||
mv libcblas$(SYMBOLSUFFIX).so.@LONGVER@.fixed libcblas$(SYMBOLSUFFIX).so.@LONGVER@
|
||||
endif
|
||||
|
||||
endif
|
||||
|
@ -456,12 +456,14 @@ ifeq "$(SYMBOLSUFFIX)" ""
|
||||
else
|
||||
ar ruv liblapack$(SYMBOLSUFFIX).a $(ALLOBJ) $(ALLXOBJ)
|
||||
ranlib liblapack$(SYMBOLSUFFIX).a
|
||||
ifndef RENAMEONLY
|
||||
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
|
||||
$(OBJCOPY) --redefine-syms lapack-static-prefix.def liblapack$(SYMBOLSUFFIX).a liblapack$(SYMBOLSUFFIX).a.fixed
|
||||
rm -rf liblapack$(SYMBOLSUFFIX).a
|
||||
mv liblapack$(SYMBOLSUFFIX).a.fixed liblapack$(SYMBOLSUFFIX).a
|
||||
endif
|
||||
endif
|
||||
|
||||
shared: $(ALLOBJ) $(ALLXOBJ)
|
||||
ifeq "$(SYMBOLSUFFIX)" ""
|
||||
@ -469,6 +471,7 @@ ifeq "$(SYMBOLSUFFIX)" ""
|
||||
cc $(CFLAGS) -shared -Wl,-soname,liblapack.so.@SHORTVER@ -o liblapack.so.@LONGVER@ $(ALLOBJ) $(ALLXOBJ) $(LDFLAGS) -L.. -lblas -lm -lgfortran -lc
|
||||
else
|
||||
cc $(CFLAGS) -shared -Wl,-soname,liblapack$(SYMBOLSUFFIX).so.@SHORTVER@ -o liblapack$(SYMBOLSUFFIX).so.@LONGVER@ $(ALLOBJ) $(ALLXOBJ) $(LDFLAGS) -L.. -lblas -lm -lgfortran -lc
|
||||
ifndef RENAMEONLY
|
||||
# generate a list of all symbols in shared library and rename with SYMBOLSUFFIX
|
||||
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
|
||||
@ -476,3 +479,4 @@ else
|
||||
rm -rf liblapack$(SYMBOLSUFFIX).so.@LONGVER@
|
||||
mv liblapack$(SYMBOLSUFFIX).so.@LONGVER@.fixed liblapack$(SYMBOLSUFFIX).so.@LONGVER@
|
||||
endif
|
||||
endif
|
||||
|
36
lapack.spec
36
lapack.spec
@ -10,8 +10,8 @@
|
||||
Summary: Numerical linear algebra package libraries
|
||||
Name: lapack
|
||||
Version: %{mediumver}.0
|
||||
Release: 10%{?dist}
|
||||
License: BSD
|
||||
Release: 11%{?dist}
|
||||
License: BSD-3-Clause-Open-MPI
|
||||
URL: http://www.netlib.org/lapack/
|
||||
Source0: https://github.com/Reference-LAPACK/lapack/archive/v%{version}.tar.gz
|
||||
Source1: http://www.netlib.org/lapack/manpages.tgz
|
||||
@ -181,12 +181,12 @@ cp libblas.so.%{version} ${RPM_BUILD_DIR}/%{name}-%{version}/
|
||||
%if 0%{?arch64}
|
||||
make clean
|
||||
FFLAGS="$RPM_OPT_O_FLAGS -fdefault-integer-8" make dcabs1.o
|
||||
FFLAGS="$RPM_OPT_FLAGS -fdefault-integer-8" CFLAGS="$RPM_OPT_FLAGS" make static
|
||||
cp libblas.a ${RPM_BUILD_DIR}/%{name}-%{version}/libblas64.a
|
||||
SYMBOLSUFFIX="64" RENAMEONLY=1 FFLAGS="$RPM_OPT_FLAGS -fdefault-integer-8" CFLAGS="$RPM_OPT_FLAGS" make static
|
||||
cp libblas64.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}
|
||||
SYMBOLSUFFIX="64" RENAMEONLY=1 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}
|
||||
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
|
||||
@ -214,11 +214,11 @@ FFLAGS="$RPM_OPT_FLAGS -fPIC" CFLAGS="$RPM_OPT_FLAGS -fPIC -I../include" LDFLAGS
|
||||
cp libcblas.so.%{version} ${RPM_BUILD_DIR}/%{name}-%{version}/
|
||||
%if 0%{?arch64}
|
||||
make clean
|
||||
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
|
||||
SYMBOLSUFFIX="64" RENAMEONLY=1 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
|
||||
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}
|
||||
SYMBOLSUFFIX="64" RENAMEONLY=1 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}
|
||||
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
|
||||
@ -268,8 +268,8 @@ popd
|
||||
# Build the static lapack library
|
||||
pushd SRC
|
||||
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
|
||||
make SYMBOLSUFFIX="64" RENAMEONLY=1 FFLAGS="$RPM_OPT_FLAGS -fdefault-integer-8" CFLAGS="$RPM_OPT_FLAGS" static
|
||||
cp liblapack64.a ${RPM_BUILD_DIR}/%{name}-%{version}/liblapack64.a
|
||||
popd
|
||||
|
||||
# Build the static with pic dlamch, dsecnd, lsame, second, slamch bits (64bit INTEGER)
|
||||
@ -281,8 +281,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
|
||||
make SYMBOLSUFFIX="64" RENAMEONLY=1 FFLAGS="$RPM_OPT_FLAGS -fPIC -fdefault-integer-8" CFLAGS="$RPM_OPT_FLAGS -fPIC" static
|
||||
cp liblapack64.a ${RPM_BUILD_DIR}/%{name}-%{version}/liblapack_pic64.a
|
||||
popd
|
||||
|
||||
# Build the static dlamch, dsecnd, lsame, second, slamch bits
|
||||
@ -335,8 +335,8 @@ popd
|
||||
# Build the shared lapack library
|
||||
pushd SRC
|
||||
make clean
|
||||
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}
|
||||
make SYMBOLSUFFIX="64" RENAMEONLY=1 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}
|
||||
popd
|
||||
|
||||
# Build the shared dlamch, dsecnd, lsame, second, slamch bits
|
||||
@ -625,6 +625,10 @@ sed -i 's|Requires.private: blas|Requires.private: blas64_|g' %{buildroot}%{_lib
|
||||
%endif
|
||||
|
||||
%changelog
|
||||
* Wed Oct 23 2024 Takuya Wakazono <takuya.wakazono@miraclelinux.com> - 3.9.0-11
|
||||
- Fix soname of the 64-bit version libraries
|
||||
Resolves: RHEL-24851
|
||||
|
||||
* Fri Aug 11 2023 Jakub Martisko <jamartis@redhat.com> - 3.9.0-10
|
||||
- Add explicit requires to the devel subpackages
|
||||
Related: rhbz#2229142
|
||||
|
Loading…
Reference in New Issue
Block a user