diff --git a/math/py-numpy/Makefile b/math/py-numpy/Makefile index c909f6bf034b..1cebcf5eb698 100644 --- a/math/py-numpy/Makefile +++ b/math/py-numpy/Makefile @@ -1,79 +1,80 @@ PORTNAME= numpy PORTVERSION= 1.23.5 +PORTREVISION= 1 PORTEPOCH= 1 CATEGORIES= math python MASTER_SITES= CHEESESHOP \ https://numpy.org/doc/${PORTVERSION:R}/:doc PKGNAMEPREFIX= ${PYTHON_PKGNAMEPREFIX} DISTFILES= ${DISTNAME}${EXTRACT_SUFX} \ ${PORTNAME}-ref.pdf:doc \ ${PORTNAME}-user.pdf:doc DIST_SUBDIR= ${PORTNAME}-${PORTVERSION:R} EXTRACT_ONLY= ${DISTNAME}${EXTRACT_SUFX} MAINTAINER= python@FreeBSD.org COMMENT= The New Numeric Extension to Python WWW= https://www.numpy.org/ LICENSE= BSD3CLAUSE LICENSE_FILE= ${WRKSRC}/LICENSE.txt TEST_DEPENDS= ${PYTHON_PKGNAMEPREFIX}pytest>=6.2.5:devel/py-pytest@${PY_FLAVOR} \ ${PYTHON_PKGNAMEPREFIX}hypothesis>=6.24.1:devel/py-hypothesis@${PY_FLAVOR} \ ${PYTHON_PKGNAMEPREFIX}typing-extensions>=4.2.0:devel/py-typing-extensions@${PY_FLAVOR} USES= compiler:c11 cpe fortran python:3.8+ USE_PYTHON= allflavors autoplist concurrent cython distutils GCCLIBDIR_CMDS= ${FC} -print-file-name=libgfortran.so | ${SED} -e s/libgfortran.so// LDFLAGS+= -s PYDISTUTILS_BUILDARGS= --fcompiler=gnu95 PYDISTUTILS_CONFIGUREARGS= --fcompiler=gnu95 PORTDOCS= * OPTIONS_DEFINE= DOCS SUITESPARSE OPTIONS_SINGLE= BLASLIB OPTIONS_SINGLE_BLASLIB= ATLAS NETLIB OPENBLAS OPTIONS_DEFAULT= OPENBLAS SUITESPARSE SUITESPARSE_DESC= Use AMD and UMFPACK in SuiteSparse ATLAS_USES= blaslapack:atlas ATLAS_VARS= BLASLIBS="ptf77blas, ptcblas" BLASNAME=atlas LAPACKLIBS=alapack LIBRARIES=atlas_libs NETLIB_USES= blaslapack:netlib NETLIB_VARS= BLASLIBS="blas, cblas" BLASNAME=atlas LAPACKLIBS=lapack LIBRARIES=atlas_libs NETLIB_LIB_DEPENDS= libcblas.so:math/cblas OPENBLAS_USES= blaslapack:openblas OPENBLAS_VARS= BLASLIBS="openblas, gfortran" BLASNAME=openblas LAPACKLIBS="openblas, gfortran" LIBRARIES=libraries SUITESPARSE_LIB_DEPENDS=libumfpack.so:math/suitesparse-umfpack post-extract: @${TOUCH} ${WRKSRC}/numpy/f2py/tests/src/temp @${TOUCH} ${WRKSRC}/numpy/random/_examples/temp @${TOUCH} ${WRKSRC}/numpy/core/tests/examples/temp pre-configure-SUITESPARSE-off: @${REINPLACE_CMD} -e 's|:%%LOCALBASE%%/include/suitesparse||' ${WRKSRC}/site.cfg pre-configure: @${REINPLACE_CMD} -e 's|%%FC%%|${FC}|' ${WRKSRC}/numpy/distutils/fcompiler/gnu.py @${CP} ${FILESDIR}/site.cfg ${WRKSRC}/site.cfg ${REINPLACE_CMD} -e 's|%%LOCALBASE%%|${LOCALBASE}|g' \ -e 's|%%BLASLIBS%%|${BLASLIBS}|; s|%%BLASNAME%%|${BLASNAME}|' \ -e 's|%%LAPACKLIBS%%|${LAPACKLIBS}|; s|%%LIBRARIES%%|${LIBRARIES}|' \ ${WRKSRC}/site.cfg @${REINPLACE_CMD} -e "s|%%GCCLIBDIR%%|$$(${GCCLIBDIR_CMDS})|" ${WRKSRC}/site.cfg ${WRKSRC}/numpy/distutils/system_info.py do-configure: post-install: ${FIND} ${STAGEDIR}${PYTHON_SITELIBDIR} -name '*.so' | ${XARGS} ${STRIP_CMD} post-install-DOCS-on: @${MKDIR} ${STAGEDIR}${DOCSDIR} ${INSTALL_DATA} ${_DISTDIR}/${PORTNAME}-ref.pdf ${STAGEDIR}${DOCSDIR} ${INSTALL_DATA} ${_DISTDIR}/${PORTNAME}-user.pdf ${STAGEDIR}${DOCSDIR} do-test: @cd ${WRKSRC} && ${PYTHON_CMD} runtests.py .include diff --git a/math/py-numpy/files/patch-numpy_core_src_common_npy__cpu__features.c b/math/py-numpy/files/patch-numpy_core_src_common_npy__cpu__features.c new file mode 100644 index 000000000000..7119bfb88896 --- /dev/null +++ b/math/py-numpy/files/patch-numpy_core_src_common_npy__cpu__features.c @@ -0,0 +1,49 @@ +--- numpy/core/src/common/npy_cpu_features.c.orig 2022-11-19 22:40:58 UTC ++++ numpy/core/src/common/npy_cpu_features.c +@@ -527,6 +527,18 @@ npy__cpu_init_features(void) + #ifndef PPC_FEATURE2_ARCH_3_1 + #define PPC_FEATURE2_ARCH_3_1 0x00040000 + #endif ++#elif defined(__FreeBSD__) ++ #include ++ #include ++ #ifndef PPC_FEATURE2_ARCH_2_07 ++ #define PPC_FEATURE2_ARCH_2_07 0x80000000 ++ #endif ++ #ifndef PPC_FEATURE2_ARCH_3_00 ++ #define PPC_FEATURE2_ARCH_3_00 0x00800000 ++ #endif ++ #ifndef PPC_FEATURE2_ARCH_3_1 ++ #define PPC_FEATURE2_ARCH_3_1 0x00040000 ++ #endif + #endif + + static void +@@ -551,7 +563,26 @@ npy__cpu_init_features(void) + npy__cpu_have[NPY_CPU_FEATURE_VSX2] = (hwcap & PPC_FEATURE2_ARCH_2_07) != 0; + npy__cpu_have[NPY_CPU_FEATURE_VSX3] = (hwcap & PPC_FEATURE2_ARCH_3_00) != 0; + npy__cpu_have[NPY_CPU_FEATURE_VSX4] = (hwcap & PPC_FEATURE2_ARCH_3_1) != 0; +-// TODO: AIX, FreeBSD ++#elif defined(__FreeBSD__) ++ unsigned long hwcap; ++ elf_aux_info(AT_HWCAP, &hwcap, sizeof(hwcap)); ++ if ((hwcap & PPC_FEATURE_HAS_VSX) == 0) ++ return; ++ ++ elf_aux_info(AT_HWCAP2, &hwcap, sizeof(hwcap)); ++ if (hwcap & PPC_FEATURE2_ARCH_3_1) ++ { ++ npy__cpu_have[NPY_CPU_FEATURE_VSX] = ++ npy__cpu_have[NPY_CPU_FEATURE_VSX2] = ++ npy__cpu_have[NPY_CPU_FEATURE_VSX3] = ++ npy__cpu_have[NPY_CPU_FEATURE_VSX4] = 1; ++ return; ++ } ++ npy__cpu_have[NPY_CPU_FEATURE_VSX] = 1; ++ npy__cpu_have[NPY_CPU_FEATURE_VSX2] = (hwcap & PPC_FEATURE2_ARCH_2_07) != 0; ++ npy__cpu_have[NPY_CPU_FEATURE_VSX3] = (hwcap & PPC_FEATURE2_ARCH_3_00) != 0; ++ npy__cpu_have[NPY_CPU_FEATURE_VSX4] = (hwcap & PPC_FEATURE2_ARCH_3_1) != 0; ++// TODO: AIX, OpenBSD + #else + npy__cpu_have[NPY_CPU_FEATURE_VSX] = 1; + #if defined(NPY_CPU_PPC64LE) || defined(NPY_HAVE_VSX2) diff --git a/math/py-numpy/files/patch-numpy_distutils_ccompiler__opt.py b/math/py-numpy/files/patch-numpy_distutils_ccompiler__opt.py new file mode 100644 index 000000000000..d8a0abca53bd --- /dev/null +++ b/math/py-numpy/files/patch-numpy_distutils_ccompiler__opt.py @@ -0,0 +1,17 @@ +--- numpy/distutils/ccompiler_opt.py.orig 2022-11-19 22:40:58 UTC ++++ numpy/distutils/ccompiler_opt.py +@@ -959,8 +959,12 @@ class _CCompiler: + detect_arch = ( + ("cc_on_x64", ".*(x|x86_|amd)64.*", ""), + ("cc_on_x86", ".*(win32|x86|i386|i686).*", ""), +- ("cc_on_ppc64le", ".*(powerpc|ppc)64(el|le).*", ""), +- ("cc_on_ppc64", ".*(powerpc|ppc)64.*", ""), ++ ("cc_on_ppc64le", ".*(powerpc|ppc)64(el|le).*|.*powerpc.*", "" ++ "defined(__LP64__) && " ++ "defined(__LITTLE_ENDIAN__)"), ++ ("cc_on_ppc64", ".*(powerpc|ppc).*|.*powerpc.*", "" ++ "defined(__LP64__) && " ++ "defined(__BIG_ENDIAN__)"), + ("cc_on_aarch64", ".*(aarch64|arm64).*", ""), + ("cc_on_armhf", ".*arm.*", "defined(__ARM_ARCH_7__) || " + "defined(__ARM_ARCH_7A__)"),