#1 make separate packages for 64-bit versions with and without suffix (bz1295965)
Merged 3 years ago by spot. Opened 3 years ago by iucar.
Unknown source master  into  master

file modified
+16 -16
@@ -1,7 +1,7 @@

  OBJCOPY = objcopy

  

- ifndef SYMBOLPREFIX

- SYMBOLPREFIX =

+ ifndef SYMBOLSUFFIX

+ SYMBOLSUFFIX =

  endif

  

  clean:
@@ -56,29 +56,29 @@

  	$(ALLBLAS)

  

  static: $(OBJS)

- ifeq "$(SYMBOLPREFIX)" ""

+ ifeq "$(SYMBOLSUFFIX)" ""

  	ar ruv libblas.a $(OBJS)

  	ranlib libblas.a

  else

- 	ar ruv libblas$(SYMBOLPREFIX).a $(OBJS)

- 	ranlib libblas$(SYMBOLPREFIX).a

- 	for i in `nm libblas$(SYMBOLPREFIX).a |grep " T " | awk '{print $$3}'`; do echo "$$i" "64_$$i"; done > blas-static-prefix.def.dirty

+ 	ar ruv libblas$(SYMBOLSUFFIX).a $(OBJS)

+ 	ranlib libblas$(SYMBOLSUFFIX).a

+ 	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$(SYMBOLPREFIX).a libblas$(SYMBOLPREFIX).a.fixed

- 	rm -rf libblas$(SYMBOLPREFIX).a

- 	mv libblas$(SYMBOLPREFIX).a.fixed libblas$(SYMBOLPREFIX).a

+ 	$(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

  

  shared: $(OBJS)

- ifeq "$(SYMBOLPREFIX)" ""

+ ifeq "$(SYMBOLSUFFIX)" ""

  	# No renaming needed

  	cc $(CFLAGS) -shared -Wl,-soname,libblas.so.@SHORTVER@ -o libblas.so.@LONGVER@ $(OBJS) $(LDFLAGS) -lm -lgfortran -lc

  else

- 	cc $(CFLAGS) -shared -Wl,-soname,libblas$(SYMBOLPREFIX).so.@SHORTVER@ -o libblas$(SYMBOLPREFIX).so.@LONGVER@ $(OBJS) $(LDFLAGS) -lm -lgfortran -lc

- 	# generate a list of all symbols in shared library and rename with SYMBOLPREFIX

- 	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

+ 	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 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

- 	$(OBJCOPY) --redefine-syms blas-prefix.def libblas$(SYMBOLPREFIX).so.@LONGVER@ libblas$(SYMBOLPREFIX).so.@LONGVER@.fixed

- 	rm -rf libblas$(SYMBOLPREFIX).so.@LONGVER@

- 	mv libblas$(SYMBOLPREFIX).so.@LONGVER@.fixed libblas$(SYMBOLPREFIX).so.@LONGVER@

+ 	$(OBJCOPY) --redefine-syms blas-prefix.def libblas$(SYMBOLSUFFIX).so.@LONGVER@ libblas$(SYMBOLSUFFIX).so.@LONGVER@.fixed

+ 	rm -rf libblas$(SYMBOLSUFFIX).so.@LONGVER@

+ 	mv libblas$(SYMBOLSUFFIX).so.@LONGVER@.fixed libblas$(SYMBOLSUFFIX).so.@LONGVER@

  endif

file modified
+16 -16
@@ -1,7 +1,7 @@

  OBJCOPY = objcopy

  

- ifndef SYMBOLPREFIX

- SYMBOLPREFIX =

+ ifndef SYMBOLSUFFIX

+ SYMBOLSUFFIX =

  endif

  

  clean:
@@ -70,30 +70,30 @@

        $(ZLEV2) $(SLEV3) $(DLEV3) $(CLEV3) $(ZLEV3) $(ERRHAND)

  

  static: $(OBJS)

- ifeq "$(SYMBOLPREFIX)" ""

+ ifeq "$(SYMBOLSUFFIX)" ""

  	ar ruv libcblas.a $(OBJS)

  	ranlib libcblas.a

  else

- 	ar ruv libcblas$(SYMBOLPREFIX).a $(OBJS)

- 	ranlib libcblas$(SYMBOLPREFIX).a

- 	for i in `nm libcblas$(SYMBOLPREFIX).a |grep " T " | awk '{print $$3}'`; do echo "$$i" "64_$$i"; done > cblas-static-prefix.def.dirty

+ 	ar ruv libcblas$(SYMBOLSUFFIX).a $(OBJS)

+ 	ranlib libcblas$(SYMBOLSUFFIX).a

+ 	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$(SYMBOLPREFIX).a libcblas$(SYMBOLPREFIX).a.fixed

- 	rm -rf libcblas$(SYMBOLPREFIX).a

- 	mv libcblas$(SYMBOLPREFIX).a.fixed libcblas$(SYMBOLPREFIX).a

+ 	$(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

  

  shared: $(OBJS)

- ifeq "$(SYMBOLPREFIX)" ""

+ ifeq "$(SYMBOLSUFFIX)" ""

  	# No renaming needed

  	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$(SYMBOLPREFIX).so.@SHORTVER@ -o libcblas$(SYMBOLPREFIX).so.@LONGVER@ $(OBJS) $(LDFLAGS) -L../.. -lblas -lm -lgfortran -lc

- 	# generate a list of all symbols in shared library and rename with SYMBOLPREFIX

- 	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

+ 	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 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

- 	$(OBJCOPY) --redefine-syms cblas-prefix.def libcblas$(SYMBOLPREFIX).so.@LONGVER@ libcblas$(SYMBOLPREFIX).so.@LONGVER@.fixed

- 	rm -rf libcblas$(SYMBOLPREFIX).so.@LONGVER@

- 	mv libcblas$(SYMBOLPREFIX).so.@LONGVER@.fixed libcblas$(SYMBOLPREFIX).so.@LONGVER@

+ 	$(OBJCOPY) --redefine-syms cblas-prefix.def libcblas$(SYMBOLSUFFIX).so.@LONGVER@ libcblas$(SYMBOLSUFFIX).so.@LONGVER@.fixed

+ 	rm -rf libcblas$(SYMBOLSUFFIX).so.@LONGVER@

+ 	mv libcblas$(SYMBOLSUFFIX).so.@LONGVER@.fixed libcblas$(SYMBOLSUFFIX).so.@LONGVER@

  endif

  

file modified
+16 -16
@@ -2,8 +2,8 @@

  

  OBJCOPY = objcopy

  

- ifndef SYMBOLPREFIX

- SYMBOLPREFIX =

+ ifndef SYMBOLSUFFIX

+ SYMBOLSUFFIX =

  endif

  

  clean:
@@ -450,29 +450,29 @@

  endif

  

  static: $(ALLOBJ) $(ALLXOBJ)

- ifeq "$(SYMBOLPREFIX)" ""

+ ifeq "$(SYMBOLSUFFIX)" ""

  	ar ruv liblapack.a $(ALLOBJ) $(ALLXOBJ)

  	ranlib liblapack.a

  else

- 	ar ruv liblapack$(SYMBOLPREFIX).a $(ALLOBJ) $(ALLXOBJ)

- 	ranlib liblapack$(SYMBOLPREFIX).a

- 	for i in `nm liblapack$(SYMBOLPREFIX).a |grep " T " | awk '{print $$3}'`; do echo "$$i" "64_$$i"; done > lapack-static-prefix.def.dirty

+ 	ar ruv liblapack$(SYMBOLSUFFIX).a $(ALLOBJ) $(ALLXOBJ)

+ 	ranlib liblapack$(SYMBOLSUFFIX).a

+ 	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$(SYMBOLPREFIX).a liblapack$(SYMBOLPREFIX).a.fixed

- 	rm -rf liblapack$(SYMBOLPREFIX).a

- 	mv liblapack$(SYMBOLPREFIX).a.fixed liblapack$(SYMBOLPREFIX).a

+ 	$(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

  

  shared: $(ALLOBJ) $(ALLXOBJ)

- ifeq "$(SYMBOLPREFIX)" ""

+ ifeq "$(SYMBOLSUFFIX)" ""

  	# No renaming needed

  	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$(SYMBOLPREFIX).so.@SHORTVER@ -o liblapack$(SYMBOLPREFIX).so.@LONGVER@ $(ALLOBJ) $(ALLXOBJ) $(LDFLAGS) -L.. -lblas -lm -lgfortran -lc

- 	# generate a list of all symbols in shared library and rename with SYMBOLPREFIX

- 	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

+ 	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 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

- 	$(OBJCOPY) --redefine-syms lapack-prefix.def liblapack$(SYMBOLPREFIX).so.@LONGVER@ liblapack$(SYMBOLPREFIX).so.@LONGVER@.fixed

- 	rm -rf liblapack$(SYMBOLPREFIX).so.@LONGVER@

- 	mv liblapack$(SYMBOLPREFIX).so.@LONGVER@.fixed liblapack$(SYMBOLPREFIX).so.@LONGVER@

+ 	$(OBJCOPY) --redefine-syms lapack-prefix.def liblapack$(SYMBOLSUFFIX).so.@LONGVER@ liblapack$(SYMBOLSUFFIX).so.@LONGVER@.fixed

+ 	rm -rf liblapack$(SYMBOLSUFFIX).so.@LONGVER@

+ 	mv liblapack$(SYMBOLSUFFIX).so.@LONGVER@.fixed liblapack$(SYMBOLSUFFIX).so.@LONGVER@

  endif

file modified
+158 -82
@@ -10,7 +10,7 @@

  Summary: Numerical linear algebra package libraries

  Name: lapack

  Version: %{mediumver}.0

- Release: 3%{?dist}

+ Release: 4%{?dist}

  License: BSD

  URL: http://www.netlib.org/lapack/

  Source0: https://github.com/Reference-LAPACK/lapack/archive/v%{version}.tar.gz
@@ -30,7 +30,7 @@

  BuildRequires: gcc-gfortran, gawk

  Requires: blas%{?_isa} = %{version}-%{release}

  

- %description

+ %global _description_lapack %{expand:

  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
@@ -42,6 +42,14 @@

  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.

+ }

+ 

+ %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

  Summary: LAPACK development libraries
@@ -61,9 +69,7 @@

  %package -n blas

  Summary: The Basic Linear Algebra Subprograms library

  

- %description -n blas

- BLAS (Basic Linear Algebra Subprograms) is a standard library which

- provides a number of basic algorithms for numerical algebra.

+ %description -n blas %_description_blas

  

  %package -n blas-devel

  Summary: BLAS development libraries
@@ -85,59 +91,27 @@

  Summary: Numerical linear algebra package libraries

  Requires: blas64%{?_isa} = %{version}-%{release}

  

- %description -n lapack64

- 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.

+ %description -n lapack64 %_description_lapack

  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

  Summary: The Basic Linear Algebra Subprograms library (64bit INTEGER)

  

- %description -n blas64

- BLAS (Basic Linear Algebra Subprograms) is a standard library which

- provides a number of basic algorithms for numerical algebra. This build

- has 64bit INTEGER support.

+ %description -n blas64 %_description_blas

+ This build has 64bit INTEGER support.

  

- %package -n blas64-devel

- Summary: BLAS development libraries

- Requires: blas64%{?_isa} = %{version}-%{release}

- Requires: blas-devel%{?_isa} = %{version}-%{release}

- Requires: gcc-gfortran

+ %package -n lapack64_

+ Summary: Numerical linear algebra package libraries

+ Requires: blas64_%{?_isa} = %{version}-%{release}

  

- %description -n blas64-devel

- BLAS development libraries (shared).

+ %description -n lapack64_ %_description_lapack

+ This build has 64bit INTEGER support and a symbol name suffix.

  

- %package -n blas64-static

- Summary: BLAS static libraries (64bit INTEGER)

- Requires: blas64-devel%{?_isa} = %{version}-%{release}

+ %package -n blas64_

+ Summary: The Basic Linear Algebra Subprograms library (64bit INTEGER)

  

- %description -n blas64-static

- BLAS static libraries (64bit INTEGER).

+ %description -n blas64_ %_description_blas

+ This build has 64bit INTEGER support and a symbol name suffix.

  %endif

  

  %prep
@@ -184,17 +158,26 @@

  %if 0%{?arch64}

  make clean

  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

  make clean

  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}

  %endif

  popd

  

  ln -s libblas.so.%{version} libblas.so

  %if 0%{?arch64}

+ ln -s libblas64.so.%{version} libblas64.so

  ln -s libblas64_.so.%{version} libblas64_.so

  %endif

  
@@ -208,16 +191,23 @@

  cp libcblas.so.%{version} ${RPM_BUILD_DIR}/%{name}-%{version}/

  %if 0%{?arch64}

  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

  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}

  %endif

  popd

  

  ln -s libcblas.so.%{version} libcblas.so

  %if 0%{?arch64}

+ ln -s libcblas64.so.%{version} libcblas64.so

  ln -s libcblas64_.so.%{version} libcblas64_.so

  %endif

  
@@ -248,12 +238,40 @@

  %if 0%{?arch64}

  # 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 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 SYMBOLPREFIX="64_" FFLAGS="$RPM_OPT_FLAGS -fdefault-integer-8" CFLAGS="$RPM_OPT_FLAGS" static

+ 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

  popd

  
@@ -266,8 +284,8 @@

  # Build the static with pic lapack library (64bit INTEGER)

  pushd SRC

  make clean

- make SYMBOLPREFIX="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

+ 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}/liblapack_pic64_.a

  popd

  %endif

  
@@ -294,14 +312,27 @@

  # Build the shared lapack library

  pushd SRC

  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}

  popd

  %endif

  

  ln -s liblapack.so.%{version} liblapack.so

- 

  %if 0%{?arch64}

+ ln -s liblapack64.so.%{version} liblapack64.so

  ln -s liblapack64_.so.%{version} liblapack64_.so

  %endif

  
@@ -323,12 +354,16 @@

  mkdir -p %{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

  done

  

  %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

  done

  %endif
@@ -405,6 +440,15 @@

  ln -sf liblapacke.so.%{version} liblapacke.so.%{shortver}

  ln -sf liblapacke.so.%{version} liblapacke.so.%{mediumver}

  %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.%{shortver}

  ln -sf liblapack64_.so.%{version} liblapack64_.so.%{mediumver}
@@ -425,8 +469,11 @@

  sed -i 's|@LAPACK_VERSION@|%{version}|g' %{buildroot}%{_libdir}/pkgconfig/lapack.pc

  %if 0%{?arch64}

  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

+ 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

  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
@@ -434,7 +481,9 @@

  sed -i 's|@LAPACK_VERSION@|%{version}|g' %{buildroot}%{_libdir}/pkgconfig/blas.pc

  %if 0%{?arch64}

  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

  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
@@ -446,8 +495,11 @@

  sed -i 's|@LAPACK_VERSION@|%{version}|g' %{buildroot}%{_libdir}/pkgconfig/cblas.pc

  %if 0%{?arch64}

  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

+ 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

  

  %ldconfig_scriptlets
@@ -456,8 +508,10 @@

  

  %if 0%{?arch64}

  %ldconfig_scriptlets -n lapack64

+ %ldconfig_scriptlets -n lapack64_

  

  %ldconfig_scriptlets -n blas64

+ %ldconfig_scriptlets -n blas64_

  %endif

  

  %files -f lapackmans
@@ -471,11 +525,23 @@

  %{_libdir}/liblapacke.so

  %{_libdir}/pkgconfig/lapack.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

  %{_libdir}/liblapack.a

  %{_libdir}/liblapack_pic.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

  %doc blasqr.ps LICENSE
@@ -488,41 +554,51 @@

  %{_libdir}/libcblas.so

  %{_libdir}/pkgconfig/blas.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

  %{_libdir}/libblas.a

  %{_libdir}/libcblas.a

+ %if 0%{?arch64}

+ %{_libdir}/libblas64.a

+ %{_libdir}/libcblas64.a

+ %{_libdir}/libblas64_.a

+ %{_libdir}/libcblas64_.a

+ %endif

  

  %if 0%{?arch64}

  %files -n blas64

  %doc LICENSE

- %{_libdir}/libblas64_.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

+ %{_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 blas64_

+ %doc LICENSE

+ %{_libdir}/libblas64_.so.*

+ %{_libdir}/libcblas64_.so.*

  

- %files -n lapack64-static

- %{_libdir}/liblapack64_.a

- %{_libdir}/liblapack64_pic.a

+ %files -n lapack64_

+ %doc README.md LICENSE

+ %{_libdir}/liblapack64_.so.*

  %endif

  

  %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

  - apply upstream fix for accidental removal of deprecated symbols from header file

  

Changes required to follow openblas' packaging (fixes #1295965):

  • blas, lapack: contain the 32-bit versions.
  • blas64, lapack64: contain the 64-bit versions.
  • blas64_, lapack64_: contain the 64-bit versions with suffixed symbols, so that they don't collide with the 32-bit version.
  • blas-devel, lapack-devel: contain all development files, for 32- and 64-bits, with and without suffix.
  • blas-static, lapack-static: contain all the static libraries, for 32- and 64-bits, with and without suffix.

Pull-Request has been merged by spot

3 years ago

BTW, note that the SPEC can be optimized to avoid building the 64-bit versions two times, but given that symbol renaming was embed in the makefiles, I didn't want to touch too many things to be in the safe side.