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 :|