This service is available only in Japanese-language.

bitbake の各コマンドの効能について

お世話になります。

自分の作成したプログラム(bbファイルを作成し、パッケージとしてIMAGE_INSTALL_appendに含めています)で boost を使用する必要があり warrior に boost v1.69.0 のbbがありましたのでこれを採用していました。
ところが boostが提供する spawn に問題があるとわかり、 zeus-next の boost v1.71.0 のbbを自身のレイヤーに組み込んでこちらを使用することとなりました。結果としてOSイメージを見る限りうまく組み込めたようです。
その後、事情により v1.69.0 に戻すこととなりましたので、組み込んだbbを削除し、v1.69.0 のbbを復活させました。

その後のbitbake で boost を組み込んでいる自身のプログラムがリンクエラーを起こすようになりました。ログを確認する限り、もう使用しないはずの v1.71.0 の共有ライブラリをリンクしようとしていることがわかりました。
boost の状態としては build/tmp/work/aarch64-poky-linux/boost/1.69.0-r0 となっており、v1.71.0 の成果物ではないようです。

上記を解消するために、いわゆる boost を make clean してオブジェクトファイル等の中間ファイルや関係するリンク事情などまっさらの状態にするイメージで bitbake -c cleanall パッケージ名(自分のプログラム/core-image-baseとも試行) を実行してみましたがリンクエラーは変わらず、でした。

できるだけかみ砕いて教えていただきたいのですが、下記の2つはなにをどこまで掃除してくれるものなのでしょうか?
①bitbake -c cleanall core-image-base
②bitbake -c cleansstate core-image-base

また、今回のように依存関係まで含めてまっさらの状態から bitbake を行いたい場合はどのように対処するべきでしょうか。
# do_fetchはさすがにもう行わないものとして。

以上、よろしくお願いいたします。

> できるだけかみ砕いて教えていただきたいのですが、下記の2つはなにをどこまで掃除してくれるものなのでしょうか?
> ①bitbake -c cleanall core-image-base
> ②bitbake -c cleansstate core-image-base
両方とも、core-image-base のレシピのタスク実行によって生成されたもののみ、削除を行います。
イメージレシピはイメージを構成する生成済のパッケージをパッケージフィードから取り出してrootfs
を作成し、作成したrootfsをイメージ形式で出力します。

ソフトウェアレシピ(最終的にパッケージフィードにパッケージを出力するレシピ)の場合、
①clean (ターゲット向けの出力を削除)
②cleansstate(①+ssateの出力の削除)
③cleanall(② + ダウンロードを行ったファイルの削除)
となります。

> また、今回のように依存関係まで含めてまっさらの状態から bitbake を行いたい場合はどのように対処するべきでしょうか。
> # do_fetchはさすがにもう行わないものとして。

イメージを構成する各パッケージを生成するレシピ間の依存関係を含めて特定のtaskの実行ですが、
bitbakeでYocto2.5から追加された--runall = [task名] を使用することで実現可能となっています。
但し、現状の実装ではfetch 以外はうまく動作しておりません。

conf 及び、DL_DIRで指定されたディレクトリ以外を消去することで、既にDL済のファイルを利用した
再構築が可能となります。

> conf 及び、DL_DIRで指定されたディレクトリ以外を消去することで、既にDL済のファイルを利用した
> 再構築が可能となります。

やり直す場合はこれで問題なく行えることを確認しました。ありがとうございました。