Haskell/__errno
真面目にHaskellを勉強しようと思ったので、ghciを起動。
$ ghci ___ ___ _ / _ \ /\ /\/ __(_) / /_\// /_/ / / | | GHC Interactive, version 6.2.2, for Haskell 98. / /_\\/ __ / /___| | http://www.haskell.org/ghc/ \____/\/ /_/\____/|_| Type :? for help. Loading package base ... linking ... /usr/local/lib/ghc-6.2.2/HSbase_cbits.o: unknown symbol `__errno' ghc-6.2.2: unable to load package `base' $
うえーん。ghcのビルド時間1時間30分を返せー(いま測った)。
てか変だね。これ。ghcの方はきちんと動いてるからdlfcnまわりの問題かなあ。
OpenBSD-cvs:src/sys/sys/errno.hの
#ifndef _KERNEL extern int errno; /* global error number */ #if !defined(errno) && !defined(_STANDALONE) #include <sys/cdefs.h> __BEGIN_DECLS int *__errno(void); int *___errno(void); __END_DECLS #define errno (*__errno()) #endif /* errno */ #endif /* _KERNEL */
あたりがあやしいのだが、どうすっかね。
ghc-6.2.2/libraries/base/include/HsBase.hの
/* Ultra-ugly: OpenBSD uses broken macros for sigemptyset and sigfillset (missing casts) */ #if __OpenBSD__ #undef sigemptyset #undef sigfillset #endif
が気になるので、 OpenBSD-cvs:src/include/signal.hを読む。 sigemptyset, sigfillset, sigaddset, sigdelset, sigismemberがぜんぶインライン関数になってる。
とりあえず、HsBase.hに
#undef sigaddset #undef sigdelset #undef sigismember
を追加してビルドしてみるか。
ううむ。違うか。
Comments