On Mon, 14 Oct 2024 at 15:36, Paolo Bonzini <pbonz...@redhat.com> wrote:
>
> A working native Rust compiler is always needed in order to compile Rust
> code, even when cross compiling, in order to build the procedural macros
> that QEMU uses.
>
> Right now, the check is done in rust/qemu-api-macros/meson.build, but this
> has two disadvantages.  First, it makes the build fail when the Meson "rust"
> option is set to "auto" (instead, Rust support should be disabled).  Second,
> add_languages() is one of the few functions that are executed even by
> "meson introspect", except that "meson introspect" executes both branches
> of "if" statements!  Therefore, "meson introspect" tries to look for a
> Rust compiler even if the option is disabled---and then fails because
> the compiler is required by rust/qemu-api-macros/meson.build.  This is
> visible for example if the compilation host has a stale
> scripts/meson-buildoptions.sh and no rustc installed.
>
> Both issues can be fixed by moving the check to the main meson.build,
> together with the check for the cross compiler.
>
> Reported-by: Peter Maydell <peter.mayd...@linaro.org>
> ---
>  meson.build                      | 3 ++-
>  rust/qemu-api-macros/meson.build | 2 --
>  2 files changed, 2 insertions(+), 3 deletions(-)

Missing Signed-off-by: line ?


>
> diff --git a/meson.build b/meson.build
> index aecc381932d..c85f964bed4 100644
> --- a/meson.build
> +++ b/meson.build
> @@ -71,7 +71,8 @@ if host_os == 'darwin' and \
>    objc = meson.get_compiler('objc')
>  endif
>  have_rust = false
> -if not get_option('rust').disabled() and add_languages('rust', required: 
> get_option('rust'), native: false)
> +if not get_option('rust').disabled() and add_languages('rust', required: 
> get_option('rust'), native: false) \
> +    and add_languages('rust', required: get_option('rust'), native: true)
>    rustc = meson.get_compiler('rust')
>    have_rust = true
>    if rustc.version().version_compare('<1.80.0')
> diff --git a/rust/qemu-api-macros/meson.build 
> b/rust/qemu-api-macros/meson.build
> index 48af91ed389..517b9a4d2d5 100644
> --- a/rust/qemu-api-macros/meson.build
> +++ b/rust/qemu-api-macros/meson.build
> @@ -1,5 +1,3 @@
> -add_languages('rust', required: true, native: true)
> -
>  quote_dep = dependency('quote-1-rs', native: true)
>  syn_dep = dependency('syn-2-rs', native: true)
>  proc_macro2_dep = dependency('proc-macro2-1-rs', native: true)
> --
> 2.46.


thanks
-- PMM

Reply via email to