Buildroot Archive on lore.kernel.org
 help / color / mirror / Atom feed
* [Buildroot] [PATCH] pkg-generic: Strip all but leading comments from C files used as license.
@ 2015-11-17 17:02 Peter Rosin
  2015-11-17 21:16 ` Thomas Petazzoni
  2015-11-17 21:21 ` Peter Korsgaard
  0 siblings, 2 replies; 4+ messages in thread
From: Peter Rosin @ 2015-11-17 17:02 UTC (permalink / raw)
  To: buildroot

From: Peter Rosin <peda@axentia.se>

Signed-off-by: Peter Rosin <peda@axentia.se>
---
 package/pkg-utils.mk |   28 +++++++++++++++++++++++++---
 1 file changed, 25 insertions(+), 3 deletions(-)

diff --git a/package/pkg-utils.mk b/package/pkg-utils.mk
index 44bd2c9..1497eb2 100644
--- a/package/pkg-utils.mk
+++ b/package/pkg-utils.mk
@@ -145,8 +145,30 @@ endef
 
 define legal-license-file # pkg, filename, file-fullpath, {HOST|TARGET}
 	$(call legal-license-header,$(1),$(2) file,$(4)) && \
-	cat $(3) >>$(LEGAL_LICENSES_TXT_$(4)) && \
-	echo >>$(LEGAL_LICENSES_TXT_$(4)) && \
 	mkdir -p $(LICENSE_FILES_DIR_$(4))/$(1)/$(dir $(2)) && \
-	cp $(3) $(LICENSE_FILES_DIR_$(4))/$(1)/$(2)
+	case $(3) in \
+	*.c|*.h) \
+	  sed -e '\
+x;\
+/^$$/{\
+  x;\
+  /^[ \t]*$$/b;\
+  /^[ \t]*\/\//b;\
+  /^[ \t]*\/\*.*\*\//b;\
+  /^[ \t]*\/\*/h;\
+  //b;\
+  s/.*//;\
+  q\
+};\
+x;\
+/\*\//{\
+  x;\
+  s/.*//;\
+  x\
+}' < $(3) > $(LICENSE_FILES_DIR_$(4))/$(1)/$(2) \
+	;; \
+	*) cp $(3) $(LICENSE_FILES_DIR_$(4))/$(1)/$(2);; \
+	esac && \
+	cat $(LICENSE_FILES_DIR_$(4))/$(1)/$(2) >>$(LEGAL_LICENSES_TXT_$(4)) && \
+	echo >>$(LEGAL_LICENSES_TXT_$(4))
 endef
-- 
1.7.10.4

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

* [Buildroot] [PATCH] pkg-generic: Strip all but leading comments from C files used as license.
  2015-11-17 17:02 [Buildroot] [PATCH] pkg-generic: Strip all but leading comments from C files used as license Peter Rosin
@ 2015-11-17 21:16 ` Thomas Petazzoni
  2015-11-17 21:36   ` Peter Rosin
  2015-11-17 21:21 ` Peter Korsgaard
  1 sibling, 1 reply; 4+ messages in thread
From: Thomas Petazzoni @ 2015-11-17 21:16 UTC (permalink / raw)
  To: buildroot

Dear Peter Rosin,

On Tue, 17 Nov 2015 18:02:19 +0100, Peter Rosin wrote:
> From: Peter Rosin <peda@axentia.se>
> 
> Signed-off-by: Peter Rosin <peda@axentia.se>

Thanks for your contribution. Could you explain what is the problem
with keeping a complete source file as legal information?

> diff --git a/package/pkg-utils.mk b/package/pkg-utils.mk
> index 44bd2c9..1497eb2 100644
> --- a/package/pkg-utils.mk
> +++ b/package/pkg-utils.mk
> @@ -145,8 +145,30 @@ endef
>  
>  define legal-license-file # pkg, filename, file-fullpath, {HOST|TARGET}
>  	$(call legal-license-header,$(1),$(2) file,$(4)) && \
> -	cat $(3) >>$(LEGAL_LICENSES_TXT_$(4)) && \
> -	echo >>$(LEGAL_LICENSES_TXT_$(4)) && \
>  	mkdir -p $(LICENSE_FILES_DIR_$(4))/$(1)/$(dir $(2)) && \
> -	cp $(3) $(LICENSE_FILES_DIR_$(4))/$(1)/$(2)
> +	case $(3) in \
> +	*.c|*.h) \
> +	  sed -e '\
> +x;\
> +/^$$/{\
> +  x;\
> +  /^[ \t]*$$/b;\
> +  /^[ \t]*\/\//b;\
> +  /^[ \t]*\/\*.*\*\//b;\
> +  /^[ \t]*\/\*/h;\
> +  //b;\
> +  s/.*//;\
> +  q\
> +};\
> +x;\
> +/\*\//{\
> +  x;\
> +  s/.*//;\
> +  x\
> +}' < $(3) > $(LICENSE_FILES_DIR_$(4))/$(1)/$(2) \

We quickly discussed your proposal on the #buildroot IRC, and the
conclusion is that we generally don't like this, for at least two
reasons:

 1/ The sed expression is awfully complicated.

 2/ There is absolutely no guarantee that the license part is inside
    the leading comment and that the complicated sed expression will
    actually keep the relevant part of the file.

We generally try to use a fairly short source code file as the license
text, so that keeping the entire file should not be a problem. If it
remains a problem, then I would suggest that you work with the upstream
project and ask them to include a separate license file that we can use.

Another possibility would be to do something like:

<pkg>_LICENSE_FILES = foo.c-23+42

to indicate that the license text is from line 23 to line 42. But it is
again not very foolproof, and it doesn't give much benefits.

Best regards,

Thomas
-- 
Thomas Petazzoni, CTO, Free Electrons
Embedded Linux, Kernel and Android engineering
http://free-electrons.com

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

* [Buildroot] [PATCH] pkg-generic: Strip all but leading comments from C files used as license.
  2015-11-17 17:02 [Buildroot] [PATCH] pkg-generic: Strip all but leading comments from C files used as license Peter Rosin
  2015-11-17 21:16 ` Thomas Petazzoni
@ 2015-11-17 21:21 ` Peter Korsgaard
  1 sibling, 0 replies; 4+ messages in thread
From: Peter Korsgaard @ 2015-11-17 21:21 UTC (permalink / raw)
  To: buildroot

>>>>> "Peter" == Peter Rosin <peda@lysator.liu.se> writes:

 > From: Peter Rosin <peda@axentia.se>
 > Signed-off-by: Peter Rosin <peda@axentia.se>
 > ---
 >  package/pkg-utils.mk |   28 +++++++++++++++++++++++++---
 >  1 file changed, 25 insertions(+), 3 deletions(-)

 > diff --git a/package/pkg-utils.mk b/package/pkg-utils.mk
 > index 44bd2c9..1497eb2 100644
 > --- a/package/pkg-utils.mk
 > +++ b/package/pkg-utils.mk
 > @@ -145,8 +145,30 @@ endef
 
 >  define legal-license-file # pkg, filename, file-fullpath, {HOST|TARGET}
 >  	$(call legal-license-header,$(1),$(2) file,$(4)) && \
 > -	cat $(3) >>$(LEGAL_LICENSES_TXT_$(4)) && \
 > -	echo >>$(LEGAL_LICENSES_TXT_$(4)) && \
 >  	mkdir -p $(LICENSE_FILES_DIR_$(4))/$(1)/$(dir $(2)) && \
 > -	cp $(3) $(LICENSE_FILES_DIR_$(4))/$(1)/$(2)
 > +	case $(3) in \
 > +	*.c|*.h) \
 > +	  sed -e '\
 > +x;\
> +/^$$/{\
 > +  x;\
 > +  /^[ \t]*$$/b;\
 > +  /^[ \t]*\/\//b;\
 > +  /^[ \t]*\/\*.*\*\//b;\

Hmm, I don't think we want to fiddle with the content of the legal
statements. Is there any real problem with having the complete .c / .h
file? That's still helping people but not risking that we screw up
anything.


-- 
Bye, Peter Korsgaard

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

* [Buildroot] [PATCH] pkg-generic: Strip all but leading comments from C files used as license.
  2015-11-17 21:16 ` Thomas Petazzoni
@ 2015-11-17 21:36   ` Peter Rosin
  0 siblings, 0 replies; 4+ messages in thread
From: Peter Rosin @ 2015-11-17 21:36 UTC (permalink / raw)
  To: buildroot


On 2015-11-17 22:16, Thomas Petazzoni wrote:
> Dear Peter Rosin,
>
> On Tue, 17 Nov 2015 18:02:19 +0100, Peter Rosin wrote:
>> From: Peter Rosin <peda@axentia.se>
>>
>> Signed-off-by: Peter Rosin <peda@axentia.se>
> Thanks for your contribution. Could you explain what is the problem
> with keeping a complete source file as legal information?

It's not a big deal, but source code certainly looked out of place
when I first scanned through licenses.txt. I guess you old-timers
have just gotten used to having it there...

>> diff --git a/package/pkg-utils.mk b/package/pkg-utils.mk
>> index 44bd2c9..1497eb2 100644
>> --- a/package/pkg-utils.mk
>> +++ b/package/pkg-utils.mk
>> @@ -145,8 +145,30 @@ endef
>>  
>>  define legal-license-file # pkg, filename, file-fullpath, {HOST|TARGET}
>>  	$(call legal-license-header,$(1),$(2) file,$(4)) && \
>> -	cat $(3) >>$(LEGAL_LICENSES_TXT_$(4)) && \
>> -	echo >>$(LEGAL_LICENSES_TXT_$(4)) && \
>>  	mkdir -p $(LICENSE_FILES_DIR_$(4))/$(1)/$(dir $(2)) && \
>> -	cp $(3) $(LICENSE_FILES_DIR_$(4))/$(1)/$(2)
>> +	case $(3) in \
>> +	*.c|*.h) \
>> +	  sed -e '\
>> +x;\
>> +/^$$/{\
>> +  x;\
>> +  /^[ \t]*$$/b;\
>> +  /^[ \t]*\/\//b;\
>> +  /^[ \t]*\/\*.*\*\//b;\
>> +  /^[ \t]*\/\*/h;\
>> +  //b;\
>> +  s/.*//;\
>> +  q\
>> +};\
>> +x;\
>> +/\*\//{\
>> +  x;\
>> +  s/.*//;\
>> +  x\
>> +}' < $(3) > $(LICENSE_FILES_DIR_$(4))/$(1)/$(2) \
> We quickly discussed your proposal on the #buildroot IRC, and the
> conclusion is that we generally don't like this, for at least two
> reasons:
>
>  1/ The sed expression is awfully complicated.
>
>  2/ There is absolutely no guarantee that the license part is inside
>     the leading comment and that the complicated sed expression will
>     actually keep the relevant part of the file.
>
> We generally try to use a fairly short source code file as the license
> text, so that keeping the entire file should not be a problem. If it
> remains a problem, then I would suggest that you work with the upstream
> project and ask them to include a separate license file that we can use.

I wouldn't call it a sed expression, it's a sed program really, but it's not very
complicated once you get through the sed syntax. But I see your points. I
just had a bit of fun writing it, no big deal if it gets thrown away here. I'll just
run the same thing locally instead...

> Another possibility would be to do something like:
>
> <pkg>_LICENSE_FILES = foo.c-23+42
>
> to indicate that the license text is from line 23 to line 42. But it is
> again not very foolproof, and it doesn't give much benefits.
>
Right, and that approach would require more care on version bumps...

Cheers,
Peter

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

end of thread, other threads:[~2015-11-17 21:36 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2015-11-17 17:02 [Buildroot] [PATCH] pkg-generic: Strip all but leading comments from C files used as license Peter Rosin
2015-11-17 21:16 ` Thomas Petazzoni
2015-11-17 21:36   ` Peter Rosin
2015-11-17 21:21 ` Peter Korsgaard

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox