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:
<
http://flex.sourceforge.net/>
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