はじめに
最近やっと時間が取れるようになって(なってない)、HONISTERをいじり始めた。
初っ端から下記のようなエラーが発生して面食らった。
ERROR: Variable DISTRO_FEATURES_append contains an operation using the old override syntax. Please convert this layer/metadata before attempting to use with a newer bitbake.
Upgrading to Yocto Honisterで、まず引っかかりそうなポイントをまとめてくれている。
大きい変更点
まずは、migration-guidesを見る。
Override syntax changes
一番大きい変更点は、Override syntax changes
だろう。
下記のような記述が、
SRC_URI_qemux86 = "file://somefile"
このように変更されている。
SRC_URI:qemux86 = "file://somefile"
Override syntax(ここではqemux86)と変数名の区切りが_
から:
に変更されている。この変更自体は、変数名に入っている単語を区切るための_
とOverride syntaxのための_
でよく混乱していたので、歓迎されるべきものだと思っているが、
使用頻度が高いところでもあるので、ユーザーがよく引っかかると思う。
その他のものも含めて、migration-guideではこのように例示されている。
変更前
SRC_URI_append = " file://somefile" SRC_URI_append_qemux86 = " file://somefile2" SRC_URI_remove_qemux86-64 = " file://somefile3" SRC_URI_prepend_qemuarm = "file://somefile4 " FILES_${PN}-ptest = "${bindir}/xyz" IMAGE_CMD_tar = "tar" BASE_LIB_tune-cortexa76 = "lib" SRCREV_pn-bash = "abc" BB_TASK_NICE_LEVEL_task-testimage = '0'
変更後
SRC_URI:append = " file://somefile" SRC_URI:append:qemux86 = " file://somefile2" SRC_URI:remove:qemux86-64 = " file://somefile3" SRC_URI:prepend:qemuarm = "file://somefile4 " FILES:${PN}-ptest = "${bindir}/xyz" IMAGE_CMD:tar = "tar" BASE_LIB:tune-cortexa76 = "lib" SRCREV:pn-bash = "abc" BB_TASK_NICE_LEVEL:task-testimage = '0'
変更後のほうが明らかにわかりやすくなっている。
ほかにもgetVar("RDEPENDS_${PN}")
がgetVar("RDEPENDS:${PN}").
になったりする。
とにかく、下記のようなメッセージに出くわしたら_
を:
に変えられないか疑ってみよう。
ERROR: Variable XXXXXXX contains an operation using the old override syntax. Please convert this layer/metadata before attempting to use with a newer bitbake.
host dependencyの追加
bitbakeを実行する際にHost側にインストールしておくべきパッケージが追加されている。
- lz4c
- pzstd
- zstd
以前からYocto Projectを使っている環境で不意にエラーになるとびっくりするかもしれない。
Virtual runtime providesの廃止
virtual/
がRPROVIDESやRDEPENDS
で使用できなくなった。あまりユースケースが思い浮かばないが、過去の資産のレイヤを使い回す時に出くわすかもしれない。
Tuneファイルがアーキテクチャ毎のディレクトリに移動
BSP用のレイヤを作ったりする場合に出くわす可能性がある。tune-corei7.inc
とかtune-cortexa8.inc
などのファイルのこと。
これらがアーキテクチャごとにx86系であればx86
、MIPS系であればmips
、ARM系の場合はarmv8a
やarmv8m
などのサブディレクトリごとに配置されるようになった。
まとめ
Override syntaxが変更したのはかなり大きい。過去のバージョンからHONISTERに移行する場合は注意が必要となる。
詳細かつ正確な情報はmigration-guidesを参照してほしい。