宇宙ドーナツ研究会

セキュリティ系お勉強メモ

layers.conf について

$ poky/scripts/yocto-layer create my-recipe

を実行することで、my−recipe というサンプルレイヤを作成できる。

ここで作成されたlayer.confについて、いろいろ考察。

 

===

BBPATH .= ":${LAYERDIR}"

BBFILES += "${LAYERDIR}/recipes-*/*/*.bb ${LAYERDIR}/recipes-*/*/*.bbappend" 

BBFILE_COLLECTIONS += "my-recipes"

BBFILE_PATTERN_my-recipes = "^${LAYERDIR}/"

BBFILE_PRIORITY_my-recipes = "6"

===

 

# LAYERDIR

meta-my-recipes ディレクトリのパス。layer.conf内でのみ有効

 

# BBPATH

bitbakeが.bbclassやらconfigファイルやらを認識するためのもの。

シェルでのPATHと同じ。

 

# BBFILES
レシピファイルのフルリスト。
 

BBFILE_COLLECTIONS += "my-recipes"

このリストを使って、他の BBFILE_* という変数を参照する。

ここでは、本レシピを my−recipes という名前で登録してる。

 

BBFILE_PATTERN_my-recipes = "^${LAYERDIR}/"

BBFILES 変数の中から、本レイヤに関するものを探す際の、検索キーワード設定

 
# BBFILE_PRIORITY_my-recipes = "6"

優先度設定

 

■気づいたこと

# 1

どうやら、${} がつく変数とつかない変数の違いは、環境変数とシェル変数の違いに相当するみたい。

つまり、${} の方は、そのスクリプトや設定ファイル内でのみ有効、

つかない方は、グローバルに共有されるみたい。

 

#2

bitbakeは、最初にbblayers.confに描かれているレイヤのlayer.conf を次々とパーズし、BBPATH:全レイヤのパスのリスト

BBFILES:全レイヤにあるbbファイルやbbappendファイルのリスト

BBFILE_COLLECTIONS:全レイヤの名前のリスト

る。

```

$ cat meta-sby-zynq/conf/layer.conf
# We have a conf and classes directory, add to BBPATH
BBPATH .= ":${LAYERDIR}"

# We have recipes-* directories, add to BBFILES
BBFILES += "${LAYERDIR}/recipes-*/*/*.bb \
        ${LAYERDIR}/recipes-*/*/*.bbappend"

BBFILE_COLLECTIONS += "sby-zynq"
BBFILE_PATTERN_sby-zynq = "^${LAYERDIR}/"
BBFILE_PRIORITY_sby-zynq = "6"

```

 

全てのレイヤにおけるレシピファイルのリストを作成するみたい。

その後、レイヤごとの処理に移る。

その際は、BBFILESから、そのレイヤに属すレシピを BBFILE_PATTERN_* 変数を使って検索し、ビルドしていくのかと。

 

#3 

class ファイルを使うことで、設定の継承ができる。

おおもとのclassファイルは、meta/classes/base.bbclass 。

ここには、fetching, unpacking, configuring などのデフォルト処理が記述されており、

全てのレシピは、自動でこれを継承する。

これらの処理は、他のclassファイルにより上書きされていく。