2010-09-07

MacPortsのPortfile開発

構成

  • オレオレ MacPorts リポジトリ www.example.com:/srv/www/macports (Linux サーバ)
  • ローカル開発マシン (Mac)
    • 開発中パッケージ置き場 : ~/proj/macports/work
    • オレオレリポジトリのミラー : ~/proj/macports/mirror

準備

決めること

  • パッケージの名前 : example-app
  • バージョン : 0.1.0
  • パッケージのカテゴリ : sysutils

リポジトリミラーの準備

$ cd ~/proj/macports/mirror
$ rsync -az --delete www.example.com:/srv/www/macports/ .

パッケージの準備

$ cd ~/proj/macports/work
$ git clone http://www.upstream.com/example-app.git
$ cd example-app
$ git checkout -b macports
$ mkdir macports
$ vi macports/Portfile
# vim: set ft=tcl et sw=4 ts=4 sts=4 :
PortSystem          1.0
name                example-app
version             0.1.0
categories          sysutils
maintainers         metalglue@example.com
description         example-app
long_description    example-app
master_sites        http://www.example.com/macports/distfiles/
$ git add macports
$ git commit

最初のアップロード

tar アーカイブファイルに固めて,チェックサムを計算し,Portfile に記述する.

$ cd ~/proj/macports/work
$ tar zcf ~/proj/macports/mirror/distfiles/example-app-0.1.0.tar.gz example-app
$ md5sum ~/proj/macports/mirror/distfiles/example-app-0.1.0.tar.gz
236aaec0cd680a4d254d26fd6820043d
$ vi example-app/macports/Portfile
checksums md5 236aaec0cd680a4d254d26fd6820043d

それらをミラーディレクトリにコピーして,portindex コマンドでインデックスを作り,アップロードする.

$ mkdir ~/proj/macports/mirror/portfiles/sysutils/example-app
$ cp example-app/macports/Portfile ~/proj/macports/mirror/portfiles/sysutils/example-app
$ cd ~/proj/macports/mirror/portfiles
$ portindex
$ cd ..
$ rsync -av --delete ./ www.example.com:/srv/www/macports

テスト

$ sudo port sync
$ port clean --all example-app
$ port -v install example-app