
On Wed, Apr 29, 2020 at 08:52:06PM +0200, Andrea Bolognani wrote:
On Wed, 2020-04-29 at 11:38 +0100, Daniel P. Berrangé wrote:
Thus this introduces a new project "libvirt-minimal" which lists the bare minimum dependencies required to build libvirt.
I don't like the name libvirt-minimal because it appears to follows the convention used for actual libvirt-based projects such as libvirt-glib.
What about libvirt+minimal, following the project+variant convention used for all MinGW builds[1] and in the past for libvirt+website?
Some projects also wish to have the ability to build against the distro provided libvirt instead of the latest git master, and for this purpose a "libvirt-dist" project is defined which pulls in the package needed for building against the distro libvirt.
I don't like this name either :)
One reason is the same detailed above, but there's another one which is tied to semantics: in lcitool, "$project" has always been used to mean "the list of packages necessary to build $project from source".
This is the case for all the projects that exist today[2] and even for libvirt+minimal, but this one is different: in this case, libvirt-dist means "the list of packages necessary to build a project that *depends* on libvirt from source". That's quite different.
I think a better approach would be to once again use variants: for example, if you wanted to build libvirt-python against the version of libvirt included in the OS, instead of having something like
# libvirt-python.yml --- packages: - python3 ...
# libvirt-dist.yml --- packages: - libvirt
which is then used like
$ lcitool dockerfile $OS libvirt-dist,libvirt-python
you'd have
# libvirt-python+dist.yml --- packages: - libvirt - python-3 ...
which is used like
$ lcitool dockerfile $OS libvirt-python+dist
This would achieve the same result with less typing and without subverting the existing semantics.
This results in defining the combinatorial expansion of project sets which just looks like unecessary duplication & work to me. It also gives different syntax for configuring a container to build from git vs dist. There is only ever one project here "libvirt-project" and nothing about it is is changing, except for which "libvirt" it is being built against. It supports any libvirt, whether a full git build or a minimal git build, or a distro build or some other build: $ lcitool dockerfile $OS libvirt,libvirt-python $ lcitool dockerfile $OS libvirt-dist,libvirt-python $ lcitool dockerfile $OS libvirt-minimal,libvirt-python We could call it "libvirt+dist" instead "libvirt-dist" if we want
Another nice property of this approach is that it naturally extends to cover projects that depend on more than just libvirt: for example, we could have
# libvirt-dbus+dist.yml --- packages: - libvirt - libvirt-glib ...
for use in libvirt-dbus CI.
I think that's a downside not a plus, because it makes the combinatorial expansion even bigger. 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 :|