[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 ./ && 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
    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) 
            "$$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.

reply via email to

[Prev in Thread] Current Thread [Next in Thread]