2008.08.10 Firefox Addons の ports の作り方 最近 ports 上の Firefox Addons が Firefox3 に対応してなくて泣い てたりする。ports はガンガン行くときは最新版どころか開発中のもの を入れてくれるけど(それなりに動くレベルで), 保守に回ればガンガン 保守的になる(?)という性質があるので, 使いたければ使ってる人がガ ンガンフィードバックせねばならない:-)。 というわけで Firefox Addons を支えている XPI (Cross-Platform Installer Module) な ports を作る方法についてメモしておく。 SEE ALSO: http://developer.mozilla.org/ja/docs/XPI ports の雛型は ports/www/xpi-adblock を見ておけばよい。色々と試 したり他のを見てみたが, 結局はこの形に行き着く。 特徴をまとめると 1. ファイル/ディレクトリ構成 a. Makefile, distinfo, pkg-descr を作る程度 b. 流石に Makefile.xpi は要らない:-) 2. Makefile の構成 a. post-patch の当たり以外は www/xpi-adblock のまま b. パッチ当てを行ったことでゴミが発生するようであれ ば, 削除しておくこと。削除しないとゴミがインスト ールされる。 c. www/xpi-adblock/Makefile.xpi を最後に読み込む 3.XPI 固有の Makefile の設定 a. XPI_NUM addons.mozilla.org で管理されているエクステンション番号。 現時点で 4 桁の正数。そのうち 5 桁になるかな。 b. XPI_ID {12345-...} あるいは dev@org 形式で指定されるエクステン ション ID。これは install.rdf の中を見て判断(後述)。 c. XPI_FILES XPI ファイル(後述)中に含まれるファイル=インストールさ れるファイルの一覧。 d. XPI_DIRS XPI ファイル(後述)中に含まれるディレクトリ=インストー ル時に作られるディレクトリ一覧。 4. XPI ファイルの話 a. 大抵のアーカイブには suffix が付くので DISTVERSIONSUFFIX でフォロー。 b. 根性でゲットだ。いやリンク先を保存でもいいかもしれない が。まぁたまにログインが要求されるのがあるけど…。 c. XPI ファイルは zippy と発音するだけあってただの ZIP フ ァイルなんで, どっかで中身を展開して確認する(後述)。 XPI_ID, XPI_FILES, XPI_DIRS は XPI ファイルの中身を確認してはじめ て分かる内容なので, 展開して中身を確認する。この時, カレントディ レクトリに素で展開されるので, mkdir/cd してから作業するといい。ま た, アドオンの作り方を理解しておくことも重要である。以下のサイトを 見た前提で記述する。 SEE ALSO: http://north-country.hp.infoseek.co.jp/FireFoxExtensionMemo.html XPI_ID は install.rdf 中の em:id で指定される GUID を指定する。こ の GUID を自前で作るなら uuidgen(1) コマンドで作ればいいけど既に あるものを使用するので, この中身を見ておくことが重要となる:-)。 XPI_FILES は展開されたファイル全てを指定しておく。 XPI_DIRS は展開されたディレクトリ全てを指定しておく。 なお, addons.mozilla.org に無いアドオンの ports 化はそれはそれで 面倒なので省略。www/xpi-* 全部見てないけど, どっかそんなパターン があるっしょ。ということで。 なおこれらファイルのインストール先は /usr/local/lib/xpi 以下とな ります。 なんちゃって FAQ: Q. Firefox でアドオン指定して勝手にインストールすればいいぢゃん。 A. ごもっとも。でも何をインストールしたか後から調べるの大変だよ ね:-)ってことで。 Q. なんでまた XPI ネタなんて…。 A. resizeable textarea とか textarea で vi 編集できるアドオンと か, 色々と気になったんだもん。試してるうちに全滅した結果, commit するネタがなくなりました。 orz Written by 重村法克