OS2/emx/ruby/porting/1.8.5

/OS2/emx/ruby/porting/1.8.5

てきとうにメモ。 (現状では 1.8.5-p12 あたりの話)

Index

作業状況

バイナリはこっちに捨てる予定。 未定。

…いまのところなにもないです。

チラシの裏

まあ 1.8.4 時代とだいたい同じようなことなんですが、(自分が書いたチラシの裏を読み直しても)あんまり思い出せなかった。ヒドス。

いま思いついたことだけ書いておく。

  • コア部分に関しては 1.8.4 時代より修正は少なくてすむ。拡張ライブラリを見捨ててもいいなら、たぶん missing/os2.c の修正だけですむ(でも警告がむやみと出る。gcc 2.8.1 だから?)。
  • rb_f_system (process.c) -> do_spawn (missing/os2.c): missing/os2.c の do_spawn が問答無用でシステムのシェル(%RUBYSHELL%, %SHELL%, %COMSPEC%)を使う。unix 系のシェルが指定されていると拡張ライブラリの make 時に引数が勝手に展開されて正しいディレクトリに展開されない。 実行プログラムが OS/2 バイナリか否か判定して、バイナリじゃないときとシェル方面のメタ文字使ってるときだけシェルを使うようにするのが無難ですかね…。
  • openssl 方面をテストしてるときのデッドロックがなあ…たぶん 1.8.4 の頃と変わってないと思うし…
  • omf ビルド、それからコア部分の DLL 化。(win32 版や emx 版 python のように)。標準の EMX 開発環境だとダメかもわからんですね。
    • 生成されるスタティックライブラリ(*.lib)が emx/lib 内のライブラリ名とかぶらないようにする。たぶんスクリプト(configure 方面、make 時に使う *.rb)をあれこれする必要あり。
    • link386 じゃないリンカ(wlink)を使ってみる。emxomfld を修正(ってレベルじゃねえぞ)。
    • emx 標準の gcc を捨て、Innotek GCC に移行。Warp V3 以下のひとはさやうなら。