[mew-dist 18096] Makefile に「PWD=」を追加
Motohiko Minakuchi
zxcv at example.com
2001年 7月 17日 (火) 01:29:34 JST
水口@京都 と申します。
Mew 2.0 pre2/3 のトップディレクトリの Makefile ですが、Cygwin環境で
make する場合にちょっとした問題があります。問題回避のため、『PWD=』と
いう1行を追加して頂けないでしょうか。
この変更で、トップディレクトリでの make info が
> MeadowNT.exe -batch -q -no-site-file -l texinfmt \
> -f batch-texinfo-format mew.texi
> >> c:/var/unar/mew-2.0pre2.tar/mew-2.0pre2/mew.texi does not exist!
^^^^ おかしいでしょ?
なるエラーで止るのを回避できます。
From: 小関 吉則 (KOSEKI Yoshinori) <kose at example.com>
Subject: [mew-win32 03332] Re: make info fail
Date: Mon, 16 Jul 2001 14:11:34 +0900
> 詳しくは
>
> http://lists.airs.net/semi-gnus/archive/200101/msg00057.html
>
> のスレッドを見てください。
>
> 結局 T-gnus では Makefile.in (Makefile) に
>
> # It may be needed for Meadow/NTEmacs when sh.exe is used for SHELL.
> # Because Meadow/NTEmacs will get the value of the current-directory from
> # the environment variable PWD, but sh.exe will not take care of it even
> # if the current-directory has changed. So we should invalidate it.
> PWD=
>
> を入れてもらいました。Mew もこの対処方法が良いと思います。
>
> 水口> # Meadow以外の EmacsOnWindows については、良く知りません。
>
> NTEmacs でも、もちろん最新の 21.0.104 でも同様です。
ということなので、UNIX環境でも害は無いことを期待したいのですが、いかが
なものでしょうか?
Windows版Emacs のバグと言えばそうなのかも知れませんが、この問題を知ら
ないユーザーには重大な障壁だと思うので、install先等の誰でも思い付く修
正をすれば使える Makefile にして頂けるとありがたいです。
「PWD=」の対案として「SHELL=bash」もありますが、UNIX環境に影響があるの
でコメントにせざるを得ません。やはり「PWD=」が良いと思います。
問題の原因ですが、cygwin-jpn ML で わたなべさんに教えて頂いた内容を今
回の話題向けにまとめてみました。
Emacs は起動時のカレントディレクトリを PWD環境変数から得ることがありま
す。正確には、「.」と「$PWD」が同一 i-node のときに PWD環境変数の内容
を信頼して使用します。(高速化のテクニックだそうです)
ところが、Windows上の Emacs は i-node 判定ができない(しっかりエミュレー
トしてない)ので、有害な方向に誤判断する場合があります。
いま、Cygwin環境で bash.exe から sh.exe を起動したとします。bash は
PWD変数を保守しますが sh は保守しません。つまり、sh 中で cd が発行され
てもPWD変数は sh 起動時の内容が保持されます。 この状態で Emacs を起動
すると、カレントディレクトリの誤認が起り得ます。
Mew の Makefile の infoターゲットの処理である
> cd info; $(MAKE) xxxx EMACS=$(EMACS)
ですが、bash から make を起動した場合には
bash -> make -> sh(cd実行) -> make -> Emacs
の様にサブプロセスが起動され、カレントディレクトリの誤認が起り得る条件
なのです。
--
水口 元彦 (みなくち もとひこ)
zxcv at example.com
Mew-dist メーリングリストの案内