試験運用中なLinux備忘録・旧記事

はてなダイアリーで公開していた2007年5月-2015年3月の記事を保存しています。

C/Migemo(バージョン1.3c MIT版)のUbuntu向けパッケージを作成

(2014/10/11)C/MigemoのパッケージはUbuntu 12.04から標準で提供されている。「Ubuntu向けに作成・公開していたパッケージの12.04への対応を完了」を参照。
以下、以前の内容となる。

以前「C/MigemoのMandriva Linux向けRPMパッケージを公開/本体の.specファイルに関するメモ」でMandriva向けにパッケージを作成したC/Migemo(バージョン1.3c MIT版)のUbuntu向けパッケージを作成して「milkjfフォントとut(内海氏)版AnthyのUbuntu向けパッケージを作成(2010/11/20現在)」で書いているPPAリポジトリに公開した。
Debian/UbuntuにはRubyMigemo(パッケージ名「migemo」)がパッケージになっているが、今回作成したパッケージはこのRubyMigemoのパッケージに含まれる

といったファイルをそのまま用いており、パッケージの中身は

  • C/Migemoライブラリとその開発パッケージ(それぞれ別のパッケージ)
  • 本体(cmigemoコマンド)
  • Vimプラグイン
  • 幾つかの変換用辞書(han2zen.dat,hira2kata.dat,roma2hira.dat,zen2han.datの4つ・いずれもEUC-JPに変換済み): これがないと一部のカタカナなどしか一致しない

といった内容で構成され、RubyMigemoに依存するパッケージとなる。
パッケージそのものはきちんと形になって動作も良好ではあるのだが、ソース内で文字列のバッファなどに符号なしのchar型を用いていてstrlen()などの関数にも渡していたりするためか、コンパイラの警告メッセージが多いのが気になった。一部の警告は修正で消すこともできそうなので今後更新する可能性もある。
(2010/12/3)GCCの警告メッセージについては全て型変換の記述の追加などで対処し、修正済みのパッケージに更新した。符号なしのchar型を符号ありにして変更を減らせそうな部分もあったが、C/Migemo内のソースにおける関数の(仮)引数における符号の有無については(変えると)公開されているAPIを変えてしまうことになるところもあったためにいじらず、警告の出ているそれぞれの関数呼び出しや戻り値において型が合っていないところについて型変換を行うにとどめた。これに加え

  • 開発パッケージでヘッダファイルmigemo.hのインストール先が/usr/include/migemo/以下になっていたのを/usr/include/以下に修正
  • 本体のパッケージからアーキテクチャ非依存な/usr/share/migemo/以下の4つの.datファイルを「cmigemo-common」として分離させつつライブラリ(libmigemo1)からこの共通ファイル群のパッケージを依存するように修正

という変更を行った。動作は良好。もうしばらくテストを行って問題がなければ、安定パッケージ用のPPAリポジトリに移動することにする。
EmacsでこのパッケージのC/Migemoを用いる場合、以下の記述が必要。
[一部]ファイル名: ~/.emacs.el

(load "migemo")
(setq migemo-coding-system 'euc-jp-unix)
(setq migemo-command "cmigemo")
(setq migemo-options '("-q" "--emacs" "-i" "\a"))
(setq migemo-user-dictionary nil)
(setq migemo-regex-dictionary nil)

migemo-coding-systemの設定行については、Ruby版では既定値(utf-8-unixDebian向けのパッチによる?)で動作するのだが、C/Migemoでは手動で「euc-jp-unix」を選択しないとうまく動作していない。Emacsのバージョンは22系,Vimのバージョンは7.2系で動作を確認している。