2011年12月03日

MacPorts の Portfile を書く際の Tips #MACDEVJP2011 03

2011年のMac Dev JPのAdvent Calendarの3日目として、記事を書きます。

Mac に UNIX ツールを導入するパッケージシステムのひとつ、MacPorts の話をします。といっても、使い方ではなく、自分で Portfile を書く話です。

MacPorts では(今のところ)バイナリパッケージは提供されておらず、各自のマシンでビルドする仕組みになっています。このビルド手順を記述してあるファイルが Portfile です。

Portfile の例として、私がメンテナンスしている port を挙げておきます。


MacPorts にはたくさんの port が存在しますが、そこにないものが欲しいと思うかもしれません。あるいは、既存の port に満足できずにカスタマイズしたいと思うかもしれません。そんなときに、自分で Portfile を書くことができます。

Portfile の書き方は、MacPorts-JP にある「Portfile の作り方」を読みましょう。以上。

・・・としてもいいんですが、いくつか便利な Tips を挙げてみます。

Tips : Ports tree を用意せずに Portfile を書く

きちんとやるなら Ports tree を用意して macports.conf に追加するのが良いかもしれません。ただ、とりあえず試してみるという程度なら、わざわざ Ports tree を用意する必要はないのです。

適当なフォルダを作って、そこに Portfile を置くだけ。port コマンドを実行するときは、そのフォルダに移動してからコマンドを実行します。このとき、パッケージ名は省略するのがポイント。port install hoge とするかわりに、単に次のように実行します。

port install

port コマンドでパッケージ名を省略すると、カレントディレクトリの Portfile を参照します。

Tips : チェックサムを簡単に計算する

Portfile に記述するチェックサムは、次のようにすれば簡単に出力できます。

port -v checksum

checksum コマンドは、ビルドフェーズのうちチェックサム照合までを行なっています。この際に -v オプションをつけておけば、チェックサムの計算値が出力されます。md5、sha1、rmd160 をすべて出力してくれるうえ、出力結果は Portfile にそのままコピー&ペーストできます。

Tips : configure オプションを変更する

自前で Portfile を作る場合、そのままビルドするのでなく多少自分でいじりたいことが多いと思います。例えば簡単なところで configure オプションを変更したい場合、Portfile に次のように記述します。

configure.args [オプション]

また、そもそも configure スクリプトを使わない場合は、次のように記述します。

use_configure no

Tips : livecheck

自分で Portfile を書いた場合、バージョンアップの面倒は自分でみなければなりません。このとき、いちいち自分で Web サイトをチェックするのは面倒です。そこで、livecheck の仕組みを活用します。

port livecheck というコマンドがあり、upstream のバージョンが上がっているか確認することができます。これを有効にするには、Portfile に次のような記述を追加します。

livecheck.regex ${name}-(\[a-z0-9.\]+)${extract.suffix}

正規表現でグループ化してある部分がバージョンとみなされます。内容は配布ファイル名にあわせてください。配布元が sourceforge だとこれだけで OK ですが、そうでない場合は type の指定が必要です。たとえば、Web ページ上から正規表現で検索するには次のような type を指定します。

livecheck.type regex

さらなる情報源

日本語による情報交換の場として、MacPorts-JP があります。


MacPorts 本家には、以下のような情報があります(英語)。

  • MacPorts Guide の Portfile Development のセクションにひと通りのことが書いてあります。

  • MacPorts Wiki の MacPorts Development のセクションにはいろいろな Tips があります。




Mac Dev JP advent calendar の明日の当番は、MacRuby の watson さんです。よろしくお願いします。
posted by usami-k at 10:41| Comment(0) | TrackBack(0) | 日記 | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
コメントを書く
お名前: [必須入力]

メールアドレス:

ホームページアドレス:

コメント: [必須入力]

認証コード: [必須入力]


※画像の中の文字を半角で入力してください。

この記事へのトラックバック