* [PATCH 0/2] dockerfiles, gitlab-ci: add CI job using nightly Rust
@ 2024-10-07 17:17 Paolo Bonzini
2024-10-07 17:17 ` [PATCH 1/2] dockerfiles: add a Dockerfile using a nightly Rust toolchain Paolo Bonzini
` (2 more replies)
0 siblings, 3 replies; 13+ messages in thread
From: Paolo Bonzini @ 2024-10-07 17:17 UTC (permalink / raw)
To: qemu-devel; +Cc: Daniel P. Berrangé, Manos Pitsidianakis, Alex Bennée
Right now only Fedora 39 and 40 (with updates) are able to compile
QEMU with Rust enabled. Full CI enablement requires further work to
reduce the minimum supported version of the compiler, and is not a
requirement until Rust is turned on by default.
Since a CI job based on nightly Rust will be needed later on, to
integrate clippy and have a heads-up on future clippy warnings,
adjust QEMU's 'refresh' script to customize a Fedora 40 dockerfile
with trailing text that installs nightly Rust and compiles the
latest bindgen. A matching CI job, using --enable-rust, ensures
that the toolchain is installed correctly by the Dockerfile and
that QEMU builds with Rust enabled on at least one platform.
Suggested-by: Daniel P. Berrangé <berrange@redhat.com>
Cc: Manos Pitsidianakis <manos.pitsidianakis@linaro.org>
Cc: Alex Bennée <alex.bennee@linaro.org>
Based-on: <cover.1727961605.git.manos.pitsidianakis@linaro.org>
Paolo Bonzini (2):
dockerfiles: add a Dockerfile using a nightly Rust toolchain
gitlab-ci: add Rust-enabled CI job
.gitlab-ci.d/buildtest.yml | 13 ++
.gitlab-ci.d/containers.yml | 6 +
.../dockerfiles/fedora-rust-nightly.docker | 173 ++++++++++++++++++
tests/lcitool/refresh | 26 +++
4 files changed, 218 insertions(+)
create mode 100644 tests/docker/dockerfiles/fedora-rust-nightly.docker
--
2.46.1
^ permalink raw reply [flat|nested] 13+ messages in thread
* [PATCH 1/2] dockerfiles: add a Dockerfile using a nightly Rust toolchain
2024-10-07 17:17 [PATCH 0/2] dockerfiles, gitlab-ci: add CI job using nightly Rust Paolo Bonzini
@ 2024-10-07 17:17 ` Paolo Bonzini
2024-10-07 18:12 ` Daniel P. Berrangé
2024-10-07 17:17 ` [PATCH 2/2] gitlab-ci: add Rust-enabled CI job Paolo Bonzini
2024-10-07 18:18 ` [PATCH 0/2] dockerfiles, gitlab-ci: add CI job using nightly Rust Daniel P. Berrangé
2 siblings, 1 reply; 13+ messages in thread
From: Paolo Bonzini @ 2024-10-07 17:17 UTC (permalink / raw)
To: qemu-devel; +Cc: Daniel P. Berrangé, Manos Pitsidianakis, Alex Bennée
This will be useful in order to test QEMU's Rust code with nightly
clippy. It can also be used to check that the code builds, until the
minimum supported Rust version is lowered enough to allow enabling Rust
in other Dockerfiles too.
Use a separate container, instead of the Fedora one, to avoid that
CI breaks for everyone if for some reason the rustup build turns out
to be shaky.
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
---
.../dockerfiles/fedora-rust-nightly.docker | 173 ++++++++++++++++++
tests/lcitool/refresh | 26 +++
2 files changed, 199 insertions(+)
create mode 100644 tests/docker/dockerfiles/fedora-rust-nightly.docker
diff --git a/tests/docker/dockerfiles/fedora-rust-nightly.docker b/tests/docker/dockerfiles/fedora-rust-nightly.docker
new file mode 100644
index 00000000000..e642db163c7
--- /dev/null
+++ b/tests/docker/dockerfiles/fedora-rust-nightly.docker
@@ -0,0 +1,173 @@
+# THIS FILE WAS AUTO-GENERATED
+#
+# $ lcitool dockerfile --layers all fedora-40 qemu
+#
+# https://gitlab.com/libvirt/libvirt-ci
+
+FROM registry.fedoraproject.org/fedora:40
+
+RUN dnf install -y nosync && \
+ printf '#!/bin/sh\n\
+if test -d /usr/lib64\n\
+then\n\
+ export LD_PRELOAD=/usr/lib64/nosync/nosync.so\n\
+else\n\
+ export LD_PRELOAD=/usr/lib/nosync/nosync.so\n\
+fi\n\
+exec "$@"\n' > /usr/bin/nosync && \
+ chmod +x /usr/bin/nosync && \
+ nosync dnf update -y && \
+ nosync dnf install -y \
+ SDL2-devel \
+ SDL2_image-devel \
+ alsa-lib-devel \
+ bash \
+ bc \
+ bison \
+ brlapi-devel \
+ bzip2 \
+ bzip2-devel \
+ ca-certificates \
+ capstone-devel \
+ ccache \
+ clang \
+ ctags \
+ cyrus-sasl-devel \
+ daxctl-devel \
+ dbus-daemon \
+ device-mapper-multipath-devel \
+ diffutils \
+ findutils \
+ flex \
+ fuse3-devel \
+ gcc \
+ gcovr \
+ gettext \
+ git \
+ glib2-devel \
+ glib2-static \
+ glibc-langpack-en \
+ glibc-static \
+ glusterfs-api-devel \
+ gnutls-devel \
+ gtk-vnc2-devel \
+ gtk3-devel \
+ hostname \
+ jemalloc-devel \
+ json-c-devel \
+ libaio-devel \
+ libasan \
+ libattr-devel \
+ libbpf-devel \
+ libcacard-devel \
+ libcap-ng-devel \
+ libcmocka-devel \
+ libcurl-devel \
+ libdrm-devel \
+ libepoxy-devel \
+ libfdt-devel \
+ libffi-devel \
+ libgcrypt-devel \
+ libiscsi-devel \
+ libjpeg-devel \
+ libnfs-devel \
+ libpmem-devel \
+ libpng-devel \
+ librbd-devel \
+ libseccomp-devel \
+ libselinux-devel \
+ libslirp-devel \
+ libssh-devel \
+ libtasn1-devel \
+ libubsan \
+ liburing-devel \
+ libusbx-devel \
+ libxdp-devel \
+ libzstd-devel \
+ llvm \
+ lttng-ust-devel \
+ lzo-devel \
+ make \
+ mesa-libgbm-devel \
+ meson \
+ mtools \
+ ncurses-devel \
+ nettle-devel \
+ ninja-build \
+ nmap-ncat \
+ numactl-devel \
+ openssh-clients \
+ pam-devel \
+ pcre-static \
+ pipewire-devel \
+ pixman-devel \
+ pkgconfig \
+ pulseaudio-libs-devel \
+ python3 \
+ python3-PyYAML \
+ python3-numpy \
+ python3-opencv \
+ python3-pillow \
+ python3-pip \
+ python3-sphinx \
+ python3-sphinx_rtd_theme \
+ python3-zombie-imp \
+ rdma-core-devel \
+ sed \
+ snappy-devel \
+ socat \
+ sparse \
+ spice-protocol \
+ spice-server-devel \
+ swtpm \
+ systemd-devel \
+ systemtap-sdt-devel \
+ tar \
+ tesseract \
+ tesseract-langpack-eng \
+ usbredir-devel \
+ util-linux \
+ virglrenderer-devel \
+ vte291-devel \
+ which \
+ xen-devel \
+ xorriso \
+ zlib-devel \
+ zlib-static \
+ zstd && \
+ nosync dnf autoremove -y && \
+ nosync dnf clean all -y && \
+ rm -f /usr/lib*/python3*/EXTERNALLY-MANAGED && \
+ rpm -qa | sort > /packages.txt && \
+ mkdir -p /usr/libexec/ccache-wrappers && \
+ ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/cc && \
+ ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/clang && \
+ ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/gcc
+
+ENV CCACHE_WRAPPERSDIR "/usr/libexec/ccache-wrappers"
+ENV LANG "en_US.UTF-8"
+ENV MAKE "/usr/bin/make"
+ENV NINJA "/usr/bin/ninja"
+ENV PYTHON "/usr/bin/python3"
+RUN dnf install -y wget
+ENV RUSTUP_HOME=/usr/local/rustup CARGO_HOME=/usr/local/cargo
+ENV RUSTC=/usr/local/rustup/toolchains/nightly-x86_64-unknown-linux-gnu/bin/rustc
+RUN set -eux && \
+ rustArch='x86_64-unknown-linux-gnu' && \
+ rustupSha256='6aeece6993e902708983b209d04c0d1dbb14ebb405ddb87def578d41f920f56d' && \
+ url="https://static.rust-lang.org/rustup/archive/1.27.1/${rustArch}/rustup-init" && \
+ wget "$url" && \
+ echo "${rustupSha256} *rustup-init" | sha256sum -c - && \
+ chmod +x rustup-init && \
+ ./rustup-init -y --no-modify-path --profile default --default-toolchain nightly --default-host ${rustArch} && \
+ chmod -R a+w $RUSTUP_HOME $CARGO_HOME && \
+ /usr/local/cargo/bin/rustup --version && \
+ /usr/local/cargo/bin/rustup run nightly rustc --version && \
+ 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
+# As a final step configure the user (if env is defined)
+ARG USER
+ARG UID
+RUN if [ "${USER}" ]; then \
+ id ${USER} 2>/dev/null || useradd -u ${UID} -U ${USER}; fi
diff --git a/tests/lcitool/refresh b/tests/lcitool/refresh
index a78219f7bc5..1ae0962f04c 100755
--- a/tests/lcitool/refresh
+++ b/tests/lcitool/refresh
@@ -116,6 +116,26 @@ debian12_extras = [
"ENV QEMU_CONFIGURE_OPTS --enable-netmap\n"
]
+# Based on the hub.docker.com/library/rust Dockerfiles
+fedora_rustup_nightly_extras = [
+ "RUN dnf install -y wget\n",
+ "ENV RUSTUP_HOME=/usr/local/rustup CARGO_HOME=/usr/local/cargo\n",
+ "ENV RUSTC=/usr/local/rustup/toolchains/nightly-x86_64-unknown-linux-gnu/bin/rustc\n",
+ "RUN set -eux && \\\n",
+ " rustArch='x86_64-unknown-linux-gnu' && \\\n",
+ " rustupSha256='6aeece6993e902708983b209d04c0d1dbb14ebb405ddb87def578d41f920f56d' && \\\n",
+ ' url="https://static.rust-lang.org/rustup/archive/1.27.1/${rustArch}/rustup-init" && \\\n',
+ ' wget "$url" && \\\n',
+ ' echo "${rustupSha256} *rustup-init" | sha256sum -c - && \\\n',
+ " chmod +x rustup-init && \\\n",
+ " ./rustup-init -y --no-modify-path --profile default --default-toolchain nightly --default-host ${rustArch} && \\\n",
+ " chmod -R a+w $RUSTUP_HOME $CARGO_HOME && \\\n",
+ " /usr/local/cargo/bin/rustup --version && \\\n",
+ " /usr/local/cargo/bin/rustup run nightly rustc --version && \\\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',
+]
def cross_build(prefix, targets):
conf = "ENV QEMU_CONFIGURE_OPTS --cross-prefix=%s\n" % (prefix)
@@ -139,6 +159,12 @@ try:
generate_dockerfile("opensuse-leap", "opensuse-leap-15")
generate_dockerfile("ubuntu2204", "ubuntu-2204")
+ #
+ # Non-fatal Rust-enabled build
+ #
+ generate_dockerfile("fedora-rust-nightly", "fedora-40",
+ trailer="".join(fedora_rustup_nightly_extras))
+
#
# Cross compiling builds
#
--
2.46.1
^ permalink raw reply related [flat|nested] 13+ messages in thread
* Re: [PATCH 1/2] dockerfiles: add a Dockerfile using a nightly Rust toolchain
2024-10-07 17:17 ` [PATCH 1/2] dockerfiles: add a Dockerfile using a nightly Rust toolchain Paolo Bonzini
@ 2024-10-07 18:12 ` Daniel P. Berrangé
0 siblings, 0 replies; 13+ messages in thread
From: Daniel P. Berrangé @ 2024-10-07 18:12 UTC (permalink / raw)
To: Paolo Bonzini; +Cc: qemu-devel, Manos Pitsidianakis, Alex Bennée
On Mon, Oct 07, 2024 at 07:17:12PM +0200, Paolo Bonzini wrote:
> This will be useful in order to test QEMU's Rust code with nightly
> clippy. It can also be used to check that the code builds, until the
> minimum supported Rust version is lowered enough to allow enabling Rust
> in other Dockerfiles too.
>
> Use a separate container, instead of the Fedora one, to avoid that
> CI breaks for everyone if for some reason the rustup build turns out
> to be shaky.
>
> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
> ---
> .../dockerfiles/fedora-rust-nightly.docker | 173 ++++++++++++++++++
> tests/lcitool/refresh | 26 +++
> 2 files changed, 199 insertions(+)
> create mode 100644 tests/docker/dockerfiles/fedora-rust-nightly.docker
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>
With regards,
Daniel
--
|: https://berrange.com -o- https://www.flickr.com/photos/dberrange :|
|: https://libvirt.org -o- https://fstop138.berrange.com :|
|: https://entangle-photo.org -o- https://www.instagram.com/dberrange :|
^ permalink raw reply [flat|nested] 13+ messages in thread
* [PATCH 2/2] gitlab-ci: add Rust-enabled CI job
2024-10-07 17:17 [PATCH 0/2] dockerfiles, gitlab-ci: add CI job using nightly Rust Paolo Bonzini
2024-10-07 17:17 ` [PATCH 1/2] dockerfiles: add a Dockerfile using a nightly Rust toolchain Paolo Bonzini
@ 2024-10-07 17:17 ` Paolo Bonzini
2024-10-07 18:13 ` Daniel P. Berrangé
2024-10-07 18:18 ` [PATCH 0/2] dockerfiles, gitlab-ci: add CI job using nightly Rust Daniel P. Berrangé
2 siblings, 1 reply; 13+ messages in thread
From: Paolo Bonzini @ 2024-10-07 17:17 UTC (permalink / raw)
To: qemu-devel; +Cc: Daniel P. Berrangé, Manos Pitsidianakis, Alex Bennée
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
---
.gitlab-ci.d/buildtest.yml | 13 +++++++++++++
.gitlab-ci.d/containers.yml | 6 ++++++
2 files changed, 19 insertions(+)
diff --git a/.gitlab-ci.d/buildtest.yml b/.gitlab-ci.d/buildtest.yml
index 669c980c4b4..a92e731d6af 100644
--- a/.gitlab-ci.d/buildtest.yml
+++ b/.gitlab-ci.d/buildtest.yml
@@ -120,6 +120,19 @@ build-system-fedora:
xtensa-softmmu m68k-softmmu riscv32-softmmu ppc-softmmu sparc64-softmmu
MAKE_CHECK_ARGS: check-build
+build-system-fedora-rust:
+ extends:
+ - .native_build_job_template
+ - .native_build_artifact_template
+ needs:
+ job: amd64-fedora-rust-container
+ variables:
+ IMAGE: fedora-rust-nightly
+ CONFIGURE_ARGS: --disable-gcrypt --enable-nettle --disable-docs --enable-rust
+ TARGETS: aarch64-softmmu
+ MAKE_CHECK_ARGS: check-build
+ allow_failure: true
+
check-system-fedora:
extends: .native_test_job_template
needs:
diff --git a/.gitlab-ci.d/containers.yml b/.gitlab-ci.d/containers.yml
index ae79d4c58bc..414ae5e828b 100644
--- a/.gitlab-ci.d/containers.yml
+++ b/.gitlab-ci.d/containers.yml
@@ -27,3 +27,9 @@ python-container:
extends: .container_job_template
variables:
NAME: python
+
+amd64-fedora-rust-container:
+ extends: .container_job_template
+ variables:
+ NAME: fedora-rust-nightly
+ allow_failure: true
--
2.46.1
^ permalink raw reply related [flat|nested] 13+ messages in thread
* Re: [PATCH 2/2] gitlab-ci: add Rust-enabled CI job
2024-10-07 17:17 ` [PATCH 2/2] gitlab-ci: add Rust-enabled CI job Paolo Bonzini
@ 2024-10-07 18:13 ` Daniel P. Berrangé
0 siblings, 0 replies; 13+ messages in thread
From: Daniel P. Berrangé @ 2024-10-07 18:13 UTC (permalink / raw)
To: Paolo Bonzini; +Cc: qemu-devel, Manos Pitsidianakis, Alex Bennée
On Mon, Oct 07, 2024 at 07:17:13PM +0200, Paolo Bonzini wrote:
> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
> ---
> .gitlab-ci.d/buildtest.yml | 13 +++++++++++++
> .gitlab-ci.d/containers.yml | 6 ++++++
> 2 files changed, 19 insertions(+)
>
> diff --git a/.gitlab-ci.d/buildtest.yml b/.gitlab-ci.d/buildtest.yml
> index 669c980c4b4..a92e731d6af 100644
> --- a/.gitlab-ci.d/buildtest.yml
> +++ b/.gitlab-ci.d/buildtest.yml
> @@ -120,6 +120,19 @@ build-system-fedora:
> xtensa-softmmu m68k-softmmu riscv32-softmmu ppc-softmmu sparc64-softmmu
> MAKE_CHECK_ARGS: check-build
>
> +build-system-fedora-rust:
Add '-nightly' to the job name too, to match the container its
using.
> + extends:
> + - .native_build_job_template
> + - .native_build_artifact_template
> + needs:
> + job: amd64-fedora-rust-container
> + variables:
> + IMAGE: fedora-rust-nightly
> + CONFIGURE_ARGS: --disable-gcrypt --enable-nettle --disable-docs --enable-rust
You can leave out the crypt+nettle args and just let this
job auto-detect the right one
> + TARGETS: aarch64-softmmu
> + MAKE_CHECK_ARGS: check-build
> + allow_failure: true
With regards,
Daniel
--
|: https://berrange.com -o- https://www.flickr.com/photos/dberrange :|
|: https://libvirt.org -o- https://fstop138.berrange.com :|
|: https://entangle-photo.org -o- https://www.instagram.com/dberrange :|
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [PATCH 0/2] dockerfiles, gitlab-ci: add CI job using nightly Rust
2024-10-07 17:17 [PATCH 0/2] dockerfiles, gitlab-ci: add CI job using nightly Rust Paolo Bonzini
2024-10-07 17:17 ` [PATCH 1/2] dockerfiles: add a Dockerfile using a nightly Rust toolchain Paolo Bonzini
2024-10-07 17:17 ` [PATCH 2/2] gitlab-ci: add Rust-enabled CI job Paolo Bonzini
@ 2024-10-07 18:18 ` Daniel P. Berrangé
2024-10-08 9:03 ` Paolo Bonzini
2 siblings, 1 reply; 13+ messages in thread
From: Daniel P. Berrangé @ 2024-10-07 18:18 UTC (permalink / raw)
To: Paolo Bonzini; +Cc: qemu-devel, Manos Pitsidianakis, Alex Bennée
On Mon, Oct 07, 2024 at 07:17:11PM +0200, Paolo Bonzini wrote:
> Right now only Fedora 39 and 40 (with updates) are able to compile
> QEMU with Rust enabled. Full CI enablement requires further work to
> reduce the minimum supported version of the compiler, and is not a
> requirement until Rust is turned on by default.
>
> Since a CI job based on nightly Rust will be needed later on, to
> integrate clippy and have a heads-up on future clippy warnings,
> adjust QEMU's 'refresh' script to customize a Fedora 40 dockerfile
> with trailing text that installs nightly Rust and compiles the
> latest bindgen. A matching CI job, using --enable-rust, ensures
> that the toolchain is installed correctly by the Dockerfile and
> that QEMU builds with Rust enabled on at least one platform.
I think that in addition to the nightly job, the mappings.yml should
add rust toolchain, and have a 'system-fedora-rust' job, since you
say that Fedora 40 should already satisfy the min version requirement
without needing nightly there.
Even though the mappings.yml addition will add rust to /all/ containers
this is fine - a perhaps even a good thing - as with any dep we have, it
shows that QEMU does not mistakenly try to enable & use a feature on a
rust version that is too old to work - it reflects that most developer
envs will have rustc present, even when its too old for QEMU to use.
>
> Suggested-by: Daniel P. Berrangé <berrange@redhat.com>
> Cc: Manos Pitsidianakis <manos.pitsidianakis@linaro.org>
> Cc: Alex Bennée <alex.bennee@linaro.org>
> Based-on: <cover.1727961605.git.manos.pitsidianakis@linaro.org>
>
> Paolo Bonzini (2):
> dockerfiles: add a Dockerfile using a nightly Rust toolchain
> gitlab-ci: add Rust-enabled CI job
>
> .gitlab-ci.d/buildtest.yml | 13 ++
> .gitlab-ci.d/containers.yml | 6 +
> .../dockerfiles/fedora-rust-nightly.docker | 173 ++++++++++++++++++
> tests/lcitool/refresh | 26 +++
> 4 files changed, 218 insertions(+)
> create mode 100644 tests/docker/dockerfiles/fedora-rust-nightly.docker
>
> --
> 2.46.1
>
With regards,
Daniel
--
|: https://berrange.com -o- https://www.flickr.com/photos/dberrange :|
|: https://libvirt.org -o- https://fstop138.berrange.com :|
|: https://entangle-photo.org -o- https://www.instagram.com/dberrange :|
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [PATCH 0/2] dockerfiles, gitlab-ci: add CI job using nightly Rust
2024-10-07 18:18 ` [PATCH 0/2] dockerfiles, gitlab-ci: add CI job using nightly Rust Daniel P. Berrangé
@ 2024-10-08 9:03 ` Paolo Bonzini
2024-10-08 9:20 ` Daniel P. Berrangé
0 siblings, 1 reply; 13+ messages in thread
From: Paolo Bonzini @ 2024-10-08 9:03 UTC (permalink / raw)
To: Daniel P. Berrangé; +Cc: qemu-devel, Manos Pitsidianakis, Alex Bennée
On Mon, Oct 7, 2024 at 8:19 PM Daniel P. Berrangé <berrange@redhat.com> wrote:
> I think that in addition to the nightly job, the mappings.yml should
> add rust toolchain, and have a 'system-fedora-rust' job, since you
> say that Fedora 40 should already satisfy the min version requirement
> without needing nightly there.
>
> Even though the mappings.yml addition will add rust to /all/ containers
> this is fine - a perhaps even a good thing - as with any dep we have, it
> shows that QEMU does not mistakenly try to enable & use a feature on a
> rust version that is too old to work - it reflects that most developer
> envs will have rustc present, even when its too old for QEMU to use.
Ok, I'll work on adding bindgen support to lcitool and then do this as
a separate submission.
(BTW the fact that Fedora 40 works wasn't really a goal of Manos's
first submission; it just happens to have new-enough packages).
Paolo
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [PATCH 0/2] dockerfiles, gitlab-ci: add CI job using nightly Rust
2024-10-08 9:03 ` Paolo Bonzini
@ 2024-10-08 9:20 ` Daniel P. Berrangé
2024-10-08 9:45 ` Paolo Bonzini
0 siblings, 1 reply; 13+ messages in thread
From: Daniel P. Berrangé @ 2024-10-08 9:20 UTC (permalink / raw)
To: Paolo Bonzini; +Cc: qemu-devel, Manos Pitsidianakis, Alex Bennée
On Tue, Oct 08, 2024 at 11:03:47AM +0200, Paolo Bonzini wrote:
> On Mon, Oct 7, 2024 at 8:19 PM Daniel P. Berrangé <berrange@redhat.com> wrote:
> > I think that in addition to the nightly job, the mappings.yml should
> > add rust toolchain, and have a 'system-fedora-rust' job, since you
> > say that Fedora 40 should already satisfy the min version requirement
> > without needing nightly there.
> >
> > Even though the mappings.yml addition will add rust to /all/ containers
> > this is fine - a perhaps even a good thing - as with any dep we have, it
> > shows that QEMU does not mistakenly try to enable & use a feature on a
> > rust version that is too old to work - it reflects that most developer
> > envs will have rustc present, even when its too old for QEMU to use.
>
> Ok, I'll work on adding bindgen support to lcitool and then do this as
> a separate submission.
FYI, lcitool already has a package mapping for 'bindgen' defined as Alex
added that for QEMU's benefit a few months back :-)
With regards,
Daniel
--
|: https://berrange.com -o- https://www.flickr.com/photos/dberrange :|
|: https://libvirt.org -o- https://fstop138.berrange.com :|
|: https://entangle-photo.org -o- https://www.instagram.com/dberrange :|
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [PATCH 0/2] dockerfiles, gitlab-ci: add CI job using nightly Rust
2024-10-08 9:20 ` Daniel P. Berrangé
@ 2024-10-08 9:45 ` Paolo Bonzini
2024-10-08 9:56 ` Daniel P. Berrangé
0 siblings, 1 reply; 13+ messages in thread
From: Paolo Bonzini @ 2024-10-08 9:45 UTC (permalink / raw)
To: Daniel P. Berrangé; +Cc: qemu-devel, Manos Pitsidianakis, Alex Bennée
On Tue, Oct 8, 2024 at 11:20 AM Daniel P. Berrangé <berrange@redhat.com> wrote:
> On Tue, Oct 08, 2024 at 11:03:47AM +0200, Paolo Bonzini wrote:
> > Ok, I'll work on adding bindgen support to lcitool and then do this as
> > a separate submission.
>
> FYI, lcitool already has a package mapping for 'bindgen' defined as Alex
> added that for QEMU's benefit a few months back :-)
Hmm, it's missing on SLES15. I wonder if we need to add support for
cargo install, following the model I used in this series.
Paolo
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [PATCH 0/2] dockerfiles, gitlab-ci: add CI job using nightly Rust
2024-10-08 9:45 ` Paolo Bonzini
@ 2024-10-08 9:56 ` Daniel P. Berrangé
0 siblings, 0 replies; 13+ messages in thread
From: Daniel P. Berrangé @ 2024-10-08 9:56 UTC (permalink / raw)
To: Paolo Bonzini; +Cc: qemu-devel, Manos Pitsidianakis, Alex Bennée
On Tue, Oct 08, 2024 at 11:45:49AM +0200, Paolo Bonzini wrote:
> On Tue, Oct 8, 2024 at 11:20 AM Daniel P. Berrangé <berrange@redhat.com> wrote:
> > On Tue, Oct 08, 2024 at 11:03:47AM +0200, Paolo Bonzini wrote:
> > > Ok, I'll work on adding bindgen support to lcitool and then do this as
> > > a separate submission.
> >
> > FYI, lcitool already has a package mapping for 'bindgen' defined as Alex
> > added that for QEMU's benefit a few months back :-)
>
> Hmm, it's missing on SLES15. I wonder if we need to add support for
> cargo install, following the model I used in this series.
Yes, that could work as a special case, but we don't need to worry
about that until we enable rust by default later.
With regards,
Daniel
--
|: https://berrange.com -o- https://www.flickr.com/photos/dberrange :|
|: https://libvirt.org -o- https://fstop138.berrange.com :|
|: https://entangle-photo.org -o- https://www.instagram.com/dberrange :|
^ permalink raw reply [flat|nested] 13+ messages in thread
* [PATCH 0/2] dockerfiles, gitlab-ci: add CI job using nightly Rust
@ 2024-10-09 9:01 Paolo Bonzini
2024-10-09 9:01 ` [PATCH 2/2] gitlab-ci: add Rust-enabled CI job Paolo Bonzini
0 siblings, 1 reply; 13+ messages in thread
From: Paolo Bonzini @ 2024-10-09 9:01 UTC (permalink / raw)
To: qemu-devel; +Cc: berrange, Manos Pitsidianakis, Alex Bennée
Right now only Fedora 39 and 40 (with updates) are able to compile
QEMU with Rust enabled. Full CI enablement requires further work to
reduce the minimum supported version of the compiler, and is not a
requirement until Rust is turned on by default.
Since a CI job based on nightly Rust will be needed later on, to
integrate clippy and have a heads-up on future clippy warnings,
adjust QEMU's 'refresh' script to customize a Fedora 40 dockerfile
with trailing text that installs nightly Rust and compiles the
latest bindgen. A matching CI job, using --enable-rust, ensures
that the toolchain is installed correctly by the Dockerfile and
that QEMU builds with Rust enabled on at least one platform.
Suggested-by: Daniel P. Berrangé <berrange@redhat.com>
Cc: Manos Pitsidianakis <manos.pitsidianakis@linaro.org>
Cc: Alex Bennée <alex.bennee@linaro.org>
Based-on: <cover.1727961605.git.manos.pitsidianakis@linaro.org>
v1->v2: remove unnecessary CONFIGURE_ARGS
add "nightly" to name of container and job
Paolo Bonzini (2):
dockerfiles: add a Dockerfile using a nightly Rust toolchain
gitlab-ci: add Rust-enabled CI job
.gitlab-ci.d/buildtest.yml | 13 ++
.gitlab-ci.d/containers.yml | 6 +
.../dockerfiles/fedora-rust-nightly.docker | 173 ++++++++++++++++++
tests/lcitool/refresh | 26 +++
4 files changed, 218 insertions(+)
create mode 100644 tests/docker/dockerfiles/fedora-rust-nightly.docker
--
2.46.2
^ permalink raw reply [flat|nested] 13+ messages in thread
* [PATCH 2/2] gitlab-ci: add Rust-enabled CI job
2024-10-09 9:01 Paolo Bonzini
@ 2024-10-09 9:01 ` Paolo Bonzini
2024-10-09 9:07 ` Daniel P. Berrangé
2024-10-09 12:55 ` Alex Bennée
0 siblings, 2 replies; 13+ messages in thread
From: Paolo Bonzini @ 2024-10-09 9:01 UTC (permalink / raw)
To: qemu-devel; +Cc: berrange, Manos Pitsidianakis, Alex Bennée
Add a job using --enable-rust, to ensure that the toolchain is installed
correctly by the Dockerfile and that QEMU builds with Rust enabled on
at least one platform.
Suggested-by: Daniel P. Berrangé <berrange@redhat.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
---
.gitlab-ci.d/buildtest.yml | 13 +++++++++++++
.gitlab-ci.d/containers.yml | 6 ++++++
2 files changed, 19 insertions(+)
diff --git a/.gitlab-ci.d/buildtest.yml b/.gitlab-ci.d/buildtest.yml
index 669c980c4b4..6af7920b355 100644
--- a/.gitlab-ci.d/buildtest.yml
+++ b/.gitlab-ci.d/buildtest.yml
@@ -120,6 +120,19 @@ build-system-fedora:
xtensa-softmmu m68k-softmmu riscv32-softmmu ppc-softmmu sparc64-softmmu
MAKE_CHECK_ARGS: check-build
+build-system-fedora-rust-nightly:
+ extends:
+ - .native_build_job_template
+ - .native_build_artifact_template
+ needs:
+ job: amd64-fedora-rust-nightly-container
+ variables:
+ IMAGE: fedora-rust-nightly
+ CONFIGURE_ARGS: --disable-docs --enable-rust
+ TARGETS: aarch64-softmmu
+ MAKE_CHECK_ARGS: check-build
+ allow_failure: true
+
check-system-fedora:
extends: .native_test_job_template
needs:
diff --git a/.gitlab-ci.d/containers.yml b/.gitlab-ci.d/containers.yml
index ae79d4c58bc..db9b4d5e57f 100644
--- a/.gitlab-ci.d/containers.yml
+++ b/.gitlab-ci.d/containers.yml
@@ -27,3 +27,9 @@ python-container:
extends: .container_job_template
variables:
NAME: python
+
+amd64-fedora-rust-nightly-container:
+ extends: .container_job_template
+ variables:
+ NAME: fedora-rust-nightly
+ allow_failure: true
--
2.46.2
^ permalink raw reply related [flat|nested] 13+ messages in thread
* Re: [PATCH 2/2] gitlab-ci: add Rust-enabled CI job
2024-10-09 9:01 ` [PATCH 2/2] gitlab-ci: add Rust-enabled CI job Paolo Bonzini
@ 2024-10-09 9:07 ` Daniel P. Berrangé
2024-10-09 12:55 ` Alex Bennée
1 sibling, 0 replies; 13+ messages in thread
From: Daniel P. Berrangé @ 2024-10-09 9:07 UTC (permalink / raw)
To: Paolo Bonzini; +Cc: qemu-devel, Manos Pitsidianakis, Alex Bennée
On Wed, Oct 09, 2024 at 11:01:50AM +0200, Paolo Bonzini wrote:
> Add a job using --enable-rust, to ensure that the toolchain is installed
> correctly by the Dockerfile and that QEMU builds with Rust enabled on
> at least one platform.
>
> Suggested-by: Daniel P. Berrangé <berrange@redhat.com>
> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
> ---
> .gitlab-ci.d/buildtest.yml | 13 +++++++++++++
> .gitlab-ci.d/containers.yml | 6 ++++++
> 2 files changed, 19 insertions(+)
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>
With regards,
Daniel
--
|: https://berrange.com -o- https://www.flickr.com/photos/dberrange :|
|: https://libvirt.org -o- https://fstop138.berrange.com :|
|: https://entangle-photo.org -o- https://www.instagram.com/dberrange :|
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [PATCH 2/2] gitlab-ci: add Rust-enabled CI job
2024-10-09 9:01 ` [PATCH 2/2] gitlab-ci: add Rust-enabled CI job Paolo Bonzini
2024-10-09 9:07 ` Daniel P. Berrangé
@ 2024-10-09 12:55 ` Alex Bennée
1 sibling, 0 replies; 13+ messages in thread
From: Alex Bennée @ 2024-10-09 12:55 UTC (permalink / raw)
To: Paolo Bonzini; +Cc: qemu-devel, berrange, Manos Pitsidianakis
Paolo Bonzini <pbonzini@redhat.com> writes:
> Add a job using --enable-rust, to ensure that the toolchain is installed
> correctly by the Dockerfile and that QEMU builds with Rust enabled on
> at least one platform.
>
> Suggested-by: Daniel P. Berrangé <berrange@redhat.com>
> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
Acked-by: Alex Bennée <alex.bennee@linaro.org>
--
Alex Bennée
Virtualisation Tech Lead @ Linaro
^ permalink raw reply [flat|nested] 13+ messages in thread
end of thread, other threads:[~2024-10-09 12:56 UTC | newest]
Thread overview: 13+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-10-07 17:17 [PATCH 0/2] dockerfiles, gitlab-ci: add CI job using nightly Rust Paolo Bonzini
2024-10-07 17:17 ` [PATCH 1/2] dockerfiles: add a Dockerfile using a nightly Rust toolchain Paolo Bonzini
2024-10-07 18:12 ` Daniel P. Berrangé
2024-10-07 17:17 ` [PATCH 2/2] gitlab-ci: add Rust-enabled CI job Paolo Bonzini
2024-10-07 18:13 ` Daniel P. Berrangé
2024-10-07 18:18 ` [PATCH 0/2] dockerfiles, gitlab-ci: add CI job using nightly Rust Daniel P. Berrangé
2024-10-08 9:03 ` Paolo Bonzini
2024-10-08 9:20 ` Daniel P. Berrangé
2024-10-08 9:45 ` Paolo Bonzini
2024-10-08 9:56 ` Daniel P. Berrangé
-- strict thread matches above, loose matches on Subject: below --
2024-10-09 9:01 Paolo Bonzini
2024-10-09 9:01 ` [PATCH 2/2] gitlab-ci: add Rust-enabled CI job Paolo Bonzini
2024-10-09 9:07 ` Daniel P. Berrangé
2024-10-09 12:55 ` Alex Bennée
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).