NetBSD-8 で Neovim の master ブランチをビルドしようとしたら、libuv で
~/build/neovim/.deps/build/src/libuv/src/unix/thread.c:222:22: error: ‘PTHREAD_STACK_MIN’ undeclared (first use in this function) if (stack_size < PTHREAD_STACK_MIN) ^というエラーが出て、コンパイルできませんでした。 ちょっと調べてみると、
/usr/include/limits.h
で
/* * These are the correct names, defined in terms of the above * except for PTHREAD_KEYS_MAX which is bigger than standard * mandated minimum value _POSIX_THREAD_KEYS_MAX. */ #define PTHREAD_DESTRUCTOR_ITERATIONS _POSIX_THREAD_DESTRUCTOR_ITERATIONS #define PTHREAD_KEYS_MAX 256 /* Not yet: PTHREAD_STACK_MIN */ #define PTHREAD_THREADS_MAX _POSIX_THREAD_THREADS_MAXという部分があり、確かに定義されていません。 さらに調べてみると、NetBSD の tech-userlevel メーリングリストで2014年にPTHREAD_STACK_MINというメールが投げられていました。そこでの結論は、 PTHREAD_STACK_MINの代わりにsysconf(_SC_THREAD_STACK_MIN)を使ったほうが安全、ということのようです。 一方 libuv のほうでは、今年の4月に Do not use PTHREAD_STACK_MIN unconditionally for the unix target #2252というのが出ており、結果として「定義されていれば使用する」という形に落ち着いたようです。途中、GNU じゃない FreeBSD とか NetBSD は libuv はサポートせんよ、みたいな投稿もありましたが。
ともあれ、現状では Neovim の CMake では libuv-1.26.0(2019年2月11日リリース)を使用しているようで、1.29.0 では上記の変更が反映されているようなので、そのうち修正なしでコンパイルできるようになるでしょう。
Neovim でのコンパイルにおいては、最初にある thread.c に #2252 のパッチを当てればいいかと思います。
0 件のコメント:
コメントを投稿