On Tue, 2019-02-05 at 17:53 +0000, Daniel P. Berrangé wrote:
[...]
+++ b/dockerfiles/Makefile
So this is basically very similar to
https://libvirt.org/git/?p=libvirt-dockerfiles.git;a=blob;f=refresh
and I feel like it belongs to that repository rather than this one.
That causes a bit of inconvenience, but on the other hand I expect
that regular libvirt developers will *not* perform local builds, and
will rely on the official images from quay.io instead - and your
proposed libvirt integration patches also seem to assume as much.
So the only people affected by this would be the CI maintainers, and
for them sticking with the current practice of generating Dockerfiles
in a separate repository shouldn't be a problem.
[...]
+HOSTS = $(shell $(LCITOOL) -a hosts)
+
+CROSS_HOST = libvirt-debian-9
+
+ARCHES = $(shell $(LCITOOL) -a arches -h $(CROSS_HOST))
HOSTS, CROSS_HOST and ARCHES are not used anywhere, at least as far
as I can tell. Probably leftovers from a previous version :)
[...]
+buildenv-%.docker: $(LCITOOL) $(CONFIGS)
+ case $@ in \
+ *cross*) \
+ HOST=`echo $@ | sed -e 's/-cross-.*//' -e 's/buildenv-//' -e
's/.docker//'` && \
+ ARCH=`echo $@ | sed -e 's/^.*-cross-//' -e 's/.docker//'`
&& \
+ $(LCITOOL) -a dockerfile -p libvirt -h $$HOST -x $$ARCH > $@ ;; \
+ *) \
+ HOST=`echo $@ | sed -e 's/buildenv-//' -e 's/.docker//'`
&& \
+ $(LCITOOL) -a dockerfile -p libvirt -h $$HOST > $@ ;; \
+ esac
If you look at the script mentioned above, you'll see that this
won't quite work: when generating the Dockerfile for Fedora Rawhide,
we need to include the libvirt+mingw* projects too.
Which brings me back to the idea I suggested at the end of the
previous message, or rather an extended version of it: what if,
instead of weighing down the Fedora Rawhide image with the MinGW
compiler and libraries, and having a bunch of cross compilation
images, we only had
buildenv-mingw
buildenv-cross
with the latter including cross-compilers for all architectures?
I think splitting the MinGW builds from regular Fedora Rawhide
builds might even improve responsiveness on
ci.centos.org, since
we'd be able to run the two in parallel.
[...]
+++ b/guests/lcitool
@@ -313,8 +313,9 @@ class Application:
build build projects on hosts
informational actions:
- hosts list all known hosts
- projects list all known projects
+ hosts list all known hosts
+ projects list all known projects
+ dockerfiles list all known dockerfiles
Though it's not quite a clear call, I would still probably list this
under "uncommon actions", because it's mostly for our own (scripting)
convenience and we don't expect users to run it direcly.
It also should have been added in its own commit.
[...]
+ def _action_dockerfiles(self, _hosts, _projects, _revision,
_cross_arch):
+ for host in self._inventory.expand_pattern("all"):
+ facts = self._inventory.get_facts(host)
+ package_format = facts["package_format"]
+ if package_format not in ["deb", "rpm"]:
+ continue
+ print ("buildenv-%s.docker" % host)
No whitespace between function name and parentheses.
And... Hold on a second. Are you really trying to sneak a *third*
way to do string formatting into the script?!? :P
+ for arch in facts.get("cross_build",
{}).get("arches", {}).keys():
+ print ("buildenv-%s-cross-%s.docker" % (host, arch))
Two problems with this, both of which are shared with the non-cross
variant above: first, it will result in output like
buildenv-libvirt-debian-9-cross-s390x.docker
but so far we have omitted the "libvirt" part, at least when it
comes to the official images hosted at
https://quay.io/libvirt
Of course for those images we can get away with it because "libvirt"
is part of the URL, when performing local builds we can't really
count on that...
Then again, see the argument above about maintainers being the only
one expected to run local builds, which makes it IMHO perfectly fine
to stick with the "libvirt"-less names for images.
The second problem is the use of the .docker extension. It seems
like the best practice is to have something like
buildenv-fedora-29/Dockerfile
but that would complicate managing the files further with not much
benefit that I can see; using
buildenv-fedora-29.Dockerfile
instead, as seen in the libvirt-dockerfiles.git repository, seems
like a sensible enough middle ground, so I'd prefer sticking with
that naming scheme.
--
Andrea Bolognani / Red Hat / Virtualization