Browse Source

lcitool: use newer Rust for Debian and Ubuntu

On Debian, the rustc-web package provides a newer Rust compiler (1.78)
for all architectures except mips64el.

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 <pbonzini@redhat.com>
pull/291/head
Paolo Bonzini 11 months ago
parent
commit
641f1c5386
  1. 11
      docs/about/build-platforms.rst
  2. 2
      scripts/ci/setup/ubuntu/ubuntu-2204-aarch64.yaml
  3. 2
      scripts/ci/setup/ubuntu/ubuntu-2204-s390x.yaml
  4. 2
      tests/docker/dockerfiles/debian-amd64-cross.docker
  5. 2
      tests/docker/dockerfiles/debian-arm64-cross.docker
  6. 2
      tests/docker/dockerfiles/debian-armhf-cross.docker
  7. 2
      tests/docker/dockerfiles/debian-i686-cross.docker
  8. 2
      tests/docker/dockerfiles/debian-mips64el-cross.docker
  9. 2
      tests/docker/dockerfiles/debian-mipsel-cross.docker
  10. 2
      tests/docker/dockerfiles/debian-ppc64el-cross.docker
  11. 2
      tests/docker/dockerfiles/debian-s390x-cross.docker
  12. 2
      tests/docker/dockerfiles/debian.docker
  13. 3
      tests/docker/dockerfiles/ubuntu2204.docker
  14. 5
      tests/lcitool/mappings.yml
  15. 5
      tests/lcitool/refresh

11
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

2
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

2
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

2
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 \

2
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 \

2
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 \

2
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 \

2
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 \

2
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 \

2
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 \

2
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 \

2
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 \

3
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 \

5
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:

5
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

Loading…
Cancel
Save