aboutsummaryrefslogtreecommitdiff
path: root/math
diff options
context:
space:
mode:
authorCharlie Li <vishwin@FreeBSD.org>2026-04-01 04:32:42 +0000
committerCharlie Li <vishwin@FreeBSD.org>2026-04-03 18:52:16 +0000
commit91ac7f85c1f9c223478dbeea3da2dd04cec8d849 (patch)
treeb6ae8e3c67981421f0142423a37668976087cc1d /math
parent6b9beb8a73a5446af0029780791827f9adbff244 (diff)
Diffstat (limited to 'math')
-rw-r--r--math/Makefile1
-rw-r--r--math/py-numpy1/Makefile72
-rw-r--r--math/py-numpy1/distinfo5
-rw-r--r--math/py-numpy1/files/patch-clang13
-rw-r--r--math/py-numpy1/files/patch-numpy_core_include_numpy_ndarrayobject.h11
-rw-r--r--math/py-numpy1/files/patch-numpy_core_src_common_npy__cpu__features.c47
-rw-r--r--math/py-numpy1/files/patch-numpy_f2py_f2py2e.py18
-rw-r--r--math/py-numpy1/files/site.cfg10
-rw-r--r--math/py-numpy1/pkg-descr11
9 files changed, 188 insertions, 0 deletions
diff --git a/math/Makefile b/math/Makefile
index 2d9210839d87..9e8e5e66e47d 100644
--- a/math/Makefile
+++ b/math/Makefile
@@ -1063,6 +1063,7 @@
SUBDIR += py-numpy
SUBDIR += py-numpy-groupies
SUBDIR += py-numpy-stl
+ SUBDIR += py-numpy1
SUBDIR += py-openTSNE
SUBDIR += py-opt-einsum
SUBDIR += py-or-tools
diff --git a/math/py-numpy1/Makefile b/math/py-numpy1/Makefile
new file mode 100644
index 000000000000..e6b83231570d
--- /dev/null
+++ b/math/py-numpy1/Makefile
@@ -0,0 +1,72 @@
+PORTNAME= numpy
+DISTVERSION= 1.26.4
+CATEGORIES= math python
+MASTER_SITES= PYPI \
+ https://numpy.org/doc/${DISTVERSION:R}/:doc
+PKGNAMEPREFIX= ${PYTHON_PKGNAMEPREFIX}
+PKGNAMESUFFIX= 1
+DISTFILES= ${DISTNAME}${EXTRACT_SUFX} \
+ ${PORTNAME}-html.zip:doc
+DIST_SUBDIR= ${PORTNAME}-${DISTVERSION:R}
+EXTRACT_ONLY= ${DISTNAME}${EXTRACT_SUFX}
+
+MAINTAINER= python@FreeBSD.org
+COMMENT= Fundamental package for array computing in Python
+WWW= https://www.numpy.org/
+
+LICENSE= BSD3CLAUSE
+LICENSE_FILE= ${WRKSRC}/LICENSE.txt
+
+BUILD_DEPENDS= ${PYTHON_PKGNAMEPREFIX}meson-python>=0.15.0:devel/meson-python@${PY_FLAVOR}
+TEST_DEPENDS= ${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 pkgconfig python shebangfix
+USE_PYTHON= allflavors autoplist concurrent cython pep517 pytest
+
+PEP517_BUILD_CONFIG_SETTING= -Csetup-args=-Dallow-noblas=false
+
+WITHOUT_FBSD10_FIX= yes
+SHEBANG_GLOB= *.py
+PORTDOCS= *
+
+CONFLICTS_INSTALL= py*-numpy
+
+TEST_WRKSRC= ${WRKDIR}
+TEST_ARGS= --pyargs numpy
+
+OPTIONS_DEFINE= DOCS
+OPTIONS_SINGLE= BLASLIB
+OPTIONS_SINGLE_BLASLIB= BLIS FLEXIBLAS NETLIB OPENBLAS
+OPTIONS_DEFAULT= OPENBLAS
+BLIS_DESC= BLIS BLAS-like implementation
+FLEXIBLAS_DESC= FlexiBLAS BLAS implementation
+
+BLIS_USES= blaslapack:blis
+BLIS_VARS= PEP517_BUILD_CONFIG_SETTING+="-Csetup-args=-Dblas=blis -Csetup-args=-Dlapack=flame"
+BLIS_BROKEN= math/libflame does not provide a pkg-config file
+FLEXIBLAS_USES= blaslapack:flexiblas
+FLEXIBLAS_VARS= PEP517_BUILD_CONFIG_SETTING+="-Csetup-args=-Dblas=flexiblas -Csetup-args=-Dlapack=flexiblas"
+NETLIB_LIB_DEPENDS= libcblas.so:math/cblas
+NETLIB_USES= blaslapack:netlib
+NETLIB_VARS= PEP517_BUILD_CONFIG_SETTING+="-Csetup-args=-Dblas=blas -Csetup-args=-Dlapack=lapack"
+OPENBLAS_USES= blaslapack:openblas
+OPENBLAS_VARS= PEP517_BUILD_CONFIG_SETTING+="-Csetup-args=-Dblas=openblas -Csetup-args=-Dlapack=openblas"
+
+.include <bsd.port.pre.mk>
+
+.if ${PYTHON_REL} >= 31200
+BUILD_DEPENDS+= ${PYTHON_PKGNAMEPREFIX}setuptools>0:devel/py-setuptools@${PY_FLAVOR}
+.endif
+
+post-patch:
+ @${REINPLACE_CMD} -e 's|meson-python>=0.15.0,<0.16.0|meson-python>=0.15.0|' \
+ -e 's|Cython>=0.29.34,<3.1|Cython>=0.29.34|' \
+ ${WRKSRC}/pyproject.toml
+
+post-install-DOCS-on:
+ @${MKDIR} ${STAGEDIR}${DOCSDIR}
+ ${UNZIP_NATIVE_CMD} -qo ${DISTDIR}/${DIST_SUBDIR}/numpy-html.zip -d ${STAGEDIR}${DOCSDIR}
+ @${RM} ${STAGEDIR}${DOCSDIR}/.buildinfo
+
+.include <bsd.port.post.mk>
diff --git a/math/py-numpy1/distinfo b/math/py-numpy1/distinfo
new file mode 100644
index 000000000000..7e109d8c5f43
--- /dev/null
+++ b/math/py-numpy1/distinfo
@@ -0,0 +1,5 @@
+TIMESTAMP = 1718154974
+SHA256 (numpy-1.26/numpy-1.26.4.tar.gz) = 2a02aba9ed12e4ac4eb3ea9421c420301a0c6460d9830d74a9df87efa4912010
+SIZE (numpy-1.26/numpy-1.26.4.tar.gz) = 15786129
+SHA256 (numpy-1.26/numpy-html.zip) = 1dc88fc45a7709143b7b917e8e807e4985c41fe3fb7ee5fc55c3aeec5f369fdd
+SIZE (numpy-1.26/numpy-html.zip) = 25538887
diff --git a/math/py-numpy1/files/patch-clang b/math/py-numpy1/files/patch-clang
new file mode 100644
index 000000000000..5802f130651e
--- /dev/null
+++ b/math/py-numpy1/files/patch-clang
@@ -0,0 +1,13 @@
+--- numpy/distutils/checks/cpu_avx512_spr.c.orig 2024-02-05 21:17:48 UTC
++++ numpy/distutils/checks/cpu_avx512_spr.c
+@@ -15,10 +15,6 @@ int main(int argc, char **argv)
+
+ int main(int argc, char **argv)
+ {
+-/* clang has a bug regarding our spr coode, see gh-23730. */
+-#if __clang__
+-#error
+-#endif
+ __m512h a = _mm512_loadu_ph((void*)argv[argc-1]);
+ __m512h temp = _mm512_fmadd_ph(a, a, a);
+ _mm512_storeu_ph((void*)(argv[argc-1]), temp);
diff --git a/math/py-numpy1/files/patch-numpy_core_include_numpy_ndarrayobject.h b/math/py-numpy1/files/patch-numpy_core_include_numpy_ndarrayobject.h
new file mode 100644
index 000000000000..0206c3196317
--- /dev/null
+++ b/math/py-numpy1/files/patch-numpy_core_include_numpy_ndarrayobject.h
@@ -0,0 +1,11 @@
+--- numpy/core/include/numpy/ndarrayobject.h.orig 2024-02-05 21:17:48 UTC
++++ numpy/core/include/numpy/ndarrayobject.h
+@@ -99,7 +99,7 @@ extern "C" {
+ #define PyArray_FILLWBYTE(obj, val) memset(PyArray_DATA(obj), val, \
+ PyArray_NBYTES(obj))
+ #ifndef PYPY_VERSION
+-#define PyArray_REFCOUNT(obj) (((PyObject *)(obj))->ob_refcnt)
++#define PyArray_REFCOUNT(obj) Py_REFCNT((PyObject *)(obj))
+ #define NPY_REFCOUNT PyArray_REFCOUNT
+ #endif
+ #define NPY_MAX_ELSIZE (2 * NPY_SIZEOF_LONGDOUBLE)
diff --git a/math/py-numpy1/files/patch-numpy_core_src_common_npy__cpu__features.c b/math/py-numpy1/files/patch-numpy_core_src_common_npy__cpu__features.c
new file mode 100644
index 000000000000..0b9fc238b7ca
--- /dev/null
+++ b/math/py-numpy1/files/patch-numpy_core_src_common_npy__cpu__features.c
@@ -0,0 +1,47 @@
+--- numpy/core/src/common/npy_cpu_features.c.orig 2023-06-18 00:19:04 UTC
++++ numpy/core/src/common/npy_cpu_features.c
+@@ -570,6 +570,18 @@ npy__cpu_init_features(void)
+ #ifndef PPC_FEATURE2_ARCH_3_1
+ #define PPC_FEATURE2_ARCH_3_1 0x00040000
+ #endif
++#elif defined(__FreeBSD__)
++ #include <machine/cpu.h>
++ #include <sys/auxv.h>
++ #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
+@@ -591,6 +603,25 @@ npy__cpu_init_features(void)
+
+ elf_aux_info(AT_HWCAP2, &hwcap, sizeof(hwcap));
+ #endif // __linux__
++ 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;
++#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] =
diff --git a/math/py-numpy1/files/patch-numpy_f2py_f2py2e.py b/math/py-numpy1/files/patch-numpy_f2py_f2py2e.py
new file mode 100644
index 000000000000..6cdc7b44718a
--- /dev/null
+++ b/math/py-numpy1/files/patch-numpy_f2py_f2py2e.py
@@ -0,0 +1,18 @@
+--- numpy/f2py/f2py2e.py.orig 2024-06-12 01:22:27 UTC
++++ numpy/f2py/f2py2e.py
+@@ -693,6 +693,7 @@ def run_compile():
+ extra_objects, sources = filter_files('', '[.](o|a|so|dylib)', sources)
+ library_dirs, sources = filter_files('-L', '', sources, remove_prefix=1)
+ libraries, sources = filter_files('-l', '', sources, remove_prefix=1)
++ extra_link_args, sources = filter_files('-Wl,|-B|-f','',sources,remove_prefix=0)
+ undef_macros, sources = filter_files('-U', '', sources, remove_prefix=1)
+ define_macros, sources = filter_files('-D', '', sources, remove_prefix=1)
+ for i in range(len(define_macros)):
+@@ -727,6 +728,7 @@ def run_compile():
+ define_macros,
+ undef_macros,
+ f2py_flags,
++ extra_link_args,
+ sysinfo_flags,
+ fc_flags,
+ flib_flags,
diff --git a/math/py-numpy1/files/site.cfg b/math/py-numpy1/files/site.cfg
new file mode 100644
index 000000000000..04c5da865afe
--- /dev/null
+++ b/math/py-numpy1/files/site.cfg
@@ -0,0 +1,10 @@
+[DEFAULT]
+library_dirs = /usr/lib:%%LOCALBASE%%/lib:%%GCCLIBDIR%%
+include_dirs = /usr/include:%%LOCALBASE%%/include:%%LOCALBASE%%/include/suitesparse
+src_dirs = %%LOCALBASE%%/src
+# search static libraries (.a) in preference to shared ones (.so)
+search_static_first = 0
+
+[%%BLASNAME%%]
+%%LIBRARIES%% = %%BLASLIBS%%
+lapack_libs = %%LAPACKLIBS%%
diff --git a/math/py-numpy1/pkg-descr b/math/py-numpy1/pkg-descr
new file mode 100644
index 000000000000..4120046671b7
--- /dev/null
+++ b/math/py-numpy1/pkg-descr
@@ -0,0 +1,11 @@
+NumPy is the fundamental package for scientific computing with Python. It
+contains among other things:
+- a powerful N-dimensional array object
+- sophisticated (broadcasting) functions
+- tools for integrating C/C++ and Fortran code
+- useful linear algebra, Fourier transform, and random number capabilities
+
+Besides its obvious scientific uses, NumPy can also be used as an efficient
+multi-dimensional container of generic data. Arbitrary data-types can be
+defined. This allows NumPy to seamlessly and speedily integrate with a wide
+variety of databases.