• E
    build: more workarounds for if_bridge.h · 70024dc9
    Eric Blake 提交于
    This is a second attempt at fixing the problem first attempted
    in commit 2df8d991; basically undoing the fact that it was
    reverted in commit 43cee32f, plus fixing two more issues: the
    code in configure.ac has to EXACTLY match virnetdevbridge.c
    with regards to declaring in6 types before using if_bridge.h,
    and the fact that RHEL 5 has even more conflicts:
    
    In file included from util/virnetdevbridge.c:49:
    /usr/include/linux/in6.h:47: error: conflicting types for 'in6addr_any'
    /usr/include/netinet/in.h:206: error: previous declaration of 'in6addr_any' was here
    /usr/include/linux/in6.h:49: error: conflicting types for 'in6addr_loopback'
    /usr/include/netinet/in.h:207: error: previous declaration of 'in6addr_loopback' was here
    
    The rest of this commit message borrows from the original try
    of 2df8d991:
    
    A fresh checkout on a RHEL 6 machine with these packages:
    kernel-headers-2.6.32-405.el6.x86_64
    glibc-2.12-1.128.el6.x86_64
    failed to configure with this message:
    checking for linux/if_bridge.h... no
    configure: error: You must install kernel-headers in order to compile libvirt with QEMU or LXC support
    
    Digging in config.log, we see that the problem is identical to
    what we fixed earlier in commit d12c2811:
    
    configure:98831: checking for linux/if_bridge.h
    configure:98853: gcc -std=gnu99 -c -g -O2  conftest.c >&5
    In file included from /usr/include/linux/if_bridge.h:17,
                     from conftest.c:559:
    /usr/include/linux/in6.h:31: error: redefinition of 'struct in6_addr'
    /usr/include/linux/in6.h:48: error: redefinition of 'struct sockaddr_in6'
    /usr/include/linux/in6.h:56: error: redefinition of 'struct ipv6_mreq'
    configure:98860: $? = 1
    
    I had not hit it earlier because I was using incremental builds,
    where config.cache had shielded me from the kernel-headers breakage.
    
    * configure.ac (if_bridge.h): Avoid conflicting type definitions.
    * src/util/virnetdevbridge.c (includes): Also sanitize for RHEL 5.
    Signed-off-by: NEric Blake <eblake@redhat.com>
    70024dc9
configure.ac 86.4 KB