recipetool: Do not use mutable default arguments in Python

Remove mutable default arguments in Python because they can lead to all
sorts of nasty and horrible bugs.

https://florimond.dev/en/posts/2018/08/python-mutable-defaults-are-the-source-of-all-evil/

Revert `recipetool: Change default paramter fallback_licenses of
function split_pkg_licenses from None to []` and instead check
fallback_licenses before use.

(From OE-Core rev: 99dee60b8db557f54783bf0f61098587badc683c)

Signed-off-by: Stefan Herbrechtsmeier <stefan.herbrechtsmeier@weidmueller.com>
Signed-off-by: Luca Ceresoli <luca.ceresoli@bootlin.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
Stefan Herbrechtsmeier 2022-04-14 13:06:35 +02:00 committed by Richard Purdie
parent e4b2dd51a4
commit f72889eb00

View File

@ -1235,7 +1235,7 @@ def guess_license(srctree, d):
return licenses return licenses
def split_pkg_licenses(licvalues, packages, outlines, fallback_licenses=[], pn='${PN}'): def split_pkg_licenses(licvalues, packages, outlines, fallback_licenses=None, pn='${PN}'):
""" """
Given a list of (license, path, md5sum) as returned by guess_license(), Given a list of (license, path, md5sum) as returned by guess_license(),
a dict of package name to path mappings, write out a set of a dict of package name to path mappings, write out a set of
@ -1258,7 +1258,7 @@ def split_pkg_licenses(licvalues, packages, outlines, fallback_licenses=[], pn='
for pkgname in packages: for pkgname in packages:
# Assume AND operator between license files # Assume AND operator between license files
license = ' & '.join(list(set(pkglicenses.get(pkgname, ['Unknown'])))) or 'Unknown' license = ' & '.join(list(set(pkglicenses.get(pkgname, ['Unknown'])))) or 'Unknown'
if license == 'Unknown' and pkgname in fallback_licenses: if license == 'Unknown' and fallback_licenses and pkgname in fallback_licenses:
license = fallback_licenses[pkgname] license = fallback_licenses[pkgname]
licenses = tidy_licenses(license) licenses = tidy_licenses(license)
license = ' & '.join(licenses) license = ' & '.join(licenses)