UIM.framework with current uim trunk

By ekato

UIM.framework 向けの uim trunk に対する diff です。パスとキーの細かい設定と、Rosetta 向けの小さな変更だけです。

Index: scm/skk-custom.scm
===================================================================
--- scm/skk-custom.scm	(revision 5027)
+++ scm/skk-custom.scm	(working copy)
@@ -386,8 +386,7 @@
 	 (lambda ()
 	   skk-use-skkserv?))

-(define-custom 'skk-dic-file-name (string-append (sys-datadir)
-						 "/skk/SKK-JISYO.L")
+(define-custom 'skk-dic-file-name "/Library/Dictionaries/SKK/SKK-JISYO.L"
   '(skk-dict dict-files)
   '(pathname regular-file)
   (N_ "System dictionary file")
Index: scm/tutcode-key-custom.scm
===================================================================
--- scm/tutcode-key-custom.scm	(revision 5027)
+++ scm/tutcode-key-custom.scm	(working copy)
@@ -53,7 +53,7 @@
 	       (N_ "[TUT-Code] off")
 	       (N_ "long description will be here"))

-(define-custom 'tutcode-kana-toggle-key '("<IgnoreShift>'")
+(define-custom 'tutcode-kana-toggle-key '("<IgnoreShift>'" "Private2")
                '(tutcode-keys1 mode-transition)
 	       '(key)
 	       (N_ "[TUT-Code] toggle hiragana/katakana mode")
Index: scm/generic-key-custom.scm
===================================================================
--- scm/generic-key-custom.scm	(revision 5027)
+++ scm/generic-key-custom.scm	(working copy)
@@ -41,13 +41,13 @@
 		     (N_ "long description will be here."))

-(define-custom 'generic-on-key '("zenkaku-hankaku" "<Shift> ")
+(define-custom 'generic-on-key '("zenkaku-hankaku" "<Shift> " "Private2")
                '(global-keys1)
 	       '(key)
 	       (N_ "[Global] on")
 	       (N_ "long description will be here"))

-(define-custom 'generic-off-key '("zenkaku-hankaku" "<Shift> ")
+(define-custom 'generic-off-key '("zenkaku-hankaku" "<Shift> " "Private1")
                '(global-keys1)
 	       '(key)
 	       (N_ "[Global] off")
Index: uim/prime.c
===================================================================
--- uim/prime.c	(revision 5027)
+++ uim/prime.c	(working copy)
@@ -61,7 +61,7 @@
 static FILE *primer, *primew;
 static pid_t prime_pid = 0;

-static char *prime_command = "prime";
+static char *prime_command = "/Library/PRIME/bin/prime";

 static char *prime_ud_path;
 static int prime_fd = -1;
Index: uim/uim-helper.c
===================================================================
--- uim/uim-helper.c	(revision 5027)
+++ uim/uim-helper.c	(working copy)
@@ -48,6 +48,8 @@
 #include <errno.h>
 #include <sys/stat.h>

+#include <libkern/OSByteOrder.h>
+
 #include "uim-internal.h"
 #include "uim-helper.h"
 #include "uim-util.h"
@@ -205,6 +207,9 @@
     perror("getpeereid failed");
     return -1;
   }
+  if (euid > INT32_MAX)
+    euid = OSSwapInt32(euid);
+
   if ((euid != 0) && (euid != getuid())) {
     fprintf(stderr, "uid mismatch\n");
     return -1;
Index: uim.pc.in
===================================================================
--- uim.pc.in	(revision 5027)
+++ uim.pc.in	(working copy)
@@ -1,6 +1,6 @@
 prefix=@prefix@
 exec_prefix=@exec_prefix@
-includedir=@includedir@
+includedir=@prefix@/Headers
 libdir=@libdir@
 datarootdir=@datarootdir@
 datadir=@datadir@
@@ -10,5 +10,5 @@
 Name: uim
 Description: multilingual input method library
 Version: @VERSION@
-Cflags: -I${includedir}/uim
-Libs: -L${libdir} -luim-scm -luim @LIBINTL@ @LIBICONV@
+Cflags: -I${includedir}
+Libs: -framework UIM

次は、fwbuild スクリプトの diff です。ごちゃごちゃどうでもいい差分も含んでますが (すみません)、要点は新しく加わった、libuim-scm.la と libuim-bsdlook.la も UIM.framework に加えるということです。

diff -r fa605af03302 UIM/fwbuild
--- a/UIM/fwbuild	Mon Jan 29 19:54:53 2007 +0900
+++ b/UIM/fwbuild	Sun Oct 14 14:13:56 2007 +0900
@@ -19,9 +19,9 @@ cp -fv ../version.plist.in version.plist
 cp -fv ../version.plist.in version.plist

 export MACOSX_DEPLOYMENT_TARGET="10.3"
-PATH="${prefix}/bin:/Library/Anthy/bin:/Library/PRIME/bin:/Library/M17NLib/bin:/bin:/usr/bin"
+PATH="${prefix}/bin:/Library/Anthy/bin:/Library/PRIME/bin:/Library/M17NLib/bin:/sw/bin:/bin:/usr/bin:"

-#PATH="/opt/macuim/bin:$PATH" ./autogen.sh || exit 1
+PATH="/opt/macuim/bin:$PATH" ./autogen.sh || exit 1

 perl -pi -e "s|\@VERSION\@|${version}|" *.plist
 perl -pi -e "s|\@BUILD\@|${build}|" *.plist
@@ -34,13 +34,16 @@ CFLAGS="-I/opt/macuim/include -I/Library
 CFLAGS="-I/opt/macuim/include -I/Library/M17NLib/include -I/Library/Anthy/include -isysroot /Developer/SDKs/MacOSX10.4u.sdk -arch i386 -arch ppc" \
 PKG_CONFIG="/opt/macuim/bin/pkg-config" \
 PKG_CONFIG_PATH="/Library/PRIME/lib/pkgconfig:/Library/Anthy/lib/pkgconfig:/Library/M17NLib/lib/pkgconfig" \
-./configure --prefix=${prefix} --exec-prefix=${prefix} --enable-debug \
+./configure --prefix=${prefix} --exec-prefix=${prefix} \
   --without-gtk2 --disable-fep --disable-applet \
-  --with-x --disable-dependency-tracking || exit 1
+  --without-x --disable-dependency-tracking \
+  --enable-maintainer-mode --disable-backtrace \
+  --disable-strict-argcheck \
+  --with-anthy-utf8 || exit 1

 perl -pi -e 's|-Werror||' uim/Makefile

-#mkdir -p ${dest}${prefix}/lib
+mkdir -p ${dest}${prefix}/lib

 cd sigscheme
 ln -s src/config.h .
@@ -58,6 +61,8 @@ gcc -dynamiclib -undefined dynamic_looku
 gcc -dynamiclib -undefined dynamic_lookup \
 -o uim/.libs/UIM \
 uim/.libs/libuim_la*.o uim/.libs/libuim_custom_la*.o replace/.libs/libreplace.a \
+uim/.libs/libuim_scm_la*.o \
+uim/.libs/libuim_bsdlook_la*.o \
 sigscheme/libgcroots/.libs/*.o \
 -L/opt/macuim/lib -liconv -ldl -lintl \
 -isysroot /Developer/SDKs/MacOSX10.4u.sdk -arch i386 -arch ppc \
@@ -68,6 +73,8 @@ cd uim

 perl -pi -e "s|^library_names=.*$|library_names='UIM'|" libuim.la
 perl -pi -e "s|^library_names=.*$|library_names='UIM'|" libuim-custom.la
+perl -pi -e "s|^library_names=.*$|library_names='UIM'|" libuim-scm.la
+perl -pi -e "s|^library_names=.*$|library_names='UIM'|" libuim-bsdlook.la

 make -w pkglibdir=${prefix}/pkglib || exit 1

@@ -76,10 +83,10 @@ make -w DESTDIR=${dest} pkglibdir=${pref
 make -w DESTDIR=${dest} pkglibdir=${prefix}/pkglib \
   install || exit 1

-cd xim
-make -w CXX="g++ -isysroot /Developer/SDKs/MacOSX10.4u.sdk -arch i386 -arch ppc" || exit 1
-make -w DESTDIR=${dest} install || exit 1
-cd ..
+#cd xim
+#make -w CXX="g++ -isysroot /Developer/SDKs/MacOSX10.4u.sdk -arch i386 -arch ppc" || exit 1
+#make -w DESTDIR=${dest} install || exit 1
+#cd ..

 cd ${dest}/${prefix}
 mv include/uim Headers

ビルドの仕方ですが、MacUIM/UIM ディレクトリで、svn checkout http://uim.googlecode.com/svn/trunk/ uim して、その uim ディレクトリの中で、svn co http://uim.googlecode.com/svn/sigscheme-trunk/ sigscheme して、さらに sigscheme ディレクトリの中で、svn co http://uim.googlecode.com/svn/libgcroots-trunk/ libgcroots します。あとは autotools を用意して、それぞれのディレクトリで ./autogen.sh しておいてから、uim ディレクトリにおいて、パッチを当てた fwbuild スクリプトを ../fwbuild 1.5.0 1 とでも動かせばいいです。その前に、Anthy ディレクトリで anthy-9100c をビルドし、 /Library/Anthy にインストールしておけば anthy plugin も作られます。

ということで、dual screen パッチを適用して、 uim trunk とanthy-9100c で作った MacUIM-0.5.2-3を一応置いておきます。Tiger 用 の Universal Binary になってます (テストしてません)。

14件のフィードバック

  1. いりのの発言

    お久しぶりです。
    とうとうMacBookを入手したので、UB版MacUIMを使わせていただきました。(もうとても自分ではビルドできません)
    総じてちゃんと動いております。uim-elも使えて嬉しいです。しかし、MS Office 2004ではMacUIMがグレーアウトされて使えないのですね。あと、uim-ximが入っていないみたいです。
    もうすぐyatsuさんもUB版を公開されるようで、こんなところで報告してるべきじゃないのかもしれませんが。

  2. ekatoの発言

    いりのさん、こんにちは。

    手元の intel Mac, Mac OS X 10.4.11, Mac OS X 10.5.1 では Office 2004 でも MacUIM 使えているので、どこかで universal binary じゃないライブラリが使われちゃってるんでしょうかね?

    ちなみに、http://people.freedesktop.org/~ekato/download/tmp/ に昨日の uim を使ったのを置いたのですが、これだとどうでしょう?

    uim-xim そういえば MacUIM に入れてなかったです。こんどコンパイルするときは入れてみようかと思います。

  3. いりのの発言

    毎度お手数おかけして恐縮です。
    OSX 10.5.1上のWord 11.3.8なんですが、MacUIM 0.5.2-5を試させてもらいましたが、やはり入力メソッドメニューの中でグレーアウトされて選ぶことができません。Excel, PowrPointでも同様です。
    ちなみこの書き込みは、Firefox 2.0.0.11から快適にMacUIM-anthyで行っています。
    う〜む、何が悪いんでしょう。

  4. いりのの発言

    もうちょっと色々試してみたら、rosettaで動くもの(rosettaで動かすUBアプリも)全部だめでした。

  5. ekatoの発言

    あらー、PPC バイナリで MacUIM 動きませんか。

    /Library/Components/MacUIM.component/Contents/MacOS/MacUIM がリンクしているライブラリが universal binary であれば動くと思ってるんですが、実は良くわかっていません。

    こちらの MS Word も 11.3.8 ですが MacUIM 動いています。Word 自体が何か intel only なライブラリとかプラグインでもリンクしてしまってるんでしょうか? (といっても Word 以外の PPC バイナリもダメとなるとこれはなさそうですね…)

  6. ekatoの発言

    そういえば、Rosetta での動作の確認に、例えば TextEdit.app を Finder の Get Info で ‘Open Using Rosetta’ にチェックを入れてから動かし、MacUIM が使えるかどうか試すという手もあります。

  7. いりのの発言

    お騒がせしております。Open Using Rossettaにチェックを入れるのをやったら見事に動きませんでした。
    しかし、解決しました。
    結局、私がUB化したgettextを入れてないのが原因でした。(Finkで入れたUBじゃないlibintlが使われていたみたいです。)
    gettextをソースからUBとしてビルドして、/Library/Frameworks/UIM.Framework/Versions/Current下にインストールしちゃいました。
    ばっちり直りましたです。
    「UBじゃないバイナリが使われているかも」というヒントを頂けなかったら気付けなかったです。ありがとうございました。

  8. ekatoの発言

    あれ不思議ですね。libintl はダイナミックにリンクしてないはずなんですけどね。

  9. いりのの発言

    libintlは、使わせていただいているMacUIMパッケージ0.5.2-5の中には見当たらないのですが、本来どこに入っているものが使われるべきなのでしょうか?
    MacUIMのソースを入手してxcodeプロジェクトを開いてみると、libintl.dylibとlibuim-custom.dylibが赤字になっていて、きっとUIM.Framework内にlibintl.dylibをインストールしなければいけないのだろうなあ、と思ってgettextをUBとしてビルド・インストールしてみたのでした。libuim-custom.dylibはなくてもいいのですね。
    いつものことながら根本的に仕組みが分からずにやっているので、何か変なこと言ってるかもしれませんが。

  10. ekatoの発言

    こちらでコンパイルしている MacUIM では libintl は static にリンクしているので見当たらないということになってます。

    まあ状況はよくわからないのですけど、Fink でインストールしたライブラリが、何らかの理由で MacUIM からダイナミックにリンクされてしまって、Rosetta で使えないというのが一番あり得ますよね。こちらのパッケージだと libiconv であり得そうです。

    あと、libuim-custom.dylib ですが、UIM.framework にまとめてしまっているので見当たらないだけで、実は中に含まれています。fwbuild スクリプトを見るとわかると思います。

  11. ekatoの発言

    uim-xim を含めた 0.5.2-7 を置いてみました。

  12. いりのの発言

    0.5.2-7使わせてもらいました。uim-ximばっちり動きました。uim-candwin-gtkも入っているんですね。どうやったらこんな凄いことができるのかもう私にはさっぱりです。
    今回、自分で入れてたgettextをuninstallした上でMacUIMを更新したのですが、なぜかもうgettextを入れ直さなくてもrosettaなアプリケーションでの入力も問題なくできるようになってしまいました。一体どうなっているのやら?
    ともあれ素晴らしいです。ありがとうございます。

  13. ekatoの発言

    力わざでuim-candwin-gtkに全部リンクさせてみました。

    それにしても Rosetta よくわからないですよね (中身がわからないので)。何かアドレスのキャッシュとか関係しているのかもしれないです。あるきっかけでそれらが更新されると普通に動くとか…

  14. Mac « ekato’s noteの発言

    [...] ここのコメントに書いたように、久しぶりに MacUIM (MacUIM-0.5.2-7 ) [...]

コメントする