license: Add support for handle INCOMPATIBLE_LICENSE
cover license: Add support for handle INCOMPATIBLE_LICENSE
The next changes was made to implement INCOMPATIBLE_LICENSE handling in manifest creation this implies to rewrite license_manifest_creation from shell to python.
Tests was made to guarantee compatibility and can be found at,
The last two patches are to avoid warnings in manifest creation due that these recipes don't collect licenses before.
The following changes since commit 7f30749fe026e9ceb75d73b89271145a45a60763:
oeqa/parselogs: Skip hda opcode errors (2015-03-12 12:50:24 +0000)
are available in the git repository at:
git://git.yoctoproject.org/poky-contrib alimon/license-rebase
http://git.yoctoproject.org/cgit.cgi/poky-contrib/log/?h=alimon/license-rebase
Aníbal Limón (5):
license_class: Reimplemented manifest creation in python
license_class: Generalize license_ok function
license: Add support for handle INCOMPATIBLE_LICENSE in manifest
creation
packagegroups: Add LIC_FILES_CHKSUM to avoid warnings in manifest
creation
glibc/glibc-collateral.inc: Add LIC_FILES_CHKSUM to avoid warnings in
manifest creation
meta/classes/license.bbclass | 190 +++++++++++---------- meta/lib/oe/license.py | 84 +++++++++ meta/recipes-core/glibc/glibc-collateral.inc | 2 + .../packagegroups/packagegroup-base.bb | 1 + .../packagegroups/packagegroup-core-boot.bb | 1 + .../packagegroup-core-buildessential.bb | 1 + .../packagegroup-core-eclipse-debug.bb | 1 + .../packagegroups/packagegroup-core-nfs.bb | 1 + .../packagegroups/packagegroup-core-sdk.bb | 1 + .../packagegroup-core-ssh-dropbear.bb | 1 + .../packagegroups/packagegroup-core-ssh-openssh.bb | 1 + .../packagegroup-core-standalone-sdk-target.bb | 1 + .../packagegroups/packagegroup-core-tools-debug.bb | 1 + .../packagegroup-core-tools-profile.bb | 1 + .../packagegroups/packagegroup-cross-canadian.bb | 1 + .../packagegroups/packagegroup-self-hosted.bb | 1 + .../packagegroup-core-device-devel.bb | 1 + .../packagegroup-core-full-cmdline.bb | 1 + .../packagegroups/packagegroup-core-lsb.bb | 1 + .../packagegroups/packagegroup-core-clutter.bb | 1 + .../packagegroups/packagegroup-core-directfb.bb | 1 + .../packagegroups/packagegroup-core-x11-base.bb | 1 + .../packagegroups/packagegroup-core-x11-xserver.bb | 1 + .../packagegroups/packagegroup-core-x11.bb | 1 + .../packagegroups/packagegroup-core-qt.bb | 1 + .../packagegroups/packagegroup-core-qt4e.bb | 1 + .../packagegroup-qt-toolchain-target.inc | 1 + .../packagegroups/packagegroup-core-x11-sato.bb | 1 + 28 files changed, 212 insertions(+), 89 deletions(-)
Signature · 1 line
1.8.4.5
PATCH 1/5 license_class: Reimplemented manifest creation in python
Reimplemented license_manifest_create from shell to python for INCOMPATIBLE_LICENSE handle using oe.license module.
Optimizations are made to avoid license copy now uses a hardlink and symbolic link this helps to save space during build.
--- meta/classes/license.bbclass | 148 ++++++++++++++++++++++--------------------- 1 file changed, 75 insertions(+), 73 deletions(-)
meta/classes/license.bbclass +75 -73
@@ -25,79 +25,81 @@ python write_package_manifest() { 'w+').write(image_list_installed_packages(d)) } -license_create_manifest() { - # Test if BUILD_IMAGES_FROM_FEEDS is defined in env - if [ -n "${BUILD_IMAGES_FROM_FEEDS}" ]; then - exit 0 - fi - - INSTALLED_PKGS=`cat ${LICENSE_DIRECTORY}/${IMAGE_NAME}/package.manifest` - LICENSE_MANIFEST="${LICENSE_DIRECTORY}/${IMAGE_NAME}/license.manifest" - # remove existing license.manifest file - if [ -f ${LICENSE_MANIFEST} ]; then - rm ${LICENSE_MANIFEST} - fi - touch ${LICENSE_MANIFEST} - for pkg in ${INSTALLED_PKGS}; do - filename=`ls ${PKGDATA_DIR}/runtime-reverse/${pkg}| head -1` - pkged_pn="$(sed -n 's/^PN: //p' ${filename})" - - # check to see if the package name exists in the manifest. if so, bail. - if grep -q "^PACKAGE NAME: ${pkg}" ${LICENSE_MANIFEST}; then - continue - fi - - pkged_pv="$(sed -n 's/^PV: //p' ${filename})" - pkged_name="$(basename $(readlink ${filename}))" - pkged_lic="$(sed -n "/^LICENSE_${pkged_name}: /{ s/^LICENSE_${pkged_name}: //; p }" ${filename})" - if [ -z "${pkged_lic}" ]; then - # fallback checking value of LICENSE - pkged_lic="$(sed -n "/^LICENSE: /{ s/^LICENSE: //; p }" ${filename})" - fi - - echo "PACKAGE NAME:" ${pkg} >> ${LICENSE_MANIFEST} - echo "PACKAGE VERSION:" ${pkged_pv} >> ${LICENSE_MANIFEST} - echo "RECIPE NAME:" ${pkged_pn} >> ${LICENSE_MANIFEST} - echo "LICENSE:" ${pkged_lic} >> ${LICENSE_MANIFEST} - echo "" >> ${LICENSE_MANIFEST} - - lics="$(echo ${pkged_lic} | sed "s/[|&()*]/ /g" | sed "s/ */ /g" )" - for lic in ${lics}; do - # to reference a license file trim trailing + symbol - if ! [ -e "${LICENSE_DIRECTORY}/${pkged_pn}/generic_${lic%+}" ]; then - bbwarn "The license listed ${lic} was not in the licenses collected for ${pkged_pn}" - fi - done - done - - # Two options here: - # - Just copy the manifest - # - Copy the manifest and the license directories - # With both options set we see a .5 M increase in core-image-minimal - if [ "${COPY_LIC_MANIFEST}" = "1" ]; then - mkdir -p ${IMAGE_ROOTFS}/usr/share/common-licenses/ - cp ${LICENSE_MANIFEST} ${IMAGE_ROOTFS}/usr/share/common-licenses/license.manifest - if [ "${COPY_LIC_DIRS}" = "1" ]; then - for pkg in ${INSTALLED_PKGS}; do - mkdir -p ${IMAGE_ROOTFS}/usr/share/common-licenses/${pkg} - pkged_pn="$(oe-pkgdata-util -p ${PKGDATA_DIR} lookup-recipe ${pkg})" - for lic in `ls ${LICENSE_DIRECTORY}/${pkged_pn}`; do - # Really don't need to copy the generics as they're - # represented in the manifest and in the actual pkg licenses - # Doing so would make your image quite a bit larger - if [ "${lic#generic_}" = "${lic}" ]; then - cp ${LICENSE_DIRECTORY}/${pkged_pn}/${lic} ${IMAGE_ROOTFS}/usr/share/common-licenses/${pkg}/${lic} - else - if [ ! -f ${IMAGE_ROOTFS}/usr/share/common-licenses/${lic} ]; then - cp ${LICENSE_DIRECTORY}/${pkged_pn}/${lic} ${IMAGE_ROOTFS}/usr/share/common-licenses/ - fi - ln -sf ../${lic} ${IMAGE_ROOTFS}/usr/share/common-licenses/${pkg}/${lic} - fi - done - done - fi - fi - +python license_create_manifest() { + import re + import oe.packagedata + + build_images_from_feeds = d.getVar('BUILD_IMAGES_FROM_FEEDS', True) + if build_images_from_feeds == "1": + return 0 + + pkg_dic = {} + package_manifest = os.path.join(d.getVar('LICENSE_DIRECTORY', True), + d.getVar('IMAGE_NAME', True), 'package.manifest') + with open(package_manifest, "r") as package_file: + pkg_list = package_file.read().split() + for pkg in pkg_list: + pkg_info = os.path.join(d.getVar('PKGDATA_DIR', True), + 'runtime-reverse', pkg) + + pkg_lic_name = "LICENSE_" + os.path.basename(os.readlink(pkg_info)) + pkg_dic[pkg] = oe.packagedata.read_pkgdatafile(pkg_info) + if not "LICENSE" in pkg_dic[pkg].keys(): + pkg_dic[pkg]["LICENSE"] = pkg_dic[pkg][pkg_lic_name] + + license_manifest = os.path.join(d.getVar('LICENSE_DIRECTORY', True), + d.getVar('IMAGE_NAME', True), 'license.manifest') + with open(license_manifest, "w") as license_file: + for pkg in sorted(pkg_dic): + license_file.write("PACKAGE NAME: %s\n" % pkg) + license_file.write("PACKAGE VERSION: %s\n" % pkg_dic[pkg]["PV"]) + license_file.write("RECIPE NAME: %s\n" % pkg_dic[pkg]["PN"]) + license_file.write("LICENSE: %s\n\n" % pkg_dic[pkg]["LICENSE"]) + + licenses = re.sub('[|&()*]', '', pkg_dic[pkg]["LICENSE"]) + licenses = re.sub(' *', ' ', licenses) + for lic in licenses.split(): + lic_file = os.path.join(d.getVar('LICENSE_DIRECTORY', True), + pkg_dic[pkg]["PN"], "generic_%s" % + re.sub('\+', '', lic)) + if not os.path.exists(lic_file): + bb.warn("The license listed %s was not in the "\ + "licenses collected for recipe %s" + % (lic, pkg_dic[pkg]["PN"])) + + # Two options here: + # - Just copy the manifest + # - Copy the manifest and the license directories + # With both options set we see a .5 M increase in core-image-minimal + copy_lic_manifest = d.getVar('COPY_LIC_MANIFEST', True) + copy_lic_dirs = d.getVar('COPY_LIC_DIRS', True) + if copy_lic_manifest == "1": + rootfs_license_dir = os.path.join(d.getVar('IMAGE_ROOTFS', 'True'), + 'usr', 'share', 'common-licenses') + os.makedirs(rootfs_license_dir) + rootfs_license_manifest = os.path.join(rootfs_license_dir, + 'license.manifest') + os.link(license_manifest, rootfs_license_manifest) + + if copy_lic_dirs == "1": + for pkg in sorted(pkg_dic): + pkg_rootfs_license_dir = os.path.join(rootfs_license_dir, pkg) + os.makedirs(pkg_rootfs_license_dir) + pkg_license_dir = os.path.join(d.getVar('LICENSE_DIRECTORY', True), + pkg_dic[pkg]["PN"]) + licenses = os.listdir(pkg_license_dir) + for lic in licenses: + rootfs_license = os.path.join(rootfs_license_dir, lic) + pkg_license = os.path.join(pkg_license_dir, lic) + pkg_rootfs_license = os.path.join(pkg_rootfs_license_dir, lic) + + if re.match("^generic_.*$", lic): + if not os.path.exists(rootfs_license): + os.link(pkg_license, rootfs_license) + + os.symlink(os.path.join('..', lic), pkg_rootfs_license) + else: + os.link(pkg_license, pkg_rootfs_license) } python do_populate_lic() {
Signature · 1 line
1.8.4.5
PATCH 2/5 license_class: Generalize license_ok function
In reply to Aníbal LimónAdd dont_want_licenses as parameter to license_ok function and move it to oe.license module in order to use in other modules.
--- meta/classes/license.bbclass | 21 ++++----------------- meta/lib/oe/license.py | 14 ++++++++++++++ 2 files changed, 18 insertions(+), 17 deletions(-)
meta/classes/license.bbclass +4 -17
@@ -319,36 +319,23 @@ def incompatible_license(d, dont_want_licenses, package=None): take into consideration 'or' operand. dont_want_licenses should be passed as canonical (SPDX) names. """ - import re import oe.license - from fnmatch import fnmatchcase as fnmatch license = d.getVar("LICENSE_%s" % package, True) if package else None if not license: license = d.getVar('LICENSE', True) - def license_ok(license): - for dwl in dont_want_licenses: - # If you want to exclude license named generically 'X', we - # surely want to exclude 'X+' as well. In consequence, we - # will exclude a trailing '+' character from LICENSE in - # case INCOMPATIBLE_LICENSE is not a 'X+' license. - lic = license - if not re.search('\+$', dwl): - lic = re.sub('\+', '', license) - if fnmatch(lic, dwl): - return False - return True - # Handles an "or" or two license sets provided by # flattened_licenses(), pick one that works if possible. def choose_lic_set(a, b): - return a if all(license_ok(lic) for lic in a) else b + return a if all(oe.license.license_ok(lic, dont_want_licenses) \ + for lic in a) else b try: licenses = oe.license.flattened_licenses(license, choose_lic_set) except oe.license.LicenseError as exc: bb.fatal('%s: %s' % (d.getVar('P', True), exc)) - return any(not license_ok(canonical_license(d, l)) for l in licenses) + return any(not oe.license.license_ok(canonical_license(d, l), \ + dont_want_licenses) for l in licenses) def check_license_flags(d): """
meta/lib/oe/license.py +14 -0
@@ -5,6 +5,20 @@ import ast import re from fnmatch import fnmatchcase as fnmatch +def license_ok(license, dont_want_licenses): + """ Return False if License exist in dont_want_licenses else True """ + for dwl in dont_want_licenses: + # If you want to exclude license named generically 'X', we + # surely want to exclude 'X+' as well. In consequence, we + # will exclude a trailing '+' character from LICENSE in + # case INCOMPATIBLE_LICENSE is not a 'X+' license. + lic = license + if not re.search('\+$', dwl): + lic = re.sub('\+', '', license) + if fnmatch(lic, dwl): + return False + return True + class LicenseError(Exception): pass
Signature · 1 line
1.8.4.5
PATCH 3/5 license: Add support for handle INCOMPATIBLE_LICENSE in manifest creation
In reply to Aníbal LimónWhen INCOMPATIBLE_LICENSE's is specified it need to be removed from license.manifest and also avoid copy to target image.
Add ManifestVisitor that walk the license string searching for INCOMPATIBLE_LICENSE's if found remove it also add validation for avoid copy INCOMPATIBLE_LICENSE's to target image.
[YOCTO #6765]
--- meta/classes/license.bbclass | 29 ++++++++++++++++-- meta/lib/oe/license.py | 70 ++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 96 insertions(+), 3 deletions(-)
meta/classes/license.bbclass +26 -3
@@ -29,6 +29,10 @@ python license_create_manifest() { import re import oe.packagedata + bad_licenses = (d.getVar("INCOMPATIBLE_LICENSE", True) or "").split() + bad_licenses = map(lambda l: canonical_license(d, l), bad_licenses) + bad_licenses = expand_wildcard_licenses(d, bad_licenses) + build_images_from_feeds = d.getVar('BUILD_IMAGES_FROM_FEEDS', True) if build_images_from_feeds == "1": return 0
@@ -51,14 +55,24 @@ python license_create_manifest() { d.getVar('IMAGE_NAME', True), 'license.manifest') with open(license_manifest, "w") as license_file: for pkg in sorted(pkg_dic): + if bad_licenses: + try: + (pkg_dic[pkg]["LICENSE"], pkg_dic[pkg]["LICENSES"]) = \ + oe.license.manifest_licenses(pkg_dic[pkg]["LICENSE"], + bad_licenses, canonical_license, d) + except oe.license.LicenseError as exc: + bb.fatal('%s: %s' % (d.getVar('P', True), exc)) + else: + pkg_dic[pkg]["LICENSES"] = re.sub('[|&()*]', '', pkg_dic[pkg]["LICENSE"]) + pkg_dic[pkg]["LICENSES"] = re.sub(' *', ' ', pkg_dic[pkg]["LICENSES"]) + pkg_dic[pkg]["LICENSES"] = pkg_dic[pkg]["LICENSES"].split() + license_file.write("PACKAGE NAME: %s\n" % pkg) license_file.write("PACKAGE VERSION: %s\n" % pkg_dic[pkg]["PV"]) license_file.write("RECIPE NAME: %s\n" % pkg_dic[pkg]["PN"]) license_file.write("LICENSE: %s\n\n" % pkg_dic[pkg]["LICENSE"]) - licenses = re.sub('[|&()*]', '', pkg_dic[pkg]["LICENSE"]) - licenses = re.sub(' *', ' ', licenses) - for lic in licenses.split(): + for lic in pkg_dic[pkg]["LICENSES"]: lic_file = os.path.join(d.getVar('LICENSE_DIRECTORY', True), pkg_dic[pkg]["PN"], "generic_%s" % re.sub('\+', '', lic))
@@ -94,11 +108,20 @@ python license_create_manifest() { pkg_rootfs_license = os.path.join(pkg_rootfs_license_dir, lic) if re.match("^generic_.*$", lic): + generic_lic = re.search("^generic_(.*)$", lic).group(1) + if oe.license.license_ok(canonical_license(d, + generic_lic), bad_licenses) == False: + continue + if not os.path.exists(rootfs_license): os.link(pkg_license, rootfs_license) os.symlink(os.path.join('..', lic), pkg_rootfs_license) else: + if oe.license.license_ok(canonical_license(d, + lic), bad_licenses) == False: + continue + os.link(pkg_license, pkg_rootfs_license) }
meta/lib/oe/license.py +70 -0
73 lines not on this page · raw message
Signature · 1 line
1.8.4.5
PATCH 4/5 packagegroups: Add LIC_FILES_CHKSUM to avoid warnings in manifest creation
In reply to Aníbal Limón--- meta/recipes-core/packagegroups/packagegroup-base.bb | 1 + meta/recipes-core/packagegroups/packagegroup-core-boot.bb | 1 + meta/recipes-core/packagegroups/packagegroup-core-buildessential.bb | 1 + meta/recipes-core/packagegroups/packagegroup-core-eclipse-debug.bb | 1 + meta/recipes-core/packagegroups/packagegroup-core-nfs.bb | 1 + meta/recipes-core/packagegroups/packagegroup-core-sdk.bb | 1 + meta/recipes-core/packagegroups/packagegroup-core-ssh-dropbear.bb | 1 + meta/recipes-core/packagegroups/packagegroup-core-ssh-openssh.bb | 1 + .../packagegroups/packagegroup-core-standalone-sdk-target.bb | 1 + meta/recipes-core/packagegroups/packagegroup-core-tools-debug.bb | 1 + meta/recipes-core/packagegroups/packagegroup-core-tools-profile.bb | 1 + meta/recipes-core/packagegroups/packagegroup-cross-canadian.bb | 1 + meta/recipes-core/packagegroups/packagegroup-self-hosted.bb | 1 + meta/recipes-devtools/packagegroups/packagegroup-core-device-devel.bb | 1 + meta/recipes-extended/packagegroups/packagegroup-core-full-cmdline.bb | 1 + meta/recipes-extended/packagegroups/packagegroup-core-lsb.bb | 1 + meta/recipes-graphics/packagegroups/packagegroup-core-clutter.bb | 1 + meta/recipes-graphics/packagegroups/packagegroup-core-directfb.bb | 1 + meta/recipes-graphics/packagegroups/packagegroup-core-x11-base.bb | 1 + meta/recipes-graphics/packagegroups/packagegroup-core-x11-xserver.bb | 1 + meta/recipes-graphics/packagegroups/packagegroup-core-x11.bb | 1 + meta/recipes-qt/packagegroups/packagegroup-core-qt.bb | 1 + meta/recipes-qt/packagegroups/packagegroup-core-qt4e.bb | 1 + meta/recipes-qt/packagegroups/packagegroup-qt-toolchain-target.inc | 1 + meta/recipes-sato/packagegroups/packagegroup-core-x11-sato.bb | 1 + 25 files changed, 25 insertions(+)
meta/recipes-core/packagegroups/packagegroup-base.bb +1 -0
@@ -1,5 +1,6 @@ SUMMARY = "Merge machine and distro options to create a basic machine task/package" LICENSE = "MIT" +LIC_FILES_CHKSUM ?= "file://${COMMON_LICENSE_DIR}/MIT;md5=0835ade698e0bcf8506ecda2f7b4f302" PR = "r83" #
meta/recipes-core/packagegroups/packagegroup-core-boot.bb +1 -0
@@ -5,6 +5,7 @@ SUMMARY = "Minimal boot requirements" DESCRIPTION = "The minimal set of packages required to boot the system" LICENSE = "MIT" +LIC_FILES_CHKSUM ?= "file://${COMMON_LICENSE_DIR}/MIT;md5=0835ade698e0bcf8506ecda2f7b4f302" PR = "r17" PACKAGE_ARCH = "${MACHINE_ARCH}"
meta/recipes-core/packagegroups/packagegroup-core-buildessential.bb +1 -0
@@ -5,6 +5,7 @@ SUMMARY = "Essential build dependencies" LICENSE = "MIT" +LIC_FILES_CHKSUM ?= "file://${COMMON_LICENSE_DIR}/MIT;md5=0835ade698e0bcf8506ecda2f7b4f302" inherit packagegroup
meta/recipes-core/packagegroups/packagegroup-core-eclipse-debug.bb +1 -0
@@ -1,5 +1,6 @@ SUMMARY = "Remote debugging tools for Eclipse integration" LICENSE = "MIT" +LIC_FILES_CHKSUM ?= "file://${COMMON_LICENSE_DIR}/MIT;md5=0835ade698e0bcf8506ecda2f7b4f302" inherit packagegroup
meta/recipes-core/packagegroups/packagegroup-core-nfs.bb +1 -0
@@ -4,6 +4,7 @@ SUMMARY = "NFS package groups" LICENSE = "MIT" +LIC_FILES_CHKSUM ?= "file://${COMMON_LICENSE_DIR}/MIT;md5=0835ade698e0bcf8506ecda2f7b4f302" PR = "r2" inherit packagegroup
meta/recipes-core/packagegroups/packagegroup-core-sdk.bb +1 -0
@@ -4,6 +4,7 @@ SUMMARY = "Software development tools" LICENSE = "MIT" +LIC_FILES_CHKSUM ?= "file://${COMMON_LICENSE_DIR}/MIT;md5=0835ade698e0bcf8506ecda2f7b4f302" PR = "r9" PACKAGE_ARCH = "${MACHINE_ARCH}"
meta/recipes-core/packagegroups/packagegroup-core-ssh-dropbear.bb +1 -0
@@ -1,5 +1,6 @@ SUMMARY = "Dropbear SSH client/server" LICENSE = "MIT" +LIC_FILES_CHKSUM ?= "file://${COMMON_LICENSE_DIR}/MIT;md5=0835ade698e0bcf8506ecda2f7b4f302" PR = "r1" inherit packagegroup
meta/recipes-core/packagegroups/packagegroup-core-ssh-openssh.bb +1 -0
@@ -1,5 +1,6 @@ SUMMARY = "OpenSSH SSH client/server" LICENSE = "MIT" +LIC_FILES_CHKSUM ?= "file://${COMMON_LICENSE_DIR}/MIT;md5=0835ade698e0bcf8506ecda2f7b4f302" PR = "r1" inherit packagegroup
meta/recipes-core/packagegroups/packagegroup-core-standalone-sdk-target.bb +1 -0
@@ -1,6 +1,7 @@ SUMMARY = "Target packages for the standalone SDK" PR = "r8" LICENSE = "MIT" +LIC_FILES_CHKSUM ?= "file://${COMMON_LICENSE_DIR}/MIT;md5=0835ade698e0bcf8506ecda2f7b4f302" inherit packagegroup
meta/recipes-core/packagegroups/packagegroup-core-tools-debug.bb +1 -0
@@ -4,6 +4,7 @@ SUMMARY = "Debugging tools" LICENSE = "MIT" +LIC_FILES_CHKSUM ?= "file://${COMMON_LICENSE_DIR}/MIT;md5=0835ade698e0bcf8506ecda2f7b4f302" inherit packagegroup
meta/recipes-core/packagegroups/packagegroup-core-tools-profile.bb +1 -0
@@ -4,6 +4,7 @@ SUMMARY = "Profiling tools" LICENSE = "MIT" +LIC_FILES_CHKSUM ?= "file://${COMMON_LICENSE_DIR}/MIT;md5=0835ade698e0bcf8506ecda2f7b4f302" PR = "r3"
meta/recipes-core/packagegroups/packagegroup-cross-canadian.bb +1 -0
@@ -1,6 +1,7 @@ SUMMARY = "Host SDK package for cross canadian toolchain" PN = "packagegroup-cross-canadian-${MACHINE}" LICENSE = "MIT" +LIC_FILES_CHKSUM ?= "file://${COMMON_LICENSE_DIR}/MIT;md5=0835ade698e0bcf8506ecda2f7b4f302" # Save TRANSLATED_TARGET_ARCH before allarch tramples it TRANSLATED_TARGET_ARCH = "${@d.getVar('TUNE_ARCH', True).replace('_', '-')}"
meta/recipes-core/packagegroups/packagegroup-self-hosted.bb +1 -0
@@ -6,6 +6,7 @@ SUMMARY = "Self-hosting" DESCRIPTION = "Packages required to run the build system" PR = "r13" LICENSE = "MIT" +LIC_FILES_CHKSUM ?= "file://${COMMON_LICENSE_DIR}/MIT;md5=0835ade698e0bcf8506ecda2f7b4f302" inherit packagegroup distro_features_check # rdepends on libx11-dev
meta/recipes-devtools/packagegroups/packagegroup-core-device-devel.bb +1 -0
@@ -1,5 +1,6 @@ SUMMARY = "Provides a small set of tools for development on the device" LICENSE = "MIT" +LIC_FILES_CHKSUM ?= "file://${COMMON_LICENSE_DIR}/MIT;md5=0835ade698e0bcf8506ecda2f7b4f302" PR = "r1"
meta/recipes-extended/packagegroups/packagegroup-core-full-cmdline.bb +1 -0
@@ -6,6 +6,7 @@ SUMMARY = "Standard full-featured Linux system" DESCRIPTION = "Package group bringing in packages needed for a more traditional full-featured Linux system" PR = "r6" LICENSE = "MIT" +LIC_FILES_CHKSUM ?= "file://${COMMON_LICENSE_DIR}/MIT;md5=0835ade698e0bcf8506ecda2f7b4f302" inherit packagegroup
meta/recipes-extended/packagegroups/packagegroup-core-lsb.bb +1 -0
@@ -6,6 +6,7 @@ SUMMARY = "Linux Standard Base (LSB)" DESCRIPTION = "Packages required to satisfy the Linux Standard Base (LSB) specification" PR = "r10" LICENSE = "MIT" +LIC_FILES_CHKSUM ?= "file://${COMMON_LICENSE_DIR}/MIT;md5=0835ade698e0bcf8506ecda2f7b4f302" inherit packagegroup
meta/recipes-graphics/packagegroups/packagegroup-core-clutter.bb +1 -0
@@ -4,6 +4,7 @@ SUMMARY = "Clutter package groups" LICENSE = "MIT" +LIC_FILES_CHKSUM ?= "file://${COMMON_LICENSE_DIR}/MIT;md5=0835ade698e0bcf8506ecda2f7b4f302" PR = "r6"
meta/recipes-graphics/packagegroups/packagegroup-core-directfb.bb +1 -0
@@ -1,5 +1,6 @@ SUMMARY = "DirectFB without X11" LICENSE = "MIT" +LIC_FILES_CHKSUM ?= "file://${COMMON_LICENSE_DIR}/MIT;md5=0835ade698e0bcf8506ecda2f7b4f302" PACKAGE_ARCH = "${MACHINE_ARCH}"
meta/recipes-graphics/packagegroups/packagegroup-core-x11-base.bb +1 -0
@@ -1,6 +1,7 @@ SUMMARY = "Basic X11 session" DESCRIPTION = "Packages required to set up a basic working X11 session" LICENSE = "MIT" +LIC_FILES_CHKSUM ?= "file://${COMMON_LICENSE_DIR}/MIT;md5=0835ade698e0bcf8506ecda2f7b4f302" PR = "r1" inherit packagegroup distro_features_check
meta/recipes-graphics/packagegroups/packagegroup-core-x11-xserver.bb +1 -0
@@ -4,6 +4,7 @@ SUMMARY = "X11 display server" LICENSE = "MIT" +LIC_FILES_CHKSUM ?= "file://${COMMON_LICENSE_DIR}/MIT;md5=0835ade698e0bcf8506ecda2f7b4f302" PR = "r40" PACKAGE_ARCH = "${MACHINE_ARCH}"
meta/recipes-graphics/packagegroups/packagegroup-core-x11.bb +1 -0
@@ -3,6 +3,7 @@ # LICENSE = "MIT" +LIC_FILES_CHKSUM ?= "file://${COMMON_LICENSE_DIR}/MIT;md5=0835ade698e0bcf8506ecda2f7b4f302" PR = "r40" inherit packagegroup distro_features_check
meta/recipes-qt/packagegroups/packagegroup-core-qt.bb +1 -0
@@ -4,6 +4,7 @@ SUMMARY = "Qt package groups" LICENSE = "MIT" +LIC_FILES_CHKSUM ?= "file://${COMMON_LICENSE_DIR}/MIT;md5=0835ade698e0bcf8506ecda2f7b4f302" PR = "r4" # Qt4 could NOT be built on MIPS64 with 64 bits userspace
meta/recipes-qt/packagegroups/packagegroup-core-qt4e.bb +1 -0
@@ -1,6 +1,7 @@ SUMMARY = "Qt for Embedded Linux (Qt without X11)" PR = "r2" LICENSE = "MIT" +LIC_FILES_CHKSUM ?= "file://${COMMON_LICENSE_DIR}/MIT;md5=0835ade698e0bcf8506ecda2f7b4f302" # Qt4 could NOT be built on MIPS64 with 64 bits userspace COMPATIBLE_HOST_mips64 = "null"
meta/recipes-qt/packagegroups/packagegroup-qt-toolchain-target.inc +1 -0
@@ -1,4 +1,5 @@ LICENSE = "MIT" +LIC_FILES_CHKSUM ?= "file://${COMMON_LICENSE_DIR}/MIT;md5=0835ade698e0bcf8506ecda2f7b4f302" # Qt4 could NOT be built on MIPS64 with 64 bits userspace COMPATIBLE_HOST_mips64 = "null"
meta/recipes-sato/packagegroups/packagegroup-core-x11-sato.bb +1 -0
@@ -4,6 +4,7 @@ SUMMARY = "Sato desktop" LICENSE = "MIT" +LIC_FILES_CHKSUM ?= "file://${COMMON_LICENSE_DIR}/MIT;md5=0835ade698e0bcf8506ecda2f7b4f302" PR = "r33" PACKAGE_ARCH = "${MACHINE_ARCH}"
Signature · 1 line
1.8.4.5
PATCH 5/5 glibc/glibc-collateral.inc: Add LIC_FILES_CHKSUM to avoid warnings in manifest creation
In reply to Aníbal LimónAdd licenses point to COMMON_LICENSE_DIR because glibc-collateral.inc is a recipe that don't provide tarball/repo with LICENSE files.
--- meta/recipes-core/glibc/glibc-collateral.inc | 2 ++ 1 file changed, 2 insertions(+)
meta/recipes-core/glibc/glibc-collateral.inc +2 -0
@@ -1,5 +1,7 @@ INHIBIT_DEFAULT_DEPS = "1" LICENSE = "GPLv2 & LGPLv2.1" +LIC_FILES_CHKSUM ?= "file://${COMMON_LICENSE_DIR}/GPL-2.0;md5=801f80980d171dd6425610833a22dbe6 \ + file://${COMMON_LICENSE_DIR}/LGPL-2.1;md5=1a6d268fd218675ffea8be556788b780" HOMEPAGE = "http://www.gnu.org/software/libc/index.html" # This needs to match with glibc.inc, otherwise glibc-scripts and glibc-locale
Signature · 1 line
1.8.4.5
Sorry i forget to put test result url.
Cheers,
alimon
Quoted 4 lines · Aníbal Limón
The next changes was made to implement
INCOMPATIBLE_LICENSEhandling in manifest creation this implies to rewritelicense_manifest_creationfrom shell to python.Tests was made to guarantee compatibility and can be found at,
https://bugzilla.yoctoproject.org/attachment.cgi?id=2443
Quoted 52 lines
The last two patches are to avoid warnings in manifest creation due that these recipes don't collect licenses before.
The following changes since commit
7f30749fe026e9ceb75d73b89271145a45a60763:oeqa/parselogs: Skip hda opcode errors (2015-03-12 12:50:24 +0000)are available in the git repository at:
git://git.yoctoproject.org/poky-contribalimon/license-rebase
http://git.yoctoproject.org/cgit.cgi/poky-contrib/log/?h=alimon/license-rebaseAníbal Limón (5):
license_class: Reimplemented manifest creation in python
license_class: Generalizelicense_okfunction
license: Add support for handleINCOMPATIBLE_LICENSEin manifest
creation
packagegroups: AddLIC_FILES_CHKSUMto avoid warnings in manifest
creation
glibc/glibc-collateral.inc: AddLIC_FILES_CHKSUMto avoid warnings in
manifest creationmeta/classes/license.bbclass | 190 +++++++++++---------- meta/lib/oe/license.py | 84 +++++++++ meta/recipes-core/glibc/glibc-collateral.inc | 2 + .../packagegroups/packagegroup-base.bb | 1 + .../packagegroups/packagegroup-core-boot.bb | 1 + .../packagegroup-core-buildessential.bb | 1 + .../packagegroup-core-eclipse-debug.bb | 1 + .../packagegroups/packagegroup-core-nfs.bb | 1 + .../packagegroups/packagegroup-core-sdk.bb | 1 + .../packagegroup-core-ssh-dropbear.bb | 1 + .../packagegroups/packagegroup-core-ssh-openssh.bb | 1 + .../packagegroup-core-standalone-sdk-target.bb | 1 + .../packagegroups/packagegroup-core-tools-debug.bb | 1 + .../packagegroup-core-tools-profile.bb | 1 + .../packagegroups/packagegroup-cross-canadian.bb | 1 + .../packagegroups/packagegroup-self-hosted.bb | 1 + .../packagegroup-core-device-devel.bb | 1 + .../packagegroup-core-full-cmdline.bb | 1 + .../packagegroups/packagegroup-core-lsb.bb | 1 + .../packagegroups/packagegroup-core-clutter.bb | 1 + .../packagegroups/packagegroup-core-directfb.bb | 1 + .../packagegroups/packagegroup-core-x11-base.bb | 1 + .../packagegroups/packagegroup-core-x11-xserver.bb | 1 + .../packagegroups/packagegroup-core-x11.bb | 1 + .../packagegroups/packagegroup-core-qt.bb | 1 + .../packagegroups/packagegroup-core-qt4e.bb | 1 + .../packagegroup-qt-toolchain-target.inc | 1 + .../packagegroups/packagegroup-core-x11-sato.bb | 1 + 28 files changed, 212 insertions(+), 89 deletions(-)