emacs-w3m-cvs.ebuild作成

 article  Comments Off on emacs-w3m-cvs.ebuild作成
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点とおおよそ同じです。

  1. inheritにcvsを追加
  2. ECVS_SERVER、ECVS_MODULE、ECVS_BRANCHを追加
  3. SRC_URIは空にする
  4. src_compile()の先頭でautoconfを実行してconfigureスクリプトを作るようにする
  5. インストール先ディレクトリがemacs-w3mになるよう、make時のパス指定を${ECVS_MODULE}を使う形に変更(${PN}のままだとemacs-w3m-cvsになってしまう)

ebuildファイルができあがったら、

# ebuild emacs-w3m-cvs-1.5.ebuild digest

を実行してdigestファイルを作成しておきます。


参考

Gentoo JP FAQ – 配布元がCVSのebuildを作成したいのですが。