* [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.