Cygwinにて、netatalkのconfigureを実行中、Checking Berkeley DB libraryの辺りから挙動が怪しくなります:
checking Berkeley DB library (-ldb46)...
./configure: line 31862: cat: command not found
./configure: line 31865: cat: command not found
./configure: line 31866: cat: command not found
./configure: line 31889: rm: command not found
./configure: line 31919: sed: command not found
PATHが壊されているものと推測。
追求してみました。次の行で壊れています:
eval export $shlibpath_var=$bdblibdir
このshlibpath_varの出所は:
dynamic_linker='Win32 ld.exe'
# FIXME: first we should search . and the directory the executable is in
shlibpath_var=PATH
ここで壊れる原因を作っているようです。
取り敢えずの回避策につきましては、
aclocal.m4を修正します:
dynamic_linker='Win32 ld.exe'
# FIXME: first we should search . and the directory the executable is in
shlibpath_var=LIBPATH
PATHをLIBPATHに変えただけです。
この後、
autoconf
./configure --with-bdb=/usr/local
make
等でビルドを進めて行きます。
netatalk-3 の場合は、ちょっと下の『shlibpath_varの件は』を参照。
―――
bin/megatron/macbin.cの90行目辺り:
bin.gmtoff = tp->tm_gmtoff;
tm_gmtoffが無い、といわれた場合は、config.hのNO_STRUCT_TM_GMTOFFを定義する必要が有りそうです。
/* Define if the gmtoff member of struct tm is not available */
#define NO_STRUCT_TM_GMTOFF 1
本当は、configure.acを触って、cygwinの場合は、AC_DEFINE(NO_STRUCT_TM_GMTOFF)を加えるのがより良い方法と思いますが、今回はこれで。。。
―――
shlibpath_varの件は、/usr/share/aclocal/libtool.m4を修正した方が根本解決になるかもしれません。:
# FIXME: first we should search . and the directory the executable is in
shlibpath_var=LIBPATH
libtool.m4が無い場合は、Cygwinのsetup.exeでlibtoolを入れておきましょう
次に、再構築:
aclocal -I macros
autoconf
./configure --with-bdb=/usr/local
make
―――
NO_STRUCT_TM_GMTOFFの件は、configure.acを修正できます:
1箇所目。前後の文言で探して、太字部分を足す:
dnl --------------------- determine operating system from "target"
case "$host_os" in
...
*cygwin*) this_os=cygwin ;;esac
2箇所目。前後の文言で探して、太字部分を足す:
dnl ----- Cygwin specific -----
if test x"$this_os" = "xcygwin"; then
AC_MSG_RESULT([ * CYGWIN specific configuration])
AC_DEFINE(NO_STRUCT_TM_GMTOFF, 1, [Define if the gmtoff member of struct tm is not available])
fi
dnl ------ Check for sendfile() --------
次に、再構築:
autoconf
./configure --with-bdb=/usr/local
make
―――
checking whether to enable srvloc (SLP) support... no
./configure: line 15955: syntax error near unexpected token `AVAHI,'
macros/zeroconf.m4で、PKG_CHECK_MODULESが解決できないために出ている様です。
Cygwinのsetup.exeで、pkg-configを入れましょう。
―――
/bin/sh ../../libtool --tag=CC --mode=compile gcc -std=gnu99 -DHAVE_CONFIG_H -I. -I../.. -I../../include -D_U_="__attribute__((unused))" -g -O2 -I../../sys -MT cache.lo -MD -MP -MF .deps/cache.Tpo -c -o cache.lo cache.c
../../libtool: line 879: X--tag=CC: command not found
../../libtool: line 912: libtool: ignoring unknown tag : command not found
../../libtool: line 879: X--mode=compile: command not found
netatalk付属のlibtoolの挙動が怪しかったら、/bin/libtoolから持って来ましょう。
―――
うーむ。これは非常に興味深い。
返信削除はじめまして。
返信削除コメントありがとうございます! (^^
NTFSで使えない文字はどうするんだろうと思ってましたが、
返信削除Unicodeの私用領域に置換するので大丈夫みたいですね。
あと、cygwinはlibattrも用意してるので、ちゃんと動く可能性がありますね。
rootの権限とかはどうなるんでしょうか。
他のOSでのビルドに影響しないようなパッチを提供して頂ければ、本家に取り込みますが、どうですか。
ただし、netatalk 2.2.xは収束方向なので、やるとすればnetatalk 3.0になります。
コメントありがとうございます^^
返信削除実は、DHCAST128とDHX2の実装を調べるために(ぱくるために)、netatalkを利用させて頂いています。
そもそもCygwinで動くかどうかも、未だ判りません。
これから検証して行こうと思います^^;