mesonbuild / meson

The Meson Build System
http://mesonbuild.com
Apache License 2.0
5.65k stars 1.64k forks source link

Ninja binary path regression in 0.59.2 #9370

Open nazar-pc opened 3 years ago

nazar-pc commented 3 years ago

Describe the bug

9264 introduced a regression after which Meson can no longer find Ninja and fails with "ERROR: Could not detect Ninja v1.8.2 or newer"

To Reproduce I don't have a reduced example (not yet at least) but it fails on https://github.com/nazar-pc/mediasoup/tree/meson branch (go to worker directory and do make test, it will pull latest Meson and Ninja).

I believe it is caused by the fact that it uses NINJA environment variable to specify path to Ninja executable.

Expected behavior Things worked in older versions up to 0.59.1 and expected to be working in any newer patch version.

system parameters

eli-schwartz commented 3 years ago

This works okay using an absolute path, but fails when NINJA=./path/to/ninja

Simple answer: use NINJA="$PWD/path/to/ninja

I am not entirely decided on whether we should support this for environment variable lookups. If we do, I don't want to re-introduce the meson.build parsing bug that it fixed... one solution is to add search_dir= to such cases, but that would cause it to always prefer ./ninja without the environment variable set and an existing ninja binary in /usr/bin.

nazar-pc commented 3 years ago

I'm switching to absolute path then, there is one more incompatibility with relative path: compilation database file generation uses different working directory and breaks as well, so it seems like an absolute path is the only universally working option right now.

eli-schwartz commented 3 years ago

Yeah, that does seem like this could be argued as a useful sanity check then.