Mac OS X対応化計画 Part2
早速id:waturaさんから情報を得ましたので、修正作業を行いました。
(id:watura さんThanks!)
MacOSXでの拡張ライブラリ
MacOSXでは、拡張ライブラリの名称が「.so」ではなく「.bundle」という名称で作成されているらしい。
どなたか教えてください・・・。
・・・ということをPart1に書こうと思って見逃していました。失礼をばいたしました・・・。
【追記】
waturaさんによると、やっぱり「.bundle」で生成されているようです。
Mac OS Xでは、生成後の拡張ライブラリをコピーする際に、拡張子を.bundleでコピーするように修正しました。
ということで、install_miyako.rbを以下の様に修正します。
#(旧) if osn =~ /mswin|mingw|cygwin|bccwin/ ext_dir = "win/" else # linux, U*IX, MacOSX... system("cd idaten_miyako/ ; " + Config::CONFIG["ruby_install_name"] + " extconf.rb ; make ; cp idaten_miyako.so ../") system("cd miyako_no_katana/ ; " + Config::CONFIG["ruby_install_name"] + " extconf.rb ; make ; cp miyako_no_katana.so ../") end #↓(OS名がdarwinのときの処理を追加) #(新) if osn =~ /mswin|mingw|cygwin|bccwin/ ext_dir = "win/" elsif osn =~ /darwin/ # Mac OS X system("cd idaten_miyako/ ; " + Config::CONFIG["ruby_install_name"] + " extconf.rb ; make ; cp idaten_miyako.bundle ../") system("cd miyako_no_katana/ ; " + Config::CONFIG["ruby_install_name"] + " extconf.rb ; make ; cp miyako_no_katana.bundle ../") else # linux, U*IX... system("cd idaten_miyako/ ; " + Config::CONFIG["ruby_install_name"] + " extconf.rb ; make ; cp idaten_miyako.so ../") system("cd miyako_no_katana/ ; " + Config::CONFIG["ruby_install_name"] + " extconf.rb ; make ; cp miyako_no_katana.so ../") end
#(旧) Dir.glob(ext_dir + "*.so"){|fname| FileUtils.install(fname, sitelibdir, option)} #↓(OS名がdarwinのときの処理とで切り分け) #(新) if osn =~ /darwin/ # Mac OS X Dir.glob(ext_dir + "*.bundle"){|fname| FileUtils.install(fname, sitelibdir, option)} else # Windows, linux, U*IX... Dir.glob(ext_dir + "*.so"){|fname| FileUtils.install(fname, sitelibdir, option)} end
フォントパスの区切り文字
パスの区切り文字に「\」が混じっていると言うことですが・・・。
・・・おかしいなぁ、昔直した記憶があったのに・・・。と思ったら入ってなかった・・・。
ということで、「\」を「/」に書き直す処理を追加しました。
def Font.search_font_path_file(hash, path) #:nodoc: Dir.glob(path+"*"){|d| hash = Font.search_font_path_file(hash, d+"/") if test(?d, d) d = d.toutf8 if Miyako.getOSName == "mac_osx" # MacOSXはパス名がUTF-8固定のため d = d.tr("\\","\/") # これを追加! hash[$1] = d if (d =~ /\/([^\/\.]+\.tt[fc])\z/ || d =~ /\/([^\/\.]+\.otf)\z/) # MacOSX対応 } return hash end def Font.create_font_path #:nodoc: osn = Miyako::getOSName @@font_base_path[osn].each{|path| path = path.toutf8 if Miyako.getOSName == "mac_osx" # MacOSXはパス名がUTF-8固定のため path = path.tr("\\","\/") # これを追加! @@name_2_font_path = Font.search_font_path_file(@@name_2_font_path, path) } end
これでちゃんと動くかな?