guix-commits
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

01/01: gnu: openblas: Fix build on i686.


From: Marius Bakke
Subject: 01/01: gnu: openblas: Fix build on i686.
Date: Wed, 20 Jun 2018 17:12:54 -0400 (EDT)

mbakke pushed a commit to branch staging
in repository guix.

commit b7a46ed22764db9097aba96e68143d46b2a75be0
Author: Marius Bakke <address@hidden>
Date:   Wed Jun 20 15:18:35 2018 +0200

    gnu: openblas: Fix build on i686.
    
    * gnu/packages/patches/openblas-fix-tests-i686.patch: New file.
    * gnu/local.mk (dist_patch_DATA): Register it.
    * gnu/packages/maths.scm (openblas)[native-inputs]: Add it.
    [arguments]: Add phase to apply it on i686 systems only.
---
 gnu/local.mk                                       |  1 +
 gnu/packages/maths.scm                             | 15 ++++++++++
 gnu/packages/patches/openblas-fix-tests-i686.patch | 35 ++++++++++++++++++++++
 3 files changed, 51 insertions(+)

diff --git a/gnu/local.mk b/gnu/local.mk
index 4fc54e6..521c7f1 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -967,6 +967,7 @@ dist_patch_DATA =                                           
\
   %D%/packages/patches/omake-fix-non-determinism.patch \
   %D%/packages/patches/ola-readdir-r.patch                     \
   %D%/packages/patches/opencascade-oce-glibc-2.26.patch                \
+  %D%/packages/patches/openblas-fix-tests-i686.patch           \
   %D%/packages/patches/openexr-missing-samples.patch           \
   %D%/packages/patches/openfoam-4.1-cleanup.patch                      \
   %D%/packages/patches/openldap-CVE-2017-9287.patch            \
diff --git a/gnu/packages/maths.scm b/gnu/packages/maths.scm
index a644468..7d70ac1 100644
--- a/gnu/packages/maths.scm
+++ b/gnu/packages/maths.scm
@@ -2836,6 +2836,16 @@ parts of it.")
        #:phases
        (modify-phases %standard-phases
          (delete 'configure)
+         ;; Conditionally apply a patch on i686 to avoid rebuilding
+         ;; all architectures.  FIXME: This should be moved to the
+         ;; (source (patches ...)) field in the next rebuild cycle.
+         ,@(if (string-prefix? "i686" (or (%current-target-system)
+                                          (%current-system)))
+               `((add-after 'unpack 'fix-tests
+                   (lambda* (#:key inputs #:allow-other-keys)
+                     (invoke "patch" "-p1"
+                             "--input" (assoc-ref inputs 
"i686-fix-tests.patch")))))
+               '())
          (add-before 'build 'set-extralib
            (lambda* (#:key inputs #:allow-other-keys)
              ;; Get libgfortran found when building in utest.
@@ -2847,6 +2857,11 @@ parts of it.")
      `(("fortran-lib" ,gfortran "lib")))
     (native-inputs
      `(("cunit" ,cunit)
+       ,@(if (string-prefix? "i686" (or (%current-target-system)
+                                        (%current-system)))
+             `(("i686-fix-tests.patch"
+                ,(search-patch "openblas-fix-tests-i686.patch")))
+             '())
        ("fortran" ,gfortran)
        ("perl" ,perl)))
     (home-page "http://www.openblas.net/";)
diff --git a/gnu/packages/patches/openblas-fix-tests-i686.patch 
b/gnu/packages/patches/openblas-fix-tests-i686.patch
new file mode 100644
index 0000000..3325546
--- /dev/null
+++ b/gnu/packages/patches/openblas-fix-tests-i686.patch
@@ -0,0 +1,35 @@
+Fix a test failure on some i686 systems:
+
+https://github.com/xianyi/OpenBLAS/issues/1575
+
+This patch is a squashed version of these commits:
+
+https://github.com/xianyi/OpenBLAS/pull/1583
+
+diff --git a/kernel/x86/KERNEL.NEHALEM b/kernel/x86/KERNEL.NEHALEM
+index 835520ef..65b03ae5 100644
+--- a/kernel/x86/KERNEL.NEHALEM
++++ b/kernel/x86/KERNEL.NEHALEM
+@@ -1,3 +1 @@
+ include $(KERNELDIR)/KERNEL.PENRYN
+-SSWAPKERNEL  = ../arm/swap.c
+-DSWAPKERNEL  = ../arm/swap.c
+diff --git a/kernel/x86/swap.S b/kernel/x86/swap.S
+index 54b00b33..e30c2789 100644
+--- a/kernel/x86/swap.S
++++ b/kernel/x86/swap.S
+@@ -138,6 +138,14 @@
+ /* INCX != 1 or INCY != 1 */
+ 
+ .L14:
++      cmpl    $0, %ebx
++      jne     .L141
++      cmpl    $0, %ecx
++      jne     .L141
++/* INCX == 0 and INCY == 0 */
++      jmp     .L27
++
++.L141:
+       movl    %edx, %eax
+       sarl    $2,   %eax
+       jle     .L28



reply via email to

[Prev in Thread] Current Thread [Next in Thread]