Feb 132006
はじめに
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を作成したいのですが。
Sorry, the comment form is closed at this time.