~ruther/guix-local

6c6a442ff6a82e06ef31e561a2bb3e5b34efc5e5 — Janneke Nieuwenhuizen 1 year, 6 months ago d4f2e2a
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
3 files changed, 52 insertions(+), 11 deletions(-)

M gnu/local.mk
A gnu/packages/patches/python-numpy-gcc-14.patch
M gnu/packages/python-xyz.scm
M gnu/local.mk => gnu/local.mk +1 -0
@@ 2047,6 2047,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	\

A gnu/packages/patches/python-numpy-gcc-14.patch => gnu/packages/patches/python-numpy-gcc-14.patch +14 -0
@@ 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"
 

M gnu/packages/python-xyz.scm => gnu/packages/python-xyz.scm +37 -11
@@ 9976,7 9976,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)


@@ 10062,7 10062,7 @@ writing C extensions for Python as easy as Python itself.")
    ;; - URL <https://raw.githubusercontent.com/numpy/numpy>
    ;; - commit :: 2f3549c9d7c5048621568e431c86bc7530742723
    ;; - file <doc/source/building/understanding_meson.rst>
    (version "1.26.2")
    (version "1.26.4")
    (source
     (origin
       (method url-fetch)


@@ 10071,7 10071,8 @@ writing C extensions for Python as easy as Python itself.")
             version "/numpy-" version ".tar.gz"))
       (sha256
        (base32
         "1snknqb4hmv6b720nsaz21g7h6z1ikdvnsqyy5vmgavnfr23hmzn"))))
         "0410j6jfz1yzm5s0v0yrc1j0q6ih4322357and7arr0jxnlsn0ia"))
       (patches (search-patches "python-numpy-gcc-14.patch"))))
    (build-system pyproject-build-system)
    (arguments
     (list


@@ 10092,6 10093,10 @@ writing C extensions for Python as easy as Python itself.")
                         (delete (string-append gfortran "/include/c++")
                                 (string-split (getenv "CPLUS_INCLUDE_PATH") #\:))
                         ":")))))
          (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"


@@ 10174,21 10179,42 @@ include_dirs = ~:*~a/include~%"
                              ;; 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"
                                     " and not test_fp_noncontiguous")
                                   '())))))))))
    (native-inputs
     (list gfortran
           meson-python
                                   `(" and not test_fp_noncontiguous")
                                   '())
                              ;; 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-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")