[OE-core] [PATCH] meta: license: fix non-SPDX license being removed from INCOMPATIBLE_LICENSE

Quentin Schulz quentin.schulz at streamunlimited.com
Thu Jun 6 15:11:37 UTC 2019


Hi Adrian,

On Thu, Jun 06, 2019 at 05:52:36PM +0300, Adrian Bunk wrote:
> This breaks the build for me:
> 
> ERROR: test-image-1.0-r0 do_rootfs: Error executing a python function in exec_python_func() autogenerated:
> 
> The stack trace of python calls that resulted in this exception/failure was:
> File: 'exec_python_func() autogenerated', lineno: 2, function: <module>
>      0001:
>  *** 0002:license_create_manifest(d)
>      0003:
> File: '/home/bunk/yoctomusl/yocto-test/sources/poky/meta/classes/license_image.bbclass', lineno: 35, function: license_create_manifest
>      0031:            pkg_dic[pkg_name]["LICENSE"] = pkg_dic[pkg_name][pkg_lic_name]
>      0032:
>      0033:    rootfs_license_manifest = os.path.join(d.getVar('LICENSE_DIRECTORY'),
>      0034:                        d.getVar('IMAGE_NAME'), 'license.manifest')
>  *** 0035:    write_license_files(d, rootfs_license_manifest, pkg_dic, rootfs=True)
>      0036:}
>      0037:
>      0038:def write_license_files(d, license_manifest, pkg_dic, rootfs=True):
>      0039:    import re
> File: '/home/bunk/yoctomusl/yocto-test/sources/poky/meta/classes/license_image.bbclass', lineno: 44, function: write_license_files
>      0040:    import stat
>      0041:
>      0042:    bad_licenses = (d.getVar("INCOMPATIBLE_LICENSE") or "").split()
>      0043:    bad_licenses = map(lambda l: canonical_license(d, l), bad_licenses)
>  *** 0044:    bad_licenses = expand_wildcard_licenses(d, bad_licenses)
>      0045:
>      0046:    with open(license_manifest, "w") as license_file:
>      0047:        for pkg in sorted(pkg_dic):
>      0048:            if bad_licenses:
> File: '/home/bunk/yoctomusl/yocto-test/sources/poky/meta/classes/license.bbclass', lineno: 271, function: expand_wildcard_licenses
>      0267:    Return actual spdx format license names if wildcard used. We expand
>      0268:    wildcards from SPDXLICENSEMAP flags and SRC_DISTRIBUTE_LICENSES values.
>      0269:    """
>      0270:    import fnmatch
>  *** 0271:    licenses = wildcard_licenses[:]
>      0272:    spdxmapkeys = d.getVarFlags('SPDXLICENSEMAP').keys()
>      0273:    for wld_lic in wildcard_licenses:
>      0274:        spdxflags = fnmatch.filter(spdxmapkeys, wld_lic)
>      0275:        licenses += [d.getVarFlag('SPDXLICENSEMAP', flag) for flag in spdxflags]
> Exception: TypeError: 'map' object is not subscriptable
> 
> ERROR: test-image-1.0-r0 do_rootfs: 'map' object is not subscriptable
> ERROR: test-image-1.0-r0 do_rootfs: Function failed: license_create_manifest
> ERROR: Logfile of failure stored in: /home/bunk/yoctomusl/yocto-test/build_test/tmp/work/test-test-linux-musl/test-image/1.0-r0/temp/log.do_rootfs.29928
> ERROR: Task (/home/bunk/yoctomusl/yocto-test/sources/meta-test/recipes-test/images/test-image.bb:do_rootfs) failed with exit code '1'
> 

Funnily enough, you sent the log when I was already working on fixing
the issue :)

I only tested the v1 on package builds and not image builds, my bad.

Thanks for the report though, much appreciated.

I've sent a v2 (and you're Cc'ed to it).

Thanks,
Quentin
-- 
StreamUnlimited Engineering GmbH
High Tech Campus Vienna, Gutheil-Schoder-Gasse 10, 1100 Vienna, Austria
quentin.schulz at streamunlimited.com, www.streamunlimited.com


More information about the Openembedded-core mailing list