All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 0/2] Packaging license texts in PN
@ 2013-01-17 11:49 Martin Jansa
  2013-01-17 11:49 ` [PATCH 1/2] license.bbclass: extract functionality to find license files to separate function Martin Jansa
  2013-01-17 11:49 ` [PATCH 2/2] license.bbclass: package license texts to PN-lic when LICENSE_CREATE_PACKAGE is enabled Martin Jansa
  0 siblings, 2 replies; 3+ messages in thread
From: Martin Jansa @ 2013-01-17 11:49 UTC (permalink / raw)
  To: openembedded-core

The following changes since commit 0ada16fe509d9a8608c05d16666243c8ebe4d3b3:

  apmd: fix license segment md5sum boundary (2013-01-16 11:54:47 +0000)

are available in the git repository at:

  git://git.openembedded.org/openembedded-core-contrib jansa/license-pn
  http://cgit.openembedded.org/cgit.cgi/openembedded-core-contrib/log/?h=jansa/license-pn

Martin Jansa (2):
  license.bbclass: extract functionality to find license files to
    separate function
  license.bbclass: package license texts to PN-lic when
    LICENSE_CREATE_PACKAGE is enabled

 meta/classes/license.bbclass | 78 ++++++++++++++++++++++++++++++++++----------
 1 file changed, 60 insertions(+), 18 deletions(-)

-- 
1.8.1.1




^ permalink raw reply	[flat|nested] 3+ messages in thread

* [PATCH 1/2] license.bbclass: extract functionality to find license files to separate function
  2013-01-17 11:49 [PATCH 0/2] Packaging license texts in PN Martin Jansa
@ 2013-01-17 11:49 ` Martin Jansa
  2013-01-17 11:49 ` [PATCH 2/2] license.bbclass: package license texts to PN-lic when LICENSE_CREATE_PACKAGE is enabled Martin Jansa
  1 sibling, 0 replies; 3+ messages in thread
From: Martin Jansa @ 2013-01-17 11:49 UTC (permalink / raw)
  To: openembedded-core

* move it from do_populate_lic to find_license_files so we can reuse it
  to populate license in package itself

[YOCTO #3743]

Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com>
---
 meta/classes/license.bbclass | 44 ++++++++++++++++++++++++++------------------
 1 file changed, 26 insertions(+), 18 deletions(-)

diff --git a/meta/classes/license.bbclass b/meta/classes/license.bbclass
index 68f45f5..63d081f 100644
--- a/meta/classes/license.bbclass
+++ b/meta/classes/license.bbclass
@@ -88,6 +88,25 @@ python do_populate_lic() {
     """
     Populate LICENSE_DIRECTORY with licenses.
     """
+    lic_files_paths = find_license_files(d)
+
+    # The base directory we wrangle licenses to
+    destdir = os.path.join(d.getVar('LICSSTATEDIR', True), d.getVar('PN', True))
+    copy_license_files(lic_files_paths, destdir)
+}
+
+def copy_license_files(lic_files_paths, destdir):
+    bb.mkdirhier(destdir)
+    for (basename, path) in lic_files_paths:
+        ret = bb.copyfile(path, os.path.join(destdir, basename))
+        # If the copy didn't occur, something horrible went wrong and we fail out
+        if not ret:
+            bb.warn("%s could not be copied for some reason. It may not exist. WARN for now." % path)
+
+def find_license_files(d):
+    """
+    Creates list of files used in LIC_FILES_CHKSUM and generic LICENSE files.
+    """
     import shutil
     import oe.license
 
@@ -108,12 +127,12 @@ python do_populate_lic() {
     # All the license files for the package
     lic_files = d.getVar('LIC_FILES_CHKSUM', True)
     pn = d.getVar('PN', True)
-    # The base directory we wrangle licenses to
-    destdir = os.path.join(d.getVar('LICSSTATEDIR', True), pn)
     # The license files are located in S/LIC_FILE_CHECKSUM.
     srcdir = d.getVar('S', True)
     # Directory we store the generic licenses as set in the distro configuration
     generic_directory = d.getVar('COMMON_LICENSE_DIR', True)
+    # List of basename, path tuples
+    lic_files_paths = []
     license_source_dirs = []
     license_source_dirs.append(generic_directory)
     try:
@@ -159,20 +178,12 @@ python do_populate_lic() {
             # we really should copy to generic_ + spdx_generic, however, that ends up messing the manifest
             # audit up. This should be fixed in emit_pkgdata (or, we actually got and fix all the recipes)
 
-            bb.copyfile(os.path.join(license_source, spdx_generic), os.path.join(os.path.join(d.getVar('LICSSTATEDIR', True), pn), "generic_" + license_type))
-            if not os.path.isfile(os.path.join(os.path.join(d.getVar('LICSSTATEDIR', True), pn), "generic_" + license_type)):
-            # If the copy didn't occur, something horrible went wrong and we fail out
-                bb.warn("%s for %s could not be copied for some reason. It may not exist. WARN for now." % (spdx_generic, pn))
+            lic_files_paths.append(("generic_" + license_type, os.path.join(license_source, spdx_generic)))
         else:
             # And here is where we warn people that their licenses are lousy
             bb.warn("%s: No generic license file exists for: %s in any provider" % (pn, license_type))
             pass
 
-    try:
-        bb.mkdirhier(destdir)
-    except:
-        pass
-
     if not generic_directory:
         raise bb.build.FuncFailed("COMMON_LICENSE_DIR is unset. Please set this in your distro config")
 
@@ -180,16 +191,13 @@ python do_populate_lic() {
         # No recipe should have an invalid license file. This is checked else
         # where, but let's be pedantic
         bb.note(pn + ": Recipe file does not have license file information.")
-        return True
+        return lic_files_paths
 
     for url in lic_files.split():
         (type, host, path, user, pswd, parm) = bb.decodeurl(url)
-        # We want the license file to be copied into the destination
+        # We want the license filename and path
         srclicfile = os.path.join(srcdir, path)
-        ret = bb.copyfile(srclicfile, os.path.join(destdir, os.path.basename(path)))
-        # If the copy didn't occur, something horrible went wrong and we fail out
-        if not ret:
-            bb.warn("%s could not be copied for some reason. It may not exist. WARN for now." % srclicfile)
+        lic_files_paths.append((os.path.basename(path), srclicfile))
 
     v = FindVisitor()
     try:
@@ -199,7 +207,7 @@ python do_populate_lic() {
     except SyntaxError:
         bb.warn("%s: Failed to parse it's LICENSE field." % (d.getVar('PF', True)))
 
-}
+    return lic_files_paths
 
 def return_spdx(d, license):
     """
-- 
1.8.1.1




^ permalink raw reply related	[flat|nested] 3+ messages in thread

* [PATCH 2/2] license.bbclass: package license texts to PN-lic when LICENSE_CREATE_PACKAGE is enabled
  2013-01-17 11:49 [PATCH 0/2] Packaging license texts in PN Martin Jansa
  2013-01-17 11:49 ` [PATCH 1/2] license.bbclass: extract functionality to find license files to separate function Martin Jansa
@ 2013-01-17 11:49 ` Martin Jansa
  1 sibling, 0 replies; 3+ messages in thread
From: Martin Jansa @ 2013-01-17 11:49 UTC (permalink / raw)
  To: openembedded-core

[YOCTO #3743]

Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com>
---
 meta/classes/license.bbclass | 34 ++++++++++++++++++++++++++++++++++
 1 file changed, 34 insertions(+)

diff --git a/meta/classes/license.bbclass b/meta/classes/license.bbclass
index 63d081f..22e6c56 100644
--- a/meta/classes/license.bbclass
+++ b/meta/classes/license.bbclass
@@ -6,6 +6,11 @@
 LICENSE_DIRECTORY ??= "${DEPLOY_DIR}/licenses"
 LICSSTATEDIR = "${WORKDIR}/license-destdir/"
 
+# Create extra package with license texts and add it to RRECOMMENDS_${PN}
+LICENSE_CREATE_PACKAGE ??= "0"
+LICENSE_PACKAGE_SUFFIX ??= "-lic"
+LICENSE_FILES_DIRECTORY ??= "${datadir}/licenses/"
+
 addtask populate_lic after do_patch before do_build
 do_populate_lic[dirs] = "${LICSSTATEDIR}/${PN}"
 do_populate_lic[cleandirs] = "${LICSSTATEDIR}"
@@ -95,6 +100,35 @@ python do_populate_lic() {
     copy_license_files(lic_files_paths, destdir)
 }
 
+# it would be better to copy them in do_install_append, but find_license_filesa is python
+python perform_packagecopy_prepend () {
+    enabled = d.getVar('LICENSE_CREATE_PACKAGE', True)
+    if d.getVar('CLASSOVERRIDE', True) == 'class-target' and enabled:
+        lic_files_paths = find_license_files(d)
+
+        # LICENSE_FILES_DIRECTORY starts with '/' so os.path.join cannot be used to join D and LICENSE_FILES_DIRECTORY
+        destdir = d.getVar('D', True) + os.path.join(d.getVar('LICENSE_FILES_DIRECTORY', True), d.getVar('PN', True))
+        copy_license_files(lic_files_paths, destdir)
+        add_package_and_files(d)
+}
+
+def add_package_and_files(d):
+    packages = d.getVar('PACKAGES', True)
+    files = d.getVar('LICENSE_FILES_DIRECTORY', True)
+    pn = d.getVar('PN', True)
+    pn_lic = "%s%s" % (pn, d.getVar('LICENSE_PACKAGE_SUFFIX'))
+    if pn_lic in packages:
+        bb.warn("%s package already existed in %s." % (pn_lic, pn))
+    else:
+        # first in PACKAGES to be sure that nothing else gets LICENSE_FILES_DIRECTORY
+        d.setVar('PACKAGES', "%s %s" % (pn_lic, packages))
+        d.setVar('FILES_' + pn_lic, files)
+        rrecommends_pn = d.getVar('RRECOMMENDS_' + pn, True)
+        if rrecommends_pn:
+            d.setVar('RRECOMMENDS_' + pn, "%s %s" % (pn_lic, rrecommends_pn))
+        else:
+            d.setVar('RRECOMMENDS_' + pn, "%s" % (pn_lic))
+
 def copy_license_files(lic_files_paths, destdir):
     bb.mkdirhier(destdir)
     for (basename, path) in lic_files_paths:
-- 
1.8.1.1




^ permalink raw reply related	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2013-01-17 12:05 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2013-01-17 11:49 [PATCH 0/2] Packaging license texts in PN Martin Jansa
2013-01-17 11:49 ` [PATCH 1/2] license.bbclass: extract functionality to find license files to separate function Martin Jansa
2013-01-17 11:49 ` [PATCH 2/2] license.bbclass: package license texts to PN-lic when LICENSE_CREATE_PACKAGE is enabled Martin Jansa

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.