Yoctoで1つのレシピで複数のファイルを上書きする方法

Yoctoで1つのレシピで複数のファイルを上書きする方法

私はYocto用のレイヤーを作成しています。 2つのハードウェア構成が必要です。 1つは標準的な一般的な構成で、もう1つは特定のユースケースですが、どうすればよいかわかりません。

以下は私が望むものの例です。一般的な画像レシピでDHCP用のネットワークインターフェイスを設定したいとしましょう。ユースケースイメージレシピでは、固定IPで設定したいと思います。

init-ifupdownレシピの標準ファイルをオーバーライドするためにbbappendを作成できますが、これによりinit-ifupdownレシピのすべてのインスタンスのファイルが変更されます。通常のイメージではなくユースケースイメージレシピをビルドするときにのみファイルを変更したいと思います。

そしてさらに一歩進んでください。 rootfsの約12個のファイルを置き換えたいです。私はそれぞれにbbappendを書くのが好きではありません。

「このファイルはすでにパッケージで提供されています。」エラーが発生せずにいくつかのファイルを置き換えるレシピを作成する方法を知っていますか?そして、何十ものbbappendファイルを書く必要はありませんか?

私はこれがbuildrootのオーバーライドで簡単にできることを知っています。残念ながら私はyoctoに閉じ込められています。

ありがとう

答え1

必要なものを入手するには、適切なリリース.confファイルでPREFERRED_VERSIONを使用して、パッケージのバージョンに応じてビルドを変更できます。その後、配布.confファイルのPREFERRED_VERSIONと一致するようにパッケージバージョンを作成できます。これにより、同じプロジェクトで構築しているディストリビューションによって構成などが異なるさまざまなイメージを作成できます。既存のプロジェクトへの統合は、そのプロジェクトの構造によって異なりますが、これは一般的な方向です。

答え2

解決策は、このようなことが起こり得ないということです。

私の研究では、これがビルドの「調味料」と呼ばれることを発見しました。そしてYoctoはこの時点でそのようなことが起こることを可能にする方法で作られていません。私が知る限り、近いうちにこのようなことは起こらないでしょう。

影響を受けるレシピに含まれる単一の「.inc」ファイルを使用して、これを達成するためのいくつかの独立した努力がありました。これにより、レシピはパッケージを完成するためのパスを選択できますが、データ内の「.inc」ファイルは必要です。 Yoctoシステムの外部ツールを使用して手動で操作できます。

以下は、そのトピックのyoctoメーリングリストで見つけたスレッドです。 https://lists.yoctoproject.org/pipermail/yocto/2014-June/020249.html

レシピの複数のファイルの置き換えについては、「クレイジースキャン」が無効になっていると信じない限り、どちらもまだ把握しておらず、作業を放棄しています。

答え3

私が使用する1つの方法は、私のレイヤーに新しいコンピュータプロファイルを作成することです。これにより、他のコンピュータにOVERRIDE構文を使用できます。

https://docs.yoctoproject.org/next/dev-manual/new-machine.html

  recipe/
    files/
      specific.conf
        -- default gets copied to WORKDIR
      newmachine/
        specific.conf
        -- gets copied to WORKDIR for newmachine only
    recipe.bbappend
      SRC_URI += "file://specfic.conf"

関連情報