Files
James Hilliard 62648d9892 package/python-numpy: bump version to 2.4.0
Release notes: https://numpy.org/news/

Add new supported architectures.

License hash changed due to date update:
https://github.com/numpy/numpy/commit/c1ffdbc0c29d48ece717acb5bfbf811c935b41f6

We need to build python-numpy with its vendored version of meson as
it currently relies on features that are not yet upstream. To do this
we can simply set the PYTHONPATH with the vendored meson path before
the normal PYTHON3_PATH so that the vendored version will have
precedence. We need to set this for both host and target numpy.

We also need to set the architecture specific longdouble_format
property as numpy is unable to determine the value for this without
being able to execute target binaries.

See:
https://github.com/numpy/numpy/blob/3e7e5c3cabb8f1a0d940dc6f2058fed4a8c3e284/doc/source/building/cross_compilation.rst

Signed-off-by: James Hilliard <james.hilliard1@gmail.com>
[Bernd:
 Bumped to 2.4.0

 Removed patch which is included in this release.

 Updated license hashes due to upstream commits:
 - copyright year bumps:
   https://github.com/numpy/numpy/commits/v2.4.0/LICENSE.txt
 - file move
   tools/npy_tempita/license.txt -> numpy/_build_utils/tempita/LICENSE.txt
   https://github.com/numpy/numpy/commit/63a1fee8d1c1e442aa8ca08ac7cefb195f99b2a9
   https://github.com/numpy/numpy/commit/86940987a9d8d54c860d8c862d5d96c51b339f23
 - directory move core -> _core and various code updates
   https://github.com/numpy/numpy/commits/v2.4.0/numpy/_core/src/multiarray/dragon4.c
 - directory move core -> _core
   https://github.com/numpy/numpy/commits/v2.4.0/numpy/_core/include/numpy/libdivide/LICENSE.txt

 Following Romain's review
 https://lists.buildroot.org/pipermail/buildroot/2024-November/767739.html
 host-python-numpy was switched back to host-python-package to install the
 f2py script needed by the upcoming bump of python-scipy. A dependency to
 host-python-meson-python is also needed.

 Removed PYTHON_NUMPY_LONGDOUBLE_FORMAT configure option for BR2_arceb
 after this arch was removed from buildroot.

 Changed path in PYTHON_NUMPY_FIXUP_NPY_PKG_CONFIG_FILES following
 upstream commit
 https://github.com/numpy/numpy/commit/923f219077c8aa3ad7d3792d8c06cba010b70252
 and updated opencv4 as well]
Signed-off-by: Bernd Kuhls <bernd@kuhls.net>

Signed-off-by: Julien Olivain <ju.o@free.fr>
2026-01-21 21:05:54 +01:00

119 lines
4.4 KiB
Makefile

################################################################################
#
# python-numpy
#
################################################################################
PYTHON_NUMPY_VERSION = 2.4.0
PYTHON_NUMPY_SOURCE = numpy-$(PYTHON_NUMPY_VERSION).tar.gz
PYTHON_NUMPY_SITE = https://files.pythonhosted.org/packages/a4/7a/6a3d14e205d292b738db449d0de649b373a59edb0d0b4493821d0a3e8718
PYTHON_NUMPY_LICENSE = BSD-3-Clause, MIT, Zlib
PYTHON_NUMPY_LICENSE_FILES = \
LICENSE.txt \
numpy/_build_utils/tempita/LICENSE.txt \
numpy/_core/src/multiarray/dragon4.c \
numpy/_core/include/numpy/libdivide/LICENSE.txt \
numpy/linalg/lapack_lite/LICENSE.txt
PYTHON_NUMPY_CPE_ID_VENDOR = numpy
PYTHON_NUMPY_CPE_ID_PRODUCT = numpy
PYTHON_NUMPY_DEPENDENCIES = host-python-cython python3
HOST_PYTHON_NUMPY_DEPENDENCIES = host-python-cython host-python-meson-python
PYTHON_NUMPY_CONF_ENV += \
_PYTHON_SYSCONFIGDATA_NAME=$(PKG_PYTHON_SYSCONFIGDATA_NAME) \
PYTHONPATH="$(@D)/vendored-meson/meson:$(PYTHON3_PATH)"
PYTHON_NUMPY_NINJA_ENV += \
PYTHONPATH="$(@D)/vendored-meson/meson:$(PYTHON3_PATH)"
ifeq ($(BR2_PACKAGE_LAPACK),y)
PYTHON_NUMPY_DEPENDENCIES += lapack
PYTHON_NUMPY_CONF_OPTS += -Dlapack=lapack
else
PYTHON_NUMPY_CONF_OPTS += -Dlapack=""
endif
ifeq ($(BR2_PACKAGE_OPENBLAS),y)
PYTHON_NUMPY_DEPENDENCIES += openblas
PYTHON_NUMPY_CONF_OPTS += -Dblas=openblas
else
PYTHON_NUMPY_CONF_OPTS += -Dblas=""
endif
# Generated by running this test program under QEMU:
# https://github.com/numpy/numpy/blob/v1.26.4/numpy/core/meson.build#L376-L455
ifeq ($(BR2_arcle),y)
PYTHON_NUMPY_LONGDOUBLE_FORMAT = IEEE_DOUBLE_LE
else ifeq ($(BR2_aarch64),y)
PYTHON_NUMPY_LONGDOUBLE_FORMAT = IEEE_QUAD_LE
else ifeq ($(BR2_aarch64_be),y)
PYTHON_NUMPY_LONGDOUBLE_FORMAT = IEEE_QUAD_BE
else ifeq ($(BR2_arm),y)
PYTHON_NUMPY_LONGDOUBLE_FORMAT = IEEE_DOUBLE_LE
else ifeq ($(BR2_armeb),y)
PYTHON_NUMPY_LONGDOUBLE_FORMAT = IEEE_DOUBLE_BE
else ifeq ($(BR2_i386),y)
PYTHON_NUMPY_LONGDOUBLE_FORMAT = INTEL_EXTENDED_12_BYTES_LE
else ifeq ($(BR2_or1k),y)
PYTHON_NUMPY_LONGDOUBLE_FORMAT = IEEE_DOUBLE_BE
else ifeq ($(BR2_m68k),y)
PYTHON_NUMPY_LONGDOUBLE_FORMAT = MOTOROLA_EXTENDED_12_BYTES_BE
else ifeq ($(BR2_mips),y)
PYTHON_NUMPY_LONGDOUBLE_FORMAT = IEEE_DOUBLE_BE
else ifeq ($(BR2_mipsel),y)
PYTHON_NUMPY_LONGDOUBLE_FORMAT = IEEE_DOUBLE_LE
else ifeq ($(BR2_powerpc),y)
PYTHON_NUMPY_LONGDOUBLE_FORMAT = IBM_DOUBLE_DOUBLE_BE
else ifeq ($(BR2_powerpc64),y)
PYTHON_NUMPY_LONGDOUBLE_FORMAT = IBM_DOUBLE_DOUBLE_BE
else ifeq ($(BR2_powerpc64le),y)
PYTHON_NUMPY_LONGDOUBLE_FORMAT = IBM_DOUBLE_DOUBLE_LE
else ifeq ($(BR2_riscv),y)
PYTHON_NUMPY_LONGDOUBLE_FORMAT = IEEE_QUAD_LE
else ifeq ($(BR2_sh4)$(BR2_sh4a),y)
PYTHON_NUMPY_LONGDOUBLE_FORMAT = IEEE_DOUBLE_LE
else ifeq ($(BR2_sh4eb)$(BR2_sh4aeb),y)
PYTHON_NUMPY_LONGDOUBLE_FORMAT = IEEE_DOUBLE_BE
else ifeq ($(BR2_sparc),y)
PYTHON_NUMPY_LONGDOUBLE_FORMAT = IEEE_DOUBLE_BE
else ifeq ($(BR2_sparc64),y)
PYTHON_NUMPY_LONGDOUBLE_FORMAT = IEEE_QUAD_BE
else ifeq ($(BR2_x86_64),y)
PYTHON_NUMPY_LONGDOUBLE_FORMAT = INTEL_EXTENDED_16_BYTES_LE
endif
PYTHON_NUMPY_MESON_EXTRA_PROPERTIES = \
longdouble_format='$(PYTHON_NUMPY_LONGDOUBLE_FORMAT)'
HOST_PYTHON_NUMPY_SETUP_TYPE = setuptools
HOST_PYTHON_NUMPY_CONF_ENV += \
PYTHONPATH="$(@D)/vendored-meson/meson:$(HOST_DIR)/lib/python$(PYTHON3_VERSION_MAJOR)"
HOST_PYTHON_NUMPY_NINJA_ENV += \
PYTHONPATH="$(@D)/vendored-meson/meson:$(HOST_DIR)/lib/python$(PYTHON3_VERSION_MAJOR)"
# Rather than add a host-blas or host-lapack dependencies, just use unoptimized,
# in-tree code.
HOST_PYTHON_NUMPY_CONF_OPTS = -Dblas="" -Dlapack=""
# Fixup the npymath.ini prefix path with actual target staging area where
# numpy core was built. Without this, target builds using numpy distutils
# extensions like python-scipy, python-numba cannot find -lnpymath since
# it uses host libraries (like libnpymath.a).
# So, the numpy distutils extension packages would explicitly link this
# config path for their package environment.
define PYTHON_NUMPY_FIXUP_NPY_PKG_CONFIG_FILES
$(SED) '/^pkgdir=/d;/^prefix=/i pkgdir=$(PYTHON3_PATH)/site-packages/numpy/core' \
$(PYTHON3_PATH)/site-packages/numpy/_core/lib/npy-pkg-config/npymath.ini
endef
PYTHON_NUMPY_POST_INSTALL_STAGING_HOOKS += PYTHON_NUMPY_FIXUP_NPY_PKG_CONFIG_FILES
# Some package may include few headers from NumPy, so let's install it
# in the staging area.
PYTHON_NUMPY_INSTALL_STAGING = YES
$(eval $(meson-package))
$(eval $(host-python-package))