oe.license: add is_included convenience function

Given a license string and whitelist and blacklist, determine if the
license string matches the whitelist and does not match the blacklist.

When encountering an OR, it prefers the side with the highest weight (more
included licenses). It then checks the inclusion of the flattened list of
licenses from there.

Returns a tuple holding the boolean state and a list of the applicable
licenses which were excluded (or None, if the state is True)

Examples:

    is_included, excluded = oe.license.is_included(licensestr, ['GPL*', 'LGPL*'])
    is_included, excluded = oe.license.is_included(licensestr, blacklist=['Proprietary', 'CLOSED'])

(From OE-Core rev: 7903433898b4683a1c09cc9a6a379421bc9bbd58)

Signed-off-by: Christopher Larson <chris_larson@mentor.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
Christopher Larson
2012-01-09 15:02:34 -06:00
committed by Richard Purdie
parent 49a0821376
commit 7ce97336aa
3 changed files with 43 additions and 19 deletions

3
meta/lib/test.py Normal file
View File

@@ -0,0 +1,3 @@
import oe.license
print(oe.license.is_included('LGPLv2.1 | GPLv3', ['*'], []))