summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAníbal Limón <anibal.limon@linux.intel.com>2017-02-16 10:45:32 -0600
committerRichard Purdie <richard.purdie@linuxfoundation.org>2017-03-01 23:27:06 +0000
commit129fbf324a34f2535206458a48ab067d7de9e354 (patch)
treeb74788654a125ef38f5d91291bad87c0ec0d3d98
parent5a2a1ec16b62c8aaffcf9aa7acfd297e68a001f8 (diff)
downloadpoky-129fbf324a34f2535206458a48ab067d7de9e354.tar.gz
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] (From OE-Core rev: 8c8c8edea9c9015e21f47f3d10e6f45446a2823b) Signed-off-by: Aníbal Limón <anibal.limon@linux.intel.com> Signed-off-by: Ross Burton <ross.burton@intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
-rw-r--r--meta/classes/license.bbclass20
1 files changed, 16 insertions, 4 deletions
diff --git a/meta/classes/license.bbclass b/meta/classes/license.bbclass
index caf7628d09..f97e39f3c5 100644
--- a/meta/classes/license.bbclass
+++ b/meta/classes/license.bbclass
@@ -131,6 +131,10 @@ def write_license_files(d, license_manifest, pkg_dic):
131 bb.utils.mkdirhier(pkg_rootfs_license_dir) 131 bb.utils.mkdirhier(pkg_rootfs_license_dir)
132 pkg_license_dir = os.path.join(d.getVar('LICENSE_DIRECTORY'), 132 pkg_license_dir = os.path.join(d.getVar('LICENSE_DIRECTORY'),
133 pkg_dic[pkg]["PN"]) 133 pkg_dic[pkg]["PN"])
134
135 pkg_manifest_licenses = [canonical_license(d, lic) \
136 for lic in pkg_dic[pkg]["LICENSES"]]
137
134 licenses = os.listdir(pkg_license_dir) 138 licenses = os.listdir(pkg_license_dir)
135 for lic in licenses: 139 for lic in licenses:
136 rootfs_license = os.path.join(rootfs_license_dir, lic) 140 rootfs_license = os.path.join(rootfs_license_dir, lic)
@@ -138,9 +142,18 @@ def write_license_files(d, license_manifest, pkg_dic):
138 pkg_rootfs_license = os.path.join(pkg_rootfs_license_dir, lic) 142 pkg_rootfs_license = os.path.join(pkg_rootfs_license_dir, lic)
139 143
140 if re.match("^generic_.*$", lic): 144 if re.match("^generic_.*$", lic):
141 generic_lic = re.search("^generic_(.*)$", lic).group(1) 145 generic_lic = canonical_license(d,
142 if oe.license.license_ok(canonical_license(d, 146 re.search("^generic_(.*)$", lic).group(1))
143 generic_lic), bad_licenses) == False: 147
148 # Do not copy generic license into package if isn't
149 # declared into LICENSES of the package.
150 if not re.sub('\+$', '', generic_lic) in \
151 [re.sub('\+', '', lic) for lic in \
152 pkg_manifest_licenses]:
153 continue
154
155 if oe.license.license_ok(generic_lic,
156 bad_licenses) == False:
144 continue 157 continue
145 158
146 if not os.path.exists(rootfs_license): 159 if not os.path.exists(rootfs_license):
@@ -499,7 +512,6 @@ def find_license_files(d):
499 bb.fatal('%s: %s' % (d.getVar('PF'), exc)) 512 bb.fatal('%s: %s' % (d.getVar('PF'), exc))
500 except SyntaxError: 513 except SyntaxError:
501 bb.warn("%s: Failed to parse it's LICENSE field." % (d.getVar('PF'))) 514 bb.warn("%s: Failed to parse it's LICENSE field." % (d.getVar('PF')))
502
503 # Add files from LIC_FILES_CHKSUM to list of license files 515 # Add files from LIC_FILES_CHKSUM to list of license files
504 lic_chksum_paths = defaultdict(OrderedDict) 516 lic_chksum_paths = defaultdict(OrderedDict)
505 for path, data in lic_chksums.items(): 517 for path, data in lic_chksums.items():