Closed h-vetinari closed 2 weeks ago
Would you be able to bisect this by installing different git commits of meson into that feedstock? Nothing obviously jumps out at me as related to this, except maybe c1076241af11f10acac28d771688bb54c6b0b340 (although that commit does look suspiciously related ;)).
although that commit does look suspiciously related ;)
Your suspicion was spot on. I tried this in https://github.com/conda-forge/matplotlib-feedstock/pull/398:
Thanks for verifying that. @xclaesse as the author of that commit, can you take a look at this?
(It is bedtime now so that's all the debugging I will be doing for now.)
Originally I worried that this would have a huge blast radius for conda-forge (well, for those packages being built by meson at least), as that's one of our main architectures, and we only cross-compile it (due to lack of native agents in azure).
I restarted https://github.com/conda-forge/scipy-feedstock/pull/269 [^1], and to my surprise, this doesn't run into the same issue:
+ meson setup $SRC_DIR $SRC_DIR/builddir -Dbuildtype=release \
-Db_ndebug=if-release -Db_vscrt=md -Dblas=blas -Dlapack=lapack -Duse-g77-abi=true \
--prefix=$PREFIX -Dlibdir=lib --cross-file $BUILD_PREFIX/meson_cross_file.txt \
--native-file=$SRC_DIR/builddir/meson-python-native-file.ini
The Meson build system
Version: 1.5.0
Source dir: $SRC_DIR
Build dir: $SRC_DIR/builddir
Build type: cross build
Project name: scipy
Project version: 1.14.0
C compiler for the host machine: arm64-apple-darwin20.0.0-clang (clang 16.0.6 "clang version 16.0.6")
C linker for the host machine: arm64-apple-darwin20.0.0-clang ld64 711
One difference that stands out is --native-file
, though I don't understand under what conditions this is created; it's not part of the build script, and it doesn't seem to be created in scipy itself either (though there's a cross-compiled
setting in __config__.py.in
). CC @rgommers
https://github.com/conda-forge/scikit-learn-feedstock/pull/270 similarly passes (and sets --native-file
). So it doesn't seem to affect everything, but I don't understand the conditions under which failure happens or not.
[^1]: originally restricted to windows as it was meant only for debugging #13323
One difference that stands out is
--native-file
, though I don't understand under what conditions this is created;
--native-file
is the setup argument coming from meson-python
, to ensure that the native Python interpreter Meson picks is actually the right one (i.e., the one in the environment for which meson-python
itself is installed). It's always passed when you build an sdist or wheel with meson-python
.
@h-vetinari this line is wrong: https://github.com/conda-forge/matplotlib-feedstock/blob/414fc00e6cde964337d84b5234673a647cc22c00/recipe/build_base.sh (both because meson-python
may redo the configure stage, and because invoking python -m mesonbuild.mesonmain
isn't supported by Meson AFAIK). If you adapt it to what's used in scipy-feedstock, that may help.
Thanks a lot @rgommers; I fixed the double-execution in https://github.com/conda-forge/matplotlib-feedstock/pull/398 (now just going through meson-python as it should), but the issue persists with 1.5.0, and in fact the same result for the specific commits as above (links to CI logs have been updated below):
Here is a potential fix: #13411
Thanks a lot @lazka! 🙏
I've tested your PR in https://github.com/conda-forge/matplotlib-feedstock/pull/398 and it works again! 🥳
Is there any approximate timeline for a 1.5.1 release?
There are two more bugs open on the 1.5.1 milestone, one of them is going to be investigated and hopefully fixed tomorrow. I'd like to get either or both of them fixed in the next couple of days, then release 1.5.1.
@h-vetinari 1.5.1 is out
I saw, thanks a lot for everyone's effort!
Describe the bug A previously (with meson 1.4.2) working build for osx-arm64 broke with the release of meson 1.5.0, apparently trying to run
sanitycheckc_cross.exe
with a wrong architectureNote that we're cross-compiling three different architectures (the other two being
linux-aarch64
andlinux-ppc64le
, both compiled fromlinux-64
), andosx-arm64
is the only one that broke.More specifically, the cleaned-up build invocation looks as follows
and the contents of
meson_cross_file.txt
are:To Reproduce
Build the recipe in https://github.com/conda-forge/matplotlib-feedstock
Reverting back to
meson <1.5
causes the build to succeed.Expected behavior Build succeeds
system parameters
meson --version
ninja --version
if it's a Ninja build