Re: git: 9fea2cd984a3 - main - math/py-numpy: Reland Migrate to PEP517

From: Vladimir Druzenko <vvd_at_freebsd.org>
Date: Wed, 15 Oct 2025 08:18:37 UTC
Hello!

15.10.2025 08:25, Xin LI пишет:
> The branch main has been updated by delphij:
>
> URL: https://cgit.FreeBSD.org/ports/commit/?id=9fea2cd984a308cc38ecc0cbc0f70178b9fa5e02
>
> commit 9fea2cd984a308cc38ecc0cbc0f70178b9fa5e02
> Author:     Matthew Wener <matthew@wener.org>
> AuthorDate: 2025-10-15 05:10:50 +0000
> Commit:     Xin LI <delphij@FreeBSD.org>
> CommitDate: 2025-10-15 05:10:50 +0000
>
>      math/py-numpy: Reland Migrate to PEP517
>      
>      This restores 3f582fcf38bb0cee40f9346683490aceb3bda654 but with
>      allflavors removed.
>      
>      PR:     ports/287794
> ---
>   math/py-numpy/Makefile                             | 12 ++++++++---
>   math/py-numpy/files/patch-numpy_core_setup.py      | 19 ++++++++++++++++++
>   .../patch-numpy_distutils_mingw32ccompiler.py      | 17 ++++++++++++++++
>   math/py-numpy/files/patch-numpy_random_setup.py    | 23 ++++++++++++++++++++++
>   math/py-numpy/files/patch-pyproject.toml           | 11 +++++++++++
>   5 files changed, 79 insertions(+), 3 deletions(-)
>
> diff --git a/math/py-numpy/Makefile b/math/py-numpy/Makefile
> index 22f8b33f9ed3..7b7273abe5be 100644
> --- a/math/py-numpy/Makefile
> +++ b/math/py-numpy/Makefile
> @@ -1,6 +1,6 @@
>   PORTNAME=	numpy
>   PORTVERSION=	1.26.4
> -PORTREVISION=	9
> +PORTREVISION=	10
>   PORTEPOCH=	1
>   CATEGORIES=	math python
>   MASTER_SITES=	PYPI \
> @@ -18,12 +18,14 @@ WWW=		https://www.numpy.org/
>   LICENSE=	BSD3CLAUSE
>   LICENSE_FILE=	${WRKSRC}/LICENSE.txt
>   
> +BUILD_DEPENDS=	${PY_SETUPTOOLS} \
> +		${PYTHON_PKGNAMEPREFIX}meson-python>=0:devel/meson-python@${PY_FLAVOR}
>   TEST_DEPENDS=	${PYTHON_PKGNAMEPREFIX}hypothesis>=6.24.1:devel/py-hypothesis@${PY_FLAVOR} \
>   		${PYTHON_PKGNAMEPREFIX}pytest>=6.2.5:devel/py-pytest@${PY_FLAVOR} \
>   		${PYTHON_PKGNAMEPREFIX}typing-extensions>=4.2.0:devel/py-typing-extensions@${PY_FLAVOR}
>   
> -USES=		compiler:c11 cpe fortran python:3.9+
> -USE_PYTHON=	allflavors autoplist concurrent cython distutils
> +USES=		compiler:c11 cpe fortran pkgconfig python:3.9+ shebangfix
> +USE_PYTHON=	autoplist concurrent cython pep517
>   
>   GCCLIBDIR_CMDS=	${FC} -print-file-name=libgfortran.so | ${SED} -e \
>   		s/libgfortran.so//
> @@ -61,6 +63,10 @@ OPENBLAS_VARS=			BLASLIBS="openblas, gfortran" \
>   				LIBRARIES=libraries
>   SUITESPARSE_LIB_DEPENDS=	libumfpack.so:math/suitesparse-umfpack
>   
> +SHEBANG_FILES=	numpy/f2py/crackfortran.py numpy/f2py/f2py2e.py \
> +		numpy/f2py/rules.py numpy/testing/print_coercion_tables.py \
> +		numpy/testing/setup.py
> +
>   post-extract:
>   	@${TOUCH} ${WRKSRC}/numpy/f2py/tests/src/temp
>   	@${TOUCH} ${WRKSRC}/numpy/random/_examples/temp
> diff --git a/math/py-numpy/files/patch-numpy_core_setup.py b/math/py-numpy/files/patch-numpy_core_setup.py
> new file mode 100644
> index 000000000000..7502a4df93fb
> --- /dev/null
> +++ b/math/py-numpy/files/patch-numpy_core_setup.py
> @@ -0,0 +1,19 @@
> +--- numpy/core/setup.py.orig	2024-02-05 21:17:48 UTC
> ++++ numpy/core/setup.py
> +@@ -9,7 +9,6 @@ from numpy.distutils import log
> + from os.path import join
> +
> + from numpy.distutils import log
> +-from numpy.distutils.msvccompiler import lib_opts_if_msvc
> + from distutils.dep_util import newer
> + from sysconfig import get_config_var
> + from numpy.compat import npy_load_module
> +@@ -688,7 +687,7 @@ def configuration(parent_package='',top_path=None):
> +             install_dir='lib',
> +             build_info={
> +                 'include_dirs' : [],  # empty list required for creating npy_math_internal.h
> +-                'extra_compiler_args': [lib_opts_if_msvc],
> ++                'extra_compiler_args': [],
> +             })
> +     config.add_npy_pkg_config("npymath.ini.in", "lib/npy-pkg-config",
> +             subst_dict)
> diff --git a/math/py-numpy/files/patch-numpy_distutils_mingw32ccompiler.py b/math/py-numpy/files/patch-numpy_distutils_mingw32ccompiler.py
> new file mode 100644
> index 000000000000..a7466a818792
> --- /dev/null
> +++ b/math/py-numpy/files/patch-numpy_distutils_mingw32ccompiler.py
> @@ -0,0 +1,17 @@
> +--- numpy/distutils/mingw32ccompiler.py.orig	2024-02-05 21:17:48 UTC
> ++++ numpy/distutils/mingw32ccompiler.py
> +@@ -24,7 +24,13 @@ from distutils.unixccompiler import UnixCCompiler
> +
> + import distutils.cygwinccompiler
> + from distutils.unixccompiler import UnixCCompiler
> +-from distutils.msvccompiler import get_build_version as get_build_msvc_version
> ++
> ++try:
> ++    from distutils.msvccompiler import get_build_version as get_build_msvc_version
> ++except ImportError:
> ++    def get_build_msvc_version():
> ++        return None
> ++
> + from distutils.errors import UnknownFileError
> + from numpy.distutils.misc_util import (msvc_runtime_library,
> +                                        msvc_runtime_version,
> diff --git a/math/py-numpy/files/patch-numpy_random_setup.py b/math/py-numpy/files/patch-numpy_random_setup.py
> new file mode 100644
> index 000000000000..74ff5ffc8e54
> --- /dev/null
> +++ b/math/py-numpy/files/patch-numpy_random_setup.py
> @@ -0,0 +1,23 @@
> +--- numpy/random/setup.py.orig	2024-02-05 21:17:48 UTC
> ++++ numpy/random/setup.py
> +@@ -3,7 +3,6 @@ from numpy.distutils.system_info import platform_bits
> + from os.path import join
> +
> + from numpy.distutils.system_info import platform_bits
> +-from numpy.distutils.msvccompiler import lib_opts_if_msvc
> +
> +
> + def configuration(parent_package='', top_path=None):
> +@@ -70,11 +69,7 @@ def configuration(parent_package='', top_path=None):
> +         not initialized the distutils build command, so use this deferred
> +         calculation to run when we are building the library.
> +         """
> +-        opts = lib_opts_if_msvc(build_cmd)
> +-        if build_cmd.compiler.compiler_type != 'msvc':
> +-            # Some bit generators require c99
> +-            opts.append('-std=c99')
> +-        return opts
> ++        return ['-std=c99']
> +
> +     config.add_installed_library('npyrandom',
> +         sources=npyrandom_sources,
> diff --git a/math/py-numpy/files/patch-pyproject.toml b/math/py-numpy/files/patch-pyproject.toml
> new file mode 100644
> index 000000000000..3eb3c97a8da5
> --- /dev/null
> +++ b/math/py-numpy/files/patch-pyproject.toml
> @@ -0,0 +1,11 @@
> +--- pyproject.toml.orig 2025-06-24 22:40:55 UTC
> ++++ pyproject.toml
> +@@ -2,7 +2,7 @@ requires = [
> + build-backend = "mesonpy"
> + requires = [
> +     "Cython>=0.29.34,<3.1",
> +-    "meson-python>=0.15.0,<0.16.0",
> ++    "meson-python>=0.15.0",
> + ]
> +
> + [project]

Can you add this to patch:
-    "Cython>=0.29.34,<3.1",
+    "Cython>=0.29.34,<4.0",

Build fine with cython3 with this patch and before "Migrate to PEP517" too.
https://bugs.freebsd.org/289075

-- 
Best regards,
Vladimir Druzenko