ebuildの作り方
ローカルなパッケージディレクトリの定義
/etc/make.confに次の行を追加する
PORTDIR_OVERLAY=/usr/local/portage
ここに/usr/portageのようなディレクトリ構造を作ればよい。
エラー: No package manifest found
ebuild mod_lisp-2.35.ebuild mergeで次のようなエラーが出た
!!! No package manifest found: /usr/local/portage/dev-lisp/mod_lisp/Manifest
これは、次のコマンドを実行することで回避できる。
% ebuild mod_lisp-2.35.ebuild digest
手順
ebuild foo.ebuild setup
ebuild foo.ebuild fetch
ebuild foo.ebuild unpack
fetch
fetchでは、インターネットから必要なファイルを取ってきて、/usr/portage/distfilesに置く作業が行われる。
unpack
ソースを展開する。展開先は${S}が良い。これは、${WORKDIR}/${P}で、実際には /var/tmp/portage/mod_lisp-2.35/work/mod_lisp-2.35 のようになる。
src_unpack()
src_unpack()は、tarballを展開し、パッチを当てる段階に使う。
unpackは、パッケージを適切に展開してくれる。 ${A}は、アーカイブ名。clearsilver-0.9.7.tar.gzなど。ディレクトリ名は使わない。
unpack ${A}
で良い。
inherit
inherit apache-module
とすると、/usr/portage/eclass/apache-module.eclassが読み込まれる。
src_compile()
通常の手順では、configure; makeを行う部分である。
src_compile() {
local myconf
myconf="--disable-apache"
use python || myconf="$myconf --disable-python"
use perl || myconf="$myconf --disable-perl"
use ruby || myconf="$myconf --disable-ruby"
use java || myconf="$myconf --disable-java"
use csharp || myconf="$myconf --disable-csharp"
echo $myconf
econf ${myconf} || die
emake || die
}
src_install()
コンパイルして出来たファイルを仮にインストールする。すべてのファイルは一旦、/var/tmp/portage/clearsilver-0.9.7/image以下にインストールする。ここ以外にファイルがインストールされそうになると警告がでる。
