
On 8/7/19 9:59 AM, Michal Privoznik wrote:
On 7/31/19 9:30 PM, Eric Blake wrote:
Commit fed58d83 was a hack to fix a mingw build failure due to header inclusion order resulting in a clash over the use of DATADIR, by repeating a trick made several other times in the past of tweaking inclusion order until it goes away. Better is to revert that, and instead use pragmas to avoid the clash in the first place, regardless of header ordering, solving it for everyone in the future.
Signed-off-by: Eric Blake <eblake@redhat.com> ---
I tested that both gcc and clang on F29 support this; but it will take a full CI run to see if everywhere else is okay with it. Thus, it is not 5.6 material.
And the full CI run says I failed, https://travis-ci.org/libvirt/libvirt/jobs/569132417 In file included from ../../src/conf/checkpoint_conf.c:24: ../gnulib/lib/configmake.h:8:17: error: expected identifier or '(' before string constant 8 | #define DATADIR "/usr/i686-w64-mingw32/sys-root/mingw/share" | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ make[3]: *** [Makefile:8803: conf/libvirt_conf_la-checkpoint_conf.lo] Error 1 make[3]: *** Waiting for unfinished jobs.... I'm reverting the patch under the build-breaker rules, while trying to reproduce the cross-compilation locally rather than relying solely on CI. My local testing that proved that #pragma push_macro works with gcc was obviously not enough; sorry for the churn while I prepare v2. -- Eric Blake, Principal Software Engineer Red Hat, Inc. +1-919-301-3226 Virtualization: qemu.org | libvirt.org