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

Reply via email to