You've already forked macports-ports
mirror of
https://github.com/macports/macports-ports.git
synced 2026-03-31 14:42:53 -07:00
218 lines
8.9 KiB
Tcl
218 lines
8.9 KiB
Tcl
# -*- coding: utf-8; mode: tcl; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- vim:fenc=utf-8:ft=tcl:et:sw=4:ts=4:sts=4
|
|
|
|
PortSystem 1.0
|
|
PortGroup python 1.0
|
|
PortGroup compilers 1.0
|
|
|
|
name py-numpy
|
|
version 2.4.4
|
|
revision 0
|
|
|
|
categories-append math
|
|
license BSD
|
|
maintainers {michaelld @michaelld} {reneeotten @reneeotten} openmaintainer
|
|
description The core utilities for the scientific library scipy for Python
|
|
long_description {*}${description}
|
|
|
|
homepage https://numpy.org
|
|
|
|
checksums rmd160 479d4b684bc8b49443664a49a06d66a68a945ce6 \
|
|
sha256 2d390634c5182175533585cc89f3608a4682ccb173cc9bb940b2881c8d6f8fa0 \
|
|
size 20731587
|
|
|
|
compiler.c_standard 2011
|
|
compiler.cxx_standard 2017
|
|
|
|
# port builds with clang-1103.0.32.62 on 10.15 and clang-mp-17 on 10.9
|
|
# port fails with clang-1001.0.46.4 on 10.14 ; other failures are due to libomp and can thus not
|
|
# be investigated right now
|
|
compiler.blacklist-append {clang < 1100}
|
|
|
|
if {${name} ne ${subport}} {
|
|
# the python PortGroup puts compiler names in build.env and destroot.env for
|
|
# this to be done correctly, the following must be located before python.versions
|
|
pre-build { set_compilers }
|
|
pre-destroot { set_compilers }
|
|
}
|
|
|
|
python.versions 39 310 311 312 313 314
|
|
python.pep517_backend meson
|
|
|
|
if {${name} ne ${subport}} {
|
|
patchfiles patch-numpy_tests_test_scripts.py.diff \
|
|
patch-fcompiler_g95.diff
|
|
|
|
if {${python.version} == 39} {
|
|
version 2.0.2
|
|
revision 0
|
|
checksums rmd160 0037d601479123b2a02788c0c3b6ccf03bbdcf75 \
|
|
sha256 883c987dee1880e2a864ab0dc9892292582510604156762362d9326444636e78 \
|
|
size 18902015
|
|
patchfiles-append patch-numpy-tests-PY39.diff \
|
|
patch-missing-include-PY39.diff
|
|
} elseif {${python.version} == 310} {
|
|
version 2.2.6
|
|
revision 0
|
|
checksums rmd160 3de77b0a3e356425ee6320009e3c0133190f540e \
|
|
sha256 e29554e2bef54a90aa5cc07da6ce955accb83f21ab5de01a62c8478897b264fd \
|
|
size 20276440
|
|
patchfiles-append patch-numpy-tests-PY310.diff
|
|
} else {
|
|
patchfiles-append patch-numpy-tests.diff
|
|
}
|
|
|
|
# workaround for macOS version detection; do NOT check MACOSX_DEPLOYMENT_TARGET as that
|
|
# will be set to 13.0 in MacPorts eventhough the macOS version is, for example, 13.3
|
|
patchfiles-append \
|
|
patch_vendored-meson-meson-mesonbuild-dependencies-blas_lapack.py.diff
|
|
|
|
# see: https://trac.macports.org/ticket/73424
|
|
if {${os.platform} eq "darwin" && ${os.major} <= 10} {
|
|
patchfiles-append \
|
|
patch-meson-remove-Wl,-no_weak_imports.diff
|
|
}
|
|
|
|
post-patch {
|
|
reinplace "s|@@PYVER@@|${python.branch}|g" \
|
|
${worksrcpath}/numpy/_core/tests/test_cython.py \
|
|
${worksrcpath}/numpy/tests/test_configtool.py \
|
|
${worksrcpath}/numpy/_core/tests/test_limited_api.py
|
|
|
|
# https://trac.macports.org/ticket/46392
|
|
if {${os.arch} eq "powerpc"} {
|
|
reinplace "s,'-O3','-O2'," \
|
|
${worksrcpath}/numpy/distutils/fcompiler/gnu.py
|
|
}
|
|
|
|
if { [use_wrapper] } {
|
|
# Prepare wrappers
|
|
file copy -force ${filespath}/wrapper-template \
|
|
${worksrcpath}/c-wrapper
|
|
file copy -force ${filespath}/wrapper-template \
|
|
${worksrcpath}/f-wrapper
|
|
file copy -force ${filespath}/wrapper-template \
|
|
${worksrcpath}/cxx-wrapper
|
|
|
|
reinplace "s|@@@|${configure.cc}|" ${worksrcpath}/c-wrapper
|
|
reinplace "s|---|\\\\.c|" ${worksrcpath}/c-wrapper
|
|
reinplace "s|&&&|${prefix}|" ${worksrcpath}/c-wrapper
|
|
|
|
reinplace "s|@@@|${configure.cxx}|" ${worksrcpath}/cxx-wrapper
|
|
reinplace "s#---#(\\\\.C|\\\\.cpp|\\\\.cc)#" \
|
|
${worksrcpath}/cxx-wrapper
|
|
reinplace "s|&&&|${prefix}|" ${worksrcpath}/cxx-wrapper
|
|
|
|
reinplace "s|@@@|${configure.f90}|" ${worksrcpath}/f-wrapper
|
|
reinplace "s|---|\\\\.f|" ${worksrcpath}/f-wrapper
|
|
reinplace "s|&&&|${prefix}|" ${worksrcpath}/f-wrapper
|
|
}
|
|
}
|
|
|
|
depends_build-append \
|
|
path:bin/pkg-config:pkgconfig \
|
|
path:bin/cython-${python.branch}:py${python.version}-cython
|
|
|
|
build.env-append CYTHON=${prefix}/bin/cython-${python.branch}
|
|
|
|
# do not allow fallback to (slow) NumPy-internal routines if no external BLAS/LAPACK libraries are found
|
|
build.args-append -Csetup-args=-Dallow-noblas=false
|
|
|
|
compilers.setup -clang -gcc44 -gcc45 -gcc46 -gcc47 -gcc48 \
|
|
-gcc5 -gcc6 -gcc7 --g95
|
|
|
|
# https://trac.macports.org/ticket/67136
|
|
depends_run-append port:py${python.version}-oldest-supported-numpy
|
|
|
|
# NumPy (and SciPy) only support the Accelerate framework for macOS 13.3+
|
|
# see: https://github.com/numpy/numpy/blob/v1.26.4/INSTALL.rst#macos
|
|
if {${os.platform} eq "darwin" && (${os.major} > 22 || ${os.major} == 22 && ${os.minor} >= 4)} {
|
|
variant accelerate conflicts openblas flexiblas blis description "Use Apples Accelerate Framework" {
|
|
build.args-append -Csetup-args=-Dblas=accelerate -Csetup-args=-Dlapack=accelerate
|
|
}
|
|
}
|
|
|
|
variant openblas conflicts accelerate flexiblas blis description "Use MacPorts OpenBLAS Libraries" {
|
|
depends_lib-append path:lib/libopenblas.dylib:OpenBLAS
|
|
|
|
build.args-append -Csetup-args=-Dblas=openblas -Csetup-args=-Dlapack=openblas \
|
|
-Csetup-args=-Dpkg_config_path=${prefix}/lib/pkgconfig
|
|
}
|
|
|
|
variant flexiblas conflicts accelerate openblas blis description "Use MacPorts FlexiBLAS libraries" {
|
|
depends_lib-append port:flexiblas
|
|
|
|
build.args-append -Csetup-args=-Dblas=flexiblas -Csetup-args=-Dlapack=flexiblas \
|
|
-Csetup-args=-Dpkg_config_path=${prefix}/lib/pkgconfig
|
|
}
|
|
|
|
variant blis conflicts accelerate openblas flexiblas description "Use MacPorts BLIS/lapack libraries" {
|
|
# TODO: eventually this could/should use libFLAME, but currently NumPy cannot be convinced to use it
|
|
depends_lib-append port:blis \
|
|
port:lapack
|
|
|
|
build.args-append -Csetup-args=-Dblas=blis -Csetup-args=-Dlapack=lapack \
|
|
-Csetup-args=-Dpkg_config_path=${prefix}/share/pkgconfig:${prefix}/lib/lapack/pkgconfig
|
|
}
|
|
|
|
# set default BLAS/LAPACK variant if none is explicitly selected by the user
|
|
if {![variant_isset accelerate] && ![variant_isset openblas] && ![variant_isset flexiblas] && ![variant_isset blis]} {
|
|
# default to macOS Accelerate framework if macOS 13.3 or higher, otherwise OpenBLAS
|
|
# see: https://github.com/numpy/numpy/blob/v1.26.4/INSTALL.rst#macos
|
|
if {${os.platform} eq "darwin" && (${os.major} > 22 || ${os.major} == 22 && ${os.minor} >= 4)} {
|
|
default_variants +accelerate
|
|
} else {
|
|
default_variants +openblas
|
|
}
|
|
}
|
|
|
|
if {![fortran_variant_isset]} {
|
|
default_variants-append +gfortran
|
|
}
|
|
|
|
test.run yes
|
|
test.cmd ${python.bin} runtests.py
|
|
test.args --no-build --mode=fast
|
|
test.env-append CYTHON=${prefix}/bin/cython-${python.branch} \
|
|
PYTHONPATH=${destroot}${python.pkgd}
|
|
|
|
depends_test-append \
|
|
port:py${python.version}-cffi \
|
|
port:py${python.version}-charset-normalizer \
|
|
port:py${python.version}-cython \
|
|
port:py${python.version}-hypothesis \
|
|
port:py${python.version}-mypy \
|
|
port:py${python.version}-typing_extensions \
|
|
port:py${python.version}-tz
|
|
|
|
# determine if special wrapper values are needed for compiler names
|
|
# a procedure is needed since variants from PortGroup compilers must
|
|
# be evaluated before it can be determined if clang is being used
|
|
proc use_wrapper {} {
|
|
global configure.cc
|
|
|
|
if {[variant_exists universal] && [variant_isset universal]} {
|
|
if {![string match *clang* ${configure.cc}]} {
|
|
# gcc compilers do not handle multiple -arch values properly
|
|
return 1
|
|
}
|
|
}
|
|
return 0
|
|
}
|
|
|
|
# set compiler names
|
|
proc set_compilers {} {
|
|
global configure.cc configure.cxx configure.fc worksrcpath
|
|
|
|
if {[use_wrapper]} {
|
|
# override values set in compilers PortGroup
|
|
configure.cc ${worksrcpath}/c-wrapper
|
|
configure.cxx ${worksrcpath}/cxx-wrapper
|
|
configure.fc ${worksrcpath}/f-wrapper
|
|
configure.f77 ${worksrcpath}/f-wrapper
|
|
configure.f90 ${worksrcpath}/f-wrapper
|
|
}
|
|
}
|
|
|
|
livecheck.type none
|
|
}
|