* [PATCH 1/5] license_class: Reimplemented manifest creation in python
2015-03-14 10:45 [PATCH 0/5] license: Add support for handle INCOMPATIBLE_LICENSE Aníbal Limón
@ 2015-03-14 10:45 ` Aníbal Limón
2015-03-14 10:45 ` [PATCH 2/5] license_class: Generalize license_ok function Aníbal Limón
` (4 subsequent siblings)
5 siblings, 0 replies; 7+ messages in thread
From: Aníbal Limón @ 2015-03-14 10:45 UTC (permalink / raw)
To: openembedded-core
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.
Signed-off-by: Aníbal Limón <anibal.limon@linux.intel.com>
---
meta/classes/license.bbclass | 148 ++++++++++++++++++++++---------------------
1 file changed, 75 insertions(+), 73 deletions(-)
diff --git a/meta/classes/license.bbclass b/meta/classes/license.bbclass
index 044b3b0..9988e35 100644
--- a/meta/classes/license.bbclass
+++ b/meta/classes/license.bbclass
@@ -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() {
--
1.8.4.5
^ permalink raw reply related [flat|nested] 7+ messages in thread* [PATCH 2/5] license_class: Generalize license_ok function
2015-03-14 10:45 [PATCH 0/5] license: Add support for handle INCOMPATIBLE_LICENSE Aníbal Limón
2015-03-14 10:45 ` [PATCH 1/5] license_class: Reimplemented manifest creation in python Aníbal Limón
@ 2015-03-14 10:45 ` Aníbal Limón
2015-03-14 10:45 ` [PATCH 3/5] license: Add support for handle INCOMPATIBLE_LICENSE in manifest creation Aníbal Limón
` (3 subsequent siblings)
5 siblings, 0 replies; 7+ messages in thread
From: Aníbal Limón @ 2015-03-14 10:45 UTC (permalink / raw)
To: openembedded-core
Add dont_want_licenses as parameter to license_ok function and move it
to oe.license module in order to use in other modules.
Signed-off-by: Aníbal Limón <anibal.limon@linux.intel.com>
---
meta/classes/license.bbclass | 21 ++++-----------------
meta/lib/oe/license.py | 14 ++++++++++++++
2 files changed, 18 insertions(+), 17 deletions(-)
diff --git a/meta/classes/license.bbclass b/meta/classes/license.bbclass
index 9988e35..4e8e96b 100644
--- a/meta/classes/license.bbclass
+++ b/meta/classes/license.bbclass
@@ -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):
"""
diff --git a/meta/lib/oe/license.py b/meta/lib/oe/license.py
index 31ca15b..bc146a2 100644
--- a/meta/lib/oe/license.py
+++ b/meta/lib/oe/license.py
@@ -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
--
1.8.4.5
^ permalink raw reply related [flat|nested] 7+ messages in thread* [PATCH 3/5] license: Add support for handle INCOMPATIBLE_LICENSE in manifest creation
2015-03-14 10:45 [PATCH 0/5] license: Add support for handle INCOMPATIBLE_LICENSE Aníbal Limón
2015-03-14 10:45 ` [PATCH 1/5] license_class: Reimplemented manifest creation in python Aníbal Limón
2015-03-14 10:45 ` [PATCH 2/5] license_class: Generalize license_ok function Aníbal Limón
@ 2015-03-14 10:45 ` Aníbal Limón
2015-03-14 10:45 ` [PATCH 4/5] packagegroups: Add LIC_FILES_CHKSUM to avoid warnings " Aníbal Limón
` (2 subsequent siblings)
5 siblings, 0 replies; 7+ messages in thread
From: Aníbal Limón @ 2015-03-14 10:45 UTC (permalink / raw)
To: openembedded-core
When 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]
Signed-off-by: Aníbal Limón <anibal.limon@linux.intel.com>
---
meta/classes/license.bbclass | 29 ++++++++++++++++--
meta/lib/oe/license.py | 70 ++++++++++++++++++++++++++++++++++++++++++++
2 files changed, 96 insertions(+), 3 deletions(-)
diff --git a/meta/classes/license.bbclass b/meta/classes/license.bbclass
index 4e8e96b..3cdee5d 100644
--- a/meta/classes/license.bbclass
+++ b/meta/classes/license.bbclass
@@ -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)
}
diff --git a/meta/lib/oe/license.py b/meta/lib/oe/license.py
index bc146a2..c2e523c 100644
--- a/meta/lib/oe/license.py
+++ b/meta/lib/oe/license.py
@@ -129,3 +129,73 @@ def is_included(licensestr, whitelist=None, blacklist=None):
return False, excluded
else:
return True, included
+
+class ManifestVisitor(LicenseVisitor):
+ """Walk license tree (parsed from a string) removing the incompatible
+ licenses specified"""
+ def __init__(self, dont_want_licenses, canonical_license, d):
+ self._dont_want_licenses = dont_want_licenses
+ self._canonical_license = canonical_license
+ self._d = d
+ self._operators = []
+
+ self.licenses = []
+ self.licensestr = ''
+
+ LicenseVisitor.__init__(self)
+
+ def visit(self, node):
+ if isinstance(node, ast.Str):
+ lic = node.s
+
+ if license_ok(self._canonical_license(self._d, lic),
+ self._dont_want_licenses) == True:
+ if self._operators:
+ ops = []
+ for op in self._operators:
+ if op == '[':
+ ops.append(op)
+ elif op == ']':
+ ops.append(op)
+ else:
+ if not ops:
+ ops.append(op)
+ elif ops[-1] in ['[', ']']:
+ ops.append(op)
+ else:
+ ops[-1] = op
+
+ if ops[0] != ']':
+ self.licensestr += ' '
+ self.licensestr += ' '.join(ops)
+ if len(ops) == 1:
+ self.licensestr += ' '
+
+ self.licensestr += lic
+ self.licenses.append(lic)
+ self._operators = []
+ elif isinstance(node, ast.BitAnd):
+ self._operators.append("&")
+ elif isinstance(node, ast.BitOr):
+ self._operators.append("|")
+ elif isinstance(node, ast.List):
+ self._operators.append("[")
+ elif isinstance(node, ast.Load):
+ self.licensestr += ']'
+
+ self.generic_visit(node)
+
+def manifest_licenses(licensestr, dont_want_licenses, canonical_license, d):
+ """Given a license string and dont_want_licenses list,
+ return license string filtered and a list of licenses"""
+ manifest = ManifestVisitor(dont_want_licenses, canonical_license, d)
+
+ # Replace '()' to '[]' for handle in ast as List and Load types.
+ licensestr = licensestr.replace('(', '[').replace(')', ']')
+ try:
+ manifest.visit_string(licensestr)
+ except SyntaxError as exc:
+ raise LicenseSyntaxError(licensestr, exc)
+ manifest.licensestr = manifest.licensestr.replace('[', '(').replace(']', ')')
+
+ return (manifest.licensestr, manifest.licenses)
--
1.8.4.5
^ permalink raw reply related [flat|nested] 7+ messages in thread* [PATCH 4/5] packagegroups: Add LIC_FILES_CHKSUM to avoid warnings in manifest creation
2015-03-14 10:45 [PATCH 0/5] license: Add support for handle INCOMPATIBLE_LICENSE Aníbal Limón
` (2 preceding siblings ...)
2015-03-14 10:45 ` [PATCH 3/5] license: Add support for handle INCOMPATIBLE_LICENSE in manifest creation Aníbal Limón
@ 2015-03-14 10:45 ` Aníbal Limón
2015-03-14 10:45 ` [PATCH 5/5] glibc/glibc-collateral.inc: " Aníbal Limón
2015-03-14 18:52 ` [PATCH 0/5] license: Add support for handle INCOMPATIBLE_LICENSE Aníbal Limón
5 siblings, 0 replies; 7+ messages in thread
From: Aníbal Limón @ 2015-03-14 10:45 UTC (permalink / raw)
To: openembedded-core
Signed-off-by: Aníbal Limón <anibal.limon@linux.intel.com>
---
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(+)
diff --git a/meta/recipes-core/packagegroups/packagegroup-base.bb b/meta/recipes-core/packagegroups/packagegroup-base.bb
index 369b63e..0c0c404 100644
--- a/meta/recipes-core/packagegroups/packagegroup-base.bb
+++ b/meta/recipes-core/packagegroups/packagegroup-base.bb
@@ -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"
#
diff --git a/meta/recipes-core/packagegroups/packagegroup-core-boot.bb b/meta/recipes-core/packagegroups/packagegroup-core-boot.bb
index 09f5373..8ce4b53 100644
--- a/meta/recipes-core/packagegroups/packagegroup-core-boot.bb
+++ b/meta/recipes-core/packagegroups/packagegroup-core-boot.bb
@@ -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}"
diff --git a/meta/recipes-core/packagegroups/packagegroup-core-buildessential.bb b/meta/recipes-core/packagegroups/packagegroup-core-buildessential.bb
index 74ed247..e97522c 100644
--- a/meta/recipes-core/packagegroups/packagegroup-core-buildessential.bb
+++ b/meta/recipes-core/packagegroups/packagegroup-core-buildessential.bb
@@ -5,6 +5,7 @@
SUMMARY = "Essential build dependencies"
LICENSE = "MIT"
+LIC_FILES_CHKSUM ?= "file://${COMMON_LICENSE_DIR}/MIT;md5=0835ade698e0bcf8506ecda2f7b4f302"
inherit packagegroup
diff --git a/meta/recipes-core/packagegroups/packagegroup-core-eclipse-debug.bb b/meta/recipes-core/packagegroups/packagegroup-core-eclipse-debug.bb
index e7b013d..e67c131 100644
--- a/meta/recipes-core/packagegroups/packagegroup-core-eclipse-debug.bb
+++ b/meta/recipes-core/packagegroups/packagegroup-core-eclipse-debug.bb
@@ -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
diff --git a/meta/recipes-core/packagegroups/packagegroup-core-nfs.bb b/meta/recipes-core/packagegroups/packagegroup-core-nfs.bb
index 247a30e..1d3fb96 100644
--- a/meta/recipes-core/packagegroups/packagegroup-core-nfs.bb
+++ b/meta/recipes-core/packagegroups/packagegroup-core-nfs.bb
@@ -4,6 +4,7 @@
SUMMARY = "NFS package groups"
LICENSE = "MIT"
+LIC_FILES_CHKSUM ?= "file://${COMMON_LICENSE_DIR}/MIT;md5=0835ade698e0bcf8506ecda2f7b4f302"
PR = "r2"
inherit packagegroup
diff --git a/meta/recipes-core/packagegroups/packagegroup-core-sdk.bb b/meta/recipes-core/packagegroups/packagegroup-core-sdk.bb
index a41eada..f52b6c2 100644
--- a/meta/recipes-core/packagegroups/packagegroup-core-sdk.bb
+++ b/meta/recipes-core/packagegroups/packagegroup-core-sdk.bb
@@ -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}"
diff --git a/meta/recipes-core/packagegroups/packagegroup-core-ssh-dropbear.bb b/meta/recipes-core/packagegroups/packagegroup-core-ssh-dropbear.bb
index e99946f..8b82f80 100644
--- a/meta/recipes-core/packagegroups/packagegroup-core-ssh-dropbear.bb
+++ b/meta/recipes-core/packagegroups/packagegroup-core-ssh-dropbear.bb
@@ -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
diff --git a/meta/recipes-core/packagegroups/packagegroup-core-ssh-openssh.bb b/meta/recipes-core/packagegroups/packagegroup-core-ssh-openssh.bb
index 32d20e6..0dba895 100644
--- a/meta/recipes-core/packagegroups/packagegroup-core-ssh-openssh.bb
+++ b/meta/recipes-core/packagegroups/packagegroup-core-ssh-openssh.bb
@@ -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
diff --git a/meta/recipes-core/packagegroups/packagegroup-core-standalone-sdk-target.bb b/meta/recipes-core/packagegroups/packagegroup-core-standalone-sdk-target.bb
index 154a55c..c84f4f4 100644
--- a/meta/recipes-core/packagegroups/packagegroup-core-standalone-sdk-target.bb
+++ b/meta/recipes-core/packagegroups/packagegroup-core-standalone-sdk-target.bb
@@ -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
diff --git a/meta/recipes-core/packagegroups/packagegroup-core-tools-debug.bb b/meta/recipes-core/packagegroups/packagegroup-core-tools-debug.bb
index 82347b9..f2783cf 100644
--- a/meta/recipes-core/packagegroups/packagegroup-core-tools-debug.bb
+++ b/meta/recipes-core/packagegroups/packagegroup-core-tools-debug.bb
@@ -4,6 +4,7 @@
SUMMARY = "Debugging tools"
LICENSE = "MIT"
+LIC_FILES_CHKSUM ?= "file://${COMMON_LICENSE_DIR}/MIT;md5=0835ade698e0bcf8506ecda2f7b4f302"
inherit packagegroup
diff --git a/meta/recipes-core/packagegroups/packagegroup-core-tools-profile.bb b/meta/recipes-core/packagegroups/packagegroup-core-tools-profile.bb
index 6f4842f..89b4c72 100644
--- a/meta/recipes-core/packagegroups/packagegroup-core-tools-profile.bb
+++ b/meta/recipes-core/packagegroups/packagegroup-core-tools-profile.bb
@@ -4,6 +4,7 @@
SUMMARY = "Profiling tools"
LICENSE = "MIT"
+LIC_FILES_CHKSUM ?= "file://${COMMON_LICENSE_DIR}/MIT;md5=0835ade698e0bcf8506ecda2f7b4f302"
PR = "r3"
diff --git a/meta/recipes-core/packagegroups/packagegroup-cross-canadian.bb b/meta/recipes-core/packagegroups/packagegroup-cross-canadian.bb
index e3b1c18..c4b474e 100644
--- a/meta/recipes-core/packagegroups/packagegroup-cross-canadian.bb
+++ b/meta/recipes-core/packagegroups/packagegroup-cross-canadian.bb
@@ -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('_', '-')}"
diff --git a/meta/recipes-core/packagegroups/packagegroup-self-hosted.bb b/meta/recipes-core/packagegroups/packagegroup-self-hosted.bb
index 47589b6..62c3286 100644
--- a/meta/recipes-core/packagegroups/packagegroup-self-hosted.bb
+++ b/meta/recipes-core/packagegroups/packagegroup-self-hosted.bb
@@ -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
diff --git a/meta/recipes-devtools/packagegroups/packagegroup-core-device-devel.bb b/meta/recipes-devtools/packagegroups/packagegroup-core-device-devel.bb
index e831860..c570be4 100644
--- a/meta/recipes-devtools/packagegroups/packagegroup-core-device-devel.bb
+++ b/meta/recipes-devtools/packagegroups/packagegroup-core-device-devel.bb
@@ -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"
diff --git a/meta/recipes-extended/packagegroups/packagegroup-core-full-cmdline.bb b/meta/recipes-extended/packagegroups/packagegroup-core-full-cmdline.bb
index ad3f240..2f4e2a9 100644
--- a/meta/recipes-extended/packagegroups/packagegroup-core-full-cmdline.bb
+++ b/meta/recipes-extended/packagegroups/packagegroup-core-full-cmdline.bb
@@ -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
diff --git a/meta/recipes-extended/packagegroups/packagegroup-core-lsb.bb b/meta/recipes-extended/packagegroups/packagegroup-core-lsb.bb
index e0f32e0..832b2fc 100644
--- a/meta/recipes-extended/packagegroups/packagegroup-core-lsb.bb
+++ b/meta/recipes-extended/packagegroups/packagegroup-core-lsb.bb
@@ -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
diff --git a/meta/recipes-graphics/packagegroups/packagegroup-core-clutter.bb b/meta/recipes-graphics/packagegroups/packagegroup-core-clutter.bb
index 7540821..b44447a 100644
--- a/meta/recipes-graphics/packagegroups/packagegroup-core-clutter.bb
+++ b/meta/recipes-graphics/packagegroups/packagegroup-core-clutter.bb
@@ -4,6 +4,7 @@
SUMMARY = "Clutter package groups"
LICENSE = "MIT"
+LIC_FILES_CHKSUM ?= "file://${COMMON_LICENSE_DIR}/MIT;md5=0835ade698e0bcf8506ecda2f7b4f302"
PR = "r6"
diff --git a/meta/recipes-graphics/packagegroups/packagegroup-core-directfb.bb b/meta/recipes-graphics/packagegroups/packagegroup-core-directfb.bb
index 53dc0ae..b2a5946 100644
--- a/meta/recipes-graphics/packagegroups/packagegroup-core-directfb.bb
+++ b/meta/recipes-graphics/packagegroups/packagegroup-core-directfb.bb
@@ -1,5 +1,6 @@
SUMMARY = "DirectFB without X11"
LICENSE = "MIT"
+LIC_FILES_CHKSUM ?= "file://${COMMON_LICENSE_DIR}/MIT;md5=0835ade698e0bcf8506ecda2f7b4f302"
PACKAGE_ARCH = "${MACHINE_ARCH}"
diff --git a/meta/recipes-graphics/packagegroups/packagegroup-core-x11-base.bb b/meta/recipes-graphics/packagegroups/packagegroup-core-x11-base.bb
index 17301a0..f4a182d 100644
--- a/meta/recipes-graphics/packagegroups/packagegroup-core-x11-base.bb
+++ b/meta/recipes-graphics/packagegroups/packagegroup-core-x11-base.bb
@@ -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
diff --git a/meta/recipes-graphics/packagegroups/packagegroup-core-x11-xserver.bb b/meta/recipes-graphics/packagegroups/packagegroup-core-x11-xserver.bb
index c53f1b7..5502c36 100644
--- a/meta/recipes-graphics/packagegroups/packagegroup-core-x11-xserver.bb
+++ b/meta/recipes-graphics/packagegroups/packagegroup-core-x11-xserver.bb
@@ -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}"
diff --git a/meta/recipes-graphics/packagegroups/packagegroup-core-x11.bb b/meta/recipes-graphics/packagegroups/packagegroup-core-x11.bb
index 3537d8c..0098056 100644
--- a/meta/recipes-graphics/packagegroups/packagegroup-core-x11.bb
+++ b/meta/recipes-graphics/packagegroups/packagegroup-core-x11.bb
@@ -3,6 +3,7 @@
#
LICENSE = "MIT"
+LIC_FILES_CHKSUM ?= "file://${COMMON_LICENSE_DIR}/MIT;md5=0835ade698e0bcf8506ecda2f7b4f302"
PR = "r40"
inherit packagegroup distro_features_check
diff --git a/meta/recipes-qt/packagegroups/packagegroup-core-qt.bb b/meta/recipes-qt/packagegroups/packagegroup-core-qt.bb
index 5f6916a..9e7e439 100644
--- a/meta/recipes-qt/packagegroups/packagegroup-core-qt.bb
+++ b/meta/recipes-qt/packagegroups/packagegroup-core-qt.bb
@@ -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
diff --git a/meta/recipes-qt/packagegroups/packagegroup-core-qt4e.bb b/meta/recipes-qt/packagegroups/packagegroup-core-qt4e.bb
index d4f0fd1..df6a9d3 100644
--- a/meta/recipes-qt/packagegroups/packagegroup-core-qt4e.bb
+++ b/meta/recipes-qt/packagegroups/packagegroup-core-qt4e.bb
@@ -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"
diff --git a/meta/recipes-qt/packagegroups/packagegroup-qt-toolchain-target.inc b/meta/recipes-qt/packagegroups/packagegroup-qt-toolchain-target.inc
index 02a0326..0777b26 100644
--- a/meta/recipes-qt/packagegroups/packagegroup-qt-toolchain-target.inc
+++ b/meta/recipes-qt/packagegroups/packagegroup-qt-toolchain-target.inc
@@ -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"
diff --git a/meta/recipes-sato/packagegroups/packagegroup-core-x11-sato.bb b/meta/recipes-sato/packagegroups/packagegroup-core-x11-sato.bb
index 2d046c4..2507302 100644
--- a/meta/recipes-sato/packagegroups/packagegroup-core-x11-sato.bb
+++ b/meta/recipes-sato/packagegroups/packagegroup-core-x11-sato.bb
@@ -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}"
--
1.8.4.5
^ permalink raw reply related [flat|nested] 7+ messages in thread* [PATCH 5/5] glibc/glibc-collateral.inc: Add LIC_FILES_CHKSUM to avoid warnings in manifest creation
2015-03-14 10:45 [PATCH 0/5] license: Add support for handle INCOMPATIBLE_LICENSE Aníbal Limón
` (3 preceding siblings ...)
2015-03-14 10:45 ` [PATCH 4/5] packagegroups: Add LIC_FILES_CHKSUM to avoid warnings " Aníbal Limón
@ 2015-03-14 10:45 ` Aníbal Limón
2015-03-14 18:52 ` [PATCH 0/5] license: Add support for handle INCOMPATIBLE_LICENSE Aníbal Limón
5 siblings, 0 replies; 7+ messages in thread
From: Aníbal Limón @ 2015-03-14 10:45 UTC (permalink / raw)
To: openembedded-core
Add licenses point to COMMON_LICENSE_DIR because glibc-collateral.inc is
a recipe that don't provide tarball/repo with LICENSE files.
Signed-off-by: Aníbal Limón <anibal.limon@linux.intel.com>
---
meta/recipes-core/glibc/glibc-collateral.inc | 2 ++
1 file changed, 2 insertions(+)
diff --git a/meta/recipes-core/glibc/glibc-collateral.inc b/meta/recipes-core/glibc/glibc-collateral.inc
index dfcebae..f82db06 100644
--- a/meta/recipes-core/glibc/glibc-collateral.inc
+++ b/meta/recipes-core/glibc/glibc-collateral.inc
@@ -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
--
1.8.4.5
^ permalink raw reply related [flat|nested] 7+ messages in thread* Re: [PATCH 0/5] license: Add support for handle INCOMPATIBLE_LICENSE
2015-03-14 10:45 [PATCH 0/5] license: Add support for handle INCOMPATIBLE_LICENSE Aníbal Limón
` (4 preceding siblings ...)
2015-03-14 10:45 ` [PATCH 5/5] glibc/glibc-collateral.inc: " Aníbal Limón
@ 2015-03-14 18:52 ` Aníbal Limón
5 siblings, 0 replies; 7+ messages in thread
From: Aníbal Limón @ 2015-03-14 18:52 UTC (permalink / raw)
To: openembedded-core
Sorry i forget to put test result url.
Cheers,
alimon
On 14/03/15 04:45, Aníbal Limón wrote:
> 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,
https://bugzilla.yoctoproject.org/attachment.cgi?id=2443
> 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(-)
>
^ permalink raw reply [flat|nested] 7+ messages in thread