Licenças para grupos de pacotes e imagens no Yocto
Estou criando uma imagem contendo receitas padrão e minhas próprias. Eu queria listar as licenças que uso em todos os pacotes incluídos e depois verificar se posso usá-las para aplicativos comerciais, por exemplo.
Eu tive a má surpresa dos grupos de pacotes já ter uma bandeira de LICENÇA. Eu notei isso fazendo:
bitbake -e -n -v core-image-minimal | grep "LICENSE"
RetornaLICENÇA = MIT uma vez que está definido no arquivo bb.
Mas não tenho informações sobre todos os pacotes incluídos. Esse MIT foi colocado manualmente no core-image-minimal.bb, mas eu estaria interessado em todas as dependências. Eu tenho o mesmo problema para o meu arquivo .bb.
Abordagem 1
Uma solução seria colocar todas as licenças como INCOMPATIBLE_LICENSE e depois
bitbake -k -n -e -v <recipe> | grep "incompatible with license"
depois verifique qual aparece, adicione-o em LICENSE_FLAGS_WHITELIST e remova-o de INCOMPATIBLE_LICENSE e itere. O problema é que, toda vez que é feito, ele analisa novamente todo o espaço de trabalho e leva séculos.
Existe um script em algum lugar para verificar isso facilmente? Um python como Yocto sempre faz.
Abordagem 2 Editei meta / classes / license.bbclass e adicionei
bb.warn('%s license is %s' %(pn, licenses))
no loop for da função check_license_format. Agora ele imprime licença para cada pacote, mas eu gostaria de resumir
Boa maneira de fazer isso
Portanto, não pude compilar toda a minha receita, pois o recurso "gerenciamento de pacotes" atualmente não funciona com pacotes deb (leiaaqui) Adapte sua receita de imagem e use o método de @Roman Khimov lá em baixo. É a maneira limpa de fazer isso.