On 7/8/16, 10:07 PM, "Nathaniel Smith" <[email protected]> wrote:
>On Fri, Jul 8, 2016 at 3:23 PM, Vitaly Kruglikov <[email protected]> >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 Thanks Nathaniel, unfortunately it is not as simple as that. Unfortunately, capnproto is not my code, so I am somewhat limited in what I can do with it. You also replied to a similar question concerning pipe2, SOCK_NONBLOCKING, etc. Those are actually all tied together. I also tried building capnproto with -DKJ_USE_EPOLL=0 to get around the signalfd dependency, and that¹s what triggered the pipe2, SOCK_NONBLOCKING, etc. was not declared in this scope compiler errors. It turns out that pipe2, etc. are not available on CentOS-5 either. So, -DKJ_USE_EPOLL=0 or not, the compilation fails due to missing headers or symbols in CentOS-5. I am now trying to create a patch for captnproto to enable the build to go through, but it is messy, as other parts of capnproto rely on some of the related headers. What a mess! Best, Vitaly _______________________________________________ Wheel-builders mailing list [email protected] https://mail.python.org/mailman/listinfo/wheel-builders
