Лицензии на пакетные группы и изображения на Yocto
Я создаю изображение, содержащее стандартные рецепты и мои собственные. Я хотел перечислить лицензии, которые я использую во всех включенных пакетах, и позже проверить, могу ли я использовать их, например, для коммерческого использования.
У меня были неприятные сюрпризы, у групп уже есть флаг ЛИЦЕНЗИЯ. Я заметил, что делает:
bitbake -e -n -v core-image-minimal | grep "LICENSE"
Он возвращает LICENSE =MIT, поскольку он определен в файле bb.
Но у меня нет информации обо всех включенных пакетах. Этот MIT был помещен вручную в core-image-minimal.bb, но меня будут интересовать все зависимости. У меня та же проблема для моего файла.bb.
Подход 1
Решением было бы поставить каждую лицензию как INCOMPATIBLE_LICENSE, а затем
bitbake -k -n -e -v <recipe> | grep "incompatible with license"
затем проверьте, какой из них выскакивает, добавьте их в LICENSE_FLAGS_WHITELIST, удалите их из INCOMPATIBLE_LICENSE и повторите. Проблема в том, что каждый раз, когда это делается, он снова анализирует все рабочее пространство, и это занимает много времени.
Есть ли где-нибудь сценарий, чтобы легко это проверить? Питон, такой как Йокто всегда делает.
Подход 2 Я отредактировал meta / classes / license.bbclass и добавил
bb.warn('%s license is %s' %(pn, licenses))
в цикле for функции check_license_format. Теперь он печатает лицензию для каждого пакета, но я хотел бы подвести итог
Хороший способ сделать это
Поэтому я не смог скомпилировать весь свой рецепт, так как функция "управление пакетами" в настоящее время не работает с пакетами deb (см. Здесь). Пожалуйста, адаптируйте свой рецепт изображения и используйте там метод @Roman Khimov. Это чистый способ сделать это.
1 ответ
Вам не нужно делать ничего особенного, просто создайте свое изображение и посмотрите на полученный файл манифеста в build/tmp/deploy/licenses/$IMAGE_NAME-$MACHINE-$DATE/license.manifest
(если, конечно, вы не переопределить LICENSE_DIRECTORY
).
Например, если я строю core-image-minimal
для меня самого generic-amd64
МАШИНА Я получаю результат в 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+
...