ebuildの作り方 
top

ローカルなパッケージディレクトリの定義

/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以下にインストールする。ここ以外にファイルがインストールされそうになると警告がでる。

参考資料

ebuild quick reference

imported