diff --git a/sci-libs/blis/Manifest b/sci-libs/blis/Manifest index 9da5d28f91f9a..76309323c973a 100644 --- a/sci-libs/blis/Manifest +++ b/sci-libs/blis/Manifest @@ -1,2 +1 @@ -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-1.0-r1.ebuild b/sci-libs/blis/blis-1.0-r1.ebuild deleted file mode 100644 index 1c6dbd3a3a615..0000000000000 --- a/sci-libs/blis/blis-1.0-r1.ebuild +++ /dev/null @@ -1,183 +0,0 @@ -# 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" -SLOT="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=( - "${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/874 - "${FILESDIR}"/${P}-gcc15.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/blis-1.0.ebuild b/sci-libs/blis/blis-1.0.ebuild deleted file mode 100644 index 5ee07cc657165..0000000000000 --- a/sci-libs/blis/blis-1.0.ebuild +++ /dev/null @@ -1,139 +0,0 @@ -# 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" -SLOT="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 openmp pthread serial static-libs 64bit-index ${CPU_USE[@]}" -REQUIRED_USE=" - ?? ( openmp pthread serial ) - ?? ( eselect-ldso 64bit-index )" - -DEPEND=" - eselect-ldso? ( - !app-eselect/eselect-cblas - >=app-eselect/eselect-blas-0.2 - )" - -RDEPEND="${DEPEND}" -BDEPEND=" - ${PYTHON_DEPS} - dev-lang/perl -" - -PATCHES=( - "${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/874 - "${FILESDIR}"/${P}-gcc15.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() { - local BLIS_FLAGS=() - # determine flags - if use openmp; then - BLIS_FLAGS+=( -t openmp ) - elif use pthread; then - BLIS_FLAGS+=( -t pthreads ) - else - BLIS_FLAGS+=( -t no ) - fi - use 64bit-index && BLIS_FLAGS+=( -b 64 -i 64 ) - - # This is not an autotools configure file. We don't use econf here. - CC="$(tc-getCC)" AR="$(tc-getAR)" RANLIB="$(tc-getRANLIB)" ./configure \ - --enable-verbose-make \ - --prefix="${BROOT}"/usr \ - --libdir="${BROOT}"/usr/$(get_libdir) \ - $(use_enable static-libs static) \ - --enable-blas \ - --enable-cblas \ - "${BLIS_FLAGS[@]}" \ - --enable-shared \ - $(get_confname) || die -} - -src_compile() { - DEB_LIBBLAS=libblas.so.3 DEB_LIBCBLAS=libcblas.so.3 \ - LDS_BLAS="${FILESDIR}"/blas.lds LDS_CBLAS="${FILESDIR}"/cblas.lds \ - default -} - -src_test() { - LD_LIBRARY_PATH=lib/$(get_confname) emake testblis-fast - ./testsuite/check-blistest.sh ./output.testsuite || die -} - -src_install() { - default - use doc && dodoc README.md docs/*.md - - if use eselect-ldso; then - insinto /usr/$(get_libdir)/blas/blis - doins lib/*/lib{c,}blas.so.3 - dosym libblas.so.3 usr/$(get_libdir)/blas/blis/libblas.so - dosym libcblas.so.3 usr/$(get_libdir)/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) -> [${current_blas}]." - 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-1.0-gcc15.patch b/sci-libs/blis/files/blis-1.0-gcc15.patch deleted file mode 100644 index c5122e98ccf3c..0000000000000 --- a/sci-libs/blis/files/blis-1.0-gcc15.patch +++ /dev/null @@ -1,93 +0,0 @@ -From 6b970700a6fa352d71e1ea14ca44c5f39ce1c770 Mon Sep 17 00:00:00 2001 -From: Devin Matthews -Date: Tue, 24 Jun 2025 14:45:14 -0500 -Subject: [PATCH 1/2] Apply temporary fix for gcc 15. - -Details: -- As reported in #845, gcc 15 fails to build the haswell - gemmsup kernels due to the use of rbp. -- As a temporary fix, disable slp-tree-vectorization in just - the affected files. -- Thanks @loveshack for reporting and @chillenb for the suggested - fix. -- Eventually, the kernels should be rewritten to avoid using rbp. ---- - kernels/haswell/3/sup/bli_gemmsup_rv_haswell_asm_d6x8m.c | 7 +++++++ - kernels/haswell/3/sup/bli_gemmsup_rv_haswell_asm_d6x8n.c | 7 +++++++ - kernels/haswell/3/sup/bli_gemmsup_rv_haswell_asm_s6x16m.c | 7 +++++++ - kernels/haswell/3/sup/bli_gemmsup_rv_haswell_asm_s6x16n.c | 7 +++++++ - 4 files changed, 28 insertions(+) - -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 918ca6d46b..e71732de3c 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,6 +33,13 @@ - - */ - -+// 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") -+#endif -+ - #include "blis.h" - - #define BLIS_ASM_SYNTAX_ATT -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 3f49068786..880af4207a 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,6 +33,13 @@ - - */ - -+// 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") -+#endif -+ - #include "blis.h" - - #define BLIS_ASM_SYNTAX_ATT -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 2b4ee7a9ba..d0814d6d82 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,6 +33,13 @@ - - */ - -+// 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") -+#endif -+ - #include "blis.h" - - #define BLIS_ASM_SYNTAX_ATT -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 cc47db8bc1..bc2d783e3b 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,6 +33,13 @@ - - */ - -+// 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") -+#endif -+ - #include "blis.h" - - #define BLIS_ASM_SYNTAX_ATT - diff --git a/sci-libs/blis/metadata.xml b/sci-libs/blis/metadata.xml index 2a5969eca30a1..46dfc9e684523 100644 --- a/sci-libs/blis/metadata.xml +++ b/sci-libs/blis/metadata.xml @@ -31,6 +31,5 @@ Use pthread threadding model Use no threadding model Enable runtime library switching by eselect and ld.so. - Enable 64bit array indexing, incompatible with runtime switching