Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package openblas for openSUSE:Factory checked in at 2026-07-06 12:27:05 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/openblas (Old) and /work/SRC/openSUSE:Factory/.openblas.new.1982 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "openblas" Mon Jul 6 12:27:05 2026 rev:77 rq:1363694 version:0.3.33 Changes: -------- --- /work/SRC/openSUSE:Factory/openblas/openblas.changes 2026-05-16 19:24:27.609877631 +0200 +++ /work/SRC/openSUSE:Factory/.openblas.new.1982/openblas.changes 2026-07-06 12:27:08.388580500 +0200 @@ -1,0 +2,142 @@ +Tue Jun 30 06:48:59 UTC 2026 - Christian Goll <[email protected]> + +- disable tests for i586 as sblat tests fail + +------------------------------------------------------------------- +Fri Jun 12 14:55:50 UTC 2026 - Christian Goll <[email protected]> + +- Added compatlib packages (compatlibopenblas_serial0, compatlibopenblas_openmp0, + compatlibopenblas_pthreads0) that provide update-alternatives support for + backward compatibility (bsc#1268086) (bsc#1268086) +- Compatlib packages are automatically installed via Supplements when upgrading + from OpenBLAS >= 0.3.30 to maintain existing update-alternatives configurations +- The main library packages no longer require update-alternatives, making them + suitable for transactional systems. Users who need update-alternatives support + can explicitly install the compatlib packages +- Fixed pkgconfig and cmake symlinks to point directly to flavor-specific + directories (e.g., /usr/lib64/openblas-openmp/) instead of through + update-alternatives, ensuring consistent library resolution +- Updated README.SUSE to document the new packaging structure and compatlib usage + +- Update to version 0.3.33 + general: + * fixed incorrect cast in SBGEMM test case causing spurious failures + * fixed invalid memory access in converted C CBLAS tests + * made BIGNUMA setting automatic when cores exceed 256 + * imported recent Reference-LAPACK 3.13.0 updates including: + - implemented LARF1F and ORM2R functions + - changed loop order in GETC2 for better performance + - added NaN checks for input matrix A in GEEV + - fixed support for jobu/v in LAPACKE_GESVDQ_WORK + - fixed workspace size calculation in TGSEN + - optimized looping in LACPY/LASCL/LANTR with fat matrix and UPLO=L + arm64: + * worked around serious GCC15 miscompilation of DDOT kernel affecting most non-SVE targets + * fixed accuracy issue in GEMV kernel for Neoverse V1 and SVE targets + * fixed broken STRMM and SSYMM in DYNAMIC_ARCH builds on non-SME hardware + * added optimized SHGEMM kernel for Neoverse N2 + * added autodetection of Cortex A75/A76 and Neoverse V3 + loongarch64: + * fixed build failure from missing half-precision float type support + * fixed long-standing bug in asserting 64bit capability in c_check helper + x86_64: + * added workaround for LLVM miscompilation of AVX512 GEMM kernels + * fixed CMake compilation with NVIDIA HPC compiler + +- Update to version 0.3.32 + general: + * fixed LAPACK GESV reimplementation to compute LU factorization even when NRHS is zero + * improved error message when compile-time buffer allocation exceeded + * fixed non-serialized access problem in parallelized SYRK by concurrent callers + * fixed ABI mismatch in internal CDOT/ZDOT version used by C fallback LAPACK + * improved f_check script for detecting Fortran compiler with embedded dashes in paths + * fixed memory access issues in utests detected by Address Sanitizer + * fixed Makefile errors when only subset of precision types selected + * fixed OpenMP compiler option for Intel Ifx compiler + arm64: + * fixed potential miscompilation of SDOT/DDOT/DSDOT kernels + * improved BGEMM and SBGEMM kernel performance for Neoverse V2 + * added optimized SSUM and DSUM kernels for Neoverse N1 + * added preliminary Neoverse V3 support as NEOVERSEV2 + * added cpu autodetection for Cortex A725 and X925 + * fixed compilation of GEMM kernels for VORTEXM4/ARMV9SME without multithreading + loongarch64: + * fixed POTRF returning wrong results on LA464 from incorrect parameter setting + power: + * fixed compilation problems from missing half-precision float support + * fixed potential POWER10 DGEMV kernel miscompilation by limiting optimization level + * fixed SCAL issue on PPCG4/PPC970 running Linux + riscv64: + * optimized CROT/ZROT kernel for vector length 128 in non-unit stride path + * improved SBGEMM/SHGEMM and related type conversion helper functions + * fixed probing for BFLOAT16 support in DYNAMIC_ARCH cpu detection + x86_64: + * fixed potential gcc 15.x miscompilation of AVX512 SGEMM kernel for small sizes + * fixed SROT and DROT kernels for Haswell to have consistent FMA rounding + * added automatic detection of Intel Arrow Lake H/U, Panther Lake, and Jasper Lake + * added detection of Intel Emerald Rapids and upcoming models + * updated cache size translation table in cpu model autodetection + * improved cpu detection fallback to include Nehalem as non-AVX option + * fixed Makefile build issue with clang and SkylakeX SGEMM kernel + +- Update to version 0.3.31 + general: + * reverted matrix partitioning optimization from 0.3.30 that could cause race conditions in GEMM + * added bfloat16 extensions BGEMM and BGEMV + * added BLAS interface for GEMM_BATCH extensions + * added GEMM_BATCH_STRIDED extensions and CBLAS interface + * added basic infrastructure for half-precision float (FP16) format using SH prefix + * reimplemented LAPACK SLAED3/DLAED3 using multithreading, improving SSYEVD/DSYEVD performance + * limited memory allocation retries to avoid infinite hanging on low-memory systems + * fixed thread lockup with python 3.9 or older and numpy + * introduced problem size thresholds for multithreading in STRMV/DTRMV, CHER/ZHER functions, and SGER/DGER + * improved autodetection of Fortran compiler + * fixed INTERFACE64=1 option passing to flang-new compiler + * fixed potential deadlock after fork() in multithreaded code + * fixed CMake builds on FreeBSD and from Cygwin + * fixed cross-compilation to RISCV targets via CMake + * fixed installation of cblas.h when NO_CBLAS=0 + * fixed missing user-defined pre/postfixes on functions in lapack.h and lapacke.h + arm64: + * building BFLOAT16 kernels now enabled by default + * improved overall GEMM, SYMM and HEMM performance on A64FX + * improved SDOT/DDOT performance on A64FX + * improved multithreading performance of SDOT/DDOT on A64FX via throttling table + * improved SGER/DGER performance on A64FX and NEOVERSEV1 + * improved multithreading GEMM performance on A64FX and NEOVERSEV1 + * improved GEMV kernel for SVE-capable targets + * improved multithreading SGEMM on NEOVERSEV1 and V2 + * added optimized SAXPY/DAXPY SVE kernels for A64FX and NEOVERSEV1 + * added optimized BGEMM and BGEMV kernels for NEOVERSEV1 + * added optimized BGEMM kernel for NEOVERSEN2 + * added support for NEOVERSEV2 cpu + * added dedicated Apple M4 support as VORTEXM4 + * added optimized SGEMM/SSYMM/STRMM/SSYRK/SSYR2K for SME-capable targets + * improved SNRM2 kernel precision + * added cpu autodetection and compiler settings for Ampere One processors + loongarch64: + * fixed warnings and inaccuracies from incorrect register saving + * fixed logical core enumeration on big NUMA servers + * fixed building with LLVM and INTERFACE64=1 option + power: + * added initial POWER11 architecture support + * improved DGEMM and DGEMV performance on POWER10 + * fixed default compiler flags to use "-O3" instead of unsafe "-Ofast" + * fixed potential gcc15.1 miscompilation of DGEMV and assembly kernels + * fixed compilation with recent flang versions + riscv64: + * added optimized SBGEMM kernels for ZVL128B and ZVL256B targets + * added optimized SHGEMM kernels for ZVL128B and ZVL256B + * added optimized SBGEMV and SHGEMV kernels + * improved GEMV kernel performance for ZVL256B + * improved CROT and ZROT kernel performance for ZVL128B and x280 + * improved RVV1.0 capability detection + * improved matrix packing helper functions for ZVL128B and ZVL256B + * improved OMATCOPY performance + x86_64: + * added cpu autodetection for Intel Lunar Lake (Core Ultra 200V) + * changed all MIN and MAX assembly kernels to use unaligned operations + zarch: + * added support for building with CMake + +------------------------------------------------------------------- Old: ---- OpenBLAS-0.3.30.tar.gz New: ---- OpenBLAS-0.3.33.tar.gz _scmsync.obsinfo build.specials.obscpio ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ openblas.spec ++++++ --- /var/tmp/diff_new_pack.GSXz7n/_old 2026-07-06 12:27:09.616623112 +0200 +++ /var/tmp/diff_new_pack.GSXz7n/_new 2026-07-06 12:27:09.616623112 +0200 @@ -24,15 +24,12 @@ %bcond_with ringdisabled -%if 0%{?suse_version} > 1500 -%define a_x _%{_arch} -%endif - %if "%flavor" == "" %define package_name %{pname} ExclusiveArch: do_not_build %endif + %global build_flags USE_THREAD=1 USE_OPENMP=1 %if "%flavor" == "serial" @@ -40,6 +37,8 @@ %define openblas_so_prio 20 # we build devel packages only from one flavor %define build_devel 1 + %define flexiname libopenblas.so.%{so_v} + %define flexidevelname libopenblas.so %endif %if "%flavor" == "pthreads" @@ -50,6 +49,8 @@ %else %define openblas_so_prio 20 %endif + %define flexiname libopenblasp.so.%{so_v} + %define flexidevelname libopenblasp.so %endif %if "%flavor" == "openmp" @@ -59,6 +60,35 @@ %define arch_flavor 1 %define openblas_so_prio 50 %endif + %define flexiname libopenblaso.so.%{so_v} + %define flexidevelname libopenblaso.so +%endif +# Distribution detection and update-alternatives strategy distroname is for debugging purpose +%if 0%{?suse_version} <= 1500 +%bcond_without alternatives +%define distroname LEAP15-SLE15 +# Do not use LIBNAMESUFFIX for new builds as it will not allow +# the different flavors to be plugin replacements of each other +%define libnamesuffix LIBNAMESUFFIX=_%{flavor} +%else +%define a_x _%{_arch} +%if 0%{?suse_version} >= 1600 && 0%{?suse_version} < 1610 +%define distroname LEAP16-SLE16 +%bcond_without alternatives +%else +%if 0%{?is_opensuse} +%if 0%{?suse_version} >= 1699 +%define distroname TW +%bcond_without alternatives +%else +%define distroname LEAP16.1 +%bcond_without alternatives +%endif +%else +%define distroname SLE16.1 +%bcond_with alternatives +%endif +%endif %endif %ifarch ppc64le @@ -92,9 +122,15 @@ %define package_name %{pname}_%{flavor} %endif %define p_prefix %_prefix +%if %{with alternatives} %define p_includedir %_includedir/%pname %define p_libdir %_libdir/openblas%{?flavor:-%{flavor}} %define p_testdir %_libexecdir/openblas%{?flavor:-%{flavor}}/tests +%else +%define p_includedir %_includedir +%define p_libdir %_libdir +%define p_testdir %_libexecdir/openblas/tests +%endif %define p_cmakedir %{p_libdir}/cmake/%{pname} %define num_threads 64 @@ -105,7 +141,7 @@ %endif Name: %{package_name} -Version: 0.3.30 +Version: 0.3.33 Release: 0 Summary: An optimized BLAS library based on GotoBLAS2 License: BSD-3-Clause @@ -125,35 +161,70 @@ BuildRequires: gcc%{?cc_v}-fortran %endif BuildRequires: gcc-fortran +%if %{with alternatives} BuildRequires: update-alternatives Requires(post): update-alternatives +Requires(postun): update-alternatives Requires(preun): update-alternatives +%endif %description OpenBLAS is an optimized BLAS library based on GotoBLAS2 1.13 BSD version. -%package -n lib%{name}%{so_a} +%package -n lib%{name}%{so_v} Summary: An optimized BLAS library based on GotoBLAS2, %{flavor} version Group: System/Libraries -Requires(post): update-alternatives Requires(post): coreutils -Requires(preun): update-alternatives +%if %{with alternatives} +Recommends: compatlib%{name}%{so_v} = %{version} +%endif %if "%flavor" == "serial" Obsoletes: lib%{pname}%{so_v} < %{version} Provides: lib%{pname}%{so_v} = %{version} %else -Obsoletes: lib%{pname}0 +Obsoletes: lib%{pname}0 < %{version} %endif %if "%flavor" == "pthreads" -Obsoletes: lib%{pname}p0 +Obsoletes: lib%{pname}p0 < %{version} %endif %if "%flavor" == "openmp" -Obsoletes: lib%{pname}o0 +Obsoletes: lib%{pname}o0 < %{version} %endif -%description -n lib%{name}%{so_a} +%description -n lib%{name}%{so_v} OpenBLAS is an optimized BLAS library based on GotoBLAS2 1.13 BSD version. +%if %{with alternatives} +%package -n compatlib%{name}%{so_a} +Summary: Compatiblity library containing OpenBLAS %{flavor} via update-alternatives +Group: System/Libraries +Requires(post): coreutils +Requires(post): update-alternatives +Requires(preun): update-alternatives +Requires: lib%{name}%{so_a} = %{version} +Enhances: update-alternatives +Obsoletes: lib%{name}%{so_a} <= 0.3.30 +# Automatically install compatlib when upgrading from >= 0.3.30 +Supplements: (lib%{name}%{so_a} and update-alternatives) + + %if "%flavor" == "serial" +Obsoletes: lib%{pname}%{so_v} < %{version} + %else +Obsoletes: lib%{pname}0 < %{version} + %endif + %if "%flavor" == "pthreads" +Obsoletes: lib%{pname}p0 < %{version} + %endif + %if "%flavor" == "openmp" +Obsoletes: lib%{pname}o0 < %{version} + %endif + +%description -n compatlib%{name}%{so_a} +OpenBLAS for %{flavor} which can replace other BLAS versions with the help of +update-alternatives. +Incompatible with transactional enabled OS installations. +%endif + %package -n lib%{name}-devel Summary: Development libraries for OpenBLAS, %{flavor} version Group: Development/Libraries/C and C++ @@ -171,6 +242,21 @@ This package contains the development libraries for serial OpenBLAS version. +%package -n compatlib%{name}-devel +Summary: Development libraries for OpenBLAS for explicit link to OpenBLAS %{flavor} +Group: Development/Libraries/C and C++ +Requires: %{pname}-common-devel = %{version} +Requires: compatlib%{name}%{so_a} = %{version} +%if 0%{?arch_flavor} +Provides: %{pname}-devel = %version +Provides: %{pname}-devel(default) = %version +%else +Provides: %{pname}-devel(other) = %version +%endif + +%description -n compatlib%{name}-devel +Provides the link from lib%{pname}.so to libopenblas.o managed by update-alternatives + %package devel-static Summary: Static version of OpenBLAS Group: Development/Libraries/C and C++ @@ -184,7 +270,7 @@ %package -n %{pname}-common-devel Summary: Development headers and libraries for OpenBLAS Group: Development/Libraries/C and C++ -Requires: (%{pname}-devel(default) or %{pname}-devel(other)) +Requires: lib%{pname}_serial-devel = %{version} Requires(pre): coreutils Requires(post): coreutils Obsoletes: %{pname}-devel < %version @@ -207,8 +293,7 @@ This package contains test binaries. %prep -%setup -q -n OpenBLAS-%{?sha1:%{sha1}}%{!?sha1:%{version}} -%autopatch -p1 +%autosetup -p1 -n OpenBLAS-%{?sha1:%{sha1}}%{!?sha1:%{version}} %ifarch s390 sed -i -e "s@m32@m31@" Makefile.system %endif @@ -228,6 +313,7 @@ cp %{SOURCE1} . # create baselibs.conf based on flavor +%if %{with alternatives} cat > %{_sourcedir}/baselibs.conf <<EOF lib%{name}%{so_a} +%{p_libdir}/libopenblas.*\.so\.* @@ -236,8 +322,14 @@ requires -%{name}-<targettype> requires "lib%{name}%{?so_a}-<targettype> = <version>" EOF +%endif %build +# disable lto for i586 and ppc64le, as it causes compilation/linking issues and segfaults +%ifarch i586 ppc64le +%global _lto_cflags %{nil} +%endif + # For static libraries use -ffat-lto-objects to make sure the 'regular' # assembler code is generated as well as the intermediate code will be # stripped during pre-packaging post-processing. Also, set ldflags_tests @@ -247,10 +339,6 @@ %global ldflags_tests -fno-lto %endif -# disable lto for ppc64le, boo#1181733 -%ifarch ppc64le -%define _lto_cflags %{nil} -%endif # Use DYNAMIC_ARCH everywhere - not sure about PPC? # Use DYNAMIC_ARCH to build for multiple targets, use TARGET to specify @@ -262,6 +350,9 @@ %global openblas_target %openblas_target TARGET=CORE2 %define openblas_opt BUILD_BFLOAT16=1 %endif +%ifarch i586 +%define openblas_opt BINARY=32 +%endif %ifarch aarch64 %global openblas_target %openblas_target TARGET=ARMV8 %define openblas_opt BUILD_BFLOAT16=1 @@ -299,12 +390,12 @@ [[ -z $jobs ]] && jobs=1 # NEVER use %%_smp_mflags with top level make: # set MAKE_NB_JOBS instead and let the build do the work! -# Do not use LIBNAMESUFFIX for new builds as it will not allow -# the different flavors to be plugin replacements of each other -%if 0%{?suse_version} <= 1500 -%define libnamesuffix LIBNAMESUFFIX=_%{flavor} -%endif +# On i586, build only 'shared' target to skip tests that segfault +%ifarch i586 +make shared MAKE_NB_JOBS=$jobs %{?openblas_target} %{?build_flags} \ +%else make MAKE_NB_JOBS=$jobs %{?openblas_target} %{?build_flags} \ +%endif %{?openblas_opt} \ COMMON_OPT="%{optflags} %{?addopt}" \ NUM_THREADS=%{num_threads} V=1 \ @@ -323,7 +414,12 @@ # Pass NUM_THREADS again, as it is not propagated from the build step # https://github.com/OpenMathLib/OpenBLAS/issues/4275 mkdir -p %{buildroot}/%{p_testdir} +# On i586, skip install_tests since tests were not built +%ifarch i586 +%make_install %{?openblas_target} %{?build_flags} \ +%else %make_install install_tests %{?openblas_target} %{?build_flags} \ +%endif %{?openblas_opt} \ NUM_THREADS=%{num_threads} \ OPENBLAS_LIBRARY_DIR=%{p_libdir} \ @@ -354,11 +450,18 @@ %if 0%{!?build_devel:1} # We need the includes only once rm -rf %{buildroot}%{p_includedir}/ +# Also remove cmake and pkgconfig files for non-devel flavors when alternatives is OFF +%if %{without alternatives} +rm -rf %{buildroot}%{p_cmakedir}/ +rm -rf %{buildroot}%{p_libdir}/pkgconfig/ +%endif %endif # Fix cmake config file +%if 0%{?build_devel:1} sed -i 's|%{buildroot}||g' %{buildroot}%{p_cmakedir}/*.cmake sed -i 's|_%{flavor}||g' %{buildroot}%{p_cmakedir}/*.cmake +%endif # Remove library type specific so. This is solved differently. # Needed when not using LIBNAMESUFFIX. @@ -389,22 +492,52 @@ # /usr/lib64/libopenblas.so.<so_v> -> /usr/lib64/openblas_default/libopenblas.so.<so_v> # /usr/lib64/libopenblas.so -> libopenblas.so.<so_v> +%if %{with alternatives} +# Only create flexiname symlink if it differs from the common library name +%if "%{?flexiname}" != "" && "%{flexiname}" != "lib%{pname}.so.%{so_v}" +ln -s %{p_libdir}/lib%{pname}.so.%{so_v} %{buildroot}%{_libdir}/%{flexiname} +%endif install -d %{buildroot}/%{_sysconfdir}/alternatives for link in openblas-default libblas.so.3 liblapack.so.3 libcblas.so.3 liblapacke.so.3; do ln -s %{_sysconfdir}/alternatives/${link}%{?a_x} %{buildroot}/%{_libdir}/${link} done +%else +# For older releases without alternatives, create flexiname symlinks only if they differ from the actual filename +%if "%{?flexiname}" != "" && "%{flexiname}" != "lib%{pname}.so.%{so_v}" +ln -s lib%{pname}.so.%{so_v} %{buildroot}%{_libdir}/%{flexiname} +%endif +%endif +# compatiblity libraries which are use by flexiblas %if 0%{?build_devel} +%if %{with alternatives} install -d %{buildroot}%{_libdir}/pkgconfig/ -ln -s %{_sysconfdir}/alternatives/openblas-default%{?a_x}/pkgconfig/openblas.pc %{buildroot}%{_libdir}/pkgconfig/ +ln -s %{p_libdir}/pkgconfig/openblas.pc %{buildroot}%{_libdir}/pkgconfig/openblas.pc install -d %{buildroot}/%{_libdir}/cmake -ln -s %{_sysconfdir}/alternatives/openblas-default%{?a_x}/cmake/openblas %{buildroot}/%{_libdir}/cmake/ +ln -s %{p_libdir}/cmake/openblas %{buildroot}/%{_libdir}/cmake/openblas +%endif +%endif +%if %{with alternatives} +%{?flexidevelname:ln -s %{p_libdir}/lib%{pname}.so.%{so_v} %{buildroot}%{_libdir}/%{flexidevelname}} +%else +# For older releases without alternatives, create flexidevelname symlinks only if they differ +%if "%{?flexidevelname}" != "" && "%{flexidevelname}" != "lib%{pname}.so" +ln -s lib%{pname}.so %{buildroot}%{_libdir}/%{flexidevelname} +%endif %endif # Compatibility Links %if 0%{?libnamesuffix:1} + %if %{with alternatives} +# remove installed lib to avoid conflicts even if wit update-alternatives these are ghosted +rm -f %{buildroot}%{_libdir}/lib%{name}.so.%{so_v} ln -s openblas-%{flavor}/lib%{pname}.so.%{so_v} %{buildroot}%{_libdir}/lib%{name}.so.%{so_v} -ln -s openblas-%{flavor}/lib%{pname}.so %{buildroot}%{_libdir}/lib%{name}.so +test -e %{buildroot}%{_libdir}/lib%{name}.so || ln -s openblas-%{flavor}/lib%{pname}.so %{buildroot}%{_libdir}/lib%{name}.so + %else +# For older releases without alternatives, symlink directly in same directory +test -e %{buildroot}%{_libdir}/lib%{name}.so.%{so_v} || ln -s lib%{pname}.so.%{so_v} %{buildroot}%{_libdir}/lib%{name}.so.%{so_v} +test -e %{buildroot}%{_libdir}/lib%{name}.so || ln -s lib%{pname}.so %{buildroot}%{_libdir}/lib%{name}.so + %endif %endif # Ensure directory used in older versions are replaced by symlink properly @@ -413,7 +546,8 @@ [ -d $d -a ! -L $d -a "$(rpm -q --qf '%%{NAME}' -f $d 2>/dev/null)" = "openblas-devel" ] \ && { n=$(mktemp -d $(dirname $d)/tmpd-XXXXX); mv $d $n; rm -rf $n; } || true -%post -n lib%{name}%{so_v} +%if %{with alternatives} +%post -n compatlib%{name}%{so_v} # There's no way to determine if a setting exists, so just remove it and ignore errors %{?a_x:%{_sbindir}/update-alternatives --remove-all openblas-default 2>/dev/null || true} %{_sbindir}/update-alternatives --install \ @@ -426,34 +560,66 @@ %{_libdir}/${lib} ${lib}%{?a_x} %{p_libdir}/lib%{pname}.so.%{so_v} 20 done /sbin/ldconfig +%endif -%post -n %{pname}-common-devel -ln -sf lib%{pname}.so.%{so_v} %{_libdir}/lib%{pname}.so + +%post -n lib%{name}%{so_v} +/sbin/ldconfig %postun -n lib%{name}%{so_v} +/sbin/ldconfig + +%post -n %{pname}-common-devel +# Always point to serial library by default - this is managed in %%files now, not created in %%post + +%if %{with alternatives} +%postun -n compatlib%{name}%{so_v} if [ ! -f %{p_libdir}/lib%{pname}.so.%{so_v} ]; then + if [ -e %{_sbindir}/update-alternatives ] ; then for lib in libblas.so.3 libcblas.so.3 liblapack.so.3 liblapacke.so.3; do - %{_sbindir}/update-alternatives --remove ${lib}%{?a_x} %{_libdir}/lib%{pname}.so.%{so_v} + %{_sbindir}/update-alternatives --remove ${lib}%{?a_x} %{p_libdir}/lib%{pname}.so.%{so_v} done + fi fi if [ ! -d %{p_libdir} ]; then %{_sbindir}/update-alternatives --remove openblas-default%{?a_x} %{p_libdir} fi +# Remove libopenblas.so.%{so_v} symlink if it's broken +if [ -h "%_libdir/lib%{pname}.so.%{so_v}" ] && [ ! -e "%_libdir/lib%{pname}.so.%{so_v}" ] ; then + rm %_libdir/lib%{pname}.so.%{so_v} +fi +# Remove libopenblas.so if it's broken +if [ -h "%_libdir/libopenblas.so" ] && [ ! -e "%_libdir/libopenblas.so" ] ; then + rm %_libdir/libopenblas.so +fi /sbin/ldconfig +%endif %check +%ifnarch i586 sed -e 's#@FLAVOR@#%{flavor}#' \ -e 's#@COMPILER@#%{?compiler_family:%compiler_family}}#' \ -e 's#@DIR@#%{buildroot}/%{p_testdir}#' \ < %{S:3} > ./openblas_tests_check.sh bash ./openblas_tests_check.sh +%endif %files -n lib%{name}%{so_a} %defattr(-,root,root,-) -%{p_libdir}/lib%{pname}.so.%{so_v} +# can be %%{_libdir} so be carefull +%if %{with alternatives} %dir %{p_libdir} +%endif +%{p_libdir}/lib%{pname}.so.%{so_v} %{?libnamesuffix:%{_libdir}/lib%{name}.so.%{so_v}} -# Created by %%post +%if "%{?flexiname}" != "" && "%{flexiname}" != "lib%{pname}.so.%{so_v}" +%{_libdir}/%{flexiname} +%endif + +%if %{with alternatives} +%files -n compatlib%{name}%{so_a} +%defattr(-,root,root,-) +# Created by %%post with update-alternatives %ghost %{_libdir}/lib%{pname}.so.%{so_v} %ghost %{_libdir}/openblas-default %ghost %{_libdir}/libblas.so.3 @@ -465,14 +631,24 @@ %ghost %{_sysconfdir}/alternatives/libcblas.so.3%{?a_x} %ghost %{_sysconfdir}/alternatives/liblapack.so.3%{?a_x} %ghost %{_sysconfdir}/alternatives/liblapacke.so.3%{?a_x} +%endif %files -n lib%{name}-devel %{p_libdir}/lib%{pname}.so %{?libnamesuffix:%{_libdir}/lib%{name}.so} -%{p_cmakedir}/ +%if %{with alternatives} %dir %{p_libdir}/cmake +%{p_cmakedir}/ %dir %{p_libdir}/pkgconfig -%{p_libdir}/pkgconfig +%{p_libdir}/pkgconfig/openblas.pc +# For serial flavor, package the main libopenblas.so symlink +%if "%{flavor}" == "serial" +%{_libdir}/lib%{pname}.so +%endif +%endif +%if "%{?flexidevelname}" != "" && "%{flexidevelname}" != "lib%{pname}.so" +%{_libdir}/%{flexidevelname} +%endif %files tests %dir %{p_testdir} @@ -486,8 +662,6 @@ %files -n %{pname}-common-devel %license LICENSE %doc Changelog.txt GotoBLAS* README.md README.SUSE -# created by %%post -%ghost %{_libdir}/lib%{pname}.so %{p_includedir}/ %{_libdir}/pkgconfig/openblas.pc %dir %{_libdir}/cmake ++++++ OpenBLAS-0.3.30.tar.gz -> OpenBLAS-0.3.33.tar.gz ++++++ /work/SRC/openSUSE:Factory/openblas/OpenBLAS-0.3.30.tar.gz /work/SRC/openSUSE:Factory/.openblas.new.1982/OpenBLAS-0.3.33.tar.gz differ: char 13, line 1 ++++++ README.SUSE ++++++ --- /var/tmp/diff_new_pack.GSXz7n/_old 2026-07-06 12:27:09.708626304 +0200 +++ /var/tmp/diff_new_pack.GSXz7n/_new 2026-07-06 12:27:09.712626443 +0200 @@ -7,19 +7,61 @@ * With OpenMP support (libopenblas_openmp0) * With threading support (libopenblas_pthreads0) -By defult openSUSE uses pthreads version on x86 systems and OpenMP +By default openSUSE uses pthreads version on x86 systems and OpenMP for other architectures. On x86 systems OpenBLAS uses dynamic architectures support, so it contains all CPU-related optimizations. +Library Installation Locations +=============================== + +Starting with version 0.3.31, OpenBLAS libraries are installed in +flavor-specific directories to allow parallel installation: + + * /usr/lib64/openblas-serial/ (serial flavor) + * /usr/lib64/openblas-openmp/ (OpenMP flavor) + * /usr/lib64/openblas-pthreads/ (pthreads flavor) + +Each directory contains: + * libopenblas.so.0 - The actual library + * pkgconfig/openblas.pc - pkg-config file pointing to this flavor + * cmake/openblas/ - CMake configuration files for this flavor + +The system-wide /usr/lib64/pkgconfig/openblas.pc and +/usr/lib64/cmake/openblas links point directly to the flavor-specific +files, ensuring consistent library usage. + +Update-Alternatives Support (Compatibility) +============================================ + +For backward compatibility, compatlib packages are available: + * compatlibopenblas_serial0 + * compatlibopenblas_openmp0 + * compatlibopenblas_pthreads0 + +These packages use update-alternatives to provide the traditional +/usr/lib64/libblas.so.3 and /usr/lib64/liblapack.so.3 symlinks. + +When upgrading from OpenBLAS 0.3.30 or newer, the compatlib packages +are automatically installed to maintain compatibility with existing +setups. For new installations, they are optional. + How to switch between the various BLAS/LAPACK implementations ============================================================= +If you have a compatlib package installed, you can switch implementations: + BLAS: sudo /usr/sbin/update-alternatives --config libblas.so.3 LAPACK: sudo /usr/sbin/update-alternatives --config liblapack.so.3 +OpenBLAS default flavor: + sudo /usr/sbin/update-alternatives --config openblas-default + +Note: The compatlib packages are incompatible with transactional +enabled OS installations. + More information is available at: https://en.opensuse.org/openSUSE:Science_Linear_algebra_libraries ++++++ _scmsync.obsinfo ++++++ mtime: 1783085878 commit: 70d5d9e18514d6d7ca284a1827fa783e30f11d65ea9b379da9168cc687daa158 url: https://src.opensuse.org/science/openblas.git ++++++ build.specials.obscpio ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/.gitignore new/.gitignore --- old/.gitignore 1970-01-01 01:00:00.000000000 +0100 +++ new/.gitignore 2026-07-03 15:37:58.000000000 +0200 @@ -0,0 +1,4 @@ +*.obscpio +*.osc +_build.* +.pbuild
