2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

【yocto】特定ライセンスのソースコードのみを取り出す方法

Last updated at Posted at 2022-06-12

はじめに

  • 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
2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?