From: Hidetoshi NAGAI Date: 2011-06-08T17:11:58+09:00 Subject: [ruby-dev:43678] Re: [ruby-core:36778] Re: 1.8.7 release next month 永井@知能.九工大です. From: Urabe Shyouhei Subject: [ruby-dev:43677] Re: [ruby-core:36778] Re: 1.8.7 release next month Date: Wed, 8 Jun 2011 15:18:43 +0900 Message-ID: <4DEF143E.4010800@ruby-lang.org> > 正直、 > > > extconf.rb/config_list.in については,Tcl/Tk のライブラリ (とコンパイ > > ルオプション) をどうやって見付けてくるかという部分ですので,1.8 系と > > 1.9 系とで共通にしておいて問題ありません. > > というのが、本当なのかどうかに関して、読みきれている自信がないのですね。 > いま、trunkを見ると > > % wc -l ext/tk/{extconf.rb,config_list.in} > 2029 ext/tk/extconf.rb > 41 ext/tk/config_list.in > 2070 total > > このくらいのボリュームがあるわけでして、上記日本語の説明文に対してこの実 > 装量はちょっと乖離しているように思います。永井さんを非難しているわけでは > なくて、私の力が及ばず、読みきれないので、本当にやってることそれだけなの > というのが、判断できてないわけです。 増築に増築を重ねてひどいことになってしまっている例の典型ですね. 申し訳ないです. 色々な OS の色々な場所にインストールされた色々なバージョンの Tcl/Tk ラ イブラリを (与えられた configure option による制約を満たしつつ) 捜して, native thread 対応の不整合が起きていないかをチェックして,Tcl/Tk ライ ブラリに合った compile option を設定して...等々,ものすごく泥くさい 処理が詰まってます. # tclConfig.sh / tkConfig.sh の特定の定義を見るだけで良いのなら,もう # 少し楽になるのですが,例えば MacOSX で X を使わない Aqua 版 Tk のく # せになぜか TK_XINCLUDES に必要な compile option が含まれているなどと # いうように,頭の痛い状況が多々存在しています. > したがいまして私がコード読みきるまでもうちょっと待ってくれというのが正直 > なところです。 釈迦に説法ではありますが,少しだけ触れておきます. config_list.in は,tk の extconf.rb で解釈する configure option の一覧 を管理するためのものです. 以前の ext/tk/extconf.rb は,tk 関係の configure option を変更しても Makefile が残っていると正しく再構築が行われませんでした. そこで extconf.rb を実行した際の tk 関係の option を config_list とい うファイルにに保存しておき,変更があった場合には Makefile や object ファ イルを消して Makefile を作りなおすように対策を施しました. extconf.rb の初めての実行では config_list が存在しませんから, config_list.in を初期値として読みこみます.結果として,このファイルに 書かれている configure option がチェック対象ということになります. 一度の make で確実に適切な Tcl/Tk ライブラリが選択されるなら,あるいは 古い Makefile と *.o ファイルとを消すのを厭わないなら,無くても良い仕 組みだと思いますが,それだときっと苦情が出ますよね?(^_^; # 昔の extconf.rb において,「configure option で指定できるんだから, # 必要に応じて指定してくれ」とどれだけ言っても,「自動で見付けてくれな # いのはけしからん!」と文句を言われてましたからねぇ... -- 永井 秀利 (nagai@ai.kyutech.ac.jp) 九州工業大学大学院情報工学研究院知能情報工学研究系知能情報メディア部門助教