Description
Describe the bug
Before #14251, running the following meson command in systemd did not cause meson to reconfigure when running ninja -C build
, since #14251 it does cause meson to reconfigure even if mode
was already set to developer
before:
meson setup -Dmode=release -Dmode=developer build
The issue is that since #14251, setting options loops over the full raw list of options, whereas before #14251, setting options looped over the deduplicated list of options, with latter options overriding previous ones. Now, mode=release
is processed, and since it's not equal to developer
, meson thinks the value has changed and the coredata file needs to be rewritten, even though the option is set to developer
again later.
To Reproduce
Take any simple meson C project, and run the following:
meson setup -Db_sanitize=address build
ninja -C build
meson setup -Db_sanitize=thread -Db_sanitize=address build
ninja -C build
Expected behavior
The second call to ninja -C build
should not cause meson to reconfigure, but it does.
system parameters
- Is this a cross build or just a plain native build (for the same computer)? Native
- what operating system (e.g. MacOS Catalina, Windows 10, CentOS 8.0, Ubuntu 18.04, etc.) Fedora 42
- what Python version are you using e.g. 3.8.0 Python 3.14
- what
meson --version
running meson from master - what
ninja --version
if it's a Ninja build 1.12.1