@kyanny's blog

My thoughts, my life. Views/opinions are my own.

app-emacs/mew で日本語 info をインストールできるように

app-emacs/mew を emerge で入れると日本語 info がインストールされません。 app-emacs/wanderlust には wl.info と wl-ja.info があるのに、何故だろう?と不思議だったのでちょっと調べて見ました。

まず mew に日本語 info がなければ話にならないのですが、オンラインマニュアルに日本語があるので同梱されてるはずだよなぁ、と考えて mew-5.2.tar.gz を落としてきて make してみると、以下のようなメッセージがちゃんと出ていました。

***************************
 Mew configuration results
***************************

use emacs             : /usr/bin/emacs
elisp files should go : /usr/share/emacs/site-lisp/mew
etc files should go   : /usr/share/emacs/site-lisp/mew/etc
exec files should go  : /usr/local/bin
info files should go  : /usr/local/info
man files should go   : /usr/local/man/man1

Then type 'make', 'make info' and 'make install'.
For Japanese environment, also 'make jinfo' and 'make install-jinfo'.

最後の一行が重要で、これを mew の ebuild はやってくれてなかったわけです。拾ってきたアーカイブを展開したフォルダで make jinfo とすると、確かに日本語 info が作られます。を

じゃあ ebuild を書き換えればいい、ということで、書き換えました。

kyanny@kyanny-laptop2 ~ $ cat mew-5.2.ebuild.patch 
--- /usr/portage/app-emacs/mew/mew-5.2.ebuild   2007-07-13 16:35:25.000000000 +0900
+++ /usr/local/portage/app-emacs/mew/mew-5.2.ebuild     2008-02-22 12:38:23.000000000 +0900
@@ -22,6 +22,7 @@
 src_compile() {
        econf || die "econf failed"
        emake || die "emake failed"
+       emake jinfo || die "emake for jinfo failed"
 }
 
 src_install() {
@@ -30,6 +31,7 @@
                elispdir="${D}/${SITELISP}/${PN}" \
                etcdir="${D}/usr/share/${PN}" \
                mandir="${D}/usr/share/man/man1" || die "einstall failed"
+       einstall infodir="${D}/usr/share/info" install-jinfo || die "einstall for jinfo failed"
 
        elisp-site-file-install "${FILESDIR}/${SITEFILE}"
 

emake やら einstall やらの作法がよくわからなかったのですが、ぐぐって OSC2006 でのさくらいさんのスライドを読んだり、 /usr/lib/portage/bin 以下をのぞいてみたりして、だいたいこんな感じじゃね?と思ってかいてみたら動きました。

emake は /usr/lib/portage/bin/emake というシェルスクリプトで、引数を make のターゲットにしてくれるみたいなので make jinfo はうまく動きました。 einstall は /usr/lib/portage/bin/ebuild.sh で定義されている関数で、これはなんだかよくわからなかったのですが einstall install-jinfo としたら一応ちゃんと mew.jis.info とかも /usr/share/info 以下にインストールされました。

これで、 emacs の中から、もしくは info コマンドからでも mew の日本語 info が読めるようになりました。

一つちょっと不安なのが、 einstall で INFODIR を上の einstall と同じに書いたので多分 merge する前の work ディレクトリにまずインストールしてくれているはずなのですが、そこらへんの動作に確信が持てていません。

パッチ形式はあまり好ましくない?みたいなのをどこかで見た覚えがあって(スライドかな?) ebuildjp というところへアップロードするのがいい作法のようなので、あとで使い方ガイドを読んでアップロードしようかなと思います。