[libvirt] [PATCH v3] Makefile: Fix parallel build after Xen-xl parser introduction

Eric Blake eblake at redhat.com
Wed Jan 7 21:08:43 UTC 2015

On 01/07/2015 10:17 AM, Pavel Hrdina wrote:
> Well, the parallel build doesn't work as there are not dependencies
> set correctly. When running 'make -j' I see this error:
> make[2]: Entering directory '/home/zippy/work/libvirt/libvirt.git/src'
>   GEN      util/virkeymaps.h
>   GEN      locking/lock_protocol.h
> make[2]: *** No rule to make target 'xenconfig/xen_xl_disk.h', needed by 'all'.  Stop.
> make[2]: *** Waiting for unfinished jobs....
>   GEN      lxc/lxc_controller_dispatch.h
> The fix is to correctly set dependencies by letting make know that .c
> and .h are to be generated from .l. Moreover, the section is moved
> closer to the other section which uses it.

Still not working for me in VPATH, and I still haven't figured out why... :)

Meanwhile, since we are NOT storing the generated files in git, we have
a choice:
1. the generated files should be part of the tarball (and generate them
into srcdir, not builddir, which makes this patch's attempts to override
automake's rules wrong)
2. the generated files should NOT be part of the tarball, and users that
want to build the xen drivers MUST have flex installed locally (GNU
coding standards discourage this, but we already require users to
install GNU make locally, which is also against GNU coding standards)

I'd lean towards 1 (which is part of why I'm not sure I like this patch,
but what is also taking me time to come up with an alternative), but can
live with 2 if we get it working.

But observe what happens right now if you don't have flex.  Configure
succeeds, then make fails:

  LEX      xenconfig/xen_xl_disk.c
/home/eblake/libvirt/build-aux/missing: line 81: flex: command not found
WARNING: 'flex' is missing on your system.
         You should only need it if you modified a '.l' file.
         You may want to install the Fast Lexical Analyzer package:

I'd MUCH rather that we fix things to fail at configure time if flex is
not installed but xen must be built rather than delaying failure to make
time (or put another way, if flex is not present and xen is not
explicitly requested, then configure should default to not attempting
xen).  It probably also means that we need to update bootstrap.conf
(especially if we go with option 1, to make sure developers can produce
a working tarball) and/or config.spec (to make sure rpms can build xen
parts for Fedora) to require flex.

Eric Blake   eblake redhat com    +1-919-301-3266
Libvirt virtualization library http://libvirt.org

-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 604 bytes
Desc: OpenPGP digital signature
URL: <http://listman.redhat.com/archives/libvir-list/attachments/20150107/1ec95cf0/attachment-0001.sig>

More information about the libvir-list mailing list