Patchwork [1/1] archvier.bbclass: fix copyleft filter behavior

login
register
mail settings
Submitter Kevin Strasser
Date Jan. 24, 2013, 11:34 p.m.
Message ID <ac167dd477306984edf3607e3321deec0165611e.1359069690.git.kevin.strasser@linux.intel.com>
Download mbox | patch
Permalink /patch/43331/
State New
Headers show

Comments

Kevin Strasser - Jan. 24, 2013, 11:34 p.m.
copyleft_should_include() was only filtering out recipes that
contain a license in COPYLEFT_LICENSE_EXCLUDE. This change adds
the requirement that the recipe contain a copyleft license, as
defined by COPYLEFT_LICENSE_INCLUDE.

Also, filtering results were being mistakenly negated in tar_filter().

Signed-off-by: Kevin Strasser <kevin.strasser@linux.intel.com>
---
 meta/classes/archiver.bbclass |    6 ++++--
 meta/lib/oe/license.py        |    4 +++-
 2 files changed, 7 insertions(+), 3 deletions(-)

Patch

diff --git a/meta/classes/archiver.bbclass b/meta/classes/archiver.bbclass
index a4a2158..7fd4f0f 100644
--- a/meta/classes/archiver.bbclass
+++ b/meta/classes/archiver.bbclass
@@ -64,8 +64,10 @@  def copyleft_should_include(d):
     else:
         if is_included:
             return True, 'recipe has included licenses: %s' % ', '.join(reason)
-        else:
+        elif reason:
             return False, 'recipe has excluded licenses: %s' % ', '.join(reason)
+        else:
+            return False, 'recipe has neither included nor excluded licenses'
 
 def tar_filter(d):
     """
@@ -75,7 +77,7 @@  def tar_filter(d):
     """
     if d.getVar('FILTER', True) == "yes":
         included, reason = copyleft_should_include(d)
-        if not included:
+        if included:
             return False
         else:
             return True
diff --git a/meta/lib/oe/license.py b/meta/lib/oe/license.py
index 173e319..fc15e9e 100644
--- a/meta/lib/oe/license.py
+++ b/meta/lib/oe/license.py
@@ -112,5 +112,7 @@  def is_included(licensestr, whitelist=None, blacklist=None):
     included = filter(lambda lic: include_license(lic), licenses)
     if excluded:
         return False, excluded
-    else:
+    elif included:
         return True, included
+    else:
+        return False, None