Gauche:MacOSX

Gauche:MacOSX

Intel Mac (Darwin 9.0.0, Mac OS 10.5 Build 9A581 / Xcode 3.0)

えんどう 2007/10/27 10:04:00 PDT Gauche CVS HEADをビルドすると以下のエラーが発生します。Boehm GC関係?

for d in gc src lib ext doc; do (cd $d; make all); done
Making all in doc
make[2]: Nothing to be done for `all'.
Making all in include
make[2]: Nothing to be done for `all'.
source='darwin_stop_world.c' object='darwin_stop_world.lo' libtool=yes \
        DEPDIR=.deps depmode=none /bin/sh ./depcomp \
        /bin/sh ./libtool --mode=compile gcc -DPACKAGE_NAME=\"gc\" -DPACKAGE_TARNAME=\"gc\" -DPACKAGE_VERSION=\"6.8\" -DPACKAGE_STRING=\"gc\ 6.8\" -DPACKAGE_BUGREPORT=\"Hans.Boehm@hp.com\" -DGC_VERSION_MAJOR=6 -DGC_VERSION_MINOR=8 -DPACKAGE=\"gc\" -DVERSION=\"6.8\" -DGC_DARWIN_THREADS=1 -DSTDC_HEADERS=1 -DHAVE_SYS_TYPES_H=1 -DHAVE_SYS_STAT_H=1 -DHAVE_STDLIB_H=1 -DHAVE_STRING_H=1 -DHAVE_MEMORY_H=1 -DHAVE_STRINGS_H=1 -DHAVE_INTTYPES_H=1 -DHAVE_STDINT_H=1 -DHAVE_UNISTD_H=1 -DHAVE_DLFCN_H=1 -DSILENT=1 -DNO_SIGNALS=1 -DNO_EXECUTE_PERMISSION=1 -DALL_INTERIOR_POINTERS=1 -DJAVA_FINALIZATION=1 -DGC_GCJ_SUPPORT=1 -DATOMIC_UNCOLLECTABLE=1 -DDONT_ADD_BYTE_AT_END=1 -DLARGE_CONFIG=1 -I./include   -fexceptions -g -O2 -fexceptions  -c -o darwin_stop_world.lo darwin_stop_world.c
rm -f .libs/darwin_stop_world.lo
gcc -DPACKAGE_NAME=\"gc\" -DPACKAGE_TARNAME=\"gc\" -DPACKAGE_VERSION=\"6.8\" "-DPACKAGE_STRING=\"gc 6.8\"" -DPACKAGE_BUGREPORT=\"Hans.Boehm@hp.com\" -DGC_VERSION_MAJOR=6 -DGC_VERSION_MINOR=8 -DPACKAGE=\"gc\" -DVERSION=\"6.8\" -DGC_DARWIN_THREADS=1 -DSTDC_HEADERS=1 -DHAVE_SYS_TYPES_H=1 -DHAVE_SYS_STAT_H=1 -DHAVE_STDLIB_H=1 -DHAVE_STRING_H=1 -DHAVE_MEMORY_H=1 -DHAVE_STRINGS_H=1 -DHAVE_INTTYPES_H=1 -DHAVE_STDINT_H=1 -DHAVE_UNISTD_H=1 -DHAVE_DLFCN_H=1 -DSILENT=1 -DNO_SIGNALS=1 -DNO_EXECUTE_PERMISSION=1 -DALL_INTERIOR_POINTERS=1 -DJAVA_FINALIZATION=1 -DGC_GCJ_SUPPORT=1 -DATOMIC_UNCOLLECTABLE=1 -DDONT_ADD_BYTE_AT_END=1 -DLARGE_CONFIG=1 -I./include -fexceptions -g -O2 -fexceptions -c darwin_stop_world.c  -fno-common -DPIC -o .libs/darwin_stop_world.lo
darwin_stop_world.c: In function 'GC_push_all_stacks':
darwin_stop_world.c:107: error: 'i386_thread_state_t' has no member named 'esp'
darwin_stop_world.c:109: error: 'i386_thread_state_t' has no member named 'eax'
darwin_stop_world.c:110: error: 'i386_thread_state_t' has no member named 'ebx'
darwin_stop_world.c:111: error: 'i386_thread_state_t' has no member named 'ecx'
darwin_stop_world.c:112: error: 'i386_thread_state_t' has no member named 'edx'
darwin_stop_world.c:113: error: 'i386_thread_state_t' has no member named 'edi'
darwin_stop_world.c:114: error: 'i386_thread_state_t' has no member named 'esi'
darwin_stop_world.c:115: error: 'i386_thread_state_t' has no member named 'ebp'
make[2]: *** [darwin_stop_world.lo] Error 1
make[1]: *** [all-recursive] Error 1
make[1]: *** No rule to make target `../gc/libgc.la', needed by `libgauche.dylib'.  Stop.

Intel Mac (Darwin 8.7.1, Mac OS 10.4.7 Build 8J2135a / Xcode-2.4)

(2006/08/10 22:46:27 PDT): WWDCの開催に合わせて公開されたXcode-2.4をインストールしてGaucheをビルドすると、Boehm-gcのテストが失敗します。

gnumake  check-TESTS
thread_get_state failed
FAIL: gctest
==================================
1 of 1 tests failed
Please report to Hans.Boehm@hp.com
==================================
gnumake[3]: *** [check-TESTS] Error 1
gnumake[2]: *** [check-am] Error 2
gnumake[1]: *** [check-recursive] Error 1

Gaucheそのもののmake checkは通るのですが、インストールしてmake install-checkすると、threadsのテストでやはり thread_get_state failed で落ちます。Xcode-2.3に戻して再ビルド/インストールするとこの現象は起きません。Xcode-2.4に含まれているGCCは

% gcc --version
i686-apple-darwin8-gcc-4.0.1 (GCC) 4.0.1 (Apple Computer, Inc. build 5363)
Copyright (C) 2005 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

です。しばらくはXcode-2.3のままにしておいた方がよさそうです。

Intel Mac (Darwin 8.5.2, Mac OS 10.4.5 Build 8H1455)

Gauche:NetBSDにあったびさんのBoehm GC 6.7へのパッチをGauche CVS HEADにあてたらmake checkすべてpassしました。

Intel Mac (Darwin 8.5.1, Mac OS 10.4.5)

http://www.hpl.hp.com/hosted/linux/mail-archives/gc/2006-February/001160.html

を Gauche-0.8.6 に当てたら動いた。 Gauche-gl は configure.in の powerpc-apple-darwin* を *-apple-darwin* に置き換えて autoconf し直したら動きました。

Tiger

CVS HEADはとりあえず問題なくmakeもmake checkも通りました。(2005/04/30 17:03:21 PDT)

-この問題は解決済みの模様

Pthreads

ねるWiki:ねる Boehm GC を Darwin の pthreads上でも動くように hack してみました。パッチはこちら。テストはすべて通りますが、運用していないので安定するかどうかは良くわかりません。

Boehm GC が新バージョンになったため(?)、0.8.3をpthreads 上で使おうとすると以下のようなエラーがでてリンクできません。

ld: Undefined symbols:
_GC_darwin_register_mach_handler_thread
/usr/bin/libtool: internal link edit command failed
make[1]: *** [libgauche.dylib] Error 1

ソケット関係

sockaddr_in6

2003/11/16 21:49:40 PST IPv6を有効にしてconfigure && makeすると、make checkで以下のようなエラーが発生します。

Testing net ...                                                  failed.
discrepancies found.  Errors are:
test sockaddr_in6: expects #t => got #f

57行目の(sockaddr-name addr)が[2001:200::8002:203:47ff:fea5:3085]:23を返すのが原因です。 確かにNetBSDなどは[2001:200:0:8002:203:47ff:fea5:3085]:23を返しますが、OS Xが返す値は間違いと言ってしまっていいのかちょっと疑問が残ります。しばらく前のCVS HEADからこうなっていたと思います。10.2.8、10.3、10.3.1のいずれでも発生します。

socklen_t

--enable-ipv6をつけてconfigure && make すると、ext/net/net.c がコンパイルエラーとなります。 /usr/include/sys/socket.h を眺めた結果、'CPPFLAGS=-D_BSD_SOCKLEN_T_=u_int' をつけて configure すれば問題なくmakeでき、echo-server.scm に telnet ::1 3131 で接続できることはわかりました。ただ、対処の仕方がこれで正当なのかどうかはちょっと分かりません。

  • Shiro(2003/10/05 14:11:24 PDT): この問題、0.7.2でも出ますか?
  • CPPFLAGS=-D_BSD_SOCKLEN_T_=u_intなしで問題なくmakeできるようになりました。

ビルド関係

autoconf, aclocal

MacOSX 付属のものは -I (大文字のアイ)のかわりに -l (小文字のエル)を使う。(OS10.2 以前) OS10.3 では aclocal, autoconf は標準でついてきます。 aclocal はデフォルトで /usr/share/aclocal を見に行くので、Gauche の configure で --prefix=/usr とかやらない限り gauche.m4 を見つけてくれません。 -I オプションで幸せになれます。 なお autoconf, aclocal は CVS 上の最新版を追いかけたり、 Gauche の拡張ライブラリを開発したりする人が使うツールです。 普通にインストールして使うぶんにはそれがどうなってようが全く影響ありません。 ご安心ください。

texi2html

MacOSX 付属のもののバージョンは 1.57 でオプションが微妙に違う。 texi2html -number -menu -split_node gauche-refj.texi とやるとウェブ版と近い出力になる。

ダイナミックロード

Fink Project の dlcompat ライブラリを使う。(OS10.2 以前) dlcompatOpenDarwin のプロジェクトに移動しました。ライセンスはBSDラインセンス近似となります。 OS10.3 からは標準でこのライブラリがついてくるようになり特に何もしなくてもよくなりました。

拡張ライブラリ

Gauche-gl

ウインドウを開くプログラムはアプリケーション形式 *.app にしないとキーボード入力ができなかったり、うれしく無い。 正式なやり方ではないとおもうけど、一例

Gauche-gtk

FinkのGtkを使うと動く。でも、フォントが変更できなくて、漢字を見えない。Finkの問題でしょうか。

Gauche-sdl

FinkのSDLコンパイルするが、セグメンテーションフォルトが出る。まだネイティブのSDLでコンパイルできません。

あとは普通に ./configure && make でオッケイです。 iconv と gdbm はまだ試してません。

fink で gdbm と iconv を install して

 ./configure --with-local=/sw --with-rpath=/sw/lib --with-iconv=/sw --enable-multibyte=sjis
 make

で、iconv と gdbm が使えています。 -- nel

0.6.8+dlcompat最新版

どうも、dlcompatの新しいやつでは、拡張ライブラリのロードに失敗する ようです。Cのシンボル名の頭に '_' をつけるかつけないかに違いがあるみたい。 src/load.c 中の "_Scm_Init_" という定数の頭の'_' を取って下さい。 この問題は0.7では修正されます。(2003/05/25 14:44:26 PDT)

MacOSX について

More ...