From: Usaku NAKAMURA Date: 2010-06-24T19:41:10+09:00 Subject: [ruby-dev:41711] [Bug #3473] make clear-installed-list Bug #3473: make clear-installed-list http://redmine.ruby-lang.org/issues/show/3473 起票者: Usaku NAKAMURA ステータス: Assigned, 優先度: Normal 担当者: Nobuyoshi Nakada, カテゴリ: build, Target version: 1.9.2 ruby -v: ruby 1.9.3dev (2010-06-24 trunk 28414) [i386-mswin32] .installed.listファイルを空にするために、common.mkのclear-installed-listターゲットで @set MAKE="$(MAKE)" > $(INSTALLED_LIST) なるものを実行していますが、遺憾ながらnmakeでは肝心のリダイレクト部が実行されません。 このこと自体はnmakeのバグだろうと思うのですが、結果としてinstallするたびにひたすら .installed.listへの追記が行われていってしまいます。 (私の場合、.installed.listが40MBを越えるサイズになっていたのでこの問題に気付きました) で、例えば @exit > $(INSTALLED_LIST) にでもすれば問題は解決するのですが、なかださんによると、 * set MAKE= の部分には意味はない * コマンドが$(MAKE)を含んでいると、make -n であってもそのコマンドが実行される * make -n install で実際のインストールなしで.installed.listを作りたいのでこうしている という話でした。 ですが、私の実験した限り、NetBSDのmake(いわゆるportable makeとして知られている物) では$(MAKE)があってもmake -nで実行されることはありませんでした。 思うに、これはGNU makeあたりに限定される挙動を利用しているのではないかと思います。 というわけで、 (1) まず @set はやめて @exit にする (2) インストールなしで.installed.listを作る機能が欲しいならば別途それ用のターゲットを 準備する の2点を提案します。 分類としては(1)がプラットフォーム限定のBug、(2)がFeatureになるかと思いますが、 まあ分けるのもなんなのでセットで出しときます。 ---------------------------------------- http://redmine.ruby-lang.org