summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristopher Larson <chris_larson@mentor.com>2012-01-09 15:48:33 -0600
committerRichard Purdie <richard.purdie@linuxfoundation.org>2012-01-17 14:53:00 +0000
commitcace9ddc0edd654877d968643960fa4343472b58 (patch)
tree282d4840d8d83261a4e754a05757811c658a89e8
parent7903433898b4683a1c09cc9a6a379421bc9bbd58 (diff)
downloadopenembedded-core-cace9ddc0edd654877d968643960fa4343472b58.tar.gz
openembedded-core-cace9ddc0edd654877d968643960fa4343472b58.tar.bz2
openembedded-core-cace9ddc0edd654877d968643960fa4343472b58.zip
oe.license: avoid the need to catch SyntaxError
Signed-off-by: Christopher Larson <chris_larson@mentor.com>
-rw-r--r--meta/classes/copyleft_compliance.bbclass4
-rw-r--r--meta/lib/oe/license.py23
2 files changed, 20 insertions, 7 deletions
diff --git a/meta/classes/copyleft_compliance.bbclass b/meta/classes/copyleft_compliance.bbclass
index 6f058e0f20..2eb9dedd24 100644
--- a/meta/classes/copyleft_compliance.bbclass
+++ b/meta/classes/copyleft_compliance.bbclass
@@ -48,10 +48,8 @@ def copyleft_should_include(d):
try:
is_included, excluded = oe.license.is_included(d.getVar('LICENSE', True), include, exclude)
- except oe.license.InvalidLicense as exc:
+ except oe.license.LicenseError as exc:
bb.fatal('%s: %s' % (d.getVar('PF', True), exc))
- except SyntaxError as exc:
- bb.warn('%s: error when parsing the LICENSE variable: %s' % (d.getVar('P', True), exc))
else:
if is_included:
return True, None
diff --git a/meta/lib/oe/license.py b/meta/lib/oe/license.py
index 3543cfe1f6..5914506a42 100644
--- a/meta/lib/oe/license.py
+++ b/meta/lib/oe/license.py
@@ -5,13 +5,25 @@ import ast
import re
from fnmatch import fnmatchcase as fnmatch
-class InvalidLicense(StandardError):
+class LicenseError(StandardError):
+ pass
+
+class LicenseSyntaxError(LicenseError):
+ def __init__(self, licensestr, exc):
+ self.licensestr = licensestr
+ self.exc = exc
+ LicenseError.__init__(self)
+
+ def __str__(self):
+ return "error in '%s': %s" % (self.licensestr, self.exc)
+
+class InvalidLicense(LicenseError):
def __init__(self, license):
self.license = license
- StandardError.__init__(self)
+ LicenseError.__init__(self)
def __str__(self):
- return "invalid license '%s'" % self.license
+ return "invalid characters in license '%s'" % self.license
license_operator = re.compile('([&|() ])')
license_pattern = re.compile('[a-zA-Z0-9.+_\-]+$')
@@ -59,7 +71,10 @@ class FlattenVisitor(LicenseVisitor):
def flattened_licenses(licensestr, choose_licenses):
"""Given a license string and choose_licenses function, return a flat list of licenses"""
flatten = FlattenVisitor(choose_licenses)
- flatten.visit_string(licensestr)
+ try:
+ flatten.visit_string(licensestr)
+ except SyntaxError as exc:
+ raise LicenseSyntaxError(licensestr, exc)
return flatten.licenses
def is_included(licensestr, whitelist=None, blacklist=None):