meson-python: Improve logging on build failure by displaying file contents of `meson-log.txt`
The current output from pip
when encountering a build error is very poor. gh-231 will fix one part of that, by reducing the traceback of irrelevant pip/meson-python internals. There is a second part however which we need to improve on, which is showing the actual root cause of a build failure when possible. Now what happens is the user sees something like:
../../scipy/meson.build:40:0: ERROR: Command "/usr/bin/python3 -c import os; os.chdir(".."); import numpy; print(numpy.get_include())" failed with status 1.
A full log can be found at /tmp/pip-install-3okqoo15/scipy_a5afe2fae16c4250875f20d9db43706f/.mesonpy-u88p7q3f/build/meson-logs/meson-log.txt
and is then left wondering "why does import numpy
fail, given numpy
is a build dependency?". The answer is in meson-log.txt
, which pip
has unhelpfully already cleaned up. So it’s impossible to diagnose the issue (latest example for scipy here).
Two options to improve here that I can think of:
- Don’t clean up the log file
- Print to log file contents to stdout (possibly followed by repeating the root cause from the original stdout content)
(2) is probably better than (1).
About this issue
- Original URL
- State: open
- Created 2 years ago
- Comments: 21 (19 by maintainers)
Suggestion by @oscarbenjamin in https://github.com/mesonbuild/meson-python/discussions/602#discussioncomment-8870523:
[what] would be very helpful in this situation is an easy way to get it to show the full logs like a MESON_PYTHON_SHOW_LOGS environment variable
I think we should do both avoid cleaning up ourselves and improve terminal output. Right now I think
pip
will still clean up for a regular isolated build, so the user trying to diagnose a build failure still has a problem.