2016-08-18 34 views
2

私は標準的なレシピと自分自身を含むイメージを作成しています。私が含まれているすべてのパッケージで使用しているライセンスをリストし、後でそれらを商用アプリケーションに使用できるかどうかを確認したいと考えました。Yoctoのパッケージグループと画像のライセンス

私は驚いていましたが、パッケージグループには既にLICENSEフラグがあります。私はそれをやって気づい:

bitbake -e -n -v core-image-minimal | grep "LICENSE" 

それがBBファイルに定義されているので、それはLICENSE = MITを返します。

しかし、私はすべてのパッケージについての情報はありません。このMITは手動でcore-image-minimal.bbに入れましたが、私はすべての依存関係に興味があります。 .bbファイルにも同じ問題があります。

アプローチ1

ソリューションは、飛び出した1チェックLICENSE_FLAGS_WHITELISTにそれらを追加し、INCOMPATIBLE_LICENSEと反復からそれらを削除、その後

bitbake -k -n -e -v <recipe> | grep "incompatible with license" 

をINCOMPATIBLE_LICENSEとしてすべてのライセンスを配置し、

ことであろう。問題は、それが完了するたびに、全体のワークスペースを再び解析し、それは時間がかかります。

簡単に確認できるスクリプトはありますか? YoctoのようなPythonのものは常にそうです。 Iは、メタ/クラス/ license.bbclassを編集しcheck_license_format関数のforループで

bb.warn('%s license is %s' %(pn, licenses)) 

を加え2

アプローチ。今では、各パッケージのライセンスを印刷しますが、私は一種の持っているので、私は「パッケージ管理以来、私の全体のレシピをコンパイルすることができませんでしたそれを

を行うには

良い方法を総括したいと思います"機能は現在debパッケージ(here)で動作しません。 イメージレシピを調整して、@Roman Khimovの方法を使用してください。それを行うには、きれいな方法です。

答えて

8

特別な操作は必要ありません。イメージを作成し、結果マニフェストファイルをbuild/tmp/deploy/licenses/$IMAGE_NAME-$MACHINE-$DATE/license.manifestに表示してください(もちろん、LICENSE_DIRECTORYを再定義しなかった場合)。私は自分のgeneric-amd64 MACHINEのためcore-image-minimalを構築する場合

は例えば、私はbuild/tmp-musl/deploy/licenses/core-image-minimal-generic-amd64-20160818141324/license.manifestで結果を得る:

PACKAGE NAME: base-files 
PACKAGE VERSION: 3.0.14 
RECIPE NAME: base-files 
LICENSE: GPLv2 

PACKAGE NAME: base-passwd 
PACKAGE VERSION: 3.5.29 
RECIPE NAME: base-passwd 
LICENSE: GPLv2+ 
... 
+0

それはドライラン(-n、私がテストし、何の免許を持っていないと動作させるための方法がありますマニフェスト) –

+0

@DavidBensoussan: 'license_create_manifest()'は 'ROOTFS_POSTPROCESS_COMMAND'から実行され、rootfsの作成段階にあるので、そうは思わないでください。また、理論的には、少なくとも動的パッケージのためにイメージを構築するまで、パッケージとライセンスの完全なリストを作成することはできません。 –

関連する問題