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...
>
>
> 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?
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: