Hi Paolo On Tue, May 6, 2025 at 7:30 PM Paolo Bonzini <pbonz...@redhat.com> wrote: > > On Debian, the rustc-web package provides a newer Rust compiler (1.78) > for all architectures except mips64el.
Unfortunately, rustc-web is not compatible with the cross/multiarch packages (it will remove all libstd-rust-dev:*). Should we switch to rustup in the meantime for debian cross-compilation testing? > > On Ubuntu, Rust versions up to 1.80 (?) are available as of this writing > for both Jammy (22.04) and Noble (24.04). However, the path to rustc > and rustdoc must be provided by hand to the configure script using > either command line arguments or environment variables. > > Signed-off-by: Paolo Bonzini <pbonz...@redhat.com> > --- > docs/about/build-platforms.rst | 11 ++++++++--- > scripts/ci/setup/ubuntu/ubuntu-2204-aarch64.yaml | 2 +- > scripts/ci/setup/ubuntu/ubuntu-2204-s390x.yaml | 2 +- > tests/docker/dockerfiles/debian-amd64-cross.docker | 2 +- > tests/docker/dockerfiles/debian-arm64-cross.docker | 2 +- > tests/docker/dockerfiles/debian-armhf-cross.docker | 2 +- > tests/docker/dockerfiles/debian-i686-cross.docker | 2 +- > tests/docker/dockerfiles/debian-mips64el-cross.docker | 2 +- > tests/docker/dockerfiles/debian-mipsel-cross.docker | 2 +- > tests/docker/dockerfiles/debian-ppc64el-cross.docker | 2 +- > tests/docker/dockerfiles/debian-s390x-cross.docker | 2 +- > tests/docker/dockerfiles/debian.docker | 2 +- > tests/docker/dockerfiles/ubuntu2204.docker | 3 ++- > tests/lcitool/mappings.yml | 5 +++++ > tests/lcitool/refresh | 5 +++-- > 15 files changed, 29 insertions(+), 17 deletions(-) > > diff --git a/docs/about/build-platforms.rst b/docs/about/build-platforms.rst > index c3651871d20..8ecbd6b26f7 100644 > --- a/docs/about/build-platforms.rst > +++ b/docs/about/build-platforms.rst > @@ -118,9 +118,14 @@ Rust build dependencies > include bindgen or have an older version, it is recommended to install > a newer version using ``cargo install 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 > - to build QEMU. > + QEMU requires Rust 1.77.0. This is available on all supported platforms > + with one exception, namely the ``mips64el`` architecture on Debian > bookworm. > + For all other architectures, Debian bookworm provides a new-enough Rust > + compiler in the ``rustc-web`` package. > + > + Also, on Ubuntu 22.04 or 24.04 this requires the ``rustc-1.77`` > + (or newer) package. The path to ``rustc`` and ``rustdoc`` must be > + provided manually to the configure script. > > Optional build dependencies > Build components whose absence does not affect the ability to build QEMU > diff --git a/scripts/ci/setup/ubuntu/ubuntu-2204-aarch64.yaml > b/scripts/ci/setup/ubuntu/ubuntu-2204-aarch64.yaml > index dbcd2e076de..f11e9808267 100644 > --- a/scripts/ci/setup/ubuntu/ubuntu-2204-aarch64.yaml > +++ b/scripts/ci/setup/ubuntu/ubuntu-2204-aarch64.yaml > @@ -114,7 +114,7 @@ packages: > - python3-venv > - python3-yaml > - rpm2cpio > - - rustc > + - rustc-1.77 > - sed > - socat > - sparse > diff --git a/scripts/ci/setup/ubuntu/ubuntu-2204-s390x.yaml > b/scripts/ci/setup/ubuntu/ubuntu-2204-s390x.yaml > index 4b8ee3d885d..6559cb29343 100644 > --- a/scripts/ci/setup/ubuntu/ubuntu-2204-s390x.yaml > +++ b/scripts/ci/setup/ubuntu/ubuntu-2204-s390x.yaml > @@ -112,7 +112,7 @@ packages: > - python3-venv > - python3-yaml > - rpm2cpio > - - rustc > + - rustc-1.77 > - sed > - socat > - sparse > diff --git a/tests/docker/dockerfiles/debian-amd64-cross.docker > b/tests/docker/dockerfiles/debian-amd64-cross.docker > index 05355854285..081f3e00f7b 100644 > --- a/tests/docker/dockerfiles/debian-amd64-cross.docker > +++ b/tests/docker/dockerfiles/debian-amd64-cross.docker > @@ -50,7 +50,7 @@ RUN export DEBIAN_FRONTEND=noninteractive && \ > python3-venv \ > python3-yaml \ > rpm2cpio \ > - rustc \ > + rustc-web \ > sed \ > socat \ > sparse \ > diff --git a/tests/docker/dockerfiles/debian-arm64-cross.docker > b/tests/docker/dockerfiles/debian-arm64-cross.docker > index 6b1e4fc8279..91c555a36e9 100644 > --- a/tests/docker/dockerfiles/debian-arm64-cross.docker > +++ b/tests/docker/dockerfiles/debian-arm64-cross.docker > @@ -50,7 +50,7 @@ RUN export DEBIAN_FRONTEND=noninteractive && \ > python3-venv \ > python3-yaml \ > rpm2cpio \ > - rustc \ > + rustc-web \ > sed \ > socat \ > sparse \ > diff --git a/tests/docker/dockerfiles/debian-armhf-cross.docker > b/tests/docker/dockerfiles/debian-armhf-cross.docker > index cf0fe63af91..f0e2efcda09 100644 > --- a/tests/docker/dockerfiles/debian-armhf-cross.docker > +++ b/tests/docker/dockerfiles/debian-armhf-cross.docker > @@ -50,7 +50,7 @@ RUN export DEBIAN_FRONTEND=noninteractive && \ > python3-venv \ > python3-yaml \ > rpm2cpio \ > - rustc \ > + rustc-web \ > sed \ > socat \ > sparse \ > diff --git a/tests/docker/dockerfiles/debian-i686-cross.docker > b/tests/docker/dockerfiles/debian-i686-cross.docker > index 1c84dfb9456..025beb1ce25 100644 > --- a/tests/docker/dockerfiles/debian-i686-cross.docker > +++ b/tests/docker/dockerfiles/debian-i686-cross.docker > @@ -50,7 +50,7 @@ RUN export DEBIAN_FRONTEND=noninteractive && \ > python3-venv \ > python3-yaml \ > rpm2cpio \ > - rustc \ > + rustc-web \ > sed \ > socat \ > sparse \ > diff --git a/tests/docker/dockerfiles/debian-mips64el-cross.docker > b/tests/docker/dockerfiles/debian-mips64el-cross.docker > index 257204eae48..4a941dd870e 100644 > --- a/tests/docker/dockerfiles/debian-mips64el-cross.docker > +++ b/tests/docker/dockerfiles/debian-mips64el-cross.docker > @@ -50,7 +50,7 @@ RUN export DEBIAN_FRONTEND=noninteractive && \ > python3-venv \ > python3-yaml \ > rpm2cpio \ > - rustc \ > + rustc-web \ > sed \ > socat \ > sparse \ > diff --git a/tests/docker/dockerfiles/debian-mipsel-cross.docker > b/tests/docker/dockerfiles/debian-mipsel-cross.docker > index 395c84d65bc..4d3e5d711bd 100644 > --- a/tests/docker/dockerfiles/debian-mipsel-cross.docker > +++ b/tests/docker/dockerfiles/debian-mipsel-cross.docker > @@ -50,7 +50,7 @@ RUN export DEBIAN_FRONTEND=noninteractive && \ > python3-venv \ > python3-yaml \ > rpm2cpio \ > - rustc \ > + rustc-web \ > sed \ > socat \ > sparse \ > diff --git a/tests/docker/dockerfiles/debian-ppc64el-cross.docker > b/tests/docker/dockerfiles/debian-ppc64el-cross.docker > index 1ae227ccded..22b4457ba99 100644 > --- a/tests/docker/dockerfiles/debian-ppc64el-cross.docker > +++ b/tests/docker/dockerfiles/debian-ppc64el-cross.docker > @@ -50,7 +50,7 @@ RUN export DEBIAN_FRONTEND=noninteractive && \ > python3-venv \ > python3-yaml \ > rpm2cpio \ > - rustc \ > + rustc-web \ > sed \ > socat \ > sparse \ > diff --git a/tests/docker/dockerfiles/debian-s390x-cross.docker > b/tests/docker/dockerfiles/debian-s390x-cross.docker > index afa81a57ba8..13ec52c8ad0 100644 > --- a/tests/docker/dockerfiles/debian-s390x-cross.docker > +++ b/tests/docker/dockerfiles/debian-s390x-cross.docker > @@ -50,7 +50,7 @@ RUN export DEBIAN_FRONTEND=noninteractive && \ > python3-venv \ > python3-yaml \ > rpm2cpio \ > - rustc \ > + rustc-web \ > sed \ > socat \ > sparse \ > diff --git a/tests/docker/dockerfiles/debian.docker > b/tests/docker/dockerfiles/debian.docker > index 5b3bac43ccb..0a57c1a1d37 100644 > --- a/tests/docker/dockerfiles/debian.docker > +++ b/tests/docker/dockerfiles/debian.docker > @@ -122,7 +122,7 @@ RUN export DEBIAN_FRONTEND=noninteractive && \ > python3-venv \ > python3-yaml \ > rpm2cpio \ > - rustc \ > + rustc-web \ > sed \ > socat \ > sparse \ > diff --git a/tests/docker/dockerfiles/ubuntu2204.docker > b/tests/docker/dockerfiles/ubuntu2204.docker > index 88ce4ef9a9d..4a1cf2bdff3 100644 > --- a/tests/docker/dockerfiles/ubuntu2204.docker > +++ b/tests/docker/dockerfiles/ubuntu2204.docker > @@ -121,7 +121,7 @@ RUN export DEBIAN_FRONTEND=noninteractive && \ > python3-venv \ > python3-yaml \ > rpm2cpio \ > - rustc \ > + rustc-1.77 \ > sed \ > socat \ > sparse \ > @@ -150,6 +150,7 @@ ENV LANG "en_US.UTF-8" > ENV MAKE "/usr/bin/make" > ENV NINJA "/usr/bin/ninja" > ENV PYTHON "/usr/bin/python3" > +ENV RUSTC=/usr/bin/rustc-1.77 > ENV CARGO_HOME=/usr/local/cargo > ENV PATH=$CARGO_HOME/bin:$PATH > RUN DEBIAN_FRONTEND=noninteractive eatmydata \ > diff --git a/tests/lcitool/mappings.yml b/tests/lcitool/mappings.yml > index 74eb13d62b6..673baf39367 100644 > --- a/tests/lcitool/mappings.yml > +++ b/tests/lcitool/mappings.yml > @@ -64,6 +64,11 @@ mappings: > python3-wheel: > OpenSUSELeap15: python311-pip > > + rust: > + Debian12: rustc-web > + Ubuntu2204: rustc-1.77 > + Ubuntu2404: rustc-1.77 > + > pypi_mappings: > # Request more recent version > meson: > diff --git a/tests/lcitool/refresh b/tests/lcitool/refresh > index aa551aca9be..8474ea822f4 100755 > --- a/tests/lcitool/refresh > +++ b/tests/lcitool/refresh > @@ -141,7 +141,8 @@ fedora_rustup_nightly_extras = [ > 'RUN $CARGO --list\n', > ] > > -ubuntu2204_bindgen_extras = [ > +ubuntu2204_rust_extras = [ > + "ENV RUSTC=/usr/bin/rustc-1.77\n", > "ENV CARGO_HOME=/usr/local/cargo\n", > 'ENV PATH=$CARGO_HOME/bin:$PATH\n', > "RUN DEBIAN_FRONTEND=noninteractive eatmydata \\\n", > @@ -170,7 +171,7 @@ try: > generate_dockerfile("fedora", "fedora-40") > generate_dockerfile("opensuse-leap", "opensuse-leap-15") > generate_dockerfile("ubuntu2204", "ubuntu-2204", > - trailer="".join(ubuntu2204_bindgen_extras)) > + trailer="".join(ubuntu2204_rust_extras)) > > # > # Non-fatal Rust-enabled build > -- > 2.49.0 > > -- Marc-André Lureau