aboutsummaryrefslogtreecommitdiffstats
path: root/community/openblas/APKBUILD
diff options
context:
space:
mode:
Diffstat (limited to 'community/openblas/APKBUILD')
-rw-r--r--community/openblas/APKBUILD165
1 files changed, 119 insertions, 46 deletions
diff --git a/community/openblas/APKBUILD b/community/openblas/APKBUILD
index 826c6e9738b..c5fa028e70c 100644
--- a/community/openblas/APKBUILD
+++ b/community/openblas/APKBUILD
@@ -1,23 +1,32 @@
# Contributor: Isaac Dunham <ibid.ag@gmail.com>
# Contributor: Jakub Jirutka <jakub@jirutka.cz>
-# Maintainer: Isaac Dunham <ibid.ag@gmail.com>
+# Maintainer: Krassy Boykinov <kboykinov@teamcentrixx.com>
pkgname=openblas
_pkgname=OpenBLAS
-pkgver=0.3.9
-pkgrel=2
-pkgdesc="A fast BSD-licensed BLAS based on gotoBLAS2, with LAPACK"
-url="http://www.openblas.net"
-arch="all !mips !mips64"
+pkgver=0.3.27
+pkgrel=0
+pkgdesc="fast BSD-licensed BLAS based on gotoBLAS2, with LAPACK"
+url="https://www.openblas.net/"
+arch="all"
license="BSD-3-Clause"
-replaces="blas lapack"
depends_dev="gfortran"
makedepends="$depends_dev perl linux-headers"
-subpackages="$pkgname-static $pkgname-dev $pkgname-doc"
-source="$pkgname-$pkgver.tar.gz::https://github.com/xianyi/$_pkgname/archive/v$pkgver.tar.gz"
+subpackages="
+ $pkgname-dev
+ $pkgname-doc
+ liblapack
+ liblapacke
+ "
+source="$_pkgname-$pkgver.tar.gz::https://github.com/OpenMathLib/OpenBLAS/archive/refs/tags/v$pkgver.tar.gz
+ blas-lapack.patch
+ "
builddir="$srcdir/$_pkgname-$pkgver"
-
_builddir64="$builddir-64"
+# this provides mostly the same thing as community/lapack,
+# but they should be separate
+sonameprefix="$pkgname:"
+
# ILP64 is not supported on aarch64 (https://github.com/xianyi/OpenBLAS/issues/956)
_ilp64=false
if [ "$CARCH" = "x86_64" ]; then
@@ -28,30 +37,73 @@ fi
# USE_OPENMP=0: see GCC bug 60035
# NO_AFFINITY: don't expect to work on musl, also breaks R and not
# recommended for Julia
-_flags="USE_OPENMP=0
- NO_LAPACK=0
+# NO_STATIC: this is absolutely massive and not used anywhere in aports
+_flags="
MAJOR_VERSION=3
- NO_AFFINITY=1"
+ NO_AFFINITY=1
+ NO_STATIC=1
+ USE_OPENMP=0
+ PREFIX=/usr
+ "
case "$CARCH" in
-ppc64le) _flags="$_flags NUM_THREADS=64";; # POWER machines are big
-*64|s390x) _flags="$_flags NUM_THREADS=32";; # match kernel's CONFIG_NR_CPUS
-*) _flags="$_flags NUM_THREADS=8";; # 32bit machines usually have less cores
+ppc64le)
+ # POWER machines are big and have 4/8 way SMT
+ _flags="$_flags NUM_THREADS=64"
+ ;;
+*64|s390x)
+ # match kernel's CONFIG_NR_CPUS
+ _flags="$_flags NUM_THREADS=256"
+ ;;
+*)
+ # 32bit machines usually have fewer cores
+ _flags="$_flags NUM_THREADS=8"
+ ;;
esac
-# DYNAMIC_ARCH is supported on x86* only, see https://github.com/xianyi/OpenBLAS/issues/709
-[ "${CARCH%%_64*}" = "x86" ] && _flags="$_flags DYNAMIC_ARCH=1" || _flags="$_flags DYNAMIC_ARCH=0"
case "$CARCH" in
-x86*) _flags="$_flags TARGET=CORE2";;
-armhf) _flags="$_flags TARGET=ARMV7";;
-aarch64) _flags="$_flags TARGET=ARMV8";;
-ppc64le) _flags="$_flags TARGET=POWER8";;
-s390x) _flags="$_flags TARGET=ZARCH_GENERIC";;
+x86*)
+ # DYNAMIC_ARCH is supported on x86* only, see
+ # https://github.com/xianyi/OpenBLAS/issues/709
+ _flags="$_flags DYNAMIC_ARCH=1"
+ ;;
+*)
+ _flags="$_flags DYNAMIC_ARCH=0"
+ ;;
+esac
+
+case "$CARCH" in
+x86*)
+ _flags="$_flags TARGET=CORE2"
+ ;;
+armhf)
+ _flags="$_flags TARGET=ARMV6"
+ ;;
+armv7)
+ _flags="$_flags TARGET=ARMV7"
+ ;;
+aarch64)
+ _flags="$_flags TARGET=ARMV8"
+ ;;
+ppc64le)
+ _flags="$_flags TARGET=POWER8"
+ ;;
+s390x)
+ _flags="$_flags TARGET=ZARCH_GENERIC"
+ ;;
+riscv64)
+ _flags="$_flags TARGET=RISCV64_GENERIC"
+ ;;
+loongarch64)
+ _flags="$_flags TARGET=LOONGSONGENERIC"
+ ;;
esac
# Flags for ILP64 variant.
-_flags64="$_flags
+_flags64="
+ $_flags
INTERFACE64=1
- SYMBOLSUFFIX=64_"
+ SYMBOLSUFFIX=64_
+ "
prepare() {
default_prepare
@@ -65,49 +117,70 @@ prepare() {
}
build() {
- CFLAGS= make -C "$builddir" \
- $_flags CFLAGS="$CFLAGS" PREFIX=/usr
+ # OpenBLAS library is huge and it's heavily optimized for performance.
+ # It doesn't make sense to compile it with -Os.
+ export CFLAGS=${CFLAGS/-Os/-O2}
+
+ make -C "$builddir" \
+ $_flags CFLAGS="$CFLAGS"
+ make -C "$builddir"/interface \
+ $_flags CFLAGS="$CFLAGS" shared-blas-lapack
if $_ilp64; then
msg "Building with ILP64..."
- CFLAGS= make -C "$_builddir64" \
- $_flags64 CFLAGS="$CFLAGS" PREFIX=/usr
+ make -C "$_builddir64" $_flags64 CFLAGS="$CFLAGS"
fi
}
dev() {
- replaces="blas-dev lapack-dev"
+ provides="blas-dev lapack-dev"
+ replaces="$provides"
+
default_dev
}
check() {
- CFLAGS= make $_flags CFLAGS="$CFLAGS" tests
+ make -j1 $_flags CFLAGS="$CFLAGS" tests
}
package() {
if $_ilp64; then
- make -C "$_builddir64" $_flags64 \
- PREFIX="$pkgdir/usr" install
+ make -C "$_builddir64" $_flags64 DESTDIR="$pkgdir" install
fi
- make $_flags PREFIX="$pkgdir/usr" install
+ make $_flags DESTDIR="$pkgdir" install
+ install -Dm755 interface/liblapack.so.3 \
+ "$pkgdir"/usr/lib/liblapack.so.3
+ ln -s liblapack.so.3 "$pkgdir"/usr/lib/liblapack.so
+ install -Dm755 interface/liblapacke.so.3 \
+ "$pkgdir"/usr/lib/liblapacke.so.3
+ ln -s liblapacke.so.3 "$pkgdir"/usr/lib/liblapacke.so
- # Remove reference to $pkgdir.
- sed -i "s|$pkgdir||" "$pkgdir"/usr/lib/cmake/$pkgname/OpenBLASConfig.cmake
-
- mkdir -p "$pkgdir"/usr/share/doc/$pkgname
- install -m 0644 Changelog.txt TargetList.txt USAGE.md \
- "$pkgdir"/usr/share/doc/$pkgname/
-
- install -Dm 0644 LICENSE \
- "$pkgdir"/usr/share/licenses/$pkgname/LICENSE
+ install -Dm 0644 Changelog.txt TargetList.txt USAGE.md \
+ -t "$pkgdir"/usr/share/doc/$pkgname/
}
ilp64() {
pkgdesc="$pkgdesc (ILP64)"
- mkdir -p "$subpkgdir"/usr/lib
- mv "$pkgdir"/usr/lib/libopenblas64_* "$subpkgdir"/usr/lib/
+ amove usr/lib/libopenblas64_*
+}
+
+liblapack() {
+ pkgdesc="$pkgdesc (LAPACK library)"
+ # provides the same library
+ depends="!lapack"
+ amove usr/lib/liblapack.so.*
+}
+
+liblapacke() {
+ pkgdesc="$pkgdesc (LAPACKE library)"
+ # provides the same library
+ depends="!lapack"
+ amove usr/lib/liblapacke.so.*
}
-sha512sums="e34da25b3aaf959ec12826ac68c81e739e453d44f2dba28b15e57d7a827edc4d5f42988e9b6d98ac07999940be7b5876246cb3a980e590ae87f77f4c2f12f40a openblas-0.3.9.tar.gz"
+sha512sums="
+4accc5282244946157b7940211181e011940154ff47855702c68f57a0af2fa5a306f49e47b8c22c02eeff61760c6c220465f05a316a33ee3265bfce65ca4cb84 OpenBLAS-0.3.27.tar.gz
+a0540d1bc3cc596725234f9caaeaf59522ed75b02614713c1d4a536d78a0e79c132a0f39dd6f7c90d79daebe6a03a953ccf7c56d5ab059d6677eab533f5f304f blas-lapack.patch
+"