This service is available only in Japanese-language.
ヘッダーオンリーライブラリのように,複数のレシピで一つのヘッダーを扱うために,以下のようなレシピを作成し運用しています。
(レシピ名:libaaa.bb)
SECTION = "libs"
LICENSE = "CLOSED"
FILES_${PN}-dev += "${includedir}/*.h "
INHIBIT_PACKAGE_DEBUG_SPLIT = "1"
ALLOW_EMPTY_${PN} = "1"
SRC_URI = "file://."
S = "${WORKDIR}"
do_install() {
install -d ${D}${includedir}
install -m 0755 *.h ${D}${includedir}/
}
これを使用するレシピでDEPENDS += " libaaa"と記載することでビルドに成功しています。
しかしヘッダの内容(例えばenumのメンバの割当変更)等を行うと,更新が認識されていないのか,エラーは出ないものの実行結果が旧ヘッダファイル相当となってしまうことがございます。
特にビルドPCとは別のPCで作成し,(複数の独自レシピ・ソースをを一つのgitで管理している状態で)また別のPCでビルドすると発生するように見受けられます。
レシピの記載に不足点ないか,ご回答いただけますでしょうか。
(追記)bitbake -c cleanall (libaaaを参照するレシピ名)とし,ビルドし直すことで新ヘッダファイルが適用されますが,毎回cleanすることも困難なため,bitbakeの仕組みの方で更新を認識できるようにしたいです。l
yakuhito
2021/9/21 (火) 16:14
レシピのリビジョン、エポックに変更が無いため、過去の構築結果を再利用する形になっていますね
現状のレシピ構成では、レシピが置かれているディレクトリの${PV}-${PR}/ 以下に置かれたファイルの変更を
bitbake側で検知する方法は無いですね。
git で管理する仕組みが用意されているようですので、gitでファイルを取得する形に変更されたほうが良いかと。
SRCREV = "${AUTOREV}"
と指定することで、常に最新版を取得するようになります。
Fixした時にcommit をSRCREVに指定すれば、以降は同一のものが使用されます。
mackey
2021/9/21 (火) 17:32
ご回答ありがとうございます。
ご回答ありがとうございます。
レシピ単位ではなく、独自レシピをまとめたmeta-xxxをまとめてgit管理しているため、(bitbakeとは別にcloneし、ローカルのソースとしてbitbakeしているため)
SRCREV = "${AUTOREV}"は使用できそうにありません。
Yocto的にはレシピごとgitリポジトリを分けた方が良いことは理解しているのですが、都合によりmeta-xxxを丸ごと一つのリポジトリで管理してしまっています。
毎回cleanする方法しかないということですかね...
ご回答いただきありがとうございました。
yakuhito
2021/9/21 (火) 18:19
PRの使用はいかがでしょうか?
レシピ内でPRの値にファイル追加日を記載することで、変更時にはタスク実行時のシグネチャチェックで自動的に再構築がかかるかと。
mackey
2021/9/21 (火) 19:24
シェルスクリプトで独自関数を作成しましたが,うまく動作していない状況です
ご回答ありがとうございます。
シェルスクリプトで独自関数を作成し,更新日時をPRに入れる,ということでしょうか?
試しに以下のような記載を行ってみましたが,PRに更新日時を入れることはできませんでした。
参照URL
https://docs.yoctoproject.org/bitbake/bitbake-user-manual/bitbake-user-m...
shell functionを自作したことがなく,お手数をおかけしますが,誤りがないかご確認いただけますでしょうか。
SECTION = "libs"
LICENSE = "CLOSED"
FILES_${PN}-dev += "${includedir}/aaa.h "
ALLOW_EMPTY_${PN} = "1"
SRC_URI = "file://."
S = "${WORKDIR}"
do_getvar() {
PR=`date "+%Y%m%d%s" -r aaa.h`
echo rev=$PR
}
do_install() {
install -d ${D}${includedir}
install -m 0755 aaa.h ${D}${includedir}/
}
yakuhito
2021/9/22 (水) 09:54
RPへの設定は手動でおこなうことを想定しています。
一手間掛かってしまいますが、当該ディレクトリ内を更新した時点で、YYYYMMDDHHMMで値を設定すれば良いかと。
更新時刻を含めることで、同一日に別の変更が入ってもレシピのリビジョンは更新されます。
因みに変数への値の設定は、タスク内で実施した場合(上記例で記述されている関数は、タスクの扱いとなります)、設定の有効範囲はそのタスク内となります。
各タスクで使用する変数の設定は、タスク外の場所でpythonの式を用いて設定します。
zeus の bitbakeのオンラインマニュアルの変数設定は以下のURLで説明されています。
https://www.yoctoproject.org/docs/3.0.4/bitbake-user-manual/bitbake-user...