On Thu, Jun 13, 2024 at 08:13:01AM +0300, Manos Pitsidianakis wrote: > Good morning Daniel, > > On Wed, 12 Jun 2024 11:37, "Daniel P. Berrangé" <berra...@redhat.com> wrote: > > On Tue, Jun 11, 2024 at 01:33:29PM +0300, Manos Pitsidianakis wrote: > > > > > > > > .gitignore | 2 + > > > .gitlab-ci.d/buildtest.yml | 64 ++-- > > > MAINTAINERS | 13 + > > > configure | 12 + > > > hw/arm/virt.c | 4 + > > > meson.build | 102 ++++++ > > > meson_options.txt | 4 + > > > rust/meson.build | 93 ++++++ > > > rust/pl011/.cargo/config.toml | 2 + > > > rust/pl011/.gitignore | 2 + > > > rust/pl011/Cargo.lock | 120 +++++++ > > > rust/pl011/Cargo.toml | 66 ++++ > > > rust/pl011/README.md | 42 +++ > > > rust/pl011/build.rs | 44 +++ > > > rust/pl011/deny.toml | 57 ++++ > > > rust/pl011/meson.build | 7 + > > > rust/pl011/rustfmt.toml | 1 + > > > rust/pl011/src/definitions.rs | 95 ++++++ > > > rust/pl011/src/device.rs | 531 ++++++++++++++++++++++++++++++ > > > rust/pl011/src/device_class.rs | 95 ++++++ > > > rust/pl011/src/generated.rs | 5 + > > > rust/pl011/src/lib.rs | 581 +++++++++++++++++++++++++++++++++ > > > rust/pl011/src/memory_ops.rs | 38 +++ > > > rust/rustfmt.toml | 7 + > > > rust/wrapper.h | 39 +++ > > > scripts/cargo_wrapper.py | 221 +++++++++++++ > > > scripts/meson-buildoptions.sh | 6 + > > > > Given the priority of getting the build system correct, what's missing > > here is updates/integration into our standard GitLab CI pipeline. If > > that can be shown to be working, that'll give alot more confidence in > > the overall solution. > > > > Ideally this should not require anything more than updating the docker > > container definitions to add in the rust toolchain, plus the appropriate > > std library build for the given target - we cross compiler for every > > arch we officially care about. > > > > Most of our dockerfiles these days are managed by lcitool, and it has > > nearly sufficient support for cross compiling with the rust std library. > > So to start with, this series should modify tests/lcitool/projects/qemu.yml > > to add > > > > - rust > > - rust-std > > > > to the package list, and run 'make lcitool-refresh' to re-create the > > dockerfiles - see the docs/devel/testing.rst for more info about > > lcitool if needed. > > > > Assuming these 2 rust packages are in the container, I would then > > expect QEMU to just "do the right thing" when building this rust > > code. If it does not, then that's a sign of gaps that need closing. > > > > Getting rid of the need to use --rust-target-triple will be the > > immediate gap that needs fixing, as CI just passes --cross-prefix > > for cross-builds and expects everything to be set from that. > > > > The main gap we have is that for Windows I need to update lcitool > > to pull in the mingw std lib target for rust, which I something I > > missed when adding rust cross compiler support.
I've updated lcitool for this gap: https://gitlab.com/libvirt/libvirt-ci/-/merge_requests/492 > The rust project has official Docker images, do you think it's something we > could use or is it unnecessary? > > https://github.com/rust-lang/docker-rust They're irrelevant - we need the containers with the full set of QEMU build dependencies present, and it is the Rust versions that are in the distros that matter to us. 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 :|