Gentoo Linux eclass リファレンス
この文章では、現在利用可能である eclass の詳細な解説を行います。
eclass の概要については
eclass HOWTO
をご参照下さい。
|
|
Author, Editor
:
渡邊 集
Updated 18 Oct 2003 |
1.flag-o-matic.eclass
eclass flag-o-matic には、コンパイルオプションの操作を円滑に行うための関数が収められています。
flag-o-matic を継承することによって利用できるようになる関数には、以下のようなものがあります。
append-flags <フラグ>
|
CFLAGS、CXXFLAGS に <フラグ> を追加することができます。
追加するフラグは複数設定できます。
|
filter-flags <フラグ>
|
CFLAGS、CXXFLAGS から <フラグ> を取り除きます。
取り除きたいフラグは複数設定でき、 * や ? などのワイルドカードも使用可能です。
ただし * は最長マッチを意味するので、扱いには十分注意して下さい。
|
get-flag <フラグ>
|
CFLAGS、CXXFLAGS から特定のフラグを探しだし、そのフラグに設定されている値を返します。
例えば CFLAGS に -march=pentium3 が設定されていた場合、get-flag march とすることで pentium3 を取得できることになります。
ここで、引数となるフラグの先頭に - が必要ないことに注意してください。
|
is-flag <フラグ>
|
CFLAGS、CXXFLAGS から <フラグ> を検索し、ヒットすれば真を返します。
|
replace-flags <フラグ1> <フラグ2>
|
CFLAGS、CXXFLAGS の中にある <フラグ1> を <フラグ2> に置換します。
|
strip-flags
|
CFLAGS、CXXFLAGS の中から危険なフラグを全て取り除きます。
|
append-ldflags <フラグ>
|
LDFLAGS に <フラグ> を追加します。追加するフラグは複数設定できます。
|
オーバーライド
なし
2.gcc.eclass
eclass gcc には、コンパイル時に使用される gcc についての情報を調べるための関数が収められています。
また、変数 WANT_GCC_3 に yes や no を格納することによって、gcc-3.x についての情報が欲しいのか gcc-2.x についての情報が欲しいのかを特定することができます。
gcc-getCC
|
C コンパイラの名前を返します。
|
gcc-getCXX
|
C++ コンパイラの名前を返します。
|
gcc-fullversion
|
${CC} -dumpversion で得られるような完全なバージョンを返します。
|
gcc-version
|
gcc の <メジャーバージョン>.<マイナーバージョン> を返します。
|
gcc-major-version
|
gcc のメジャーバージョンを返します。
|
gcc-minor-version
|
gcc のマイナーバージョンを返します。
|
gcc-micro-version
|
gcc のマイクロバージョンを返します。
|
gcc-libpath
|
gcc の内部ライブラリパスを返します。
|
gcc-libstdcxx-version
|
libstdc++.so の完全なバージョンを返します。
|
gcc-libstdcxx-major-version
|
libstdc++.so のメジャーバージョンを返します。
|
gcc2-flags
|
CFLAGS と CXXFLAGS に設定されているフラグを gcc-2.95.3 互換の形式に変換し export します。
|
Note:
WANT_GCC_3 のデフォルト値は no です。
|
オーバーライド
なし
3.cvs.eclass
eclass cvs は cvs ツリーから自動的モジュールをチェックアウトしてくるような ebuild を作成したい場合に便利な eclass です。
cvs.eclass は多くの設定用変数と、CVS からソースをチェックアウトする関数、チェックアウトしたソースをビルドのためのディレクトリへコピーする関数から成り立っています。
- 変数
ECVS_CVS_COMMAND |
cvs リポジトリからモジュールをチェックアウトするためのコマンドです。
デフォルト値として "cvs -q -f -z4" が設定されており、通常これを変更する必要はありません。
| ECVS_UP_OPTS |
モジュールのアップデートを行う際に、ECVS_CVS_COMMAND に渡すオプションです。
デフォルト値として "-dP" が設定されており、通常これを変更する必要はありません。
| ECVS_CO_OPTS |
チェックアウトを行う際に、ECVS_CVS_COMMAND に渡すオプションです。
デフォルト値は設定されていませんが、通常これを設定する必要はありません。
| ECVS_TOP_DIR |
チェックアウトされた cvs モジュールが保存される場所です。
デフォルト値として "${DISTDIR}/cvs-src" が設定されており、通常これを変更する必要はありません。
| ECVS_SERVER |
この変数にはモジュールをチェックアウトする cvs サーバを指定します。
デフォルト値として "offline" が設定されており、offline が設定されていると既に ECVS_TOP_DIR にモジュールがチェックアウトされていると仮定します。
| ECVS_AUTH |
モジュールをチェックアウトするための認証方法を設定します。
デフォルト値として "pserver" が設定されており、通常これを変更する必要はありません。
| ECVS_RUNAS |
cvs コマンドをどのユーザとして実行させるかをこの変数で決定します。
デフォルト値は "`whoami`"、つまり root として実行します。
| ECVS_USER |
cvs サーバにログインするためのユーザ名を設定します。
デフォルト値は "anonymous" です。
| ECVS_PASS |
cvs サーバにログインするためのパスワードを設定します。
デフォルト値はありません。
| ECVS_MODULE |
cvs サーバからチェックアウトするモジュール名です。
この変数は必ず設定してください。
設定されていない場合エラーとなります。
| ECVS_BRANCH |
チェックアウトするブランチを設定します。
デフォルト値として "HEAD" が設定されています。
| ECVS_CLEAN |
この変数に真が設定されていると、ECVS_UP_OPTS に "-C" を加えてアップデートを行います。
すなわちローカルでの変更を全て捨て去って、cvs モジュールのクリーンコピーを取得します。
| ECVS_LOCALNAME |
この変数が設定されていると、モジュールを別名で保存します。
すなわちモジュールの保存先が ${ECVS_TOP_DIR}/${ECVS_LOCALNAME} となります。
|
- 関数
cvs_fetch |
cvs サーバからモジュールをチェックアウトする関数です。
通常この関数を自分で呼ぶ必要はなく、cvs_src_unpack 関数によって呼ばれます。
| cvs_src_unpack | cvs_fetch 関数を呼んでサーバからモジュールをチェックアウトし、保存したディレクトリを ${WORKDIR} にコピーします。
したがって、cvs.eclass を継承した ebuild は通常 ${S} に ${WORKDIR}/${ECVS_MODULE} か、ECVS_LOCALNAME が設定されている場合には ${WORKDIR}/${ECVS_LOCALNAME} を設定します。
|
ここで実例を見てみましょう。
これは風博士というソフトウェアの CVS ツリーを自動的に取得してくる ebuild です。
Code listing 3.1
|
# Copyright 1999-2003 Gentoo Technologies, Inc.
# Distributed under the terms of the GNU General Public License v2
# $Header $
inherit cvs
ECVS_SERVER="cvs.sourceforge.jp:/cvsroot/kazehakase"
ECVS_USER="anonymous"
ECVS_MODULE="kazehakase"
DESCRIPTION="A browser that use Mozilla, dillo embed, w3m and etc. to render HTML."
HOMEPAGE="http://poincare.ikezoe.net/kazehakase/"
LICENSE="GPL-2"
SLOT="0"
KEYWORDS="x86 ~ppc ~sparc alpha"
IUSE=""
DEPEND="${DEPEND}
!kazehakase
!kazehakase-cvs-test-lirs
sys-devel/automake
sys-devel/libtool
net-www/mozilla
x11-libs/pango
>=x11-libs/gtk+-2*
dev-util/pkgconfig
net-libs/gnet"
RDEPEND="${DEPEND}"
S="${WORKDIR}/${ECVS_MODULE}"
pkg_setup(){
if grep -v gtk2 /var/db/pkg/net-www/mozilla-[[:digit:]]*/USE > /dev/null 2>&1
then
echo
eerror
eerror "This needs mozilla used gtk2."
eerror "To build mozilla use gtk2, please type following command:"
eerror
eerror " # USE=\"gtk2\" emerge mozilla"
eerror
die
fi
}
src_compile(){
export WANT_AUTOCONF_2_5=1
./autogen.sh || die
econf || die
emake || die
}
src_install(){
emake DESTDIR="${D}" install || die
dodoc ABOUT-NLS AUTHORS COPYING* ChangeLog NEWS README* TODO.ja
}
|
オーバーライド
src_unpack
|
「CVS ツリーからモジュールをチェックアウトし、${S} にコピーする」という動作に変更します。
|
|