[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]

[libvirt] libvirt build failure w/GNU make and automake.git (automake regression?)

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.

[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]