Feature #3657
make cleanがファイルを削除しすぎ
| Status: | Closed | Start date: | 08/05/2010 | |
|---|---|---|---|---|
| Priority: | Normal | Due date: | ||
| Assignee: | % Done: | 100% |
||
| Category: | build | |||
| Target version: | 2.0.0 |
Description
rubyがインストールされていない環境で以下のような問題が起きます。 1. リリース版(rcやpreviewを含む)をダウンロード 2. configureとmakeを実行 3. makeが正常に完了した時点で"make clean"を実行 4. そのままか、または異なる引数でconfigureを実行した上で再度makeを実行 5. 以下のようなエラーでmakeは完了しない。 echo executable host ruby is required. use --with-baseruby option.; false ./tool/generic_erb.rb -c -o known_errors.inc ./template/known_errors.inc.tmpl ./defs/known_errors.def executable host ruby is required. use --with-baseruby option. *** Error code 1 Stop. 原因は"make clean"でリリースの配布ファイルに含まれている、以下のファイルを削除してしまうためです。(まだ、他にもあるかもしれません。) insns.inc insns_info.inc known_errors.inc node_name.inc opt_sc.inc optinsn.inc optunifs.inc もう一度、配布ファイルを展開してやり直せばいいのですが、面倒というよりもリリースのファイルを当てにしていると不便この上ありません。 なお、"ruby -v"の欄はたまたま現在インストールされているものを使って埋めただけで、1.9.2-rc2で再現することを確認しています。
Associated revisions
* common.mk (clean): exclude *.inc. [ruby-dev:41931]
* common.mk (distclean): include *.inc.
* common.mk (help): change description about clean and distclean.
History
Updated by taca (Takahiro Kambe) almost 2 years ago
逆に、以下のファイルは make clean で削除されません。但し、削除すべきと主張しているわけではありません、単なる追加情報です。 config.log config.status enc.mk prelude.c rbconfig.rb configureの作成するファイルと make clean での扱いは覚えていませんが。
Updated by mame (Yusuke Endoh) almost 2 years ago
- Target version changed from 1.9.2 to 2.0.0
遠藤です。 2010年8月5日16:49 Takahiro Kambe <redmine@ruby-lang.org>: > 3. makeが正常に完了した時点で"make clean"を実行 申し訳ないのですが、make clean は開発者向けのコマンドなので、 tarball で実行することが想定されていません。なので現時点では 仕様です。 確かどこかのメールで明言されていたはずです (が、そのメールが ぱっと見つからない。ひょっとして IRC の発言だったかなあ) 。 改善する (tarball でも make clean できるようにする) のに反対 ではありません。 ただ、tarball で make clean を日常的に試す人がいなければ、 メンテは期待できないかも知れません。 少なくとも 1.9.2 では変更しません。1.9.x の feature にして おきます。 -- Yusuke Endoh <mame@tsg.ne.jp>
Updated by taca (Takahiro Kambe) almost 2 years ago
> 申し訳ないのですが、make clean は開発者向けのコマンドなので、 > tarball で実行することが想定されていません。なので現時点では > 仕様です。 何と。 一般的に配布されているソフトウェアのMakefileのターゲットと著しい乖離を感じます。 厳しく言えば、個々のファイルが開発から配布のどの段階で必要なのか、といったことが 把握できていないのではないでしょうか。 > 少なくとも 1.9.2 では変更しません。1.9.x の feature にして > おきます。 はい、これ自体は納得です。
Updated by shyouhei (Shyouhei Urabe) almost 2 years ago
> 一般的に配布されているソフトウェアのMakefileのターゲットと著しい乖離を感じます。 同意します。 > 厳しく言えば、個々のファイルが開発から配布のどの段階で必要なのか、といったことが > 把握できていないのではないでしょうか。 思うに、人間様がそんなことをわざわざ把握しないといけない仕組みなのが根本的間違いです。 機械的に管理されるべきだと思います。 # 無論、いますぐmake捨てろとまでは言いませんが。長期的には手書きはやめたい。
Updated by naruse (Yui NARUSE) almost 2 years ago
2010年8月8日15:03 Shyouhei Urabe <redmine@ruby-lang.org>: >> 厳しく言えば、個々のファイルが開発から配布のどの段階で必要なのか、といったことが >> 把握できていないのではないでしょうか。 > > 思うに、人間様がそんなことをわざわざ把握しないといけない仕組みなのが根本的間違いです。 > 機械的に管理されるべきだと思います。 > > # 無論、いますぐmake捨てろとまでは言いませんが。長期的には手書きはやめたい。 で、automake はどうよという話が出ると、automake の生成するファイルのライセンスは どうなってるの?という疑問が出てくるわけですが、 "Automake places no restrictions on the distribution of the resulting Makefile.ins." と以下に書かれています。 http://www.gnu.org/software/hello/manual/automake/Distributing.html http://git.savannah.gnu.org/cgit/automake.git/tree/doc/automake.texi ついでにメモ http://git.savannah.gnu.org/gitweb/?p=autoconf.git;a=blob;f=COPYING.EXCEPTION http://git.savannah.gnu.org/cgit/libtool.git/tree/HACKING -- NARUSE, Yui naruse@airemix.jp
Updated by shyouhei (Shyouhei Urabe) over 1 year ago
- Status changed from Open to Assigned
- Assignee set to naruse (Yui NARUSE)
Updated by naruse (Yui NARUSE) over 1 year ago
- Status changed from Assigned to Closed
- % Done changed from 0 to 100
This issue was solved with changeset r29130. Takahiro, thank you for reporting this issue. Your contribution to Ruby is greatly appreciated. May Ruby be with you.
Updated by naruse (Yui NARUSE) over 1 year ago
make clean: tarball展開時に戻す make distclean: リポジトリの状態に戻す と戻るべき状態を定義し、そのように戻るように修正しました。