
Eric Blake schreef op do 29-08-2013 om 14:07 [-0600]:
On 08/29/2013 11:38 AM, Erik van Pienbroek wrote:
This mass rebuild was done using winpthreads instead of the old pthreads-w32 implementation. In Fedora itself winpthreads isn't used by default yet, but it will be introduced in Fedora 20 once all build failures which are caused by it are resolved (if this takes too long the introduction of winpthreads in Fedora will have to be postponed until Fedora 21 which is scheduled for release in Q2 2014). The gcc package is still being built without --enable-threads=posix (thus support for C++11 std::thread is not enabled yet)
mingw-libvirt-1.1.1-1 Package owner: berrange Time to build: 6 minutes, 39 seconds Build logs: http://build1.vanpienbroek.nl/fedora-mingw-rebuild/20130829/mingw-libvirt-1....
Also caused by winpthreads:
CCLD libvirt.la ./.libs/libvirt_driver_remote.a(libvirt_net_rpc_client_la-virnetclient.o): In function `virNetClientIOEventLoop': /builddir/build/BUILD/libvirt-1.1.1/build_win32/src/../../src/rpc/virnetclient.c:1517: undefined reference to `pthread_sigmask' /builddir/build/BUILD/libvirt-1.1.1/build_win32/src/../../src/rpc/virnetclient.c:1524: undefined reference to `pthread_sigmask' /builddir/build/BUILD/libvirt-1.1.1/build_win32/src/../../src/rpc/virnetclient.c:1524: undefined reference to `pthread_sigmask' ./.libs/libvirt_driver_remote.a(libvirt_net_rpc_client_la-virnetclient.o): In function `virNetClientSetTLSSession': /builddir/build/BUILD/libvirt-1.1.1/build_win32/src/../../src/rpc/virnetclient.c:785: undefined reference to `pthread_sigmask' /builddir/build/BUILD/libvirt-1.1.1/build_win32/src/../../src/rpc/virnetclient.c:792: undefined reference to `pthread_sigmask' ./.libs/libvirt_driver_remote.a(libvirt_net_rpc_client_la-virnetclient.o):/builddir/build/BUILD/libvirt-1.1.1/build_win32/src/../../src/rpc/virnetclient.c:809: more undefined references to `pthread_sigmask' follow collect2: error: ld returned 1 exit status
Hmm. The libvirt build for mingw explicitly wants to avoid pthread_*, and use native threading instead (at least we wanted to explicitly avoid the old pthreads-w32, and since we already have native thread support, we might as well use it instead of dragging in winpthreads). Probably a case of our configure checks not detecting the right situation once winpthreads are turned on. I'll see if we can get this fixed up for libvirt 1.1.2 (due real soon now), or if it will have to wait for 1.1.3 (a month out, but probably still in time to make it into F20). Is there an easy environment to set up (such as rawhide + a repo) for testing a mingw cross-build with winpthreads?
Hi Eric, Some time ago I filed https://bugzilla.redhat.com/show_bug.cgi?id=969231 against the Fedora mingw-libvirt package for this issue. According to Daniel Berrange winpthreads isn't following the POSIX specifications as the symbol pthread_sigmask should be mentioned in signal.h while for winpthreads this symbol is currently only mentioned in pthread.h. Setting up an environment with Fedora MinGW + winpthreads requires some preparation (as I don't want to pollute rawhide yet). A recent rawhide environment should be enough as starting point. I just created some scratch builds which you can install directly with 'yum localinstall' to have a winpthreads-based mingw environment: http://koji.fedoraproject.org/koji/taskinfo?taskID=5871269 http://koji.fedoraproject.org/koji/taskinfo?taskID=5871279 Regards, Erik