Feature #3657

make cleanがファイルを削除しすぎ

Added by taca (Takahiro Kambe) almost 2 years ago. Updated about 1 year ago.

[ruby-dev:41931]
Status:Closed Start date:08/05/2010
Priority:Normal Due date:
Assignee:naruse (Yui NARUSE) % 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

Revision 29130
Added by naruse (Yui NARUSE) over 1 year ago

* 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: リポジトリの状態に戻す
と戻るべき状態を定義し、そのように戻るように修正しました。

Also available in: Atom PDF