はじめに
- OSSライセンスに準拠するために、開示するソースコードを取捨選択したい人向け
- GPLライセンスのみ開示したい
- CLOSEライセンスだけ開示したくない等
方法
- 以下の文をlocal.confに追記することで、tmp/deploy/sourcesの下にソースが展開される
INHERIT += "archiver"
- 以下の文を追記することでOSSライセンスのフィルタ処理が行われる
- COPYLEFT_LICENSE_INCLUDEは、tmp/deploy/sourcesに展開しないOSSライセンスを指定する。
- COPYLEFT_LICENSE_EXCLUDEは、tmp/deploy/sourcesに展開しないOSSライセンスを指定する。
- 同時に記載が合った際には、COPYLEFT_LICENSE_INCLUDEよりCOPYLEFT_LICENSE_EXCLUDEが優先的に採用される。
COPYLEFT_LICENSE_INCLUDE = 'licence-name'
COPYLEFT_LICENSE_EXCLUDE = 'licence-name'
例
INHERIT += "archiver"
の動作を確認する
- 通常のbitbakeでは、tmp/deployの下にsourcesはない。
takeshi@X250:~/yocto/poky$ source oe-init-build-env
(略)
takeshi@X250:~/yocto/poky/build$ bitbake core-image-minimal
(略)
takeshi@X250:~/yocto/poky/build$ ls tmp/deploy/
images licenses rpm
-
INHERIT += "archiver"
を追記することで、tmp/deploy/sourcesが生成される
takeshi@X250:~/yocto/poky/build$ cat conf/local.conf | tail -n 1
INHERIT += "archiver"
takeshi@X250:~/yocto/poky/build$ bitbake core-image-minimal
(略)
takeshi@X250:~/yocto/poky/build$ ls tmp/deploy/
images licenses rpm sources
- 各ディレクトリ下はソースコードがtar.gz形式で固められて置かれている
takeshi@X250:~/yocto/poky/build$ ls tmp/deploy/sources/allarch-poky-linux/ca-certificates-20190110-r0/
ca-certificates-20190110-r0-patched.tar.gz
ライセンスフィルタの動作を確認する
- デフォルトでは、GPL系ライセンスのソースコードのみがtmp/deploy/sourcesに置かれ、独自ライセンスのソースコードは開示しないように設定されている。
takeshi@X250:~/yocto/poky/build$ bitbake -e core-image-minimal | grep "COPYLEFT_LICENSE"
# $COPYLEFT_LICENSE_EXCLUDE [3 operations]
COPYLEFT_LICENSE_EXCLUDE="CLOSED Proprietary"★
# $COPYLEFT_LICENSE_INCLUDE [3 operations]
COPYLEFT_LICENSE_INCLUDE="GPL* LGPL* AGPL*"★
include = oe.data.typed_value('COPYLEFT_LICENSE_INCLUDE', d)
exclude = oe.data.typed_value('COPYLEFT_LICENSE_EXCLUDE', d)
- そのため、通常ビルドでは、core-image-minimalにzlibパッケージが含まれているにもかかわらず、tmp/deploy/sourcesに置かれていない。
takeshi@X250:~/yocto/poky/build$ cat tmp/deploy/licenses/core-image-minimal-qemux86-64-20220612125700/license.manifest | tail -n 5
PACKAGE NAME: zlib
PACKAGE VERSION: 1.2.11
RECIPE NAME: zlib
LICENSE: Zlib
takeshi@X250:~/yocto/poky/build$ ls tmp/deploy/sources/x86_64-poky-linux | grep "zlib"
takeshi@X250:~/yocto/poky/build$
- Zlibライセンスを含めるように設定して、tmp/deploy/sourcesの下にzlibパッケージが置かれるかを確認する。
takeshi@X250:~/yocto/poky/build$ cat conf/local.conf | tail -n 1
COPYLEFT_LICENSE_INCLUDE = "GPL* LGPL* AGPL* Zlib"
takeshi@X250:~/yocto/poky/build$ rm -rf tmp/
takeshi@X250:~/yocto/poky/build$ bitbake core-image-minimal
(略)
takeshi@X250:~/yocto/poky/build$ ls tmp/deploy/sources/x86_64-poky-linux | grep "zlib"
zlib-1.2.11-r0