[oe-commits] [openembedded-core] 02/91: classes/license.bbclass: Don't copy unneeded licenses by package

git at git.openembedded.org git at git.openembedded.org
Wed Mar 1 12:55:44 UTC 2017


This is an automated email from the git hooks/post-receive script.

rpurdie pushed a commit to branch master-next
in repository openembedded-core.

commit 8c8c8edea9c9015e21f47f3d10e6f45446a2823b
Author: Aníbal Limón <anibal.limon at linux.intel.com>
AuthorDate: Thu Feb 16 10:45:32 2017 -0600

    classes/license.bbclass: Don't copy unneeded licenses by package
    
    Usually a recipe only provides one package but when provides more
    than one package the LICENSE variable per package (i.e. linux-firmware)
    needs to take into account to avoid unnecesary copy of licenses into
    packages.
    
    The patch validates if LICENSE exists in package LICENSES in order to
    don't copy unneeded licenses.
    
    As result of this patch some packages will not contain licenses there
    are not into LICENSE variable.
    
    For example:
    
    acl contains GPLv2+ instead of GPLv2+ and LGPLv2.1+
    libacl contains LGPLv2+ instead of GPLv2+ and LGPLv2.1+
    
    This behaviour is declared on the acl recipe as:
    
    SUMMARY = "Utilities for managing POSIX Access Control Lists"
    HOMEPAGE = "http://savannah.nongnu.org/projects/acl/"
    SECTION = "libs"
    
    LICENSE = "LGPLv2.1+ & GPLv2+"
    LICENSE_${PN} = "GPLv2+"
    LICENSE_lib${BPN} = "LGPLv2.1+"
    
    [YOCTO #10325]
    
    Signed-off-by: Aníbal Limón <anibal.limon at linux.intel.com>
    Signed-off-by: Ross Burton <ross.burton at intel.com>
---
 meta/classes/license.bbclass | 20 ++++++++++++++++----
 1 file changed, 16 insertions(+), 4 deletions(-)

diff --git a/meta/classes/license.bbclass b/meta/classes/license.bbclass
index caf7628..f97e39f 100644
--- a/meta/classes/license.bbclass
+++ b/meta/classes/license.bbclass
@@ -131,6 +131,10 @@ def write_license_files(d, license_manifest, pkg_dic):
                 bb.utils.mkdirhier(pkg_rootfs_license_dir)
                 pkg_license_dir = os.path.join(d.getVar('LICENSE_DIRECTORY'),
                                             pkg_dic[pkg]["PN"]) 
+
+                pkg_manifest_licenses = [canonical_license(d, lic) \
+                        for lic in pkg_dic[pkg]["LICENSES"]]
+
                 licenses = os.listdir(pkg_license_dir)
                 for lic in licenses:
                     rootfs_license = os.path.join(rootfs_license_dir, lic)
@@ -138,9 +142,18 @@ def write_license_files(d, license_manifest, pkg_dic):
                     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:
+                        generic_lic = canonical_license(d,
+                                re.search("^generic_(.*)$", lic).group(1))
+
+                        # Do not copy generic license into package if isn't
+                        # declared into LICENSES of the package.
+                        if not re.sub('\+$', '', generic_lic) in \
+                                [re.sub('\+', '', lic) for lic in \
+                                 pkg_manifest_licenses]:
+                            continue
+
+                        if oe.license.license_ok(generic_lic,
+                                bad_licenses) == False:
                             continue
 
                         if not os.path.exists(rootfs_license):
@@ -499,7 +512,6 @@ def find_license_files(d):
         bb.fatal('%s: %s' % (d.getVar('PF'), exc))
     except SyntaxError:
         bb.warn("%s: Failed to parse it's LICENSE field." % (d.getVar('PF')))
-
     # Add files from LIC_FILES_CHKSUM to list of license files
     lic_chksum_paths = defaultdict(OrderedDict)
     for path, data in lic_chksums.items():

-- 
To stop receiving notification emails like this one, please contact
the administrator of this repository.


More information about the Openembedded-commits mailing list