All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 1/1] distribute_license: added class to copy license files
@ 2010-07-29 14:51 Chase Maupin
  2010-07-29 20:55 ` Bernhard Reutner-Fischer
  0 siblings, 1 reply; 7+ messages in thread
From: Chase Maupin @ 2010-07-29 14:51 UTC (permalink / raw)
  To: openembedded-devel; +Cc: Chase Maupin

* 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@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
+    set -f
+
+    # Check if LICENSE_FILES exist.  If so copy them to DEPLOY_DIR
+    for lic in ${LICENSE_FILES}
+    do
+        res=""
+        res=`find . -maxdepth ${LICENSE_SEARCH_DEPTH} -name "$lic"`
+        if [ "$res" != "" ]
+        then
+            mkdir -p ${DEPLOY_DIR}/licenses/${PN}
+            cp $res ${DEPLOY_DIR}/licenses/${PN}
+        fi
+    done
+
+    # Turn globbing back on
+    set +f
+
+    # Just to be clean change directory back to where we started from.
+    cd -
+}
+
+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




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

* Re: [PATCH 1/1] distribute_license: added class to copy license files
  2010-07-29 14:51 [PATCH 1/1] distribute_license: added class to copy license files Chase Maupin
@ 2010-07-29 20:55 ` Bernhard Reutner-Fischer
  2010-07-29 21:46   ` Maupin, Chase
  2010-07-30  6:48   ` Koen Kooi
  0 siblings, 2 replies; 7+ messages in thread
From: Bernhard Reutner-Fischer @ 2010-07-29 20:55 UTC (permalink / raw)
  To: openembedded-devel

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@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 ...



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

* Re: [PATCH 1/1] distribute_license: added class to copy license files
  2010-07-29 20:55 ` Bernhard Reutner-Fischer
@ 2010-07-29 21:46   ` Maupin, Chase
  2010-07-30  7:57     ` Bernhard Reutner-Fischer
  2010-07-30  6:48   ` Koen Kooi
  1 sibling, 1 reply; 7+ messages in thread
From: Maupin, Chase @ 2010-07-29 21:46 UTC (permalink / raw)
  To: Bernhard Reutner-Fischer,
	openembedded-devel@lists.openembedded.org


> -----Original Message-----
> From: Bernhard Reutner-Fischer [mailto:rep.dot.nop@gmail.com]
> Sent: Thursday, July 29, 2010 3:55 PM
> To: openembedded-devel@lists.openembedded.org
> Cc: Maupin, Chase
> Subject: Re: [oe] [PATCH 1/1] distribute_license: added class to copy
> license files
> 
> 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@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/

I'll update this

> 
> >+    set -f
> 
> hush: set: -f: invalid option

I thought bash was the standard shell for working with OE.  Is that wrong?

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

True, I'll go ahead and remove it.

> 
> >+        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.

So did this break for you?  I've never seen this issue.

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

I'll change this

> 
> >+        fi
> >+    done
> >+
> >+    # Turn globbing back on
> >+    set +f
> 
> hush: set: +f: invalid option

Same question as above

> 
> >+
> >+    # 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..

I know shell and not python, it's as simple as that.  If you want to rewrite this in python with the same functionality that's OK with me :)

> 
> >+
> >+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 ...

Sorry, I don't understand what my git version has to do with BBCLASSEXTEND.



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

* Re: [PATCH 1/1] distribute_license: added class to copy license files
  2010-07-29 20:55 ` Bernhard Reutner-Fischer
  2010-07-29 21:46   ` Maupin, Chase
@ 2010-07-30  6:48   ` Koen Kooi
  2010-08-02 14:11     ` Marc Olzheim
  1 sibling, 1 reply; 7+ messages in thread
From: Koen Kooi @ 2010-07-30  6:48 UTC (permalink / raw)
  To: openembedded-devel

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

On 29-07-10 22:55, Bernhard Reutner-Fischer wrote:
> 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@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

I don't think we realistically support something different than bash.
Having said that, adding hashisms is bad, do you have a suggestion for a
more portable approach?

regards,

Koen
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.5 (Darwin)

iD8DBQFMUnWrMkyGM64RGpERAi/2AKCGmm0kgEu54YytOloQwn5r54WH/ACfbw2+
4wUfIALobrMrVMin2tcloyU=
=wG8e
-----END PGP SIGNATURE-----




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

* Re: [PATCH 1/1] distribute_license: added class to copy license files
  2010-07-29 21:46   ` Maupin, Chase
@ 2010-07-30  7:57     ` Bernhard Reutner-Fischer
  2010-07-30  8:10       ` David Kozub
  0 siblings, 1 reply; 7+ messages in thread
From: Bernhard Reutner-Fischer @ 2010-07-30  7:57 UTC (permalink / raw)
  To: Maupin, Chase; +Cc: openembedded-devel@lists.openembedded.org

On Thu, Jul 29, 2010 at 04:46:55PM -0500, Maupin, Chase wrote:

>> >+    set -f
>> 
>> hush: set: -f: invalid option
>
>I thought bash was the standard shell for working with OE.  Is that wrong?

You're right, it is (and -f is a mandatory flag so disregard this,
sorry)

>> >+        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.
>
>So did this break for you?  I've never seen this issue.

[ -n "$res" ]
>
>> 
>> >+        then
>> >+            mkdir -p ${DEPLOY_DIR}/licenses/${PN}
>> >+            cp $res ${DEPLOY_DIR}/licenses/${PN}
>> 
>> install -D ${DEPLOY_DIR}/licenses/${PN} ${DEPLOY_DIR}/licenses/${PN}
>
>I'll change this

typo of mine: the first non-option argument should have been $res, of
course.

essentially you mean (if you say it in sh)
set -f
for lic in ${LICENSE_FILES}
do
  find ${S} -maxdepth ${LICENSE_SEARCH_DEPTH} -name "$lic" | \
    while read f
    do
      bn=$(basename $f)
      if [ -r ${DEPLOY_DIR}/licenses/${PN}/$bn ]; then
        # we could have used $d.$bn for per-dir licenses
        # d=$(echo $f | sed -e "s|${S}||" -e normalize-and-convert-slashes-to-underscore)
        echo "ERROR: possibly conflicting licenses"
        exit 1
      fi
      install -D $f ${DEPLOY_DIR}/licenses/${PN}/$bn
    done
done
set +f

This leaves you with just one non-standard hunk: -maxdepth
Given that both findutils as well as busybox support -maxdepth i would
not bother much.
Just a thought.. your initial version may be sufficient for most
practical reasons.

cheers,



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

* Re: [PATCH 1/1] distribute_license: added class to copy license files
  2010-07-30  7:57     ` Bernhard Reutner-Fischer
@ 2010-07-30  8:10       ` David Kozub
  0 siblings, 0 replies; 7+ messages in thread
From: David Kozub @ 2010-07-30  8:10 UTC (permalink / raw)
  To: openembedded-devel@lists.openembedded.org

>>>> +    set -f
>>>
>>> hush: set: -f: invalid option
>>
>> I thought bash was the standard shell for working with OE.  Is that wrong?
>
> You're right, it is (and -f is a mandatory flag so disregard this,
> sorry)

Just yesterday I was spanked on IRC for wanting to use bashisms. I was 
told OE should work with any reasonable posix-compliant shell.

Regards,

David



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

* Re: [PATCH 1/1] distribute_license: added class to copy license files
  2010-07-30  6:48   ` Koen Kooi
@ 2010-08-02 14:11     ` Marc Olzheim
  0 siblings, 0 replies; 7+ messages in thread
From: Marc Olzheim @ 2010-08-02 14:11 UTC (permalink / raw)
  To: openembedded-devel

On Fri, Jul 30, 2010 at 08:48:11AM +0200, Koen Kooi wrote:
> > hush: set: -f: invalid option
> 
> I don't think we realistically support something different than bash.
> Having said that, adding hashisms is bad, do you have a suggestion for a
> more portable approach?

I've been building with dash as /bin/sh with no problems for almost 2
years now. Not many gtk packages though. Anyway, I do not see any reason
to introduce bashisms, but if you do not know how to do it "properly" in
a portable way, you can always specificaly run bash to run certain
scripts, as adding bash to OE's prerequisites is less intrusive than
requiring /bin/sh to be bash.

Marc



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

end of thread, other threads:[~2010-08-02 14:12 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2010-07-29 14:51 [PATCH 1/1] distribute_license: added class to copy license files Chase Maupin
2010-07-29 20:55 ` Bernhard Reutner-Fischer
2010-07-29 21:46   ` Maupin, Chase
2010-07-30  7:57     ` Bernhard Reutner-Fischer
2010-07-30  8:10       ` David Kozub
2010-07-30  6:48   ` Koen Kooi
2010-08-02 14:11     ` Marc Olzheim

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.