[Wheel-builders] error: signalfd.h not found when building manylinux wheel

Nathaniel Smith njs at pobox.com
Sat Jul 9 01:07:51 EDT 2016


On Fri, Jul 8, 2016 at 3:23 PM, Vitaly Kruglikov <vkruglikov at numenta.com> wrote:
> I am attempting to build a manylinux wheel from the nupic.core project in
> github. I am using the docker image quay.io/pypa/manylinux1_x86_64.
> nupic.core builds and statically links against the capnproto library, which
> relies on signalfd.h. Unfortunately, the docker image
> quay.io/pypa/manylinux1_x86_64 does not provide  signalfd.h, so my build
> fails like this:
>
> Linking CXX static library libkj.a
> [ 27%] Built target kj
> [ 29%] Building CXX object src/kj/CMakeFiles/kj-async.dir/async.c++.o
> [ 30%] Building CXX object src/kj/CMakeFiles/kj-async.dir/async-unix.c++.o
> /nupic.core/build/scripts/ThirdParty/Source/CapnProto/src/kj/async-unix.c++:36:26:
> fatal error: sys/signalfd.h: No such file or directory
>  #include <sys/signalfd.h>
>
> What is the recommended solution for this problem?

man signalfd says:

VERSIONS
       signalfd() is available on Linux since kernel 2.6.22.  Working  support
       is  provided  in  glibc since version 2.8.  The signalfd4() system call
       (see NOTES) is available on Linux since kernel 2.6.27.

CentOS 5 ships glibc 2.5, so signalfd is simply not available to
manylinux1 wheels. I guess the recommended solution is to modify your
code so that it doesn't require signalfd? It looks you aren't the only
person to run into this this week...

    https://groups.google.com/forum/#!topic/capnproto/OpH9RtOBcZU

and the suggestion there is to use -DKJ_USE_EPOLL=0 to tell capnproto
not to use signalfd.

This is an interesting data point for the benefits of defining a
CentOS-6-based manylinux2, though...

-n

-- 
Nathaniel J. Smith -- https://vorpus.org


More information about the Wheel-builders mailing list