[#45240] ruby-1.8.5-p231にアップデートしたら"original_filename"が取れなくなりました — hayashi <36hayashi@...>

林と申します。

9 messages 2008/07/18

[#45267] [ANN] Ruby 1.9.0-3リリース — "Yugui (Yuki Sonoda)" <yugui@...>

Yuguiです。

16 messages 2008/07/25

[ruby-list:45193] Re: ソース:インストール:MacOSX10.3.9

From: Hidetoshi NAGAI <nagai@...>
Date: 2008-07-04 21:53:32 UTC
List: ruby-list #45193
永井@知能.九工大です.

From: wei <weimayamiew@gmail.com>
Subject: [ruby-list:45192] Re: ソース:インストール:MacOSX10.3.9
Date: Sat, 5 Jul 2008 02:08:28 +0900
Message-ID: <064AC426-C05D-4454-9F23-56ACB1F9CCC7@gmail.com>
> 以下の環境で試しました。
> 
>    MacOSX 10.5.4 (intel mac)
>    Tcl/Tk 8.5.3
>    ruby 1.9.0-2

テストをありがとうございます.

>    tcltklib.cのpatchをあててビルド

[ruby-list:45146] の tcltklib.c の patch は
効果がないということですので,これは必要ありませんでした.
余計なお手間を取らせてしまい,すみません.

> この状態で
>    ext/tk/sample/demos-jp/widget
> を実行すると、天野さんの報告にあった、以下のエラーが出力され 
> ました。
> 
> % ruby widget
> Tk_MacOSXSetupTkNotifier: first [load] of TkAqua has to occur in the  
> main thread!
> Abort
> %
> 
> Tcl/Tkを手動でインストールする前は問題なく起動しております。
> つまり手動でインストールした事により、該当の現象が
> Intel Macでも起きました。

もしかして,手動インストールした Tcl/Tk は Aqua 版で,
以前から入っていたものは X Window System 版だったりしませんか?
そうであるなら,

> という事で、永井さんのメールにあった、
>    module TkCore; RUN_EVENTLOOP_ON_MAIN_THREAD = true; end
>    require 'tk'
> というようにrequireの前に持って来て実行した所、無事に起 
> 動しました。
> 
> という事で、
> ・Intel MacでもTcl/Tkによっては問題の現象が起きる
> ・問題の現象が起きてもmain threadで実行すれば解決する 
> (少くてもIntel Macでは)
> となりそうです。

ということから,Aqua 版の known bug として,
「Aqua 版の Tcl/Tk ライブラリを Ruby1.9 で用いる場合には,
  イベントループ (Tk.mainloop) はメインスレッドでしか実行できません」
ということにする必要がありそうです.

ただ,エラーメッセージ "first [load] of TkAqua" の "first" が
気になっているんですよね.
これがために [ruby-list:45146] の tcltklib.c の patch を
試してみていただいたのですが,ダメだったわけです.

今,思いついたテストとしては,
ダミーの Tcl/Tk インタープリタを生成してすぐに終了させることで,
無理やりに一度は TkAqua を main thread で読み込んでみる
というのがあります.
つまりは
---------------------------------------------------------
require 'tcltklib'
ip = TclTkIp.new
ip._eval('after 1 {destroy .}')
TclTkLib.mainloop
ip.delete
ip = nil  # for GC
require 'tk'
---------------------------------------------------------
などとしてみるという話です.
まぁ,まず間違いなくダメだとは思いますが...(^_^;
-- 
永井 秀利  (nagai@ai.kyutech.ac.jp)
九州工業大学 大学院情報工学研究院 知能情報工学研究系

In This Thread