Feature #3657

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

Added by Takahiro Kambe almost 5 years ago. Updated over 4 years ago.

[ruby-dev:41931]
Status:Closed
Priority:Normal
Assignee:Yui NARUSE

Description

=begin
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で再現することを確認しています。
=end

History

#1 Updated by Takahiro Kambe almost 5 years ago

=begin
逆に、以下のファイルは make clean で削除されません。但し、削除すべきと主張しているわけではありません、単なる追加情報です。

config.log
config.status
enc.mk
prelude.c
rbconfig.rb

configureの作成するファイルと make clean での扱いは覚えていませんが。
=end

#2 Updated by Yusuke Endoh almost 5 years ago

  • Target version changed from 1.9.2 to 2.0.0

=begin
遠藤です。

2010年8月5日16:49 Takahiro Kambe redmine@ruby-lang.org:

  1. 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
=end

#3 Updated by Takahiro Kambe almost 5 years ago

=begin

申し訳ないのですが、make clean は開発者向けのコマンドなので、
tarball で実行することが想定されていません。なので現時点では
仕様です。
何と。

一般的に配布されているソフトウェアのMakefileのターゲットと著しい乖離を感じます。

厳しく言えば、個々のファイルが開発から配布のどの段階で必要なのか、といったことが
把握できていないのではないでしょうか。

少なくとも 1.9.2 では変更しません。1.9.x の feature にして
おきます。
はい、これ自体は納得です。

=end

#4 Updated by Shyouhei Urabe almost 5 years ago

=begin

一般的に配布されているソフトウェアのMakefileのターゲットと著しい乖離を感じます。

同意します。

厳しく言えば、個々のファイルが開発から配布のどの段階で必要なのか、といったことが
把握できていないのではないでしょうか。

思うに、人間様がそんなことをわざわざ把握しないといけない仕組みなのが根本的間違いです。
機械的に管理されるべきだと思います。

# 無論、いますぐmake捨てろとまでは言いませんが。長期的には手書きはやめたい。
=end

#5 Updated by Yui NARUSE almost 5 years ago

=begin
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

=end

#6 Updated by Shyouhei Urabe almost 5 years ago

  • Status changed from Open to Assigned
  • Assignee set to Yui NARUSE

=begin

=end

#7 Updated by Yui NARUSE almost 5 years ago

  • Status changed from Assigned to Closed
  • % Done changed from 0 to 100

=begin
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.

=end

#8 Updated by Yui NARUSE almost 5 years ago

=begin
make clean: tarball展開時に戻す
make distclean: リポジトリの状態に戻す
と戻るべき状態を定義し、そのように戻るように修正しました。
=end

Also available in: Atom PDF