libiconv-1.14にlibiconv-1.13用のパッチを適用してみました。
説明が不要な方は、【パッチの適用手順】からどうぞ。
libiconv-1.13.1には、こちらの「libiconv パッチ集」日本語エンコーディング全般の一括パッチ
http://www2d.biglobe.ne.jp/~msyk/software/libiconv-patch.html
libiconv-1.13-ja-1.patch.gz
を使わせていただいています。
libiconv-1.14がリリースされてからだいぶ経ちましたが、こちらのページでは、パッチは更新されていません。
検索すると、libiconv-1.14用のパッチは、現在こちらのものを利用されている方が多いようです。
libiconv-1.14 日本語パッチ
http://apolloron.org/software/libiconv-1.14-ja/
上記の参考リンクより、
Adding libiconv Support for the IMAP Variant of UTF-7
http://weldon.whipple.org/sendmail/utf7imap/
この手順でやってみたのですが、libiconvに同封されているgenaliasesとgenaliases2というコマンドが、Windows上では正常に動作しませんでした。
どうしたものかと思ってlibiconvのGit Repositoryを見たら、2012/07/01付で修正されていました。
Make it possible to run 'genaliases' on native Windows.
http://git.savannah.gnu.org/cgit/libiconv.git/commit/?id=1f574c8a69e51e4d36698e803be6e510c9d45637
Make it possible to run 'genaliases2' on native Windows.
http://git.savannah.gnu.org/cgit/libiconv.git/commit/?id=5977e1b0c6e2c9ad9fa019698ff28dc11ef6d076
【パッチの適用手順】
libiconvにパッチを適用する前に、gperfとGroffをインストールしておいてください。
autoconf-2.68、automake-1.11 も必要です。
libiconv-1.14のソースコードと、libiconv-1.13のパッチは、それぞれ以下の場所からダウンロードします。
libiconv
http://www.gnu.org/software/libiconv/
libiconv-1.13-ja-1.patch.gz
http://www2d.biglobe.ne.jp/~msyk/software/libiconv-1.13-ja-patch.html
libiconvのGit Repositoryから、genaliasesとgenaliases2のWindows用パッチをまとめた物を置いておきます。
ChangeLogの修正は入っていません。
libiconv-1.14-genaliases-win.diff
MSYSで、ファイルを保存したディレクトリに移動し、
$ tar xzf libiconv-1.14.tar.gz
$ cd libiconv-1.14
libiconv-1.14に、パッチを適用します。
$ patch -p1 < ../libiconv-1.14-genaliases-win.diff
$ gzip -dc ../libiconv-1.13-ja-1.patch.gz | patch -p1
lib/aliases*.h、lib/canonical*.h などがFAILEDになりますが、再生成するので気にしなくて良いです。
ついでに、UTF-7-IMAPも追加する場合は、以下のページを参照して修正してください。
Adding libiconv Support for the IMAP Variant of UTF-7
http://weldon.whipple.org/sendmail/utf7imap/
パッチを適用したら、以下のコマンドを実行します。
$ make -f Makefile.devel
lib/aliases*.h、lib/canonical*.h、lib/flags.h、man/iconv_open.3.html
などが更新されていればOKです。
あとは、以下の手順でコンパイル&インストールします。
$ ./configure --prefix=/mingw --disable-shared --enable-static
$ make
$ make install
以上で終了です。
【まとめ】
かなりめんどうですが、やり方さえ分かれば、今後libiconvが更新されても自前でパッチを適用できますね。
せっかくなので、
・genaliasesとgenaliases2のWindows用パッチ
・libiconv-1.13-ja-1.patch
・Adding libiconv Support for the IMAP Variant of UTF-7
・NEWS、README、man/iconv_open.3 にUTF-7-IMAPの記述を追加
を、libiconv-1.14用にまとめたパッチを置いておきます。
libiconv-1.14-ja-1.patch.gz
libiconv-1.14のソースコードに、
$ gzip -dc ../libiconv-1.14-ja-1.patch.gz | patch -p1
だけでOKです。
このパッチは「make -f Makefile.devel」も実行済みのものですので、あとは、以下の手順でコンパイル&インストールします。
$ ./configure --prefix=/mingw --disable-shared --enable-static
$ make
$ make install
この一括パッチを作成するときに、gperfで生成したファイルの改行コードがCRLFになっていて、元のソースコードとdiffを取ると全部違ってしまうので、dos2unixでLFに修正しています。
dos2unixは、msysgitなどに入っています。
dos2unix lib/aliases.h
dos2unix lib/aliases.gperf
dos2unix lib/aliases_*.h
dos2unix lib/aliases_*.gperf
dos2unix lib/canonical_aix.h
dos2unix lib/canonical_aix_sysaix.h
dos2unix lib/canonical_osf1.h
dos2unix lib/canonical_osf1_sysosf1.h
dos2unix lib/canonical_dos.h
dos2unix lib/canonical_extra.h
dos2unix lib/flags.h
dos2unix man/iconv_open.3.html
dos2unixは、CRLFをLFに、LFをCRLFに交互に変換するので、余計なファイルまでCRLFに変換しないように注意してくださいね。
「make -f Makefile.devel」した後、自分の環境で使うだけなら、改行コードは修正しなくても良いです。
パッチを作成するにあたって、以下のページを参考にさせていただきました。
ありがとうございました。
・libiconv パッチ集
・libiconv-1.14 日本語パッチ
・Adding libiconv Support for the IMAP Variant of UTF-7
2012年10月25日
この記事へのコメント
コメントを書く
この記事へのトラックバックURL
http://blog.sakura.ne.jp/tb/59524109
※言及リンクのないトラックバックは受信されません。
この記事へのトラックバック
http://blog.sakura.ne.jp/tb/59524109
※言及リンクのないトラックバックは受信されません。
この記事へのトラックバック