diff --git a/package/opencv4/opencv4.mk b/package/opencv4/opencv4.mk index d31d0ae598..695355c308 100644 --- a/package/opencv4/opencv4.mk +++ b/package/opencv4/opencv4.mk @@ -400,7 +400,7 @@ OPENCV4_CONF_OPTS += \ -DPYTHON3_EXECUTABLE=$(HOST_DIR)/bin/python3 \ -DPYTHON3_INCLUDE_PATH=$(STAGING_DIR)/usr/include/python$(PYTHON3_VERSION_MAJOR) \ -DPYTHON3_LIBRARIES=$(STAGING_DIR)/usr/lib/libpython$(PYTHON3_VERSION_MAJOR).so \ - -DPYTHON3_NUMPY_INCLUDE_DIRS=$(STAGING_DIR)/usr/lib/python$(PYTHON3_VERSION_MAJOR)/site-packages/numpy/core/include \ + -DPYTHON3_NUMPY_INCLUDE_DIRS=$(STAGING_DIR)/usr/lib/python$(PYTHON3_VERSION_MAJOR)/site-packages/numpy/_core/include \ -DPYTHON3_PACKAGES_PATH=/usr/lib/python$(PYTHON3_VERSION_MAJOR)/site-packages \ -DPYTHON3_NUMPY_VERSION=$(PYTHON_NUMPY_VERSION) OPENCV4_DEPENDENCIES += python3 diff --git a/package/python-numpy/0001-MNT-do-not-use-long-type.patch b/package/python-numpy/0001-MNT-do-not-use-long-type.patch deleted file mode 100644 index d813a4d51b..0000000000 --- a/package/python-numpy/0001-MNT-do-not-use-long-type.patch +++ /dev/null @@ -1,34 +0,0 @@ -From 6dc2fd31f8a5a4ef502cb7734f004f5bce94e671 Mon Sep 17 00:00:00 2001 -From: Thomas A Caswell -Date: Sat, 18 Nov 2023 16:46:52 -0500 -Subject: [PATCH] MNT: do not use `long` type -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -Removed as type at language level 3 in ed7e95912b6ed7d20e190fbf1aecb9f2a997d479 -in cython - -Upstream: https://github.com/numpy/numpy/commit/6dc2fd31f8a5a4ef502cb7734f004f5bce94e671 - -Signed-off-by: Sébastien Szymanski ---- - numpy/random/_generator.pyx | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/numpy/random/_generator.pyx b/numpy/random/_generator.pyx -index d067e795eb5c..ae481d69d696 100644 ---- a/numpy/random/_generator.pyx -+++ b/numpy/random/_generator.pyx -@@ -3757,7 +3757,7 @@ def multivariate_normal(self, mean, cov, size=None, check_valid='warn', - - if size is None: - shape = [] -- elif isinstance(size, (int, long, np.integer)): -+ elif isinstance(size, (int, np.integer)): - shape = [size] - else: - shape = size --- -2.49.1 - diff --git a/package/python-numpy/Config.in b/package/python-numpy/Config.in index e10618f058..f8c71274cd 100644 --- a/package/python-numpy/Config.in +++ b/package/python-numpy/Config.in @@ -3,15 +3,21 @@ config BR2_PACKAGE_PYTHON_NUMPY_ARCH_SUPPORTS # Numpy has some CPU specific code default y if BR2_arc default y if BR2_aarch64 + default y if BR2_aarch64_be default y if BR2_arm default y if BR2_armeb default y if BR2_i386 + default y if BR2_m68k default y if BR2_mips default y if BR2_mipsel + default y if BR2_or1k default y if BR2_powerpc default y if BR2_powerpc64 + default y if BR2_powerpc64le default y if BR2_riscv default y if BR2_sh + default y if BR2_sparc + default y if BR2_sparc64 default y if BR2_x86_64 config BR2_PACKAGE_PYTHON_NUMPY diff --git a/package/python-numpy/python-numpy.hash b/package/python-numpy/python-numpy.hash index 6629cebbce..6dca37294a 100644 --- a/package/python-numpy/python-numpy.hash +++ b/package/python-numpy/python-numpy.hash @@ -1,8 +1,9 @@ -# Copied from https://github.com/numpy/numpy/releases/tag/v1.25.0 -sha256 f1accae9a28dc3cda46a91de86acf69de0d1b5f4edd44a9b0c3ceb8036dfff19 numpy-1.25.0.tar.gz +# md5, sha256 from https://pypi.org/pypi/numpy/json +md5 828b6c6df0b6f89b5cf799314d4ee2b6 numpy-2.4.0.tar.gz +sha256 6e504f7b16118198f138ef31ba24d985b124c2c469fe8467007cf30fd992f934 numpy-2.4.0.tar.gz # License files, locally calculated -sha256 1034d3bd61783f3b5e7ec3e7ca818f4da4135132323a0ef99f4c0edb3c7f6bd2 LICENSE.txt -sha256 c27d0a8026bdb8876562b720ab24d1688e3827a89f6083cd6e7e8caa9584aba3 numpy/core/src/multiarray/dragon4.c -sha256 fbc539f47d0cf83bc61378080fb873d5c14630126cacbfe754035c3926daa5ec numpy/core/include/numpy/libdivide/LICENSE.txt +sha256 1be1df33863f97a7bc1c4d67980bd6c69c9a6fef0a5ee76e6ad6cb91e56e8491 LICENSE.txt +sha256 743b0f4a0087fe3607167113fffab6f2ca069c8da321763697ab5d0d8411634a numpy/_build_utils/tempita/LICENSE.txt +sha256 e09cfef237f1c47fec6c11926e23ed2222404d1e4357b5d65e65a2daf9d83949 numpy/_core/src/multiarray/dragon4.c +sha256 fbc539f47d0cf83bc61378080fb873d5c14630126cacbfe754035c3926daa5ec numpy/_core/include/numpy/libdivide/LICENSE.txt sha256 a14cc25e10d40a3aa705b7de2fb764a6535d8ee9b2db4e1724900585457dfd55 numpy/linalg/lapack_lite/LICENSE.txt -sha256 badf51c7e3e7de9c7630bd069780f5c197b846ef7660b342a1e58d5553592d8e tools/npy_tempita/license.txt diff --git a/package/python-numpy/python-numpy.mk b/package/python-numpy/python-numpy.mk index 200fac20a1..6b052569fe 100644 --- a/package/python-numpy/python-numpy.mk +++ b/package/python-numpy/python-numpy.mk @@ -4,25 +4,28 @@ # ################################################################################ -PYTHON_NUMPY_VERSION = 1.25.0 +PYTHON_NUMPY_VERSION = 2.4.0 PYTHON_NUMPY_SOURCE = numpy-$(PYTHON_NUMPY_VERSION).tar.gz -PYTHON_NUMPY_SITE = https://github.com/numpy/numpy/releases/download/v$(PYTHON_NUMPY_VERSION) +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/core/src/multiarray/dragon4.c \ - numpy/core/include/numpy/libdivide/LICENSE.txt \ - numpy/linalg/lapack_lite/LICENSE.txt \ - tools/npy_tempita/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_NUMPY_DEPENDENCIES = host-python-cython host-python-meson-python PYTHON_NUMPY_CONF_ENV += \ _PYTHON_SYSCONFIGDATA_NAME=$(PKG_PYTHON_SYSCONFIGDATA_NAME) \ - PYTHONPATH=$(PYTHON3_PATH) + 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 @@ -38,6 +41,59 @@ 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="" @@ -50,7 +106,7 @@ HOST_PYTHON_NUMPY_CONF_OPTS = -Dblas="" -Dlapack="" # 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 + $(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 @@ -59,4 +115,4 @@ PYTHON_NUMPY_POST_INSTALL_STAGING_HOOKS += PYTHON_NUMPY_FIXUP_NPY_PKG_CONFIG_FIL PYTHON_NUMPY_INSTALL_STAGING = YES $(eval $(meson-package)) -$(eval $(host-meson-package)) +$(eval $(host-python-package))