はじめに
Gentooのパッケージ管理システムPortageは、FreeBSDのportsやNetBSDのpkgsrcのようにソースからビルドする利用方法が一般的です。
通常使われるソースとしては、tar.bz2などのアーカイブされたものを利用しますが、Portageではcvsからcheckoutしたものを利用することができるようになってます。
emacs用のテキストブラウザであるemacs-w3mをcvsソースからビルドするためのパッケージを自作してみます。
Wanderlustでのcvs対応内容
通常版とcvs版があるWanderlust(Emacsenで動作するMUA)のebuildファイルを比較して、ポイントを確認してみます。
$ diff -u /usr/portage/app-emacs/wanderlust/wanderlust-2.14.0-r1.ebuild \
> app-emacs/wanderlust-cvs/wanderlust-cvs-2.15.ebuild
:
-inherit elisp eutils
+ECVS_SERVER="cvs.m17n.org:/cvs/root"
+ECVS_MODULE="wanderlust"
+ECVS_BRANCH="HEAD"
-MY_P="wl-${PV/_/}"
+inherit elisp cvs
IUSE="ssl"
DESCRIPTION="Wanderlust -- Yet Another Message Interface on Emacsen"
HOMEPAGE="http://www.gohome.org/wl/"
-SRC_URI="ftp://ftp.gohome.org/wl/stable/${MY_P}.tar.gz
- ftp://ftp.gohome.org/wl/beta/${MY_P}.tar.gz
- http://dev.gentoo.org/~usata/distfiles/${MY_P}-20050405.diff"
+SRC_URI=""
:
ポイントは以下の3点になります。
- inheritキーワードにcvsを追加
これはcvs.eclassというものを使うための宣言です。
- ECVS_SERVER、ECVS_MODULE、ECVS_BRANCHという3つの変数を定義
これはcvsモジュールをcheckoutしてくるための情報になります。
checkout先は/usr/portage/distfiles/cvs-src配下になります。
- SRC_URIが空
tar.bz2等アーカイブをダウンロードしてくる必要がなくなりますので、こちらの変数は空にします。未定義ではエラーになります。
emacs-w3m-cvs.ebuild作成
Wanderlustにならって、app-emacs/emacs-w3mのcvs版ebuildを作成してみました。
--- /usr/portage/app-emacs/emacs-w3m/emacs-w3m-1.4.4.ebuild 2005-08-04 04:05:18 +0900
+++ /usr/local/portage/app-emacs/emacs-w3m-cvs/emacs-w3m-cvs-1.5.ebuild 2005-11-23 23:46:38 +0900
@@ -2,15 +2,18 @@
# Distributed under the terms of the GNU General Public License v2
# $Header$
-inherit elisp
+inherit elisp cvs
+
+ECVS_SERVER="cvs.namazu.org:/storage/cvsroot"
+ECVS_MODULE="emacs-w3m"
+ECVS_BRANCH="HEAD"
IUSE=""
-MY_P="${P/_/}"
-S="${WORKDIR}/${MY_P}"
+S="${WORKDIR}/${ECVS_MODULE}"
DESCRIPTION="emacs-w3m is an interface program of w3m on Emacs."
HOMEPAGE="http://emacs-w3m.namazu.org"
-SRC_URI="http://emacs-w3m.namazu.org/${MY_P}.tar.gz"
+SRC_URI=""
LICENSE="GPL-2"
SLOT="0"
@@ -31,21 +34,22 @@
}
src_compile() {
+ autoconf || die "autoconf failed"
./configure --prefix=/usr \
- --with-lispdir=${SITELISP}/${PN} \
- --with-icondir=/usr/share/${PN}/icon
+ --with-lispdir=${SITELISP}/${ECVS_MODULE} \
+ --with-icondir=/usr/share/${ECVS_MODULE}/icon
make || die
}
src_install () {
- make lispdir=${D}/${SITELISP}/${PN} \
+ make lispdir=${D}/${SITELISP}/${ECVS_MODULE} \
infodir=${D}/usr/share/info \
- ICONDIR=${D}/usr/share/${PN}/icon \
+ ICONDIR=${D}/usr/share/${ECVS_MODULE}/icon \
install-icons || die
- make lispdir=${D}/${SITELISP}/${PN} \
- ICONDIR=${D}/usr/share/${PN}/icon \
+ make lispdir=${D}/${SITELISP}/${ECVS_MODULE} \
+ ICONDIR=${D}/usr/share/${ECVS_MODULE}/icon \
install-icons || die
elisp-site-file-install ${FILESDIR}/70emacs-w3m-gentoo.el
オリジナルからの変更点は、Wanderlustで確認した3点とおおよそ同じです。
- inheritにcvsを追加
- ECVS_SERVER、ECVS_MODULE、ECVS_BRANCHを追加
- SRC_URIは空にする
- src_compile()の先頭でautoconfを実行してconfigureスクリプトを作るようにする
- インストール先ディレクトリがemacs-w3mになるよう、make時のパス指定を${ECVS_MODULE}を使う形に変更(${PN}のままだとemacs-w3m-cvsになってしまう)
ebuildファイルができあがったら、
# ebuild emacs-w3m-cvs-1.5.ebuild digest
を実行してdigestファイルを作成しておきます。
参考
Gentoo JP FAQ – 配布元がCVSのebuildを作成したいのですが。