numpy: bump to version 2.2.1

Dropped:
  003-without-vendored-meson.patch
  004-workaround-for-multiple-top-level-packages-discovered.patch

This time, we really need to use meson to build numpy.
And to make things more complicated, the 'vendored' meson package (that
comes with numpy) must be used. This is because they have some special
logic in there that's specific to numpy.

With this change, we also need to keep a special/internal
'openwrt-cross.txt.in' file, because cross-compiling numpy also requires
that a 'longdouble_format' property be added.
More details about this:
   https://github.com/numpy/numpy/issues/23972
   https://github.com/numpy/numpy/blob/maintenance/2.2.x/doc/source/building/cross_compilation.rst

Removing quirk fix for x86_64 with detecting 'avx512f'.
This should work with the new meson stuff.

And finally, added a test.sh script.
This should make sure that this package works fine during upgrades.

Signed-off-by: Alexandru Ardelean <alex@shruggie.ro>
pull/25629/head
Alexandru Ardelean 2024-12-24 14:28:02 +02:00 committed by Alexandru Ardelean
parent dc273bfa44
commit 7b4ee2dabf
6 changed files with 82 additions and 55 deletions

View File

@ -6,11 +6,11 @@
include $(TOPDIR)/rules.mk
PKG_NAME:=numpy
PKG_VERSION:=2.1.3
PKG_VERSION:=2.2.1
PKG_RELEASE:=1
PYPI_NAME:=$(PKG_NAME)
PKG_HASH:=aa08e04e08aaf974d4458def539dece0d28146d866a39da5639596f4921fd761
PKG_HASH:=45681fd7128c8ad1c379f0ca0776a8b0c6583d2f69889ddac01559dfe4390918
PKG_MAINTAINER:=Alexandru Ardelean <ardeleanalex@gmail.com>
@ -27,9 +27,43 @@ PKG_BUILD_DEPENDS:=python-cython/host pyproject-metadata/host
PYTHON3_PKG_BUILD_VARS:= \
$(if $(CONFIG_NUMPY_OPENBLAS_SUPPORT),,NPY_BLAS_ORDER= NPY_LAPACK_ORDER= )
MESON_USE_STAGING_PYTHON:=1
include ../pypi.mk
include $(INCLUDE_DIR)/package.mk
include ../python3-package.mk
include $(INCLUDE_DIR)/meson.mk
MESON_ARGS+= \
-Ddisable-optimization=true \
-Dcpu-baseline=min
# Override 'Meson', to use numpy's vendored meson
define Meson
$(call Python3/Run,,$(PKG_BUILD_DIR)/vendored-meson/meson/meson.py $(1),$(2))
endef
define Meson/CreateCrossFile
$(STAGING_DIR_HOST)/bin/sed \
-e "s|@CC@|$(foreach BIN,$(TARGET_CC),'$(BIN)',)|" \
-e "s|@CXX@|$(foreach BIN,$(TARGET_CXX),'$(BIN)',)|" \
-e "s|@LD@|$(foreach FLAG,$(TARGET_LINKER),'$(FLAG)',)|" \
-e "s|@AR@|$(TARGET_AR)|" \
-e "s|@STRIP@|$(TARGET_CROSS)strip|" \
-e "s|@NM@|$(TARGET_NM)|" \
-e "s|@PKGCONFIG@|$(PKG_CONFIG)|" \
-e "s|@CMAKE@|$(STAGING_DIR_HOST)/bin/cmake|" \
-e "s|@PYTHON@|$(PYTHON_BIN)|" \
-e "s|@CFLAGS@|$(foreach FLAG,$(TARGET_CFLAGS) $(EXTRA_CFLAGS) $(TARGET_CPPFLAGS) $(EXTRA_CPPFLAGS),'$(FLAG)',)|" \
-e "s|@CXXFLAGS@|$(foreach FLAG,$(TARGET_CXXFLAGS) $(EXTRA_CXXFLAGS) $(TARGET_CPPFLAGS) $(EXTRA_CPPFLAGS),'$(FLAG)',)|" \
-e "s|@LDFLAGS@|$(foreach FLAG,$(TARGET_LDFLAGS) $(EXTRA_LDFLAGS),'$(FLAG)',)|" \
-e "s|@ARCH@|$(MESON_ARCH)|" \
-e "s|@CPU@|$(MESON_CPU)|" \
-e "s|@ENDIAN@|$(if $(CONFIG_BIG_ENDIAN),big,little)|" \
< files/openwrt-cross.txt.in \
> $(1)
echo "longdouble_format = '$(if $(CONFIG_BIG_ENDIAN),IEEE_DOUBLE_BE,IEEE_DOUBLE_LE)'" >> $(1)
endef
define Package/python3-numpy
SUBMENU:=Python
@ -54,12 +88,6 @@ config NUMPY_OPENBLAS_SUPPORT
endmenu
endef
ifeq ($(ARCH),x86_64)
# FIXME: temporary fix for x86_64 with GCC 13 + musl;
# numpy does not detect this compiler extension, so we just enable it
TARGET_CFLAGS += -mavx512f
endif
define Build/Prepare/numpy-sitecfg
echo "[DEFAULT]" > $(PKG_BUILD_DIR)/site.cfg
echo "library_dirs = $(STAGING_DIR)/usr/lib" >> $(PKG_BUILD_DIR)/site.cfg

View File

@ -0,0 +1,27 @@
[binaries]
c = [@CC@]
c_ld = [@LD@]
cpp = [@CXX@]
cpp_ld = [@LD@]
ar = '@AR@'
strip = '@STRIP@'
nm = '@NM@'
pkg-config = '@PKGCONFIG@'
cmake = '@CMAKE@'
python = '@PYTHON@'
[built-in options]
c_args = [@CFLAGS@]
c_link_args = [@LDFLAGS@]
cpp_args = [@CXXFLAGS@]
cpp_link_args = [@LDFLAGS@]
prefix = '/usr'
[host_machine]
system = 'linux'
cpu_family = '@ARCH@'
cpu = '@CPU@'
endian = '@ENDIAN@'
[properties]
needs_exe_wrapper = true

View File

@ -1,6 +1,6 @@
--- a/numpy/distutils/system_info.py
+++ b/numpy/distutils/system_info.py
@@ -404,7 +404,7 @@ def get_standard_file(fname):
@@ -403,7 +403,7 @@ def get_standard_file(fname):
pass
else:
user_file = os.path.join(f, fname)

View File

@ -1,34 +0,0 @@
--- a/pyproject.toml
+++ b/pyproject.toml
@@ -1,7 +1,7 @@
[build-system]
-build-backend = "mesonpy"
+#build-backend = "mesonpy"
requires = [
- "meson-python>=0.15.0",
+# "meson-python>=0.15.0",
"Cython>=3.0.6", # keep in sync with version check in meson.build
]
@@ -181,8 +181,8 @@ select = "*-win32"
config-settings = "setup-args=--vsenv setup-args=-Dallow-noblas=true build-dir=build"
repair-wheel-command = ""
-[tool.meson-python]
-meson = 'vendored-meson/meson/meson.py'
+#[tool.meson-python]
+#meson = 'vendored-meson/meson/meson.py'
[tool.meson-python.args]
install = ['--tags=runtime,python-runtime,tests,devel']
@@ -190,8 +190,8 @@ install = ['--tags=runtime,python-runtim
[tool.spin]
package = 'numpy'
-[tool.spin.meson]
-cli = 'vendored-meson/meson/meson.py'
+#[tool.spin.meson]
+#cli = 'vendored-meson/meson/meson.py'
[tool.spin.commands]
"Build" = [

View File

@ -1,12 +0,0 @@
--- a/pyproject.toml
+++ b/pyproject.toml
@@ -59,6 +59,9 @@ download = "https://pypi.org/project/num
tracker = "https://github.com/numpy/numpy/issues"
"release notes" = "https://numpy.org/doc/stable/release"
+[tool.setuptools]
+py-modules = []
+
[tool.towncrier]
single_file = false
filename = "doc/source/release/notes-towncrier.rst"

View File

@ -0,0 +1,18 @@
#!/bin/sh
EXP_VER="$2"
python3 - << EOF
import sys
import numpy as np
if (np.__version__ != "$EXP_VER"):
print("Got incorrect version: " + np.__version__)
sys.exit(1)
arr = np.array([1, 2, 3, 4, 5])
print(arr)
EOF