oe/licenses: move tidy_licenses from recipetool

This function, to tidy a license string, is useful outside of recipetool
so move it to oe.license.

(From OE-Core rev: 9d57b53169bc60b281510c49e54123941a17a8f5)

Signed-off-by: Ross Burton <ross.burton@arm.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
Ross Burton 2025-06-27 14:48:46 +01:00 committed by Richard Purdie
parent 90cc27f8ce
commit 72486700fb
2 changed files with 16 additions and 10 deletions

View File

@ -462,3 +462,18 @@ def skip_incompatible_package_licenses(d, pkgs):
skipped_pkgs[pkg] = incompatible_lic
return skipped_pkgs
def tidy_licenses(value):
"""
Flat, split and sort licenses.
"""
from oe.license import flattened_licenses
def _choose(a, b):
str_a, str_b = sorted((" & ".join(a), " & ".join(b)), key=str.casefold)
return ["(%s | %s)" % (str_a, str_b)]
if not isinstance(value, str):
value = " & ".join(value)
return sorted(list(set(flattened_licenses(value, _choose))), key=str.casefold)

View File

@ -18,6 +18,7 @@ from urllib.parse import urlparse, urldefrag, urlsplit
import hashlib
import bb.fetch2
logger = logging.getLogger('recipetool')
from oe.license import tidy_licenses
from oe.license_finder import find_licenses
tinfoil = None
@ -950,16 +951,6 @@ def fixup_license(value):
return '(' + value + ')'
return value
def tidy_licenses(value):
"""Flat, split and sort licenses"""
from oe.license import flattened_licenses
def _choose(a, b):
str_a, str_b = sorted((" & ".join(a), " & ".join(b)), key=str.casefold)
return ["(%s | %s)" % (str_a, str_b)]
if not isinstance(value, str):
value = " & ".join(value)
return sorted(list(set(flattened_licenses(value, _choose))), key=str.casefold)
def handle_license_vars(srctree, lines_before, handled, extravalues, d):
lichandled = [x for x in handled if x[0] == 'license']
if lichandled: