Mail archive
alpine-devel

[alpine-devel] [PATCH 1/2] Add testing/openblas.

From: Isaac Dunham <ibid.ag_at_gmail.com>
Date: Thu, 28 Aug 2014 15:19:03 -0700

OpenBLAS is a fast implementation of BLAS that's easier to build than ATLAS;
it also includes LAPACK support.
---
 testing/openblas/00-cpuid.patch | 34 ++++++++++++++++++++++++++
 testing/openblas/APKBUILD       | 53 +++++++++++++++++++++++++++++++++++++++++
 2 files changed, 87 insertions(+)
 create mode 100644 testing/openblas/00-cpuid.patch
 create mode 100644 testing/openblas/APKBUILD
diff --git a/testing/openblas/00-cpuid.patch b/testing/openblas/00-cpuid.patch
new file mode 100644
index 0000000..7758b46
--- /dev/null
+++ b/testing/openblas/00-cpuid.patch
_at_@ -0,0 +1,34 @@
+commit db7e6366cd86b57cd0712293968938058288bde0
+Author: Isaac Dunham <ibid.ag_at_gmail.com>
+Date:   Thu Aug 28 13:05:07 2014 -0700
+
+    Workaround PIC limitations in cpuid.
+    
+    cpuid uses register ebx, but ebx is reserved in PIC.
+    So save ebx, swap ebx & edi, and return edi.
+    
+    Copied from Igor Pavlov's equivalent fix for 7zip (in CpuArch.c),
+    which is public domain and thus OK license-wise.
+
+diff --git a/cpuid_x86.c b/cpuid_x86.c
+index 53016e1..f9df722 100644
+--- a/cpuid_x86.c
++++ b/cpuid_x86.c
+_at_@ -59,9 +59,16 @@
+ void cpuid(int op, int *eax, int *ebx, int *ecx, int *edx);
+ #else
+ static inline void cpuid(int op, int *eax, int *ebx, int *ecx, int *edx){
++#if defined(__i386__) && defined(__PIC__)
++  __asm__ __volatile__
++    ("mov %%ebx, %%edi;"
++     "cpuid;"
++     "xchgl %%ebx, %%edi;"
++     : "=a" (*eax), "=D" (*ebx), "=c" (*ecx), "=d" (*edx) : "a" (op) : "cc");
++#else
+   __asm__ __volatile__
+     ("cpuid": "=a" (*eax), "=b" (*ebx), "=c" (*ecx), "=d" (*edx) : "a" (op) : "cc");
+-
++#endif
+ }
+ #endif
+ 
diff --git a/testing/openblas/APKBUILD b/testing/openblas/APKBUILD
new file mode 100644
index 0000000..ce6f2fc
--- /dev/null
+++ b/testing/openblas/APKBUILD
_at_@ -0,0 +1,53 @@
+# Contributor: Isaac Dunham <ibid.ag_at_gmail.com>
+# Maintainer: Isaac Dunham <ibid.ag_at_gmail.com>
+pkgname=openblas
+pkgver=0.2.11
+pkgrel=0
+pkgdesc="A fast BSD-licensed BLAS based on gotoBLAS2, with LAPACK"
+url="http://www.openblas.net"
+arch="all"
+license="BSD"
+depends=""
+depends_dev="gfortran"
+makedepends="$depends_dev"
+install=""
+subpackages="$pkgname-dev $pkgname-doc"
+source="$pkgname-$pkgver.tar.gz::http://github.com/xianyi/OpenBLAS/archive/v$pkgver.tar.gz
+	00-cpuid.patch"
+
+_builddir="$srcdir"/OpenBLAS-$pkgver
+prepare() {
+	local i
+	cd "$_builddir"
+	for i in $source; do
+		case $i in
+		*.patch) msg $i; patch -p1 -i "$srcdir"/$i || return 1;;
+		esac
+	done
+}
+
+build() {
+	cd "$_builddir"
+#USE_OPENMP=0: see GCC bug 60035
+#NO_AFFINITY: don't expect to work on musl, also breaks R
+#DYNAMIC_ARCH=1 requires 00-cpuid.patch
+	make USE_OPENMP=0 NO_LAPACK=0 NUM_THREADS=8 MAJOR_VERSION=3 \
+	NO_AFFINITY=1 DYNAMIC_ARCH=1 PREFIX=/usr || return 1
+}
+
+package() {
+	cd "$_builddir"
+	mkdir -pm 0755 "$pkgdir/usr/lib" "$pkgdir/usr/include" \
+	"$pkgdir/usr/share/doc/$pkgname" || return 1
+	make USE_OPENMP=0 NO_LAPACK=0 NUM_THREADS=2 MAJOR_VERSION=3 \
+	NO_AFFINITY=1 DYNAMIC_ARCH=1 PREFIX="$pkgdir/usr" install || return 1
+	for FILE in *.txt *.md LICENSE; do
+		install -m 0644 $FILE "$pkgdir/usr/share/doc/$pkgname" || return 1
+	done
+}
+md5sums="c456f3c5e84c3ab69ef89b22e616627a  openblas-0.2.11.tar.gz
+0b8b59052a6387fe4aa9e3e473b3749b  00-cpuid.patch"
+sha256sums="dc06836e700ef26519933af309a25958150693c376a536fe35d633d76f1a5606  openblas-0.2.11.tar.gz
+65a809e9f0f06fd9ccefd0af6bc7c398fefe011404f699926946320783050d8b  00-cpuid.patch"
+sha512sums="68abdf8366d4766fe5d852ca3850ea6236d4dc5bad044fa4116ca60872716003746bcfdb1005aac87533d9a085ae319ef18b7ed6f293baf88c79fd7c8562c9f0  openblas-0.2.11.tar.gz
+1f41a324a9f233ef5fe037cd16c4aeabaf5895ba42e2f3758f8bb7a2cddda967fc01df50d86218f316d9406bb6ced4e91d4aec8119fc8f9c2f11b4ecf24e551f  00-cpuid.patch"
-- 
2.1.0
---
Unsubscribe:  alpine-devel+unsubscribe_at_lists.alpinelinux.org
Help:         alpine-devel+help_at_lists.alpinelinux.org
---
Received on Thu Aug 28 2014 - 15:19:03 UTC