classes/license: tweak license format messages

Strictly speaking not all of these characters are operators, so reword
the message to describe them as separators. Also use the standard
"recipename: message" format.

(From OE-Core rev: 9e5da3e83f2a5d43620e07a31728b7427329d8f4)

Signed-off-by: Paul Eggleton <paul.eggleton@linux.intel.com>
Signed-off-by: Ross Burton <ross.burton@intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
Paul Eggleton
2015-02-03 15:28:52 +00:00
committed by Richard Purdie
parent 617e2e9413
commit 30a5c9edc6
2 changed files with 10 additions and 8 deletions

View File

@@ -417,19 +417,20 @@ def check_license_format(d):
"""
pn = d.getVar('PN', True)
licenses = d.getVar('LICENSE', True)
from oe.license import license_operator
from oe.license import license_pattern
from oe.license import license_operator, license_operator_chars, license_pattern
elements = filter(lambda x: x.strip(), license_operator.split(licenses))
for pos, element in enumerate(elements):
if license_pattern.match(element):
if pos > 0 and license_pattern.match(elements[pos - 1]):
bb.warn("Recipe %s, LICENSE (%s) has invalid format, " \
"LICENSES must have operator \"%s\" between them." %
(pn, licenses, license_operator.pattern))
bb.warn('%s: LICENSE value "%s" has an invalid format - license names ' \
'must be separated by the following characters to indicate ' \
'the license selection: %s' %
(pn, licenses, license_operator_chars))
elif not license_operator.match(element):
bb.warn("Recipe %s, LICENSE (%s) has invalid operator (%s) not in" \
" \"%s\"." % (pn, licenses, element, license_operator.pattern))
bb.warn('%s: LICENSE value "%s" has an invalid separator "%s" that is not ' \
'in the valid list of separators (%s)' %
(pn, licenses, element, license_operator_chars))
SSTATETASKS += "do_populate_lic"
do_populate_lic[sstate-inputdirs] = "${LICSSTATEDIR}"

View File

@@ -25,7 +25,8 @@ class InvalidLicense(LicenseError):
def __str__(self):
return "invalid characters in license '%s'" % self.license
license_operator = re.compile('([&|() ])')
license_operator_chars = '&|() '
license_operator = re.compile('([' + license_operator_chars + '])')
license_pattern = re.compile('[a-zA-Z0-9.+_\-]+$')
class LicenseVisitor(ast.NodeVisitor):