commit:     8e08d66d2b51b3ce49ac7ba196cd87016606a262
Author:     Michał Górny <mgorny <AT> gentoo <DOT> org>
AuthorDate: Fri Sep 19 14:08:09 2025 +0000
Commit:     Michał Górny <mgorny <AT> gentoo <DOT> org>
CommitDate: Fri Sep 19 14:18:50 2025 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=8e08d66d

sci-libs/blis: Bump to 2.0

Signed-off-by: Michał Górny <mgorny <AT> gentoo.org>

 sci-libs/blis/Manifest                   |   1 +
 sci-libs/blis/blis-2.0.ebuild            | 185 +++++++++++++++++++++++++++++++
 sci-libs/blis/files/blis-2.0-gcc16.patch | 122 ++++++++++++++++++++
 3 files changed, 308 insertions(+)

diff --git a/sci-libs/blis/Manifest b/sci-libs/blis/Manifest
index bfd79b56ffc8..9da5d28f91f9 100644
--- a/sci-libs/blis/Manifest
+++ b/sci-libs/blis/Manifest
@@ -1 +1,2 @@
 DIST blis-1.0.tar.gz 15714356 BLAKE2B 
7e9b6132ab556adf7ccb2d1bff6c5195eb2f48a9193a6df57d409e25b42f1aaa64f053f97996a6467ad42cbe5848c3689f3e6c501579d5d1083523ca9ed52ce1
 SHA512 
91cd2a2944762e584f11cb931ba11c4b296e93040b553f105ba8579d748a49cfcb6db8ae2ce1b5a537c0ae88182c9d212a4a5daa757ca4d0a7beee552d2eb55c
+DIST blis-2.0.tar.gz 15751849 BLAKE2B 
386917ece022fccf373bad6a4b488b04d86097f0fb7406b72e9fdd4ecc09747ea2291ec6d56c756461541b811d7f256a1bd6103c883cca5f6479d7822faf62ae
 SHA512 
5b1195533fe951c025b01b5f92d682217a3c8b3b5477ad20cdbf1d3163e7085167d9be7f552f59173dba7798e2dbacf8772374d4250d3db6404b7f7b9ae67916

diff --git a/sci-libs/blis/blis-2.0.ebuild b/sci-libs/blis/blis-2.0.ebuild
new file mode 100644
index 000000000000..93a7cd71d07d
--- /dev/null
+++ b/sci-libs/blis/blis-2.0.ebuild
@@ -0,0 +1,185 @@
+# Copyright 2019-2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+PYTHON_COMPAT=( python3_{11..13} )
+inherit python-any-r1 toolchain-funcs
+
+DESCRIPTION="BLAS-like Library Instantiation Software Framework"
+HOMEPAGE="https://github.com/flame/blis";
+SRC_URI="https://github.com/flame/${PN}/archive/${PV}.tar.gz -> ${P}.tar.gz"
+
+LICENSE="BSD"
+# SOVERSION; but 2.0 introduced some breaking changes
+SLOT="0/4-2.0"
+KEYWORDS="~amd64 ~arm64 ~ppc64 ~x86"
+CPU_USE=(
+       cpu_flags_ppc_{vsx,vsx3}
+       cpu_flags_arm_{neon,v7,v8,sve}
+       cpu_flags_x86_{ssse3,avx,fma3,fma4,avx2,avx512vl}
+)
+IUSE="doc eselect-ldso index64 openmp pthread serial static-libs ${CPU_USE[@]}"
+REQUIRED_USE="?? ( openmp pthread serial )"
+
+DEPEND="
+       eselect-ldso? (
+               !app-eselect/eselect-cblas
+               >=app-eselect/eselect-blas-0.2
+       )
+"
+RDEPEND="
+       ${DEPEND}
+"
+BDEPEND="
+       ${PYTHON_DEPS}
+       dev-lang/perl
+"
+
+PATCHES=(
+       # TODO: remove this when we remove eselect-ldso
+       "${FILESDIR}"/${PN}-0.6.0-blas-provider.patch
+       # to prevent QA Notice: pkg-config files with wrong LDFLAGS detected
+       "${FILESDIR}"/${PN}-0.8.1-pkg-config.patch
+       "${FILESDIR}"/${PN}-0.9.0-rpath.patch
+       "${FILESDIR}"/${PN}-1.0-no-helper-headers.patch
+       # https://github.com/flame/blis/pull/891
+       "${FILESDIR}"/${P}-gcc16.patch
+)
+
+get_confname() {
+       local confname=generic
+       if use x86 || use amd64; then
+               use cpu_flags_x86_ssse3 && confname=penryn
+               use cpu_flags_x86_avx && use cpu_flags_x86_fma3 && 
confname=sandybridge
+               use cpu_flags_x86_avx && use cpu_flags_x86_fma4 && 
confname=bulldozer
+               use cpu_flags_x86_avx && use cpu_flags_x86_fma4 && use 
cpu_flags_x86_fma3 && confname=piledriver
+               use cpu_flags_x86_avx2 && confname=haswell
+               use cpu_flags_x86_avx512vl && confname=skx
+       elif use arm || use arm64; then
+               use arm && confname=arm32
+               use arm64 && confname=arm64
+               use cpu_flags_arm_neon && use cpu_flags_arm_v7 && 
confname=cortexa9
+               use cpu_flags_arm_v8 && confname=cortexa53
+               use cpu_flags_arm_sve && confname=armsve
+       elif use ppc || use ppc64; then
+               confname=power
+               use cpu_flags_ppc_vsx && confname=power7
+               use cpu_flags_ppc_vsx3 && confname=power9
+       fi
+       echo ${confname}
+}
+
+src_configure() {
+       # This is not an autotools configure file. We don't use econf here.
+       local myconf=(
+               --enable-verbose-make
+               --prefix="${EPREFIX}/usr"
+               --libdir="${EPREFIX}/usr/$(get_libdir)"
+               $(use_enable static-libs static)
+               --enable-blas
+               --enable-cblas
+               --enable-shared
+       )
+       if use openmp; then
+               myconf+=( -t openmp )
+       elif use pthread; then
+               myconf+=( -t pthreads )
+       else
+               myconf+=( -t no )
+       fi
+       # confname must always come last
+       myconf+=( "$(get_confname)" )
+
+       local -x CC="$(tc-getCC)"
+       local -x AR="$(tc-getAR)"
+       local -x RANLIB="$(tc-getRANLIB)"
+
+       if use index64; then
+               einfo "Configuring ILP64 variant"
+               cp -r "${S}" "${S}-ilp64" || die
+               pushd "${S}-ilp64" >/dev/null || die
+               ./configure -b 64 -i 64 "${myconf[@]}" || die
+               popd >/dev/null || die
+       fi
+
+       einfo "Configuring LP64 variant"
+       ./configure "${myconf[@]}" || die
+}
+
+emake64() {
+       local overrides=(
+               LIBBLIS=libblis64
+               MK_INCL_DIR_INST="${ED}/usr/include/blis64"
+       )
+
+       emake -C "${S}-ilp64" "${overrides[@]}" "${@}"
+}
+
+src_compile() {
+       local -x DEB_LIBBLAS=libblas.so.3
+       local -x DEB_LIBCBLAS=libcblas.so.3
+       local -x LDS_BLAS="${FILESDIR}"/blas.lds
+       local -x LDS_CBLAS="${FILESDIR}"/cblas.lds
+       use index64 && emake64
+       emake
+}
+
+src_test() {
+       local -x LD_LIBRARY_PATH="lib/$(get_confname)"
+       emake testblis-fast
+       ./testsuite/check-blistest.sh ./output.testsuite || die
+       if use index64; then
+               emake64 testblis-fast
+               ./testsuite/check-blistest.sh "${S}-ilp64"/output.testsuite || 
die
+       fi
+}
+
+src_install() {
+       local libroot=/usr/$(get_libdir)
+       local install_args=(
+               DESTDIR="${D}"
+               # remove weird Makefile configs, they're incorrect for index64
+               # and nothing should be using them anyway
+               MK_SHARE_DIR_INST="${T}/discard"
+               # upstream installs .pc file to share, sigh
+               PC_SHARE_DIR_INST="${ED}${libroot}/pkgconfig"
+       )
+       emake "${install_args[@]}" install
+       if use index64; then
+               emake64 "${install_args[@]}" install
+               # we need to make blis64.pc with proper subst ourselves
+               sed -e 's:blis:&64:' "${ED}${libroot}/pkgconfig"/blis.pc \
+                       > "${ED}${libroot}/pkgconfig"/blis64.pc || die
+       fi
+       use doc && dodoc README.md docs/*.md
+
+       if use eselect-ldso; then
+               insinto "${libroot}/blas/blis"
+               doins lib/*/lib{c,}blas.so.3
+               dosym libblas.so.3 "${libroot}/blas/blis/libblas.so"
+               dosym libcblas.so.3 "${libroot}/blas/blis/libcblas.so"
+       fi
+}
+
+pkg_postinst() {
+       use eselect-ldso || return
+
+       local libdir=$(get_libdir) me="blis"
+
+       # check blas
+       eselect blas add ${libdir} "${EROOT}"/usr/${libdir}/blas/${me} ${me}
+       local current_blas=$(eselect blas show ${libdir} | cut -d' ' -f2)
+       if [[ ${current_blas} == "${me}" || -z ${current_blas} ]]; then
+               eselect blas set ${libdir} ${me}
+               elog "Current eselect: BLAS/CBLAS (${libdir}) -> [${me}]."
+       else
+               elog "Current eselect: BLAS/CBLAS (${libdir}) -> 
[${current_blas}]."
+               elog "To use blas [${me}] implementation, you have to issue (as 
root):"
+               elog "\t eselect blas set ${libdir} ${me}"
+       fi
+}
+
+pkg_postrm() {
+       use eselect-ldso && eselect blas validate
+}

diff --git a/sci-libs/blis/files/blis-2.0-gcc16.patch 
b/sci-libs/blis/files/blis-2.0-gcc16.patch
new file mode 100644
index 000000000000..7fc3718574d3
--- /dev/null
+++ b/sci-libs/blis/files/blis-2.0-gcc16.patch
@@ -0,0 +1,122 @@
+From ff46c252b040fd6e8fb0562bf4cc4c8db4eac95f Mon Sep 17 00:00:00 2001
+From: Devin Matthews <[email protected]>
+Date: Thu, 11 Sep 2025 10:58:36 -0500
+Subject: [PATCH 1/2] Update Haswell gemmsup fix for gcc 16 and later.
+
+---
+ kernels/haswell/3/sup/bli_gemmsup_rv_haswell_asm_d6x8m.c | 9 ++++-----
+ kernels/haswell/3/sup/bli_gemmsup_rv_haswell_asm_d6x8n.c | 9 ++++-----
+ .../haswell/3/sup/bli_gemmsup_rv_haswell_asm_s6x16m.c    | 9 ++++-----
+ .../haswell/3/sup/bli_gemmsup_rv_haswell_asm_s6x16n.c    | 9 ++++-----
+ 4 files changed, 16 insertions(+), 20 deletions(-)
+
+diff --git a/kernels/haswell/3/sup/bli_gemmsup_rv_haswell_asm_d6x8m.c 
b/kernels/haswell/3/sup/bli_gemmsup_rv_haswell_asm_d6x8m.c
+index e71732de3c..2b38c9a4b1 100644
+--- a/kernels/haswell/3/sup/bli_gemmsup_rv_haswell_asm_d6x8m.c
++++ b/kernels/haswell/3/sup/bli_gemmsup_rv_haswell_asm_d6x8m.c
+@@ -33,11 +33,10 @@
+ 
+ */
+ 
+-// This avoids a known issue with GCC15 ("error: bp cannot be used in asm 
here", #845).
+-// Only check for version 15 since this may be fixed in 16 (**fingers 
crossed**), and also
+-// make sure the compiler isn't clang since it also confusingly defines 
__GNUC__
+-#if !defined(__clang__) && defined(__GNUC__) && __GNUC__ == 15
+-#pragma GCC optimize("-fno-tree-slp-vectorize")
++// This avoids a known issue with GCC15+ ("error: bp cannot be used in asm 
here", #845).
++// Make sure the compiler isn't clang since it also confusingly defines 
__GNUC__
++#if !defined(__clang__) && defined(__GNUC__) && __GNUC__ >= 15
++#pragma GCC optimize("-fno-tree-vectorize")
+ #endif
+ 
+ #include "blis.h"
+diff --git a/kernels/haswell/3/sup/bli_gemmsup_rv_haswell_asm_d6x8n.c 
b/kernels/haswell/3/sup/bli_gemmsup_rv_haswell_asm_d6x8n.c
+index 880af4207a..093d149a54 100644
+--- a/kernels/haswell/3/sup/bli_gemmsup_rv_haswell_asm_d6x8n.c
++++ b/kernels/haswell/3/sup/bli_gemmsup_rv_haswell_asm_d6x8n.c
+@@ -33,11 +33,10 @@
+ 
+ */
+ 
+-// This avoids a known issue with GCC15 ("error: bp cannot be used in asm 
here", #845).
+-// Only check for version 15 since this may be fixed in 16 (**fingers 
crossed**), and also
+-// make sure the compiler isn't clang since it also confusingly defines 
__GNUC__
+-#if !defined(__clang__) && defined(__GNUC__) && __GNUC__ == 15
+-#pragma GCC optimize("-fno-tree-slp-vectorize")
++// This avoids a known issue with GCC15+ ("error: bp cannot be used in asm 
here", #845).
++// Make sure the compiler isn't clang since it also confusingly defines 
__GNUC__
++#if !defined(__clang__) && defined(__GNUC__) && __GNUC__ >= 15
++#pragma GCC optimize("-fno-tree-vectorize")
+ #endif
+ 
+ #include "blis.h"
+diff --git a/kernels/haswell/3/sup/bli_gemmsup_rv_haswell_asm_s6x16m.c 
b/kernels/haswell/3/sup/bli_gemmsup_rv_haswell_asm_s6x16m.c
+index d0814d6d82..e9697f9771 100644
+--- a/kernels/haswell/3/sup/bli_gemmsup_rv_haswell_asm_s6x16m.c
++++ b/kernels/haswell/3/sup/bli_gemmsup_rv_haswell_asm_s6x16m.c
+@@ -33,11 +33,10 @@
+ 
+ */
+ 
+-// This avoids a known issue with GCC15 ("error: bp cannot be used in asm 
here", #845).
+-// Only check for version 15 since this may be fixed in 16 (**fingers 
crossed**), and also
+-// make sure the compiler isn't clang since it also confusingly defines 
__GNUC__
+-#if !defined(__clang__) && defined(__GNUC__) && __GNUC__ == 15
+-#pragma GCC optimize("-fno-tree-slp-vectorize")
++// This avoids a known issue with GCC15+ ("error: bp cannot be used in asm 
here", #845).
++// Make sure the compiler isn't clang since it also confusingly defines 
__GNUC__
++#if !defined(__clang__) && defined(__GNUC__) && __GNUC__ >= 15
++#pragma GCC optimize("-fno-tree-vectorize")
+ #endif
+ 
+ #include "blis.h"
+diff --git a/kernels/haswell/3/sup/bli_gemmsup_rv_haswell_asm_s6x16n.c 
b/kernels/haswell/3/sup/bli_gemmsup_rv_haswell_asm_s6x16n.c
+index bc2d783e3b..73517976eb 100644
+--- a/kernels/haswell/3/sup/bli_gemmsup_rv_haswell_asm_s6x16n.c
++++ b/kernels/haswell/3/sup/bli_gemmsup_rv_haswell_asm_s6x16n.c
+@@ -33,11 +33,10 @@
+ 
+ */
+ 
+-// This avoids a known issue with GCC15 ("error: bp cannot be used in asm 
here", #845).
+-// Only check for version 15 since this may be fixed in 16 (**fingers 
crossed**), and also
+-// make sure the compiler isn't clang since it also confusingly defines 
__GNUC__
+-#if !defined(__clang__) && defined(__GNUC__) && __GNUC__ == 15
+-#pragma GCC optimize("-fno-tree-slp-vectorize")
++// This avoids a known issue with GCC15+ ("error: bp cannot be used in asm 
here", #845).
++// Make sure the compiler isn't clang since it also confusingly defines 
__GNUC__
++#if !defined(__clang__) && defined(__GNUC__) && __GNUC__ >= 15
++#pragma GCC optimize("-fno-tree-vectorize")
+ #endif
+ 
+ #include "blis.h"
+
+From b62a9f11c080189a8742ce9949f5930793fbdaf4 Mon Sep 17 00:00:00 2001
+From: Devin Matthews <[email protected]>
+Date: Thu, 11 Sep 2025 11:04:13 -0500
+Subject: [PATCH 2/2] Update CREDITS [ci skip].
+
+---
+ CREDITS | 2 ++
+ 1 file changed, 2 insertions(+)
+
+diff --git a/CREDITS b/CREDITS
+index b677cbaa8d..a0615da121 100644
+--- a/CREDITS
++++ b/CREDITS
+@@ -64,6 +64,7 @@ but many others have contributed code, ideas, and feedback, 
including
+   Aaron Hutchinson         @Aaron-Hutchinson          (SiFive)
+   Francisco Igual          @figual                    (Universidad 
Complutense de Madrid)
+                            @j-bm
++  Sam James                @thesamesam
+   Madeesh Kannan           @shadeMe
+   Tony Kelman              @tkelman
+   Lee Killough             @leekillough               (Tactical Computing 
Labs)
+@@ -149,6 +150,7 @@ but many others have contributed code, ideas, and 
feedback, including
+   Chenhan Yu               @ChenhanYu                 (The University of 
Texas at Austin)
+   Roman Yurchak            @rth                       (Symerio)
+   Stefano Zampini          @stefanozampini
++  Paul Zander              @negril
+   M. Zhou                  @cdluminate
+   Igor Zhuravlov           @jip                       (Far Eastern Federal 
University)
+                            @AngryLoki

Reply via email to