shelarcy
shela****@capel*****
2004年 7月 10日 (土) 08:15:27 JST
On Fri, 09 Jul 2004 08:45:48 -1000 (HST), Shiro Kawai <shiro****@lava*****> wrote: >> patch どうでしたでしょうか? >> shiro さんの環境が回復してから音沙汰がないので気になるのですが……? > > ああすみません。うちでWindowsを走らせるというのはかなりの努力が > 必要なんです。 了解です。やれる分だけやって、分からないところを尋ねるといういつもの調 子でやっていきます。 > 実際に試すにはMinGWの環境を整えないとならないんで、今のところ > patchを眺めただけですが、ちゃんとやるのは道遠しって感じがします。 > ただ、とりあえず走らせるだけならport関係さえ何とかすれば何とか > なりそうですね。 > > 気がついたところをいくつか。 > > - portの出力関係はスタブが入ってるだけ (何でもかんでもOutputDebugString) > なんで、replが欲しければここをちゃんと書かないとだめですね。 もしや、と思ってスタブを外してみたらうまく動きました。 元の patch での GUI アプリケーション生成の際に障害が出ていたということな のかな? C:\develop\Gauche-0.8\boost>gosh *** ERROR: unbound variable: sys-access Stack Trace: _______________________________________ 0 (sys-access dotfile F_OK) At line 145 of "../lib/gauche/interactive.scm" WARNING: couldn't load gauche.interactive +(if "!defined(WIN32_NATIVE)" (define-cproc sys-access (pathname::<string> amode::<int>) "int r; if (geteuid() != getuid() || getegid() != getgid()) { Scm_Error(\"cannot use sys-access in suid/sgid program.\"); } SCM_SYSCALL(r, access(Scm_GetStringConst(pathname), amode)); - SCM_RETURN((r == 0)? SCM_TRUE : SCM_FALSE);") + SCM_RETURN((r == 0)? SCM_TRUE : SCM_FALSE);")) これで逃げているのがよくないんですよね。……でも、geteuid、getuid、 getegid、getgid あたりって存在しないし…… > - boostを使うなら、いずれ本筋のMakefile.inとboost/Jamfileのsyncを取る > 方法を考えないとまずいですね。ソースファイルに変更があったときに両方を > 直すのは避けたいですから。同様にconfig.hについても、別に持ってしまうと > config.n.inの変更に追従できないですから、自動生成の方法を考える必要が > あります。まあconfigureだけcygwinかMSYSで走らせればいいわけですが。 そのあたりはちゃんとしたものが出来上がったら shiro さんにやってもらいた いと思います。autotools 使えないので……。 > - signal関係はもう少し綺麗な方法がありそうな気もします。SIGINTが使える > のだから、Windows無いでもシグナルマスクを制御する何らかの方法がある > はずですよね? Scm_SigCheck内でSIGPROCMASKを消してますが、ここは > どうにかしてsignalをブロックする必要があります。 見たところ存在するのは #define SIGINT 2 /* Interactive attention */ #define SIGILL 4 /* Illegal instruction */ #define SIGFPE 8 /* Floating point error */ #define SIGSEGV 11 /* Segmentation violation */ #define SIGTERM 15 /* Termination request */ #define SIGBREAK 21 /* Control-break */ #define SIGABRT 22 /* Abnormal termination (abort) */ #define SIG_DFL ((__p_sig_fn_t) 0) #define SIG_IGN ((__p_sig_fn_t) 1) #define SIG_ERR ((__p_sig_fn_t) -1) #define NSIG 23 /* maximum signal number + 1 */ _CRTIMP __p_sig_fn_t __cdecl signal(int, __p_sig_fn_t); _CRTIMP int __cdecl raise (int); のようですが、これでどうにかなるのかな? signal 関係良く分からない……。 > - bignum.c冒頭のallocaまわりのパッチがよく分からないんですが、今のだと > ちょっとまずくないかしら。 そのあたりは、元の patch がそうなってたからそうしたという形なので、直す 必要があれば直します。 -- shelarcy <shela****@capel*****> http://page.freett.com/shelarcy/