python3-scikit-image: update to 0.21.0.

This commit is contained in:
Andrew J. Hesford 2023-04-04 10:09:26 -04:00
parent 9a73ca3950
commit 8342faf5f8
3 changed files with 151 additions and 15 deletions

View File

@ -0,0 +1,93 @@
From 8789a3365282a4f5604e090a10c960e710d240b9 Mon Sep 17 00:00:00 2001
From: "Andrew J. Hesford" <ajh@sideband.org>
Date: Tue, 6 Jun 2023 10:05:25 -0400
Subject: [PATCH] meson: allow proper selection of NumPy, Pythran in cross
builds
---
skimage/meson.build | 62 +++++++++++++++++++++++++++------------------
1 file changed, 38 insertions(+), 24 deletions(-)
diff --git a/skimage/meson.build b/skimage/meson.build
index 28c831312..c168389d7 100644
--- a/skimage/meson.build
+++ b/skimage/meson.build
@@ -29,37 +29,51 @@ if is_windows
endif
endif
-# NumPy include directory - needed in all submodules
-incdir_numpy = run_command(py3,
- [
- '-c',
- 'import os; os.chdir(".."); import numpy; print(numpy.get_include())'
- ],
- check: true
-).stdout().strip()
+# Both NumPy and Pythran require header files that may differ between the build
+# system and the host system in a cross-compilation environment. To accommodate
+# these cases, we can query user-defined properties that can be specified in
+# the 'properties' section of a Meson cross file:
+#
+# [properties]
+# numpy-include-dir = '/path/to/numpy/includes'
+# pythran-include-dir = '/path/to/pythran/includes'
+#
+# In the absence of explicitly configured paths, just run the build Python and
+# try to query the Python packages for their paths directly.
+
+# NumPy include directory
+incdir_numpy = meson.get_external_property('numpy-include-dir', 'not-given')
+if incdir_numpy == 'not-given'
+ # If not specified, try to query NumPy from the build python
+ incdir_numpy = run_command(py3,
+ [
+ '-c',
+ 'import os; os.chdir(".."); import numpy; print(numpy.get_include())'
+ ],
+ check: true
+ ).stdout().strip()
+endif
inc_np = include_directories(incdir_numpy)
cc = meson.get_compiler('c')
-# Pythran include directory and build flags
-use_pythran = run_command(py3,
- [
- '-c',
- 'import os; print(os.environ.get("SCIPY_USE_PYTHRAN", 1))'
- ],
- check: true
-).stdout().strip() == '1'
-
-incdir_pythran = run_command(py3,
- [
- '-c',
- 'import os; os.chdir(".."); import pythran; print(os.path.dirname(pythran.__file__));'
- ],
- check: true
-).stdout().strip()
+# Pythran include directory
+incdir_pythran = meson.get_external_property('pythran-include-dir', 'not-given')
+if incdir_pythran == 'not-given'
+ # If not specified, try to query Pythran from the build python
+ incdir_pythran = run_command(py3,
+ [
+ '-c',
+ 'import os; os.chdir(".."); import pythran; print(os.path.dirname(pythran.__file__));'
+ ],
+ check: true
+ ).stdout().strip()
+endif
+
inc_pythran = include_directories(incdir_pythran)
+# Pythran build flags
cpp_args_pythran = [
'-DENABLE_PYTHON_MODULE',
'-D__PYTHRAN__=3',
--
2.41.0

View File

@ -0,0 +1,14 @@
There doesn't seem to be a valid reason for this restriction, and it doesn't
impede building anyway.
--- a/pyproject.toml
+++ b/pyproject.toml
@@ -145,7 +145,7 @@
"numpy==1.21.1; python_version=='3.8' and platform_python_implementation != 'PyPy'",
"numpy==1.21.1; python_version=='3.9' and platform_python_implementation != 'PyPy'",
"numpy==1.21.6; python_version=='3.10' and platform_system != 'Windows' and platform_python_implementation != 'PyPy'",
- "numpy==1.23.3; python_version=='3.11' and platform_python_implementation != 'PyPy'",
+ "numpy>=1.23.3; python_version=='3.11' and platform_python_implementation != 'PyPy'",
"numpy; python_version>='3.12'",
"numpy; python_version>='3.8' and platform_python_implementation=='PyPy'",
]

View File

@ -1,28 +1,57 @@
# Template file for 'python3-scikit-image'
pkgname=python3-scikit-image
version=0.19.3
revision=2
_pkgname="${pkgname#python3-}"
build_style=python3-module
build_helper="numpy"
hostmakedepends="python3-Cython python3-wheel python3-numpy
python3-packaging python3-setuptools pythran"
makedepends="python3-devel"
depends="python3-scipy python3-numpy python3-imageio python3-matplotlib
python3-networkx python3-tifffile python3-pywt python3-packaging"
version=0.21.0
revision=1
build_style=meson
build_helper="python3"
hostmakedepends="python3-build python3-installer python3-meson-python
python3-wheel python3-setuptools python3-packaging python3-Cython pythran
python3-lazy_loader python3-numpy pkg-config"
makedepends="python3-devel python3-numpy pythran"
depends="python3-numpy python3-scipy python3-networkx python3-Pillow
python3-imageio python3-tifffile python3-pywt python3-packaging
python3-lazy_loader"
short_desc="Image processing in Python"
maintainer="Andrew J. Hesford <ajh@sideband.org>"
license="BSD-3-Clause, MIT"
homepage="https://scikit-image.org/"
distfiles="https://github.com/${_pkgname}/${_pkgname}/archive/v${version}.tar.gz"
checksum=4eb877c98d1395769daef5bc2ba8a7efd3f736c87086aecb3775a9174593398b
distfiles="https://github.com/scikit-image/scikit-image/archive/v${version}.tar.gz"
checksum=53a82a9dbd3ed608d2ad3876269a271a7e922b12e228388eac996b508aadd652
# Tests require data files and unpackaged dependencies
make_check=no
pre_build() {
make_build_args+=" ${makejobs}"
if [ "${CROSS_BUILD}" ]; then
configure_args="--cross-file=python.cross"
fi
pre_patch() {
if [ "${CROSS_BUILD}" ]; then
# Meson can't tolerate $CC with arguments as set by build helper
CC="${XBPS_CROSS_TRIPLET}-gcc"
# CXX needs to know where to find Python headers
CXXFLAGS+=" -I${XBPS_CROSS_BASE}/${py3_inc}"
fi
}
post_install() {
post_patch() {
if [ "${CROSS_BUILD}" ]; then
local _xpy="${XBPS_CROSS_BASE}/${py3_sitelib}"
cat > python.cross <<-EOF
[properties]
numpy-include-dir = '${_xpy}/numpy/core/include'
pythran-include-dir = '${_xpy}/pythran'
EOF
fi
}
do_build() {
# Use the build directory already configured by xbps-src for meson
python3 -m build --no-isolation --wheel \
-Cbuilddir="./build" -Ccompile-args="${makejobs}" .
}
do_install() {
python3 -m installer --destdir "${DESTDIR}" \
--no-compile-bytecode dist/*.whl
vlicense LICENSE.txt
}