ebuildスクリプトに関する一連の質問です。 devrelの元の段落と質問を提供してください。

ebuildスクリプトに関する一連の質問です。 devrelの元の段落と質問を提供してください。

範囲

ebuildを取得するたびに、スクリプトソルバーはその関数と変数をメモリにロードします。ただし、関数の一部ではなく変数と命令のみが解釈されます。 src_compile()などの関数は、ebuildがコンパイルフェーズに達したときにのみPortageによって実行されます。

この関数内のコードは「ローカル範囲」にあると見なされますが、関数外のすべては「グローバル範囲」にあります。つまり、ebuildをインポートするたびに実行されるという意味です。

パフォーマンス上の理由から、外部アプリケーション(grep、sed、awkなど)をグローバルに呼び出すことはできませんが、組み込みのbash代替の使用などの代替を使用する必要があります。便利な選択肢は、高度な Bash スクリプティングガイドにあります。

また、グローバルに呼び出すことができる外部アプリケーションがシステムに存在するという保証もありません。コマンドがローカルスコープ(pkg_setup()関数など)に配置されている場合は、ebuildに配置してこれを実行できます${DEPEND}

  1. ebuildを調達するとはどういう意味ですか?ソースコマンドになることはできますか?

  2. さて、変数 - どのように解釈しますか?とにかく、私はその機能がどのように機能するのか理解しています。関数は一種のプログラミングです。コンパイルまたは解釈されます。 ebuild言語がGentoo Portageで広く使用されているPearlやPythonなどのスクリプト言語(おそらくbash)である場合、ebuildにコンパイル機能を含めることができます(学校でPascalでやったことを覚えています)。

  3. それでは、src_compile()関数とは何ですか? revdelにはこれに対する言及はありません。

  4. 「コンパイルステップ」 - この用語は何を意味しますか? ebuildステップまたはebuildステップは何ですか?

  5. ローカル/グローバル範囲でも同様です。私はいくつかの内部アプリケーションでそれを全く理解していません。言及された反対の考えも理解できません(awk..)。

  6. pkg_setup()関数$DEPEND- これは単なる例なのか、それとも隠された意味を暗示するのでしょうか?

ベストアンサー1

Ebuildはシェルスクリプト(実際にはbashスクリプト)です。したがって、それらは変数を持ち、関数を定義するシェルスクリプトのように動作します。しかし、ebuildは直接実行されません。必要な順序に応じて、ebuildで適切な関数を呼び出して、準備、ビルド、およびインストールプロセスをemerge(または時には直接)実行して駆動します。ebuild

第1四半期:ebuildを調達することはどういう意味ですか?
第2四半期:変数 - どのように解釈しますか?
Q5:範囲

source組み込みコマンドを使用するシェルスクリプトと同じです(参考man bash文献を参照)。これは、スクリプト(この場合はebuild)がemerge現在のシェル(によって駆動される)によって読み取られ、呼び出しスクリプトの一部であるかのように処理されることを意味します。
これはすべての変数定義を処理し、呼び出しスクリプトの環境に追加し、ebuildで定義されているすべての関数を解決しますが、実行するわけではありません。
変数は次のように非常に簡単です。

DEPEND=">=dev-foo/bar-42"

説明を必要としないか、他の変数への参照を含めることができます。例:

DEPEND=">=some-cat/related-${PV}"

変数の補間が必要な場合、またはbash組み込みまたは外部プログラムを実行して解釈する必要があるより複雑な定義を使用できます。これはebuildに固有のものではなく、一般的なスクリプトです。

ebuildの範囲については特別なものはなく、通常のスクリプトの範囲と同じです。

第4四半期:ステップ
第3四半期と第6四半期: src_compilepkg_setup${DEPEND}

ソースからパッケージをインストールするプロセスは、ほぼ準備(ソースのダウンロード、解凍および構成)、コンパイル、インストール、およびインストール後の作業のさまざまな段階に分けられます。 Ebuild管理者は、各ステップで実行される機能を提供してビルドをカスタマイズできます。ステップのリストは以下で確認できます。EAPIの使い方とガイドライン開発者。手動。
事前定義された変数とebuild変数は変わりやすい同じマニュアルの一部です。${DEPEND}その一つです。

src_compileパッケージをインストールする前にソースコードをコンパイルする必要がある場合は、ebuildが(直接または間接的に)提供する必要がある機能の1つを使用してください。すべてのebuildがそれを必要とするわけではありませんが(たとえば、コンパイルを必要としないアイコン/テーマ/イメージしかインストールできません)、通常は必要です。 ebuild管理者の仕事は、ソースパッケージを正しく構築できるようにこの関数を作成することです。
pkg_setupインストールの初期段階で呼び出される関数の1つ。

おすすめ記事