On Thu, 30 Jun 2022, Bertrand Marquis wrote: > > On 29 Jun 2022, at 18:22, Stefano Stabellini wrote: > > > > On Wed, 29 Jun 2022, Luca Fancellu wrote: > >> + CC: Stefano Stabellini > >> > >>> On 24 Jun 2022, at 17:04, Anthony PERARD wrote: > >>> > >>> Patch "tools: Add -Werror by default to all tools/" have added > >>> "-Werror" to CFLAGS in tools/Rules.mk, remove it from every other > >>> makefiles as it is now duplicated. > >>> > >>> Signed-off-by: Anthony PERARD > >> > >> Hi Anthony, > >> > >> I will try to review the serie when I manage to have some time, in the mean time I can say the whole > >> serie builds fine in my Yocto setup on arm64 and x86_64, I’ve tried also the tool stack to > >> create/destroy/console guests and no problem so far. > >> > >> The only problem I have is building for arm32 because, I think, this patch does a great job and it > >> discovers a problem here: > > > > That reminds me that we only have arm32 Xen hypervisor builds in > > gitlab-ci, we don't have any arm32 Xen tools builds. I'll add it to my > > TODO but if someone (not necessarily Luca) has some spare time it could > > be a nice project. It could be done with Yocto by adding a Yocto build > > container to automation/build/. > > We have now a way to build and run xen for arm32 on qemu using Yocto. > We are using this internally and also will test Xen with guests on arm32 using this soon. > > I am upstreaming to meta-virtualisation all the fixes needed for that so it should be fairly straight forward do reproduce this in Yocto build in a container. > > Please tell me what you need and I will try to provide you a set of scripts or instructions do reproduce that on gitlab. That would be great! We need two things: - a Yocto build container - a build script The build container would be something like: automation/build/debian/unstable-arm64v8.dockerfile. It is a Dockerfile to create a container with Yocto and all required dependencies. It could be based on Debian arm64. The build container is only built once and pushed to the gitlab registry, but it is executed every time a gitlab pipeline is started. We probably want the meta layers to be pulled as part of the build container build (git clone from the Dockerfile) because otherwise we would end up git cloining them every time we run a gitlab-ci pipeline, slowing everything down. The build script is the script executed in the build container for every pipeline. Imagine you have a container "yocto-arm32", basically we want to do: # docker run yocto-arm32 build.script where build.script is the script that actually triggers the Xen build and produces the binary output. The current build script is automation/scripts/build; it is used for all build containers (all of them, from Debian to Fedora and Alpine) but it is probably not suitable to be used for Yocto. It simply calls ./configure; make; make install. It is more for normal distros. I imagine that the build script for Yocto would call bitbake. With the build container Dockerfile and the build script it becomes very simple to add Yocto arm32 to gitlab-ci. I realize that the actual build could be done on both arm64 or x86. Currently the arm32 hypervisor-only cross-build is done on x86. See automation/build/debian/unstable-arm32-gcc.dockerfile. Either way is OK.