proglog

主にプログラミングに関する断片的メモ

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だけでやりなおしてるけど、これも問題あるんだろうか。

あと、cygwinsjisで運用してるけど、それも関係あるのかな。
test段階でそれっぽいのがあったような。

実は、ここに至るまでもいろいろ紆余曲折が。
それは、また後でのっけようと思う。

そう言えば、cgiのディレクトリだけコピーして持ってくるば、と言う訳にもいかないか。