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

Reply via email to