From: ahesford <ahesford@users.noreply.github.com>
To: ml@inbox.vuxu.org
Subject: Re: [PR PATCH] [Updated] [RFC] New numpy build_helper to support cross compilation
Date: Sun, 12 Jul 2020 20:30:27 +0200 [thread overview]
Message-ID: <20200712183027.FV8qxXZha7ivwmz7Sew0KsDd6Qu7HyghwknK0eK_UkE@z> (raw)
In-Reply-To: <gh-mailinglist-notifications-41a7ca26-5023-4802-975b-f1789d68868e-void-packages-23515@inbox.vuxu.org>
[-- Attachment #1: Type: text/plain, Size: 718 bytes --]
There is an updated pull request by ahesford against master on the void-packages repository
https://github.com/ahesford/void-packages numpy-helper
https://github.com/void-linux/void-packages/pull/23515
[RFC] New numpy build_helper to support cross compilation
I plan on adding some packages that link against `python3-numpy` and require the same kinds of environment manipulations currently done in `python3-scipy` to support cross building. The new templates would be simplified if these manipulations were centralized in a build_helper, so here it is. `python3-scipy` has been reworked to take advantage of the new helper.
A patch file from https://github.com/void-linux/void-packages/pull/23515.patch is attached
[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: github-pr-numpy-helper-23515.patch --]
[-- Type: text/x-diff, Size: 4785 bytes --]
From 0649652e1971fba4c7bdfcd376288438b86498d8 Mon Sep 17 00:00:00 2001
From: "Andrew J. Hesford" <ajh@sideband.org>
Date: Fri, 10 Jul 2020 23:35:09 -0400
Subject: [PATCH 1/2] xbps-src: add numpy build_helper
Packages that link against python3-numpy require special consideration
to ensure that, in a cross-building environment, target libraries and
headers as well as the FORTRAN compiler and linker are properly
identifeid. Previously, this was done directly in the python3-scipy
template to support cross compilation. Now, a build_helper generalizes
these changes to support other package templates.
---
common/build-helper/numpy.sh | 36 ++++++++++++++++++++++++++++++++++++
1 file changed, 36 insertions(+)
create mode 100644 common/build-helper/numpy.sh
diff --git a/common/build-helper/numpy.sh b/common/build-helper/numpy.sh
new file mode 100644
index 00000000000..42f98bf95cb
--- /dev/null
+++ b/common/build-helper/numpy.sh
@@ -0,0 +1,36 @@
+#
+# numpy - build-helper for packages that compile against python3-numpy
+#
+# This build-helper makes sure packages can find python3-numpy libraries and
+# headers on the target architecture rather than the host, as well as making
+# sure the gfortran cross compiler is properly identified.
+
+# Even for cross compilation, numpy should be available on the host to ensure
+# that the host interpreter doesn't complain about missing deps
+if [[ $hostmakedepends != *"python3-numpy"* ]]; then
+ hostmakedepends+=" python3-numpy"
+fi
+
+if [ "$CROSS_BUILD" ]; then
+ if [[ $makedepends != *"python3-numpy"* ]]; then
+ makedepends+=" python3-numpy"
+ fi
+
+ # python3-setuptools finds numpy libs and headers on the host first;
+ # addding search paths up front allows the target to take priority
+ CFLAGS+=" -I${XBPS_CROSS_BASE}/${py3_sitelib}/numpy/core/include"
+ LDFLAGS+=" -L${XBPS_CROSS_BASE}/${py3_sitelib}/numpy/core/lib"
+
+ # distutils from python3-numpy looks to environment variables F77 and
+ # F90 rather than the XBPS-set FC
+ export F77="${FC}"
+ export F90="${FC}"
+
+ # When compiling and linking FORTRAN, distutils from python3-numpy
+ # refuses respect any linker name except "gfortran"; symlink to the
+ # cross-compiler to that the right linker and compiler will be used
+ if _gfortran=$(command -v "${FC}"); then
+ ln -sf "${_gfortran}" "${XBPS_WRAPPERDIR}/gfortran"
+ fi
+ unset _gfortran
+fi
From b6296e31c920578a3923049068d4617d1fb35933 Mon Sep 17 00:00:00 2001
From: "Andrew J. Hesford" <ajh@sideband.org>
Date: Fri, 10 Jul 2020 23:39:29 -0400
Subject: [PATCH 2/2] python3-scipy: update to 1.5.1.
---
srcpkgs/python3-scipy/template | 26 +++++---------------------
1 file changed, 5 insertions(+), 21 deletions(-)
diff --git a/srcpkgs/python3-scipy/template b/srcpkgs/python3-scipy/template
index 3d602c347c9..90b4b1b8a1e 100644
--- a/srcpkgs/python3-scipy/template
+++ b/srcpkgs/python3-scipy/template
@@ -1,13 +1,13 @@
# Template file for 'python3-scipy'
pkgname=python3-scipy
-version=1.5.0
+version=1.5.1
revision=2
wrksrc="scipy-${version}"
build_style=python3-module
+build_helper="numpy"
make_check_args="--force"
-hostmakedepends="gcc-fortran python3-setuptools
- python3-Cython python3-numpy python3-pybind11"
-makedepends="python3-devel python3-numpy python3-pybind11
+hostmakedepends="gcc-fortran python3-setuptools python3-Cython python3-pybind11"
+makedepends="python3-devel python3-pybind11
$(vopt_if openblas openblas-devel lapack-devel)"
depends="python3-numpy"
checkdepends="python3-nose"
@@ -16,7 +16,7 @@ maintainer="Alessio Sergi <al3hex@gmail.com>"
license="BSD-3-Clause"
homepage="https://scipy.org/scipylib/"
distfiles="https://github.com/scipy/scipy/releases/download/v${version}/scipy-${version}.tar.xz"
-checksum=23baeaa18803d12d1abdff3f5c148b1085c2dc4028c6b8efce652dde2119b41c
+checksum=0728bd66a5251cfeff17a72280ae5a40ec14add217f94868d1415b3c469b610a
build_options="openblas"
desc_option_openblas="Enable support for openblas accelerated linear algebra"
@@ -29,25 +29,9 @@ case "$XBPS_TARGET_MACHINE" in
*) ;;
esac
-if [ "$CROSS_BUILD" ]; then
- # Make sure numpy is found for the target arch first
- CFLAGS+=" -I${XBPS_CROSS_BASE}/${py3_sitelib}/numpy/core/include"
- LDFLAGS+=" -L${XBPS_CROSS_BASE}/${py3_sitelib}/numpy/core/lib"
-
- # Tell numpy.distutils where to find FORTRAN compilers
- export F77="${FC}"
- export F90="${FC}"
-fi
-
LDFLAGS+=" -shared"
pre_build() {
- if [ "$CROSS_BUILD" ]; then
- # numpy.distutils refuses to find the right linker for FORTRAN
- # Link the cross compiler so the module will find it as gfortran
- ln -sf "/usr/bin/${FC}" "${XBPS_WRAPPERDIR}/gfortran"
- fi
-
# Find the right linear algebra subroutines on the target arch
: > site.cfg
for _blaslib in $(vopt_if openblas openblas "lapack blas"); do
next prev parent reply other threads:[~2020-07-12 18:30 UTC|newest]
Thread overview: 15+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-07-11 3:42 [PR PATCH] " ahesford
2020-07-11 3:48 ` [PR REVIEW] " ericonr
2020-07-11 4:02 ` sgn
2020-07-11 4:09 ` [PR PATCH] [Updated] " ahesford
2020-07-11 4:11 ` [PR REVIEW] " ahesford
2020-07-11 4:21 ` ahesford
2020-07-11 4:29 ` ericonr
2020-07-11 16:14 ` ahesford
2020-07-11 17:03 ` [PR PATCH] [Updated] " ahesford
2020-07-12 18:30 ` ahesford [this message]
2020-07-12 18:30 ` ahesford
2020-07-13 2:45 ` [PR PATCH] [Merged]: " ahesford
2020-07-13 4:13 ` ericonr
2020-07-13 4:17 ` ahesford
2020-07-13 4:22 ` ericonr
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20200712183027.FV8qxXZha7ivwmz7Sew0KsDd6Qu7HyghwknK0eK_UkE@z \
--to=ahesford@users.noreply.github.com \
--cc=ml@inbox.vuxu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).