EUTILS.ECLASS(5)

名前
eutils - ebuild で使われる追加の(でもよく使われる)いろいろな関数

説明
eutils eclass は ebuild.sh にすでに含まれている関数を補助する 関数セットを持っている。考え方としては、全 ebuild に必須というわけではないが、共通の置き場所を定めるには十分、 というような関数セットを集めている。

関数

cdrom_get_cds <cd1 file> [cd2 file] [cd n file]
    CDからファイルを読み取る必要があるebuild作成に便利な関数である。 gameのパッケージでもっともよく使われる。 CDごとにCDがマウントされているかどうか検出するために使うファイルのリストを指定するだけである。 この関数はユーザーとの対話的なごちゃごちゃとしたことを全部受け持ってくれる。 この関数が終了すれば、CDROM_ROOT変数にアクセスすることができる。 もしなにがしかの方法でCDの名前をユーザーに伝えたければ、この関数を呼ぶ前にCDROM_NAME変数をexportしておけばよい。 1つ以上のCDの名前をそれぞれ違う名前で出したければ、CDROM_NAME_1、CDROM_NAME_2、といったようにexportすればよい。 複数CDのサポートについての詳しい情報は、cdrom_load_next_cdを参照。

cdrom_load_next_cd
    大き過ぎるため複数のCDで配布されているパッケージもある。 1つのCDからファイルを読み終え、次のCDにアクセスしたいときには、この関数を呼べばよい。 ここでも、ユーザーとの対話的なごちゃごちゃしたやりとりはこの関数が代わりにやってくれる。 この関数が終了したら、マウントされたCDの場所はCDROM_ROOTを読めばよい。 CDリストを次々に読んでいくことしかできないので、現在のCDについての処理が全部終わってからこの関数を呼ぶよう留意すること。

draw_line
    $* と同じ長さの「=」からなる線を引く単純な関数。 `draw_line 1234 5678` を実行すれば、1行に9文字の「=」が得られる。

edos2unix <ファイル>
    dos2unix、recode、fixdos などなどを手軽に置き換える。 この関数はスクリプトベースのものなので、これを使えば DEPEND 変数からこれらのテキストユーティリティを全部取り除くことができる。 変換するファイル名を与えるだけで、 DOS の CRLF 形式から UNIX の LF 形式に変換することができる。

enewgroup <グループ名> [gid]
    この関数を使えば、 グループをシステムに追加する正しい方法を知らなくてもよくなる。 追加する グループ名 を与えれば、enewgroup が残りをやってくれる。そのグループに gid を指定することもできるし、次に使用できる gid を自動で確保して割り当てることもできる。

enewuser <ユーザ名> [uid] [シェル] [ホームディレクトリ] [グループ名] [パラメータ]
    enewgroup と同じで、 ユーザをシステムに追加する正しい方法を知らなくてよくなる。 必須のパラメータは ユーザ名 だけである。
    デフォルト値
    uid: 次に使用できる値 (デフォルトのふるまいをさせたければ -1 を渡す)
    シェル: /bin/false
    ホームディレクトリ: /dev/null
    グループ名: グループなし
    パラメータ: useradd(8) が受け取れるその他のパラメータ全部。 詳しくは man ページ参照

epatch
    下記 epatch セクション参照。

gen_usr_ldscript
    /lib にあるダイナミックライブラリのためのリンカースクリプトを /usr/lib に生成する。 これは /lib に .so、そして /usr/lib に .a があるときのリンク問題を解決するためのものである。 ときどき、gcc や libtool のライブラリ検索パスを変更していると、 ダイナミックリンクのとき /lib にある .so ではなく /usr/lib にある .a が使われる、ということが起きるのである。

get_number_of_jobs
    システムに存在する CPU の数を調べ、得られた結果それに従って MAKEOPTS に -j を設定する。

have_NPTL
    この関数は glibc の NPTL pthread の実装を使っていると真を返す。

make_desktop_entry <バイナリ> [名前] [アイコン] [種類] [パス]
    GNOME や KDE のメニューにアプリケーションへの小さなショートカットを作る。 実行するバイナリの名前を渡すだけで、残りは全部やってくれる。 メニューに表れる名前を変えたければ、この関数に 名前 のパラメータを渡す。アイコン (デフォルトは ${PN}.png) を指定したければ、/usr/share/pixmaps/ からの相対パス、 もしくはファイルへの絶対パスで画像ファイルの名前を渡す。 アイコンがインストールされるメニューのセクションを (${CATEGORY} で決定されるデフォルトの場所ではなく) 指定したければ、種類 の値を指定する (取りうる値については http://www.freedesktop.org/standards/menu-spec/ 参照)。最後に、 アプリケーションが特別なディレクトリで起動しなければならないなら、 最後の値をフル パス 名として渡す。

unpack_makeself [makeselfarchive][byteoffset]"
    makeself自身の展開スクリプトに頼らずmakeselfアーカイブを展開する。 makeselfスクリプトがもう適切にサポートされていない古い構文(POSIX)を使っている場合に便利である。 展開するファイルを指定しなければ、${A}が代わりに使われる。 オフセットを指定しなければ、makeselfスクリプトを検索して正しい値を見つける。 makeselfアーカイブについての詳しい情報は、http://www.megastep.org/makeself/を参照のこと。

unpack_pdv <pdv archive> <sizeof(off_t)>
    pdv自身の展開バイナリに頼らずpdvアーカイブを展開する。 スタティックバイナリがときどきクラッシュするシステムや、バイナリが非対話的な展開方法を提供していない場合に便利である。 off_tサイズを指定しなければならないのは、わたし(vapier@gentoo.org)がバイナリ実行ファイルから自動的にオフセット情報を抽出する方法を知らないからだ。 渡す値はpdvアーカイブを作成した計算機でのoff_tタイプのサイズ(バイト)である。 その値が分からないのであれば、2、4、もしくは8を試してみるとよい。 pdvアーカイブについての詳しい情報は、http://pdv.sourceforge.net/を参照のこと。

EPATCH

epatch について
    epatch はパッチを簡単にするために設計された。 開発者が patch(1) コマンドを使ったときにもするであろう、 一般的なチェックを全部やってくれる。 この関数は、いろいろなオフセット値 (-p0 から -p5 まで、epatch が呼ばれたときの作業ディレクトリに相対的に)でパッチを当てようと試みる。 パッチを当てるのに(--dry-run でテストすることによって)失敗すれば、 epatch は die を呼ぶことによって emerge プロセスを停止させる。 デバッグが簡単なように、パッチを試行した出力がログファイルとして残る。 パッチが成功すれば、 どのパッチが当たったのかを示すきれいに整形されたメッセージが出力される。 epatch は山のようなパッチを当てるのにも、 ほんの1つや2つのパッチを当てるのにも使うことができる。 それに加え、この関数は bzip2、gzip、compress (Z) そして zip 形式で圧縮されたパッチファイルを扱うこともできる。

使用方法

    epatch  <パッチファイル>
        epatch を使うもっとも簡単で一般的な方法は、 単にパッチファイルへのフルパスを与えるだけである。

    epatch  <ディレクトリ>
        さらに強力な使い方は、ディレクトリにパッチをたくさん入れ、 そして epatch にそのディレクトリにあるパッチ全部を当てさせる、 というものである。パッチは ??_${ARCH}_foo.${EPATCH_SUFFIX} という形式でなければならない。 こうするときちんとパッチが順序づけられていることが保証され、 ARCH 固有のパッチを当てることもできる。
        01_all_misc-fix.patch.bz2
           全アーキテクチャ向けに最初人 misc-fix のパッチを当てる
        02_sparc_another-fix.patch.bz2
           SPARC のときだけ another-fix パッチを2番目に当てる

変数

    EPATCH_SOURCE = "${WORKDIR}/patch"
        epatch が当てるパッチやパッチのディレクトリの名前。 この変数は epatch をパラメータつきで呼べば自動で設定される。

    EPATCH_SUFFIX = "patch.bz2"
        たくさんのパッチを当てるとき、 この値が全てのパッチの持つ suffix になる。

    EPATCH_OPTS = ""
        patch(1) に渡す追加オプション。 我々も全てお見通しという訳ではないので、制限する理由もない :) デフォルトはもちろん "" である。

    EPATCH_EXCLUDE = ""
        スペースで区切られた (いや、本当のところは IFS で区切られた……) ファイル名のリストで、 たくさんのパッチを当てるとき飛ばすパッチのファイル名を列挙する。 ファイル名だけ書き、フルパスは使わないこと。

    EPATCH_SINGLE_MSG = "Applying <パッチ名>"
        たった1つのパッチをあてるのだとすれば、 デフォルトのメッセージを表示するのではなく、 なんでも言いたいことを言うよう変更できる。 もしやりたければ、もちろん「わたしを無線装置 51 と呼ばないで」 と表示させることだってできる。

    EPATCH_FORCE = "[yes|no]"
        この変数では EPATCH_SOURCE にあるパッチが ??_${ARCH}_foo.${EPATCH_SUFFIX} というファイル名のルールに則っていなくても全て当てるかどうか決める。 デフォルトでは上記のルールを使ってもらいたい。

バグ報告
バグ報告は http://bugs.gentoo.org/ 経由で行なってください。

参照
ebuild(5)

ファイル
/usr/portage/eclass/eutils.eclass

著者
Mike Frysinger <vapier@gentoo.org>

CVS ヘッダ
原文: eutils.eclass.5,v 1.5