CygwinでGaucheのtrunkをビルドしてみる
結論からいうと、現在のところ、成功していない。
trunkのリビジョンは7112
現在使っている、リリースのGauche 0.9がそのままシステムにある状態でビルド作業をしている。
make時のエラーは以下の通り。
GAUCHE_LOAD_PATH="" GAUCHE_DYNLOAD_PATH="" gosh -l./preload -I../src -I../lib ./precomp -D LIBGAUCHE_BODY compile.scm make[1]: *** [compile.c] Segmentation fault (core dumped)
match.scm
make[2]: Entering directory `/home/someone/devel/cygwin/gauche/trunk/ext/util' ../../src/gosh -ftest ../../src/precomp -e -P -o util--match ../../libsrc/util/match.scm Error in compiling (define (genmatch x clauses match-expr) (let* ((length>= (gensym)) (eb-errf (error-maker match-expr)) (blist (car eb-errf)) (plist (map (lambda (c) (let* ((x (bound (validate-pattern (car c)))) (p (car x)) (bv (cadr x)) (bindings (caddr x)) (code (gensym)) (fail (and (pair? (cdr c)) (pair? (cadr c)) (equal? (caadr c) '=>) (symid? (cadadr c)) (pair? (cdadr c)) (null? (cddadr c)) (pair? (cddr c)) (cadadr c))) (bv2 (if fail (cons fail bv) bv)) (body (if fail (cddr c) (cdr c)))) (set! blist (cons `(,code (lambda ,bv2 ,@body)) (append bindings blist))) (list p code bv (and fail (gensym)) #f))) clauses)) (code (gen x '() plist (cdr eb-errf) length>= (gensym)))) (unreachable plist match-expr) (inline-let `(let ((,length>= (lambda (n) (lambda (l) (>= (length l) n)))) ,@blist) ,code)))) *** ERROR: Compile Error: unbound variable: ivec "../../libsrc/util/match.scm":211:(define (genmatch x clauses match-ex ... Stack Trace: _______________________________________ 0 (compile-toplevel-lambda form name args body (compile-module)) [unknown location] 1 (compile form (compile-module)) At line 483 of "../../lib/gauche/cgen/precomp.scm" 2 fn 3 (port-fold compile-toplevel-form '() read) At line 202 of "../../lib/gauche/cgen/precomp.scm" 4 (with-input-from-file src (cut emit-toplevel-executor (reverse (po ... At line 200 of "../../lib/gauche/cgen/precomp.scm" 5 (do-it src ext-initializer sub-initializers) At line 193 of "../../lib/gauche/cgen/precomp.scm" 6 tmp 7 (cgen-precompile src :out.c out.c :out.sci (or out.sci ext-module) ... [unknown location] make[2]: *** [util--match.c] Error 70
srfi-13
make[2]: Entering directory `/home/someone/devel/cygwin/gauche/trunk/ext/srfi' ../../src/gosh -ftest ../../src/precomp -e -i srfi-13.sci ../../libsrc/srfi-13.scm Error in compiling (define (string-every c/s/p s . args) (let* ((src (open-input-string (apply %maybe-substring s args))) (pred (%get-char-pred c/s/p))) (let loop ((ch (read-char src)) (r #t)) (cond ((not r) #f) ((eof-object? ch) r) (else (loop (read-char src) (pred c/s/p ch))))))) *** ERROR: Compile Error: unbound variable: ivec "../../libsrc/srfi-13.scm":101:(define (string-every c/s/p s . args ... Stack Trace: _______________________________________ 0 (compile-toplevel-lambda form name args body (compile-module)) [unknown location] 1 (compile form (compile-module)) At line 483 of "../../lib/gauche/cgen/precomp.scm" 2 fn 3 (port-fold compile-toplevel-form '() read) At line 202 of "../../lib/gauche/cgen/precomp.scm" 4 (with-input-from-file src (cut emit-toplevel-executor (reverse (po ... At line 200 of "../../lib/gauche/cgen/precomp.scm" 5 (do-it src ext-initializer sub-initializers) At line 193 of "../../lib/gauche/cgen/precomp.scm" 6 tmp 7 (cgen-precompile src :out.c out.c :out.sci (or out.sci ext-module) ... [unknown location] make[2]: *** [srfi-13.c] Error 70
gettext.scm
make[2]: Entering directory `/home/someone/devel/cygwin/gauche/trunk/ext/text' ../../src/gosh -ftest ../../src/precomp -e -P -o text--gettext ./gettext.scm make[2]: *** [text--gettext.c] Segmentation fault (core dumped)
make testは
make test Total: 9625 tests, 9624 passed, 1 failed, 3 aborted.
強引にインストールして使うと、すぐさま落ちる。
ちなみにリリースの0.9でもこんなもんだけど、いろいろ動いてる。
以下、諸元
Cygwin DLL version info: DLL version: 1.7.5 gcc-4 (GCC) 4.3.4 20090804 (release) 1 CC="gcc-4 -std=gnu99" CFLAGS="-march=pentium4 -msse2 -O2"
configureの結果は
This Gauche has been configured with the following parameters: version: 0.9.1_pre1 multibyte: utf8 slib: /usr/local/lib/slib thread: pthreads optional modules: odbm ndbm gdbm zlib
実は、autoconfの段階で「これは2.64用に作られたファイルだからだからやばいかもよ」、ってメッセージが出てた。
僕の環境にあるのは2.65。
これが気になるところ。
ビルド失敗するとmake cleanだけでやりなおしてるけど、これも問題あるんだろうか。
あと、cygwinをsjisで運用してるけど、それも関係あるのかな。
test段階でそれっぽいのがあったような。
実は、ここに至るまでもいろいろ紆余曲折が。
それは、また後でのっけようと思う。
そう言えば、cgiのディレクトリだけコピーして持ってくるば、と言う訳にもいかないか。