From 8d331953f34a1ed231cb24893c68606813c36824 Mon Sep 17 00:00:00 2001 From: Jeffery To Date: Thu, 11 May 2023 00:26:17 +0800 Subject: [PATCH 1/3] numpy: Fix pyproject.toml-based build The versions of setuptools and wheel pinned in pyproject.toml are older than the versions available in the packages repo. This unpins the versions so that the build can proceed. Signed-off-by: Jeffery To --- lang/python/numpy/Makefile | 2 +- .../patches/001-unpin-build-dependencies.patch | 13 +++++++++++++ 2 files changed, 14 insertions(+), 1 deletion(-) create mode 100644 lang/python/numpy/patches/001-unpin-build-dependencies.patch diff --git a/lang/python/numpy/Makefile b/lang/python/numpy/Makefile index 35aab8d79..aaf940879 100644 --- a/lang/python/numpy/Makefile +++ b/lang/python/numpy/Makefile @@ -7,7 +7,7 @@ include $(TOPDIR)/rules.mk PKG_NAME:=numpy PKG_VERSION:=1.23.3 -PKG_RELEASE:=2 +PKG_RELEASE:=3 PYPI_NAME:=$(PKG_NAME) PKG_HASH:=51bf49c0cd1d52be0a240aa66f3458afc4b95d8993d2d04f0d91fa60c10af6cd diff --git a/lang/python/numpy/patches/001-unpin-build-dependencies.patch b/lang/python/numpy/patches/001-unpin-build-dependencies.patch new file mode 100644 index 000000000..c167f0729 --- /dev/null +++ b/lang/python/numpy/patches/001-unpin-build-dependencies.patch @@ -0,0 +1,13 @@ +--- a/pyproject.toml ++++ b/pyproject.toml +@@ -2,8 +2,8 @@ + # Minimum requirements for the build system to execute. + requires = [ + "packaging==20.5; platform_machine=='arm64'", # macos M1 +- "setuptools==59.2.0", +- "wheel==0.37.0", ++ "setuptools>=59.2.0", ++ "wheel>=0.37.0", + "Cython>=0.29.30,<3.0", + ] + From 5cafab68ff5bddf5470e7674bb0bf8d0415e8804 Mon Sep 17 00:00:00 2001 From: Jeffery To Date: Fri, 17 Feb 2023 11:47:15 +0800 Subject: [PATCH 2/3] numpy: Fix compilation when OpenBLAS support is not enabled Currently, if OpenBLAS support is not enabled, a site.cfg file is not written and numpy will use build host paths for libraries. If the build host has any conflicting libraries, specifically libpython3.10.a, then compilation will fail. This ensures site.cfg is always written with buildroot paths. Signed-off-by: Jeffery To --- lang/python/numpy/Makefile | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/lang/python/numpy/Makefile b/lang/python/numpy/Makefile index aaf940879..10a954da9 100644 --- a/lang/python/numpy/Makefile +++ b/lang/python/numpy/Makefile @@ -7,7 +7,7 @@ include $(TOPDIR)/rules.mk PKG_NAME:=numpy PKG_VERSION:=1.23.3 -PKG_RELEASE:=3 +PKG_RELEASE:=4 PYPI_NAME:=$(PKG_NAME) PKG_HASH:=51bf49c0cd1d52be0a240aa66f3458afc4b95d8993d2d04f0d91fa60c10af6cd @@ -23,6 +23,10 @@ PKG_CONFIG_DEPENDS:= \ PKG_BUILD_DEPENDS:=python-cython/host +# Ensure numpy does not find openblas if openblas support is not enabled +PYTHON3_PKG_BUILD_VARS:= \ + $(if $(CONFIG_NUMPY_OPENBLAS_SUPPORT),,NPY_BLAS_ORDER= NPY_LAPACK_ORDER= ) + include ../pypi.mk include $(INCLUDE_DIR)/package.mk include ../python3-package.mk @@ -50,17 +54,18 @@ config NUMPY_OPENBLAS_SUPPORT endmenu endef -ifdef CONFIG_NUMPY_OPENBLAS_SUPPORT define Build/Prepare/numpy-sitecfg echo "[DEFAULT]" > $(PKG_BUILD_DIR)/site.cfg echo "library_dirs = $(STAGING_DIR)/usr/lib" >> $(PKG_BUILD_DIR)/site.cfg echo "include_dirs = $(STAGING_DIR)/usr/include" >> $(PKG_BUILD_DIR)/site.cfg + + ifdef CONFIG_NUMPY_OPENBLAS_SUPPORT echo >> $(PKG_BUILD_DIR)/site.cfg echo "[openblas]" >> $(PKG_BUILD_DIR)/site.cfg echo "libraries = openblas" >> $(PKG_BUILD_DIR)/site.cfg echo "runtime_library_dirs = /usr/lib" >> $(PKG_BUILD_DIR)/site.cfg + endif endef -endif define Build/Prepare $(call Build/Prepare/Default) From 3cee44d88837b5679a96f0155205ec15883d5aef Mon Sep 17 00:00:00 2001 From: Jeffery To Date: Wed, 10 May 2023 23:49:46 +0800 Subject: [PATCH 3/3] numpy: Avoid build user config files This stops numpy from reading .numpy-site.cfg in the build user's home directory. The code actually tries to find both .numpy-site.cfg and site.cfg in the user's home directory; this patch prevents both. Signed-off-by: Jeffery To --- lang/python/numpy/Makefile | 2 +- .../patches/002-avoid-build-user-config-files.patch | 11 +++++++++++ 2 files changed, 12 insertions(+), 1 deletion(-) create mode 100644 lang/python/numpy/patches/002-avoid-build-user-config-files.patch diff --git a/lang/python/numpy/Makefile b/lang/python/numpy/Makefile index 10a954da9..d7e485d79 100644 --- a/lang/python/numpy/Makefile +++ b/lang/python/numpy/Makefile @@ -7,7 +7,7 @@ include $(TOPDIR)/rules.mk PKG_NAME:=numpy PKG_VERSION:=1.23.3 -PKG_RELEASE:=4 +PKG_RELEASE:=5 PYPI_NAME:=$(PKG_NAME) PKG_HASH:=51bf49c0cd1d52be0a240aa66f3458afc4b95d8993d2d04f0d91fa60c10af6cd diff --git a/lang/python/numpy/patches/002-avoid-build-user-config-files.patch b/lang/python/numpy/patches/002-avoid-build-user-config-files.patch new file mode 100644 index 000000000..15c76e3dc --- /dev/null +++ b/lang/python/numpy/patches/002-avoid-build-user-config-files.patch @@ -0,0 +1,11 @@ +--- a/numpy/distutils/system_info.py ++++ b/numpy/distutils/system_info.py +@@ -400,7 +400,7 @@ def get_standard_file(fname): + pass + else: + user_file = os.path.join(f, fname) +- if os.path.isfile(user_file): ++ if "_PYTHON_HOST_PLATFORM" not in os.environ and os.path.isfile(user_file): + filenames.append(user_file) + + # Local file