[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
libvirt build failure w/GNU make and automake.git (automake regression?)
From: |
Jim Meyering |
Subject: |
libvirt build failure w/GNU make and automake.git (automake regression?) |
Date: |
Wed, 12 Sep 2012 17:01:30 +0200 |
When I run ./autogen.sh && make, I see this:
(this arose because I had the latest automake.git/master tools --
commit c1b83e1af60b866cf5cdeebf77d0275019bad8b2 from today --
early in my path)
Generated 3 wrapper functions
CC libvirtmod_la-libvirt-override.lo
CC libvirtmod_la-typewrappers.lo
CC libvirtmod_la-libvirt.lo
CC libvirtmod_qemu_la-libvirt-qemu-override.lo
CC libvirtmod_qemu_la-typewrappers.lo
CC libvirtmod_qemu_la-libvirt-qemu.lo
CCLD libvirtmod_qemu.la
CCLD libvirtmod.la
make[3]: Leaving directory `/h/j/w/co/libvirt/python'
Making all in tests
make[3]: Entering directory `/h/j/w/co/libvirt/python/tests'
make[3]: Nothing to be done for `all'.
make[3]: Leaving directory `/h/j/w/co/libvirt/python/tests'
make[2]: Leaving directory `/h/j/w/co/libvirt/python'
Making all in tests
make[2]: Entering directory `/h/j/w/co/libvirt/tests'
Makefile:4355: *** Malformed target-specific variable definition. Stop.
make[2]: Leaving directory `/h/j/w/co/libvirt/tests'
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory `/h/j/w/co/libvirt'
make: *** [all] Error 2
That is because of this automake-generated rule:
undefine.log: undefine
@p='undefine'; \
b='undefine'; \
$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
--log-file $$b.log --trs-file $$b.trs \
$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS)
$(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
"$$tst" $(AM_TESTS_FD_REDIRECT)
The trouble is that "undefine" is an operator in GNU make.
Here's that part of GNU make's documentation:
6.9 Undefining Variables
========================
If you want to clear a variable, setting its value to empty is usually
sufficient. Expanding such a variable will yield the same result (empty
string) regardless of whether it was set or not. However, if you are
using the `flavor' (*note Flavor Function::) and `origin' (*note Origin
Function::) functions, there is a difference between a variable that
was never set and a variable with an empty value. In such situations
you may want to use the `undefine' directive to make a variable appear
as if it was never set. For example:
foo := foo
bar = bar
undefine foo
undefine bar
$(info $(origin foo))
$(info $(flavor bar))
This example will print "undefined" for both variables.
If you want to undefine a command-line variable definition, you can
use the `override' directive together with `undefine', similar to how
this is done for variable definitions:
override undefine CFLAGS
The most pragmatic work-around is to rename the "undefine" test script.
However, Stephano, as automake maintainer, I think you will want to
fix automake not to prohibit the use of such test names.
- libvirt build failure w/GNU make and automake.git (automake regression?),
Jim Meyering <=