丁稚な日々

Rubyで遊んだ日々の記録。あくまで著者視点の私的な記録なので、正確さを求めないように。
Rubyと関係ない話題にはその旨注記しているはず。なので、一見関係無いように見える話題もどこかで関係あるのかもしれません。または、注記の書き忘れかもしれません...

[直前] [最新] [直後] [Top]

Sep.11,2002 (Wed)

Revision: 1.2 (Sep.11,2002 19:52)

[mswin32] Shim

_ たまたまircで話題になったので、これ幸いと飛びついてしまいました。
結果、とりあえず、mswin32でも普通にmakeできるようになりました。
バイナリパッケージ作成は、新しいバージョンがRAAに載ったら。

[mswin32]

_ リソースファイルの改名関係と、getpid()関係をcommit。

_ やっぱりWin9X系のテスト環境をちゃんと用意しなきゃダメです。
自宅にVirtualPC5を導入してみるかな。9/13発売、のはず。

[bccwin32]

_ bcc32/Makefile.sub内の、$(*:.exe=.res)$(*:.dll=.res)という依存関係が正しく処理されてないような気がします。

_ 手元のヘルプファイルを見ると、明示的展開では、$*はパス+ターゲットファイル名、ということになっているのですが、実は拡張子を含んでいない罠。
拡張子を含んだものは$@だ、ということなので、$(@:.dll=.res)としてみたところ、展開されませんでした。なんでやねん。

_ 仕方ないので、手で展開(*1)してみたところ、*.rcを生成してそこから*.resを作るところまでは行ったのですが、この*.resが*.exeや*.dllにリンクされません。むぎゅう。
よく見ると、*.exeや*.dllのルールには、*.resをリンクしろって書いてないようです。
んじゃ、その旨追加... と思ったら、bcc32.exeではリソースをリンクする方法はないのでした。がーん。

_ リンク指定を、ilink32.exeを使うように変更するのも一案ですが、BC5ではilink32.exeじゃなくてtlink32.exeだったような気がします。よってボツ。
ヘルプファイルによると、brc32.exeは単なるリソースコンパイラじゃなくて(*2)、リソースファイルの*.exeへのバインドも行うようです。
ということは、*.resを作ってから*.exe/*.dllを作るんじゃなくて、*.exe/*.dllを作ってからbrc32.exeでリソースをくっつければいいわけですね。

_ では早速... と試してみたところ... ... くっつかないんですが???
いちおう、なんかリンクしにはいってるようなんですけど、最終的にファイルが書き換わりません。なぜだー!

_ というわけで、今日の結論。
私にはbccwin32版は難しすぎるようです(よわっ)。

resolv.rb

_ NT系レジストリのDataBasePathを見て、あればそこのhostsを使い、なければ%windir%\hostsを使う、という方向で考えてますが、どうでしょう?

_ NT系レジストリを見るのは、これがあればNT系だと断定できるから。
よって、そこにhostsがなければエラーでいいと思います。
%windir%\hostsを後で見るのは、Win9Xに%windir%\system32\drives\etcなんてディレクトリを掘ってそこにhostsを置く人はいないと思うのですが、間違えてNT系で%windir%にhostsを置いてる人はいるような気がするためです。さほど役には立たなさそうですが。

_ それはそれとして、nameserverとかsearchとか拾ってくる方が問題になってますね([ruby-win32:315]からのスレッド)。
どうしたものやら。

付記

(*1) 手で展開
といっても3つだけなのでたいした手間ではない。

(*2) brc32.exeは単なるリソースコンパイラじゃなくて
単なるリソースコンパイラとしてはbrcc32.exeが存在するらしい。

Sep.12,2002 (Thu)

Revision: 1.1 (Sep.12,2002 14:04)

[mswin32]

_ shim-20020912。
本体もなんか落ち着いたような気がするので、ついでに更新。1.6.8はまだかにゃ。

_ というわけで、StringIO欲しかった人はShimから抜いてね、なんだけど、遅すぎてもういらなさそうだな...

Sep.13,2002 (Fri)

Revision: 1.1 (Sep.13,2002 19:23)

Sep.17,2002 (Tue)

Revision: 1.2 (Sep.17,2002 10:34)

連絡

_ 復帰しました。
メール溜まりすぎ。

[mswin32] target

_ もうご存知かもしれませんが、1.7だと、configure.batでi[3-6]86のどれを指定しようと、RUBY_PLATFORMはi386-mswin32になるです。つまり、Cygwin・MinGWと同じ(にしてあるつもり)。
configureの指定は何に影響するかというと、コンパイルオプションですね。

_ ... と、win32/README.win32に書くべきなのか。うぅ、英語が...

[mkmf.rb] わかりやすいログ

_ ちょっと感動しました。

_ それはそれとして、ひょっとして/libpath対応もやって下さってるのでしょうか。すみませんすみません。
落ち着いたら私もやりますです。

Sep.18,2002 (Wed)

Revision: 1.4 (Sep.18,2002 08:25)

[dosish] File.join

_ IRCでknuさんがFile::ALT_SEPARATORを使うFile.joinはないのか、とおっしゃっておられた。
File.join(ary).gsub(%r(/), File::ALT_SEPARATOR)とかary.join(File::ALT_SEPARATOR)とか言ってみたけれど、確かになんか欲しい気がするですね。私は前者をよく使ってますが、長過ぎ。
File.joinよりは、パス中のFile::SEPARATORFile::ALT_SEPARATORの相互変換メソッドが欲しいかなぁ。いい名前が思いつかないですが。

[mkmf.rb] -libpath:

_ cl.exeは、/link以降は全部link.exeに渡すオプションとして扱っちゃうので、実はlink_commandも結局個別対応が必要だったり、とかあったりしますです。
えーと、

def link_command(ldflags, opt="")
  if $mswin
    "#$CC #{OUTFLAG}conftest #$INCFLAGS -I#{$hdrdir} " +
    "#$CPPFLAGS #{CFLAGS} #$CFLAGS #{CONFIG['LDFLAGS']} #$LDFLAGS " +
    "#{CONFTEST_C} #{opt} #$LOCAL_LIBS #{CONFIG['LIBS']} -link #{ldflags}"
  else
    "#$CC #{OUTFLAG}conftest #$INCFLAGS -I#{$hdrdir} " +
    "#$CPPFLAGS #{CFLAGS} #$CFLAGS #{CONFIG['LDFLAGS']} #$LDFLAGS " +
    "#{ldflags} #{CONFTEST_C} #{opt} #$LOCAL_LIBS #{CONFIG['LIBS']}"
  end
end

こんな感じ。なんか嫌ですねぇ。

_ ん? この時点で$LDFLAGSって何が入ってるのかしらん。
その内容物によっては、これも-linkの後ろに持ってかないといけないです。


被捕捉アンテナ類
[\ay antenna (testing)] [Ant] [Antenna-Julia] [LayserあんてなV2] [nAntenna] [nuance de Antenna] [Rabbit's Antenna] [Read List] [Ruby hotlinks 五月雨版 (るるりん。)] [してたま (私的アンテナ with たまてばこ)] [ただのあんてな] [ちゃらんぽらん] [でこぽんリンク] [なよろアンテナ] [にっきトレーサー] [偽善者あんてな - 2nd season -] [湘南日記放送局(SDB)] [はてなの各アンテナ]