From 58658976f9e08a8f6e45dd2fa24c5efadc2abc4b Mon Sep 17 00:00:00 2001 From: "Andrew J. Hesford" Date: Thu, 21 Sep 2023 11:00:56 -0400 Subject: [PATCH 1/6] common/build-helper/numpy.sh: write meson cross file when needed --- Manual.md | 5 +++++ common/build-helper/numpy.sh | 10 ++++++++++ 2 files changed, 15 insertions(+) diff --git a/Manual.md b/Manual.md index b6a4ffa0a71ce..21162641e4708 100644 --- a/Manual.md +++ b/Manual.md @@ -1083,6 +1083,11 @@ meson for cross builds. This is particularly useful for building packages that w invocations (e.g., `python3-pep517` packages that use a meson backend) and is added by default for packages that use the `meson` build style. +- `numpy` configures the environment for cross-compilation of python packages that provide +compiled extensions linking to NumPy C libraries. If the `meson` build helper is also +configured, a secondary cross file, `${XBPS_WRAPPERDIR}/meson/xbps_numpy.cross`, will be +written to inform meson where common NumPy components may be found. + - `python3` configures the cross-build environment to use Python libraries, header files, and interpreter configurations in the target root. The `python3` helper is added by default for packages that use the `python3-module` or `python3-pep517` build styles. diff --git a/common/build-helper/numpy.sh b/common/build-helper/numpy.sh index 74c6421165293..bf40390ad1cae 100644 --- a/common/build-helper/numpy.sh +++ b/common/build-helper/numpy.sh @@ -34,4 +34,14 @@ if [ "$CROSS_BUILD" ]; then ln -sf "${_gfortran}" "${XBPS_WRAPPERDIR}/gfortran" fi unset _gfortran + + # Write a secondary meson cross file for numpy configuration + if [[ "${build_helper}" = *meson* ]]; then + mkdir -p "${XBPS_WRAPPERDIR}/meson" + cat > "${XBPS_WRAPPERDIR}/meson/xbps_numpy.cross" <<-EOF + [properties] + numpy-include-dir = '${XBPS_CROSS_BASE}/${py3_sitelib}/numpy/core/include' + pythran-include-dir = '${XBPS_CROSS_BASE}/${py3_sitelib}/pythran' + EOF + fi fi From 6806c2de034a5c39c6a6e69405820f049546b320 Mon Sep 17 00:00:00 2001 From: "Andrew J. Hesford" Date: Thu, 21 Sep 2023 11:01:24 -0400 Subject: [PATCH 2/6] common/build-style/python3-pep517.sh: use meson cross files by default --- common/build-style/python3-pep517.sh | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/common/build-style/python3-pep517.sh b/common/build-style/python3-pep517.sh index 2d5ff7caf34eb..5ec20dd117f8a 100644 --- a/common/build-style/python3-pep517.sh +++ b/common/build-style/python3-pep517.sh @@ -4,8 +4,18 @@ do_build() { : ${make_build_target:=.} - : ${make_build_args:=--no-isolation --wheel} - python3 -m build ${make_build_args} ${make_build_target} + + if [ "${CROSS_BUILD}" ] && [[ "${build_helper}" = *meson* ]]; then + local mcross="-Csetup-args=--cross-file=${XBPS_WRAPPERDIR}/meson" + make_build_args+=" ${mcross}/xbps_meson.cross" + + if [[ "${build_helper}" = *numpy* ]]; then + make_build_args+=" ${mcross}/xbps_numpy.cross" + fi + fi + + python3 -m build --no-isolation --wheel \ + ${make_build_args} ${make_build_target} } do_check() { From 0a2141b19ad36337710d625472dab8ba4b72a532 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gonzalo=20Tornar=C3=ADa?= Date: Wed, 20 Sep 2023 19:32:18 -0300 Subject: [PATCH 3/6] python3-pybind11: add standard symlinks --- .../13-pkg-config-clean-xbps-cross-base-ref.sh | 3 ++- srcpkgs/python3-pybind11/template | 11 ++++++++++- 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/common/hooks/post-install/13-pkg-config-clean-xbps-cross-base-ref.sh b/common/hooks/post-install/13-pkg-config-clean-xbps-cross-base-ref.sh index 5cdfb0e9bfd2b..88ad06c41983a 100644 --- a/common/hooks/post-install/13-pkg-config-clean-xbps-cross-base-ref.sh +++ b/common/hooks/post-install/13-pkg-config-clean-xbps-cross-base-ref.sh @@ -16,7 +16,8 @@ hook() { # s,/usr/armv7l-linux-musleabihf/usr,/usr,g # trailing /usr to avoid clashing with # other $XBPS_CROSS_BASE and $XBPS_CROSS_TRIPLET. - sed -i -e "s,$XBPS_CROSS_BASE/usr,/usr,g" "$f" + sed -i --follow-symlinks \ + -e "s,$XBPS_CROSS_BASE/usr,/usr,g" "$f" fi done } diff --git a/srcpkgs/python3-pybind11/template b/srcpkgs/python3-pybind11/template index 3b6ce5b98688f..de80678f261cb 100644 --- a/srcpkgs/python3-pybind11/template +++ b/srcpkgs/python3-pybind11/template @@ -1,7 +1,7 @@ # Template file for 'python3-pybind11' pkgname=python3-pybind11 version=2.11.1 -revision=1 +revision=2 build_style=python3-module hostmakedepends="cmake python3-setuptools python3-pytest python3-sphinx_rtd_theme python3-breathe" @@ -44,6 +44,15 @@ do_check() { post_install() { vlicense LICENSE + # symlink headers, cmake and pkgconfig into /usr + vmkdir usr/include + vmkdir usr/lib/cmake + vmkdir usr/lib/pkgconfig + _pybind11=${DESTDIR}/${py3_sitelib}/pybind11 + ln -rs $_pybind11/include/pybind11 ${DESTDIR}/usr/include/ + ln -rs $_pybind11/share/cmake/pybind11 ${DESTDIR}/usr/lib/cmake/ + ln -rs $_pybind11/share/pkgconfig/pybind11.pc ${DESTDIR}/usr/lib/pkgconfig/ + # Copy the man page, but make it section 7 _manpage=docs/.build/man/pybind11.1 vsed -i ${_manpage} -e '/^\.TH/ s/"1"/"7"/' From 5d549a61c093b8c6c86c0cd8325b915d23318d8e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gonzalo=20Tornar=C3=ADa?= Date: Sun, 7 May 2023 21:47:30 -0300 Subject: [PATCH 4/6] python3-contourpy: update to 1.1.1. --- srcpkgs/python3-contourpy/template | 15 ++++++++++----- srcpkgs/python3-contourpy/update | 1 + 2 files changed, 11 insertions(+), 5 deletions(-) create mode 100644 srcpkgs/python3-contourpy/update diff --git a/srcpkgs/python3-contourpy/template b/srcpkgs/python3-contourpy/template index 70e3833c8b55a..69f741a9b0eff 100644 --- a/srcpkgs/python3-contourpy/template +++ b/srcpkgs/python3-contourpy/template @@ -1,9 +1,10 @@ # Template file for 'python3-contourpy' pkgname=python3-contourpy -version=1.0.5 -revision=2 -build_style=python3-module -hostmakedepends="python3-setuptools python3-pybind11" +version=1.1.1 +revision=1 +build_style=python3-pep517 +build_helper=meson +hostmakedepends="python3-meson-python python3-pybind11 pkg-config" makedepends="python3-pybind11" depends="python3" checkdepends="${depends} python3-pytest-xdist python3-numpy" @@ -11,8 +12,12 @@ short_desc="Python library for calculating contours of 2D quadrilateral grids" maintainer="Alex Childs " license="BSD-3-Clause" homepage="https://github.com/contourpy/contourpy" +changelog="https://raw.githubusercontent.com/contourpy/contourpy/main/docs/changelog.rst" distfiles="${PYPI_SITE}/c/contourpy/contourpy-${version}.tar.gz" -checksum=896631cd40222aef3697e4e51177d14c3709fda49d30983269d584f034acc8a4 +checksum=96ba37c2e24b7212a77da85004c38e7c4d155d3e72a45eeaf22c1f03f607e8ab + +# This test needs `wurlitzer`, not packaged +make_check_args="--deselect=tests/test_internal.py::test_write_cache" # Pulling python3-matplotlib creates a build-time dependency if [ "$XBPS_CHECK_PKGS" = full ]; then diff --git a/srcpkgs/python3-contourpy/update b/srcpkgs/python3-contourpy/update new file mode 100644 index 0000000000000..e299d00ea67cd --- /dev/null +++ b/srcpkgs/python3-contourpy/update @@ -0,0 +1 @@ +ignore="*rc*" From e121794f8068098f8daaafc34245eed838f0f664 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gonzalo=20Tornar=C3=ADa?= Date: Sun, 7 May 2023 21:56:57 -0300 Subject: [PATCH 5/6] python3-kiwisolver: update to 1.4.5, adopt. --- srcpkgs/python3-kiwisolver/template | 22 ++++++++-------------- 1 file changed, 8 insertions(+), 14 deletions(-) diff --git a/srcpkgs/python3-kiwisolver/template b/srcpkgs/python3-kiwisolver/template index 3e4e2d55823da..ecea82d14e06c 100644 --- a/srcpkgs/python3-kiwisolver/template +++ b/srcpkgs/python3-kiwisolver/template @@ -1,25 +1,19 @@ # Template file for 'python3-kiwisolver' pkgname=python3-kiwisolver -version=1.3.1 -revision=4 -build_style=python3-module -hostmakedepends="python3-setuptools python3-cppy" +version=1.4.5 +revision=1 +build_style=python3-pep517 +hostmakedepends="python3-setuptools_scm python3-wheel python3-cppy" makedepends="python3-devel python3-cppy" depends="python3" +checkdepends="python3-pytest" short_desc="Fast implementation of the Cassowary constraint solver (Python3)" -maintainer="Orphaned " +maintainer="Gonzalo TornarĂ­a " license="BSD-3-Clause" homepage="https://github.com/nucleic/kiwi" +changelog="https://github.com/nucleic/kiwi/raw/main/releasenotes.rst" distfiles="${PYPI_SITE}/k/kiwisolver/kiwisolver-${version}.tar.gz" -checksum=950a199911a8d94683a6b10321f9345d5a3a8433ec58b217ace979e18f16e248 - -post_patch() { - # When cross building, make sure target cppy headers are used - if [ -n "${XBPS_CROSS_BASE}" ]; then - vsed -i setup.py \ - -e "s@cppy.get_include()@&.replace('/usr/', '${XBPS_CROSS_BASE}/usr/')@" - fi -} +checksum=e57e563a57fb22a142da34f38acc2fc1a5c864bc29ca1517a88abc963e60d6ec post_install() { vlicense LICENSE From 9cfeb87d4a740d7f4d1ad7033d404847ac8ffe1e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gonzalo=20Tornar=C3=ADa?= Date: Sat, 16 Sep 2023 13:15:51 -0300 Subject: [PATCH 6/6] python3-matplotlib: update to 3.8.0. --- srcpkgs/python3-matplotlib/template | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/srcpkgs/python3-matplotlib/template b/srcpkgs/python3-matplotlib/template index e8c3b07f9b9ca..90e899c2b2f52 100644 --- a/srcpkgs/python3-matplotlib/template +++ b/srcpkgs/python3-matplotlib/template @@ -1,11 +1,11 @@ # Template file for 'python3-matplotlib' pkgname=python3-matplotlib -version=3.7.2 +version=3.8.0 revision=1 -build_style=python3-module +build_style=python3-pep517 build_helper="numpy" hostmakedepends="pkg-config python3-setuptools_scm python3-certifi - python3-numpy python3-pybind11" + python3-numpy python3-pybind11 python3-wheel" makedepends="python3-devel freetype-devel libpng-devel libqhull-devel python3-pybind11" depends="python3-cycler fonttools python3-kiwisolver python3-numpy python3-packaging python3-Pillow python3-parsing python3-dateutil @@ -14,8 +14,9 @@ short_desc="Python3 2D/3D plotting library" maintainer="Andrew J. Hesford " license="custom:matplotlib, BSD-3-Clause, MIT" homepage="https://matplotlib.org/" +changelog="https://github.com/matplotlib/matplotlib/releases" distfiles="${PYPI_SITE}/m/matplotlib/matplotlib-${version}.tar.gz" -checksum=a8cdb91dddb04436bd2f098b8fdf4b81352e68cf4d2c6756fcc414791076569b +checksum=df8505e1c19d5c2c26aff3497a7cbd3ccfc2e97043d1e4db3e76afa399164b69 replaces="python3-matplotlib-data>=0" # Comparison of images is too frail for validation make_check="no" @@ -26,6 +27,7 @@ pre_build() { system_freetype = true system_qhull = true EOF + vsed -e "s|'-flto'|'-flto=auto'|" -i setup.py } post_install() {