Hi Paolo,

On Wed, Mar 18, 2026 at 11:28 AM Paolo Bonzini <[email protected]> wrote:
>
> On 3/18/26 09:51, Manos Pitsidianakis wrote:
> >> +      error('bindgen version ' + bindgen.version() + ' is unsupported. 
> >> You can install a new version with "cargo install --locked bindgen-cli"')
> >
> > Am I missing something or is bindgen not in Cargo.lock? Also doesn't
> > this depend on `cargo-install` being invoked in the same path as
> > Cargo.lock, i.e. `rust/` subdir? (Not sure about this)
>
> Because the bindgen step is done in Meson it uses a bindgen binary that
> is preinstalled in $PATH; it doesn't build bindgen-cli the way you'd see
> it happen when done with build.rs(*).  Usually it can use the distro
> package, but as you can see from the tests/lcitool/ part of the patch
> it's too old for Ubuntu 22.04.
>
> The "cargo install bindgen-cli" command does not use QEMU's Cargo.lock,

So what does `--locked` do here? As per `--help`: "--locked Assert
that `Cargo.lock` will remain unchanged" What Cargo.lock does it not
change?

> it downloads bindgen-cli as a standalone package from crates.io and
> builds it.  It works even if invoked from `rust/`, that is QEMU's
> Cargo.lock does not interact with "cargo install".
>
>         (*) which I hate.  It's 67 crates and takes 5 minutes of CPU
>             time (1 minute wallclock).  Why did no one write a
>             simplified implementation of the same bindgen::Builder
>             struct, that calls out to a preinstalled bindgen binary?
>             But I digress.
>
>
> > I'd do `cargo install --version 0.60.0 bindgen-cli` instead
>
> Picking a specific version of bindgen-cli can be a good idea for the
> Ubuntu 22.04 container, but it does not fix the problem with the lack of
> --locked.  The breakage happened due to a new release of clap_lex, not
> bindgen.
>
> Paolo
>

Reply via email to