[oe] [PATCH 1/1] distribute_license: added class to copy license files

Bernhard Reutner-Fischer rep.dot.nop at gmail.com
Thu Jul 29 20:55:04 UTC 2010


On Thu, Jul 29, 2010 at 09:51:01AM -0500, Chase Maupin wrote:
>* This class can be used to copy license files from package
>  sources into the deploy directory so they can be distributed.
>* By default it searches the top-level source directory for
>  files matching COPYING* or LICENSE*
>* Search depth and pattern can be modified using the
>  LICENSE_SEARCH_DEPTH and LICENSE_FILES variables
>  respectively.
>
>Signed-off-by: Chase Maupin <chase.maupin at ti.com>
>---
> classes/distribute_license.bbclass |   56 ++++++++++++++++++++++++++++++++++++
> 1 files changed, 56 insertions(+), 0 deletions(-)
> create mode 100644 classes/distribute_license.bbclass
>
>diff --git a/classes/distribute_license.bbclass b/classes/distribute_license.bbclass
>new file mode 100644
>index 0000000..795a404
>--- /dev/null
>+++ b/classes/distribute_license.bbclass
>@@ -0,0 +1,56 @@
>+# distribute-license.bbclass will search the sources of a package to
>+# a given depth looking for a match to the specified pattern and if
>+# found will copy the matching file(s) to the deploy directory.
>+#
>+# This class is used to collect license files such as COPYING or
>+# LICENSE where they are found and save them per package.
>+#
>+# This package uses the following variables to control its operations:
>+#   - LICENSE_FILES         = Pattern of license files to be searched for.
>+#                             By default this is COPYING* and LICENSE* but
>+#                             this can be changed per package.
>+#   - LICENSE_SEARCH_DEPTH  = The maximum depth to search in the package
>+#                             sources for files matching the LICENSE_FILES
>+#                             pattern.
>+
>+
>+# Files to copy for the licensing.  By default this is looking for
>+# files following the patters COPYING* or LICENSING* in the top
>+# level sources directory.
>+LICENSE_FILES ?= "COPYING* LICENSE*"
>+
>+# Maximum depth to look for license files
>+LICENSE_SEARCH_DEPTH ?= "1"
>+
>+distribute_license_do_copy_license() {
>+    # Change directory to source directory
>+    cd ${S}
>+
>+    # Turn of globbing so that wildcards are not expanded in for loop

/s/of/off/

>+    set -f

hush: set: -f: invalid option

>+
>+    # Check if LICENSE_FILES exist.  If so copy them to DEPLOY_DIR
>+    for lic in ${LICENSE_FILES}
>+    do
>+        res=""

superfluous

>+        res=`find . -maxdepth ${LICENSE_SEARCH_DEPTH} -name "$lic"`
>+        if [ "$res" != "" ]

breaks on older test(1) impls that don't handle empty strings properly.
Could be that this one is moot by now though.

>+        then
>+            mkdir -p ${DEPLOY_DIR}/licenses/${PN}
>+            cp $res ${DEPLOY_DIR}/licenses/${PN}

install -D ${DEPLOY_DIR}/licenses/${PN} ${DEPLOY_DIR}/licenses/${PN}

>+        fi
>+    done
>+
>+    # Turn globbing back on
>+    set +f

hush: set: +f: invalid option

>+
>+    # Just to be clean change directory back to where we started from.
>+    cd -
>+}

What's the reason you don't do that in python instead?
Just curious as it would save quite some potential hazzle..

>+
>+EXPORT_FUNCTIONS do_copy_license
>+
>+# Put after do_patch in case a patch adds the license files
>+do_copy_license[deptask] = "do_patch"
>+
>+addtask copy_license after do_patch before do_configure
>-- 
>1.7.0.4

someone should bump git to 1.7.2, a BBCLASSEXTENDEDed version seems to
work for me ...




More information about the Openembedded-devel mailing list