On Mon, 14 Oct 2024 at 13:09, Peter Maydell <peter.mayd...@linaro.org> wrote: > > On Mon, 14 Oct 2024 at 12:45, Peter Maydell <peter.mayd...@linaro.org> wrote: > > > > On Mon, 14 Oct 2024 at 12:01, Paolo Bonzini <pbonz...@redhat.com> wrote: > > > > > > If the defaults for --enable-rust ($rust in configure) and Meson's rust > > > option are out of sync, incremental builds will pick Meson's default. > > > > > > This happens because, on an incremental build, configure does not run > > > Meson, Make does instead. Meson then gets the command line options > > > from either coredata.dat (which has everything cached in Python's pickle > > > format) or cmd_line.txt (slow path when Meson version is upgraded), but > > > neither knows about the rust option, and the meson_options.txt default > > > is used. > > > > > > This will cause have_rust to be true if rustc is available; and the build > > > to fail because configure did not put a RUST_TARGET_TRIPLE in > > > config-host.mak. > > > > > > When in the Rust pull request I changed the $rust default from auto > > > to disabled, I should have made the same change to meson_options.txt; > > > do it now. > > > > > > Cc: Manos Pitsidianakis <manos.pitsidiana...@linaro.org> > > > Reported-by: Peter Maydell <peter.mayd...@linaro.org> > > > Reported-by: Daniel P. Berrangé <berra...@redhat.com> > > > Signed-off-by: Paolo Bonzini <pbonz...@redhat.com> > > > > This fixes the issue I was seeing with my local > > incremental rebuild. > > > > Tested-by: Peter Maydell <peter.mayd...@linaro.org> > > ...but this change broke 'make vm-build-openbsd', because > meson-buildoptions.py fell over with an error from the JSON > decoder: > > make: Entering directory '/home/peter.maydell/qemu-openbsd/build' > /home/peter.maydell/qemu-openbsd/build/pyvenv/bin/meson introspect > --buildoptions /home/peter.maydell/qemu-openbsd/meson.build | > /home/peter.maydell/qemu-openbsd/build/pyvenv/bin/python3 -B \ > scripts/meson-buildoptions.py > > /home/peter.maydell/qemu-openbsd/scripts/meson-buildoptions.sh.tmp && > mv /home/peter.maydell/qemu-openbsd/scripts/meson-buildoptions.sh.tmp > /home/peter.maydell/qemu-openbsd/scripts/meson-buildoptions.sh > Trying to enter hw/core which has already been visited --> Skipping > Unable to evaluate subdir([]) in AstInterpreter --> Skipping > Traceback (most recent call last): > File "/home/peter.maydell/qemu-openbsd/build/scripts/meson-buildoptions.py", > line 245, in <module> > options = load_options(json.load(sys.stdin)) > File "/usr/lib/python3.10/json/__init__.py", line 293, in load > return loads(fp.read(), > File "/usr/lib/python3.10/json/__init__.py", line 346, in loads > return _default_decoder.decode(s) > File "/usr/lib/python3.10/json/decoder.py", line 337, in decode > obj, end = self.raw_decode(s, idx=_w(s, 0).end()) > File "/usr/lib/python3.10/json/decoder.py", line 355, in raw_decode > raise JSONDecodeError("Expecting value", s, err.value) from None > json.decoder.JSONDecodeError: Expecting value: line 2 column 1 (char 1) > make: *** No rule to make target > '/home/peter.maydell/qemu-openbsd/scripts/meson-buildoptions.sh', > needed by 'config-host.mak'. Stop. > make: Leaving directory '/home/peter.maydell/qemu-openbsd/build'
Trying to debug this I tried running 'meson introspect --buildoptions' by hand on that machine, which falls over like this: ~/qemu-openbsd/build$ ./pyvenv/bin/meson introspect --buildoptions ../meson.build Trying to enter hw/core which has already been visited --> Skipping Unable to evaluate subdir([]) in AstInterpreter --> Skipping ../rust/qemu-api-macros/meson.build:1:0: ERROR: Unknown compiler(s): [['rustc']] The following exception(s) were encountered: Running `rustc --version` gave "[Errno 2] No such file or directory: 'rustc'" -- PMM