On Mon, Nov 09, 2020 at 09:47:16AM +0000, Daniel P. Berrangé wrote:
On Sun, Nov 08, 2020 at 11:57:15AM -0600, Ryan Gahagan wrote:
> We've also been having some troubles actually getting ninja and meson to
> run properly. Our team has one member on MacOS, one on Ubuntu 18.04, and
> one working on a remote server (Ubuntu again) without sudo privileges. We
> want to be able to run ninja test to properly test and clean our code as we
> make pull requests, but it's been very difficult to get set up.
>
> The Ubuntu aptitude store has an outdated version of meson that doesn't
> actually run properly, and the pip3 version is up to date but then the
> build dependencies are left unresolved. These dependencies are also by
> default not actually in the aptitude store either, nor can they easily be
> mass installed via homebrew (to our knowledge). Even after manually
> configuring aptitude to find the links to all the dependencies of the
> project, manually installing meson and ninja, and installing the
> dependencies, we are still left with an error that says "XDR is required
> for remote driver". Most of our team cannot even reach this point, as any
> of the earlier steps is not reproducible due to either the environment not
> having the correct tooling or lacking sufficient administrator privilege to
> execute them.
>
> All of our code we've written thus far has relied entirely upon the CI to
> build the project for us, which is not a particularly efficient workflow
> due to the time it takes for CI to finish. How can we get ninja test (and
> other build tools) to actually run on our machines? Do you have any
> additional instructions that we may be able to use outside of the
> CONTRIBUTING.rst file?
Almost all our CI systems are using containers for the build, and the
container recipes are in the directory ci/containers. So if you want to
see the set of packages to install on Ubuntu1804, then look at
ci/containers/libvirt-ubuntu-1804.Dockerfile.
macOS CI is using a VM, and homebrew, but again we have a record of the
build deps in ci/cirrus/libvirt-macos-1015.vars
NB, the macOS builds generally have many fewer features enabled, since
Linux is the primary target of most developer's attention.
As an alternative to installing packages on your local machine, you can
intead just install docker (or podman) container runtime tools. Then you
can directly use the libvirt containers from our CI system on your local
machine. In the "ci" sub-directory you can run a build on your local
machine, using container images pulled down from GitLab CI.
eg
cd ci
make ci-build@fedora-32
will run a build using the Fedora 32 container image. This lets you
build for any Linux distro, regardless of your host OS distro. ie you
can test Fedora builds on an Ubuntu and vica-verca. "make ci-shell@distro"
will give you have interactive shell in the container.
This is probably the easier way to get a local build running. Do all your
work locally most of the time then you only need worry about pushing to
GitLab to double check build success across the other distros just before
submitting your contribution for review.
Yes it is, except it won't work in its current state, we haven't updated the
build recipes to meson yet. You can find a patch in the attachment to get you
going - I just quickly added/removed the necessary bits, so I need to polish it
further for upstream, but it will do in the meantime.
Erik