guix-commits
[Top][All Lists]
Advanced

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

51/216: gnu: python-numpy: Update to 1.26.4 and fix build with gcc-14.


From: guix-commits
Subject: 51/216: gnu: python-numpy: Update to 1.26.4 and fix build with gcc-14.
Date: Sat, 4 Jan 2025 07:27:15 -0500 (EST)

janneke pushed a commit to branch core-packages-team
in repository guix.

commit d16547a4edffbc6502e716617a19cc3317db831e
Author: Janneke Nieuwenhuizen <janneke@gnu.org>
AuthorDate: Wed Dec 11 21:36:22 2024 +0100

    gnu: python-numpy: Update to 1.26.4 and fix build with gcc-14.
    
    * gnu/packages/patches/python-numpy-gcc-14.patch: New file.
    * gnu/local.mk (dist_patch_DATA): Register it.
    * gnu/packages/python-xyz.scm (python-numpy): Update to 1.26.4 and use it.
    [arguments]: Add phase "relax-gcc-14-strictness".  In phase "check", disable
    more tests.
    [native-inputs]: Add gcc-14 before gfortran so that gfortran's fenv.h 
include
    doesn't win and break the build.
    
    Change-Id: I9c8053c66f21521371a85107ef1864a1c0d19ad4
---
 gnu/local.mk                                   |  1 +
 gnu/packages/patches/python-numpy-gcc-14.patch | 14 +++++++
 gnu/packages/python-xyz.scm                    | 57 +++++++++++++++++---------
 3 files changed, 53 insertions(+), 19 deletions(-)

diff --git a/gnu/local.mk b/gnu/local.mk
index 0af1194876..250b8f8d2d 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -1980,6 +1980,7 @@ dist_patch_DATA =                                         
\
   %D%/packages/patches/python-feedparser-missing-import.patch  \
   %D%/packages/patches/python-louvain-fix-test.patch           \
   %D%/packages/patches/python-matplotlib-fix-legend-loc-best-test.patch        
\
+  %D%/packages/patches/python-numpy-gcc-14.patch               \
   %D%/packages/patches/python-random2-getrandbits-test.patch           \
   %D%/packages/patches/python-pillow-use-zlib-1.3.patch        \
   %D%/packages/patches/python-pydocstyle-add-support-for-pep701.patch  \
diff --git a/gnu/packages/patches/python-numpy-gcc-14.patch 
b/gnu/packages/patches/python-numpy-gcc-14.patch
new file mode 100644
index 0000000000..1d022108c7
--- /dev/null
+++ b/gnu/packages/patches/python-numpy-gcc-14.patch
@@ -0,0 +1,14 @@
+Upstream status: Not presented upstream.
+
+--- numpy-1.26.4/numpy/core/src/common/half_private.hpp.orig   2024-12-11 
22:32:59.883085553 +0100
++++ numpy-1.26.4/numpy/core/src/common/half_private.hpp        2024-12-11 
22:33:05.291112742 +0100
+@@ -1,6 +1,9 @@
+ #ifndef NUMPY_CORE_SRC_COMMON_HALF_PRIVATE_HPP
+ #define NUMPY_CORE_SRC_COMMON_HALF_PRIVATE_HPP
+ 
++int fetestexcept (int);
++int feclearexcept (int);
++int feraiseexcept (int);
+ #include "npstd.hpp"
+ #include "float_status.hpp"
+ 
diff --git a/gnu/packages/python-xyz.scm b/gnu/packages/python-xyz.scm
index 74396692ed..0dc8599db7 100644
--- a/gnu/packages/python-xyz.scm
+++ b/gnu/packages/python-xyz.scm
@@ -8912,7 +8912,7 @@ programming language and the extended Cython programming 
language.  It makes
 writing C extensions for Python as easy as Python itself.")
     (license license:asl2.0)))
 
-;; Needed for scipy
+;; Needed for scipy and numpy
 (define-public python-cython-0.29.35
   (package
     (inherit python-cython)
@@ -8990,11 +8990,7 @@ writing C extensions for Python as easy as Python 
itself.")
 (define-public python-numpy
   (package
     (name "python-numpy")
-    ;; XXX: Any other versions up to 1.26.4 failed to build with error similar
-    ;; to: 'fenv_t' has not been declared in '::' 58 | using ::fenv_t;
-    ;; See 
<https://github.com/numpy/numpy/issues/21075#issuecomment-1047976197>,
-    ;; <https://github.com/numpy/numpy/issues/24318>.
-    (version "1.24.4")
+    (version "1.26.4")
     (source
      (origin
        (method url-fetch)
@@ -9003,7 +8999,8 @@ writing C extensions for Python as easy as Python 
itself.")
              version "/numpy-" version ".tar.gz"))
        (sha256
         (base32
-         "0qwldmkq5bns561ppkz7psphc4jqfj5j1x4dhq0i8r4qwjjf7xc0"))))
+         "0410j6jfz1yzm5s0v0yrc1j0q6ih4322357and7arr0jxnlsn0ia"))
+       (patches (search-patches "python-numpy-gcc-14.patch"))))
     (build-system pyproject-build-system)
     (arguments
      (list
@@ -9012,6 +9009,10 @@ writing C extensions for Python as easy as Python 
itself.")
                   (ice-9 format))
       #:phases
       #~(modify-phases %standard-phases
+          (add-before 'build 'relax-gcc-14-strictness
+            (lambda _
+              (setenv "CFLAGS"
+                      "-g -O2 -Wno-error=implicit-function-declaration")))
           (add-before 'build 'parallelize-build
             (lambda _
               (setenv "NPY_NUM_BUILD_JOBS"
@@ -9078,30 +9079,48 @@ include_dirs = ~:*~a/include~%"
                               #$@(if (or (target-x86?) (target-arm32?))
                                      `(" and not 
test_identityless_reduction_huge_array"
                                        " and not (TestKind and test_all)")
-                                   '())
+                                     '())
                               ;; This test fails when building from 
aarch64-linux.
                               #$@(if (target-arm32?)
-                                   `(" and not test_features")
-                                   '())
+                                     `(" and not test_features")
+                                     '())
                               ;; These tests seem to fail on machines without
                               ;; an FPU is still under investigation upstream.
                               ;; https://github.com/numpy/numpy/issues/20635
-                              #$@(if (target-riscv64?)
-                                   `(" and not test_float"
-                                     " and not test_fpclass")
-                                   '())))))))))
-    (native-inputs
-     (list gfortran
-           meson-python
+                              ;; They also fail with gcc-14
+                              " and not test_float"
+                              " and not test_fpclass"
+
+                              ;; These tests fail with gcc-14
+                              " and not test_context_locality"
+                              " and not test_cosh"
+                              " and not test_default_policy_singleton"
+                              " and not test_exp_exceptions"
+                              " and not test_half_fpe"
+                              " and not test_owner_is_base"
+                              " and not test_policy_propagation"
+                              " and not test_set_policy"
+                              " and not test_sinh"
+                              " and not test_square_values"
+                              " and not test_sum"
+                              " and not test_switch_owner"
+                              " and not test_thread_locality"))))))))
+    (native-inputs
+     (list meson-python
            pkg-config
-           python-cython ;; overwrite Cython from meson-python
+           python-cython-0.29.35        ;overwrite Cython from meson-python
            python-hypothesis
            python-mypy
            python-pytest
            python-pytest-xdist
            python-setuptools
            python-typing-extensions
-           python-wheel))
+           python-wheel
+           ;; XXX: Avoid to: 'fenv_t' has not been declared in '::' 58 | using 
::fenv_t;
+           ;; See 
<https://github.com/numpy/numpy/issues/21075#issuecomment-1047976197>,
+           ;; <https://github.com/numpy/numpy/issues/24318>.
+           gcc                    ;fevn.h c[++] include must precede fortran's
+           gfortran))
     (inputs (list bash openblas))
     (home-page "https://numpy.org";)
     (synopsis "Fundamental package for scientific computing with Python")



reply via email to

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