Licencias para grupos de paquetes e imágenes en Yocto

Estoy creando una imagen que contiene recetas estándar y mi propiedad. Quería enumerar las licencias que uso en todos los paquetes incluidos y luego verificar si puedo usarlas para aplicaciones comerciales, por ejemplo.

Tuve la mala sorpresa de que los grupos de paquetes ya tienen una bandera de LICENCIA. Lo noté haciendo:

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

VuelveLICENCIA = MIT ya que está definido en el archivo bb.

Pero no tengo información sobre todos los paquetes incluidos. Este MIT se ha puesto manualmente en core-image-minimal.bb, pero estaría interesado en todas las dependencias. Tengo el mismo problema para mi archivo .bb.

Enfoque 1

Una solución sería colocar cada licencia como INCOMPATIBLE_LICENSE y luego

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

luego verifique cuál aparece, agréguelos en LICENSE_FLAGS_WHITELIST y elimínelos de INCOMPATIBLE_LICENSE e itere. El problema es que, cada vez que se hace, analiza de nuevo todo el espacio de trabajo y lleva años.

¿Hay un script en algún lugar para verificar eso fácilmente? Una pitón como siempre hace Yocto.

Enfoque 2 Edité meta / classes / license.bbclass y agregué

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

en el bucle for de la función check_license_format. Ahora imprime la licencia para cada paquete, pero me gustaría tener una especie de resumen

Buena manera de hacerlo

Por lo tanto, no pude compilar toda mi receta ya que la función de "administración de paquetes" no funciona actualmente con paquetes deb (leaaquí) Adapte su receta de imagen y use el método de @Roman Khimov allí abajo. Es la forma limpia de hacerlo.

Respuestas a la pregunta(1)

Su respuesta a la pregunta