From: Paolo Bonzini <[email protected]>

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.

Cc: Daniel P. BerrangĂ© <[email protected]>
Cc: Peter Maydell <[email protected]>
Signed-off-by: Paolo Bonzini <[email protected]>
(cherry picked from commit 6257754bb9b00b52018951096a9fba28b98a5b0d)
Signed-off-by: Michael Tokarev <[email protected]>

diff --git a/docs/about/build-platforms.rst b/docs/about/build-platforms.rst
index 52521552c8..42787ac0b6 100644
--- a/docs/about/build-platforms.rst
+++ b/docs/about/build-platforms.rst
@@ -116,7 +116,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``.
 
   Developers may want to use Cargo-based tools in the QEMU source tree;
   this requires Cargo 1.74.0.  Note that Cargo is not required in order
diff --git a/meson.build b/meson.build
index 8ec796d835..327c1e19f8 100644
--- a/meson.build
+++ b/meson.build
@@ -109,7 +109,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 fe4a6ed48d..cf16205ebf 100644
--- a/tests/docker/dockerfiles/fedora-rust-nightly.docker
+++ b/tests/docker/dockerfiles/fedora-rust-nightly.docker
@@ -172,7 +172,7 @@ RUN set -eux && \
   test "$CARGO" = "$(/usr/local/cargo/bin/rustup +nightly which cargo)" && \
   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 88ce4ef9a9..ace5a4b1ef 100644
--- a/tests/docker/dockerfiles/ubuntu2204.docker
+++ b/tests/docker/dockerfiles/ubuntu2204.docker
@@ -154,7 +154,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 aa551aca9b..7f36a09450 100755
--- a/tests/lcitool/refresh
+++ b/tests/lcitool/refresh
@@ -137,7 +137,7 @@ fedora_rustup_nightly_extras = [
     '  test "$CARGO" = "$(/usr/local/cargo/bin/rustup +nightly which cargo)" 
&& \\\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',
 ]
 
@@ -146,7 +146,7 @@ ubuntu2204_bindgen_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',
 ]
 
 def cross_build(prefix, targets):
-- 
2.47.3


Reply via email to