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