On Wed, Mar 18, 2026 at 09:21:13AM +0100, Paolo Bonzini wrote: > Without the option, cargo will try using the latest version of the > dependencies of bindgen-cli. While it will obviously respect the > constraints in Cargo.toml, old versions of Cargo do not have > version-constrained resolution and will choke on dependencies > that need Rust 2024.
Ah ha, the "--do-what-I-thought-should-be-the-default" option :-) > > Cc: Daniel P. Berrangé <[email protected]> > Cc: Peter Maydell <[email protected]> > Signed-off-by: Paolo Bonzini <[email protected]> > --- > docs/about/build-platforms.rst | 2 +- > meson.build | 2 +- > tests/docker/dockerfiles/fedora-rust-nightly.docker | 2 +- > tests/docker/dockerfiles/ubuntu2204.docker | 2 +- > tests/lcitool/refresh | 4 ++-- > 5 files changed, 6 insertions(+), 6 deletions(-) Reviewed-by: Daniel P. Berrangé <[email protected]> > > diff --git a/docs/about/build-platforms.rst b/docs/about/build-platforms.rst > index 6e3088d524a..3d23dfbd779 100644 > --- a/docs/about/build-platforms.rst > +++ b/docs/about/build-platforms.rst > @@ -114,7 +114,7 @@ Rust build dependencies > bindgen tool, which is too big to package and distribute. The minimum > supported version of bindgen is 0.60.x. For distributions that do not > include bindgen or have an older version, it is recommended to install > - a newer version using ``cargo install bindgen-cli``. > + a newer version using ``cargo install --locked bindgen-cli``. > > QEMU requires Rust 1.83.0. This is available on all supported platforms > except for the ``mips64el`` architecture on Debian bookworm. For all other > diff --git a/meson.build b/meson.build > index d016482db1b..62fab727f4e 100644 > --- a/meson.build > +++ b/meson.build > @@ -114,7 +114,7 @@ if have_rust > bindgen = find_program('bindgen', required: get_option('rust')) > if not bindgen.found() or bindgen.version().version_compare('<0.60.0') > if get_option('rust').enabled() > - error('bindgen version ' + bindgen.version() + ' is unsupported. You > can install a new version with "cargo install bindgen-cli"') > + error('bindgen version ' + bindgen.version() + ' is unsupported. You > can install a new version with "cargo install --locked bindgen-cli"') > else > if bindgen.found() > warning('bindgen version ' + bindgen.version() + ' is unsupported, > disabling Rust compilation.') > diff --git a/tests/docker/dockerfiles/fedora-rust-nightly.docker > b/tests/docker/dockerfiles/fedora-rust-nightly.docker > index 043b42a0a9b..38381ef8f59 100644 > --- a/tests/docker/dockerfiles/fedora-rust-nightly.docker > +++ b/tests/docker/dockerfiles/fedora-rust-nightly.docker > @@ -179,7 +179,7 @@ RUN set -eux && \ > test "$RUSTDOC" = "$(/usr/local/cargo/bin/rustup +nightly which rustdoc)" > && \ > test "$RUSTC" = "$(/usr/local/cargo/bin/rustup +nightly which rustc)" > ENV PATH=$CARGO_HOME/bin:$PATH > -RUN /usr/local/cargo/bin/rustup run nightly cargo install bindgen-cli > +RUN /usr/local/cargo/bin/rustup run nightly cargo install --locked > bindgen-cli > RUN $CARGO --list > # As a final step configure the user (if env is defined) > ARG USER > diff --git a/tests/docker/dockerfiles/ubuntu2204.docker > b/tests/docker/dockerfiles/ubuntu2204.docker > index 23b33d6ad44..44e763f571a 100644 > --- a/tests/docker/dockerfiles/ubuntu2204.docker > +++ b/tests/docker/dockerfiles/ubuntu2204.docker > @@ -162,7 +162,7 @@ ENV CARGO_HOME=/usr/local/cargo > ENV PATH=$CARGO_HOME/bin:$PATH > RUN DEBIAN_FRONTEND=noninteractive eatmydata \ > apt install -y --no-install-recommends cargo > -RUN cargo install bindgen-cli > +RUN cargo install --locked bindgen-cli > # As a final step configure the user (if env is defined) > ARG USER > ARG UID > diff --git a/tests/lcitool/refresh b/tests/lcitool/refresh > index 259e6ea0729..79a280feab4 100755 > --- a/tests/lcitool/refresh > +++ b/tests/lcitool/refresh > @@ -147,7 +147,7 @@ fedora_rustup_nightly_extras = [ > ' test "$RUSTDOC" = "$(/usr/local/cargo/bin/rustup +nightly which > rustdoc)" && \\\n', > ' test "$RUSTC" = "$(/usr/local/cargo/bin/rustup +nightly which > rustc)"\n', > 'ENV PATH=$CARGO_HOME/bin:$PATH\n', > - 'RUN /usr/local/cargo/bin/rustup run nightly cargo install > bindgen-cli\n', > + 'RUN /usr/local/cargo/bin/rustup run nightly cargo install --locked > bindgen-cli\n', > 'RUN $CARGO --list\n', > ] > > @@ -158,7 +158,7 @@ ubuntu2204_rust_extras = [ > 'ENV PATH=$CARGO_HOME/bin:$PATH\n', > "RUN DEBIAN_FRONTEND=noninteractive eatmydata \\\n", > " apt install -y --no-install-recommends cargo\n", > - 'RUN cargo install bindgen-cli\n', > + 'RUN cargo install --locked bindgen-cli\n', > ] > > debian_all_test_cross_compilers = [ > -- > 2.53.0 > With regards, Daniel -- |: https://berrange.com ~~ https://hachyderm.io/@berrange :| |: https://libvirt.org ~~ https://entangle-photo.org :| |: https://pixelfed.art/berrange ~~ https://fstop138.berrange.com :|
