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