All of lore.kernel.org
 help / color / mirror / Atom feed
* [Buildroot] [RFC 00/15] Automatically produce legal compliance info
@ 2012-01-29 15:11 Luca Ceresoli
  2012-01-29 15:11 ` [Buildroot] [RFC 01/15] legal-info: new target to echo basic per-package legal info Luca Ceresoli
                   ` (16 more replies)
  0 siblings, 17 replies; 35+ messages in thread
From: Luca Ceresoli @ 2012-01-29 15:11 UTC (permalink / raw)
  To: buildroot

Hi,

during the latest Buildroot Developers Day in November 2011 and in this
mailing list there has been some discussion about introducing in Buildroot the
possibility to derive automatically legally relevant material, such as
licensing info and source tarballs for open source packages.

This is a first tentative implementation of these features.

This code is not yet fully working, but I wanted to share it with you to
receive some early comments. I also wanted to allow those who will participate
to the next Buildroot Developer Day next Friday to have an idea of this
proposal in advance, in case this were object of discussion during the
meeting.

My approach is based on the creation of a per-package _LICENSE constant in
eack .mk file, such as:
  FOOBAR_LICENSE = GPL_V3
  MYAPP_LICENSE = PROPRIETARY
This is the only effort required to the package creator. Where it is not
specified it defaults to "unknown".

My overall goal is to add a new 'make legal-info' target that:
 - produces a manifest file listing all packages, including closed-source ones
   (and, why not, prints out to stdout the same info);
 - copies source code tarballs for all non-proprietary packages (although I'm
   saving also tarballs for BSD-licensed packages for now);
 - save the complete text of all license files that must be included in the
   product documentation (typically COPYING and LICENSE files); this is to
   simplify the work of who must provide these info to documentation writers.

This patchset implements the first two points, albeit with some issues that I
discuss below.
About the third point I devised a few different possible implementations, but
each of them has relevant drawbacks, so I left this point out for the moment.

Here's what is currently implmented:

  $ make legal-info
  busybox  1.19.3       GPL_V2_ONLY
  bzip2    1.0.5        BSD
  directfb 1.4.15       LGPL_V2.1
  foobar   1.2.3.4      PROPRIETARY
  freetype 2.4.8        unknown
  iostat   2.2          GPL_V2
  ...
  $ cat output/legal-info/manifest.csv 
  package,version,license
  busybox,1.19.3,GPL_V2_ONLY
  bzip2,1.0.5,BSD
  directfb,1.4.15,LGPL_V2.1
  foobar,1.2.3.4,PROPRIETARY
  freetype,2.4.8,unknown
  iostat,2.2,GPL_V2
  ...
  $ ls output/legal-info/sources/
  autoconf-2.65.tar.bz2
  automake-1.11.1.tar.bz2
  binutils-2.21.1.tar.bz2
  busybox-1.19.3.tar.bz2
  bzip2-1.0.5.tar.gz
  DirectFB-1.4.15.tar.gz
  fakeroot_1.9.5.tar.gz
  freetype-2.4.8.tar.bz2
  ...

The implementation is somewhat similar to 'make external-deps'.
A $(PKG)-legal-info target is created for each package which echoes the
$(PKG)_LICENSE value and other info both to stdout and to the manifest file.
It also copies source tarball in $(BASE_DIR)/legal-info/sources unless
$(PKG)_LICENSE equals "PROPRIETARY".

A top-level 'legal-info' target collects all of these per-package targets.

The implementation takes only ~35 lines of code so it should be simple to
review.

Now the long list of open issues.

The semantics of the _LICENSE variable is still non well defined.
It might be a generic string (e.g. FOOBAR_LICENSE = modified 3-clause BSD),
or one from a well-defined list of known licenses.
The former interpretation is probably the more useful for producing a manifest
file. The latter might be useful to help an automated implementation of the
last goal listed above: save the complete text of all license files to a
directory.

This patchset has been tested only in a few configurations. The only one that
has been really tested with reasonable depth is presented in the last patch
of this series.
This might in turn grow this list of open issues as soon as different configs
are tested...

Some packages do not appear in the 'make legal-info' output. It looks
like they are all and only the Buildroot's internal toolchain files (gcc,
mpfr, mpc etc). I couldn't find where the cause is yet, but I'm sure a more
expert eye can enlighten me.

Copying the source tarball does not currently work for packages with
_SITE_METHOD equal to local, as there is no tarball associated to it.
Other methods, such as file and all versioning systems, are not tested, but
they should work as there's a tarball in the download dir.

Non-gentargets and non-autotargets packages are not tested. I guess they need
a $(PKG)-legal-info target to be defined manually.

It might be useful to remove the output/legal-info dir before populating it,
to be sure there are no remnants of previous runs. It would not have a big
additional cost, since the computations and copies must be done anyway.

Finally, there is no documentation yet. I will write some if the presented
approach is considered good.

The patches are logically divided in these parts:
 - patches 1 to 4 introduce the mechanism to extract all the legal info;
   this is the interesting part;
 - patches 5 to 13 define the _LICENSE constant for some packages;
 - patches 14 and 15 only add some testing stuff; they are not meant to be
   merged.

Luca

Luca Ceresoli (15):
  legal-info: new target to echo basic per-package legal info
  legal-info: produce a manifest file with licensing info
  legal-info: save source tarballs for all packages
  legal-info: do not copy sources for proprietary packages
  mpc: define license
  linux: define license
  m4: define license
  busybox: define license
  bzip2: define license
  directfb: define license
  iostat: define license
  lzop: define license
  tslib: define license
  foobar: create a fake proprietary package (testing only)
  Create a test config (testing only)

 Makefile                          |   26 ++++++++++++++++++++++----
 configs/legal_info_test_defconfig |   13 +++++++++++++
 linux/linux.mk                    |    1 +
 package/Config.in                 |    1 +
 package/Makefile.package.in       |   11 +++++++++++
 package/busybox/busybox.mk        |    1 +
 package/bzip2/bzip2.mk            |    1 +
 package/directfb/directfb.mk      |    1 +
 package/foobar/Config.in          |    5 +++++
 package/foobar/foobar.mk          |   13 +++++++++++++
 package/foobar/source/foobar.c    |    7 +++++++
 package/iostat/iostat.mk          |    1 +
 package/lzop/lzop.mk              |    1 +
 package/m4/m4.mk                  |    1 +
 package/mpc/mpc.mk                |    1 +
 package/tslib/tslib.mk            |    1 +
 16 files changed, 81 insertions(+), 4 deletions(-)
 create mode 100644 configs/legal_info_test_defconfig
 create mode 100644 package/foobar/Config.in
 create mode 100644 package/foobar/foobar.mk
 create mode 100644 package/foobar/source/foobar.c

-- 
1.7.5.4

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

* [Buildroot] [RFC 01/15] legal-info: new target to echo basic per-package legal info
  2012-01-29 15:11 [Buildroot] [RFC 00/15] Automatically produce legal compliance info Luca Ceresoli
@ 2012-01-29 15:11 ` Luca Ceresoli
  2012-01-31 17:15   ` Arnout Vandecappelle
  2012-01-29 15:11 ` [Buildroot] [RFC 02/15] legal-info: produce a manifest file with licensing info Luca Ceresoli
                   ` (15 subsequent siblings)
  16 siblings, 1 reply; 35+ messages in thread
From: Luca Ceresoli @ 2012-01-29 15:11 UTC (permalink / raw)
  To: buildroot

Signed-off-by: Luca Ceresoli <luca@lucaceresoli.net>
---
 Makefile                    |    9 ++++++++-
 package/Makefile.package.in |    6 ++++++
 2 files changed, 14 insertions(+), 1 deletions(-)

diff --git a/Makefile b/Makefile
index 912012f..507fd78 100644
--- a/Makefile
+++ b/Makefile
@@ -354,6 +354,11 @@ HOST_DEPS = $(sort $(foreach dep,\
 		$($(dep))))
 HOST_SOURCE += $(addsuffix -source,$(sort $(TARGETS_HOST_DEPS) $(HOST_DEPS)))
 
+TARGETS_LEGAL_INFO:=$(patsubst %,%-legal-info,\
+		$(filter-out makedevs,\
+		$(patsubst host-%,%,\
+		$(TARGETS) $(BASE_TARGETS) $(TARGETS_HOST_DEPS) $(HOST_DEPS))))
+
 # all targets depend on the crosscompiler and it's prerequisites
 $(TARGETS_ALL): __real_tgt_%: $(BASE_TARGETS) %
 
@@ -387,7 +392,7 @@ $(O)/toolchainfile.cmake:
 
 .PHONY: all world dirs clean distclean source outputmakefile \
 	$(BASE_TARGETS) $(TARGETS) $(TARGETS_ALL) \
-	$(TARGETS_CLEAN) $(TARGETS_DIRCLEAN) $(TARGETS_SOURCE) \
+	$(TARGETS_CLEAN) $(TARGETS_DIRCLEAN) $(TARGETS_SOURCE) $(TARGETS_LEGAL_INFO) \
 	$(DL_DIR) $(TOOLCHAIN_DIR) $(BUILD_DIR) $(STAGING_DIR) $(TARGET_DIR) \
 	$(HOST_DIR) $(BINARIES_DIR) $(STAMP_DIR)
 
@@ -497,6 +502,8 @@ source: dirs $(TARGETS_SOURCE) $(HOST_SOURCE)
 external-deps:
 	@$(MAKE) -Bs DL_MODE=SHOW_EXTERNAL_DEPS $(EXTRAMAKEARGS) source | sort -u
 
+legal-info: $(TARGETS_LEGAL_INFO)
+
 show-targets:
 	@echo $(TARGETS)
 
diff --git a/package/Makefile.package.in b/package/Makefile.package.in
index e57bfed..8e73f34 100644
--- a/package/Makefile.package.in
+++ b/package/Makefile.package.in
@@ -512,6 +512,8 @@ ifndef $(2)_SOURCE
  endif
 endif
 
+$(2)_LICENSE			?= unknown
+
 ifndef $(2)_PATCH
  ifdef $(3)_PATCH
   $(2)_PATCH = $($(3)_PATCH)
@@ -651,6 +653,9 @@ $(1)-rsync:		$$($(2)_TARGET_RSYNC)
 $(1)-source:		$$($(2)_TARGET_RSYNC_SOURCE)
 endif
 
+$(1)-legal-info:	$(1)-source
+			@echo -e "$(1)\t$$($(3)_VERSION)\t$$($(3)_LICENSE)"
+
 $(1)-show-depends:
 			@echo $$($(2)_DEPENDENCIES)
 
@@ -694,6 +699,7 @@ $$($(2)_TARGET_PATCH):			PKG=$(2)
 $$($(2)_TARGET_PATCH):			RAWNAME=$(patsubst host-%,%,$(1))
 $$($(2)_TARGET_EXTRACT):		PKG=$(2)
 $$($(2)_TARGET_SOURCE):			PKG=$(2)
+$$($(2)_TARGET_LEGAL_INFO):		PKG=$(2)
 $$($(2)_TARGET_UNINSTALL):		PKG=$(2)
 $$($(2)_TARGET_CLEAN):			PKG=$(2)
 $$($(2)_TARGET_DIRCLEAN):		PKG=$(2)
-- 
1.7.5.4

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

* [Buildroot] [RFC 02/15] legal-info: produce a manifest file with licensing info
  2012-01-29 15:11 [Buildroot] [RFC 00/15] Automatically produce legal compliance info Luca Ceresoli
  2012-01-29 15:11 ` [Buildroot] [RFC 01/15] legal-info: new target to echo basic per-package legal info Luca Ceresoli
@ 2012-01-29 15:11 ` Luca Ceresoli
  2012-01-31 17:25   ` Arnout Vandecappelle
  2012-01-29 15:11 ` [Buildroot] [RFC 03/15] legal-info: save source tarballs for all packages Luca Ceresoli
                   ` (14 subsequent siblings)
  16 siblings, 1 reply; 35+ messages in thread
From: Luca Ceresoli @ 2012-01-29 15:11 UTC (permalink / raw)
  To: buildroot

Signed-off-by: Luca Ceresoli <luca@lucaceresoli.net>
---
 Makefile                    |   14 +++++++++++---
 package/Makefile.package.in |    4 +++-
 2 files changed, 14 insertions(+), 4 deletions(-)

diff --git a/Makefile b/Makefile
index 507fd78..dcff4dd 100644
--- a/Makefile
+++ b/Makefile
@@ -278,6 +278,9 @@ TARGET_DIR:=$(BASE_DIR)/target
 TOOLCHAIN_DIR=$(BASE_DIR)/toolchain
 TARGET_SKELETON=$(TOPDIR)/fs/skeleton
 
+LEGAL_INFO_DIR=$(BASE_DIR)/legal-info
+LEGAL_MANIFEST_CSV=$(LEGAL_INFO_DIR)/manifest.csv
+
 ifeq ($(BR2_CCACHE),y)
 CCACHE:=$(HOST_DIR)/usr/bin/ccache
 CCACHE_CACHE_DIR=$(HOME)/.buildroot-ccache
@@ -363,7 +366,7 @@ TARGETS_LEGAL_INFO:=$(patsubst %,%-legal-info,\
 $(TARGETS_ALL): __real_tgt_%: $(BASE_TARGETS) %
 
 dirs: $(DL_DIR) $(TOOLCHAIN_DIR) $(BUILD_DIR) $(STAGING_DIR) $(TARGET_DIR) \
-	$(HOST_DIR) $(BINARIES_DIR) $(STAMP_DIR)
+	$(HOST_DIR) $(BINARIES_DIR) $(STAMP_DIR) $(LEGAL_INFO_DIR)
 
 $(BASE_TARGETS): dirs $(O)/toolchainfile.cmake
 
@@ -391,6 +394,7 @@ $(O)/toolchainfile.cmake:
 	" > $@
 
 .PHONY: all world dirs clean distclean source outputmakefile \
+	legal-info-prepare-manifest \
 	$(BASE_TARGETS) $(TARGETS) $(TARGETS_ALL) \
 	$(TARGETS_CLEAN) $(TARGETS_DIRCLEAN) $(TARGETS_SOURCE) $(TARGETS_LEGAL_INFO) \
 	$(DL_DIR) $(TOOLCHAIN_DIR) $(BUILD_DIR) $(STAGING_DIR) $(TARGET_DIR) \
@@ -402,7 +406,7 @@ $(O)/toolchainfile.cmake:
 # dependencies anywhere else
 #
 #############################################################
-$(DL_DIR) $(TOOLCHAIN_DIR) $(BUILD_DIR) $(HOST_DIR) $(BINARIES_DIR) $(STAMP_DIR):
+$(DL_DIR) $(TOOLCHAIN_DIR) $(BUILD_DIR) $(HOST_DIR) $(BINARIES_DIR) $(STAMP_DIR) $(LEGAL_INFO_DIR):
 	@mkdir -p $@
 
 $(STAGING_DIR):
@@ -502,7 +506,11 @@ source: dirs $(TARGETS_SOURCE) $(HOST_SOURCE)
 external-deps:
 	@$(MAKE) -Bs DL_MODE=SHOW_EXTERNAL_DEPS $(EXTRAMAKEARGS) source | sort -u
 
-legal-info: $(TARGETS_LEGAL_INFO)
+legal-info-prepare-manifest: $(LEGAL_INFO_DIR)
+	@rm -f $(LEGAL_MANIFEST_CSV)
+	@echo "package,version,license" >$(LEGAL_MANIFEST_CSV)
+
+legal-info: legal-info-prepare-manifest $(TARGETS_LEGAL_INFO)
 
 show-targets:
 	@echo $(TARGETS)
diff --git a/package/Makefile.package.in b/package/Makefile.package.in
index 8e73f34..e117223 100644
--- a/package/Makefile.package.in
+++ b/package/Makefile.package.in
@@ -653,8 +653,10 @@ $(1)-rsync:		$$($(2)_TARGET_RSYNC)
 $(1)-source:		$$($(2)_TARGET_RSYNC_SOURCE)
 endif
 
-$(1)-legal-info:	$(1)-source
+$(1)-legal-info:	$(1)-source $(LEGAL_INFO_DIR)
 			@echo -e "$(1)\t$$($(3)_VERSION)\t$$($(3)_LICENSE)"
+			@echo "$(1),$$($(3)_VERSION),$$($(3)_LICENSE)" \
+				>>$(LEGAL_MANIFEST_CSV)
 
 $(1)-show-depends:
 			@echo $$($(2)_DEPENDENCIES)
-- 
1.7.5.4

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

* [Buildroot] [RFC 03/15] legal-info: save source tarballs for all packages
  2012-01-29 15:11 [Buildroot] [RFC 00/15] Automatically produce legal compliance info Luca Ceresoli
  2012-01-29 15:11 ` [Buildroot] [RFC 01/15] legal-info: new target to echo basic per-package legal info Luca Ceresoli
  2012-01-29 15:11 ` [Buildroot] [RFC 02/15] legal-info: produce a manifest file with licensing info Luca Ceresoli
@ 2012-01-29 15:11 ` Luca Ceresoli
  2012-01-31 22:10   ` Arnout Vandecappelle
  2012-01-29 15:11 ` [Buildroot] [RFC 04/15] legal-info: do not copy sources for proprietary packages Luca Ceresoli
                   ` (13 subsequent siblings)
  16 siblings, 1 reply; 35+ messages in thread
From: Luca Ceresoli @ 2012-01-29 15:11 UTC (permalink / raw)
  To: buildroot

Signed-off-by: Luca Ceresoli <luca@lucaceresoli.net>
---
 Makefile                    |   11 +++++++----
 package/Makefile.package.in |    3 ++-
 2 files changed, 9 insertions(+), 5 deletions(-)

diff --git a/Makefile b/Makefile
index dcff4dd..31fda9a 100644
--- a/Makefile
+++ b/Makefile
@@ -279,6 +279,7 @@ TOOLCHAIN_DIR=$(BASE_DIR)/toolchain
 TARGET_SKELETON=$(TOPDIR)/fs/skeleton
 
 LEGAL_INFO_DIR=$(BASE_DIR)/legal-info
+REDIST_SOURCES_DIR=$(LEGAL_INFO_DIR)/sources
 LEGAL_MANIFEST_CSV=$(LEGAL_INFO_DIR)/manifest.csv
 
 ifeq ($(BR2_CCACHE),y)
@@ -366,7 +367,8 @@ TARGETS_LEGAL_INFO:=$(patsubst %,%-legal-info,\
 $(TARGETS_ALL): __real_tgt_%: $(BASE_TARGETS) %
 
 dirs: $(DL_DIR) $(TOOLCHAIN_DIR) $(BUILD_DIR) $(STAGING_DIR) $(TARGET_DIR) \
-	$(HOST_DIR) $(BINARIES_DIR) $(STAMP_DIR) $(LEGAL_INFO_DIR)
+	$(HOST_DIR) $(BINARIES_DIR) $(STAMP_DIR) $(LEGAL_INFO_DIR) \
+	$(REDIST_SOURCES_DIR)
 
 $(BASE_TARGETS): dirs $(O)/toolchainfile.cmake
 
@@ -406,7 +408,7 @@ $(O)/toolchainfile.cmake:
 # dependencies anywhere else
 #
 #############################################################
-$(DL_DIR) $(TOOLCHAIN_DIR) $(BUILD_DIR) $(HOST_DIR) $(BINARIES_DIR) $(STAMP_DIR) $(LEGAL_INFO_DIR):
+$(DL_DIR) $(TOOLCHAIN_DIR) $(BUILD_DIR) $(HOST_DIR) $(BINARIES_DIR) $(STAMP_DIR) $(LEGAL_INFO_DIR) $(REDIST_SOURCES_DIR):
 	@mkdir -p $@
 
 $(STAGING_DIR):
@@ -510,7 +512,7 @@ legal-info-prepare-manifest: $(LEGAL_INFO_DIR)
 	@rm -f $(LEGAL_MANIFEST_CSV)
 	@echo "package,version,license" >$(LEGAL_MANIFEST_CSV)
 
-legal-info: legal-info-prepare-manifest $(TARGETS_LEGAL_INFO)
+legal-info: legal-info-prepare-manifest $(REDIST_SOURCES_DIR) $(TARGETS_LEGAL_INFO)
 
 show-targets:
 	@echo $(TARGETS)
@@ -633,7 +635,8 @@ endif
 
 clean:
 	rm -rf $(STAGING_DIR) $(TARGET_DIR) $(BINARIES_DIR) $(HOST_DIR) \
-		$(STAMP_DIR) $(BUILD_DIR) $(TOOLCHAIN_DIR) $(BASE_DIR)/staging
+		$(STAMP_DIR) $(BUILD_DIR) $(TOOLCHAIN_DIR) $(BASE_DIR)/staging \
+		$(LEGAL_INFO_DIR) $(REDIST_SOURCES_DIR)
 
 distclean: clean
 ifeq ($(DL_DIR),$(TOPDIR)/dl)
diff --git a/package/Makefile.package.in b/package/Makefile.package.in
index e117223..0d7e081 100644
--- a/package/Makefile.package.in
+++ b/package/Makefile.package.in
@@ -653,10 +653,11 @@ $(1)-rsync:		$$($(2)_TARGET_RSYNC)
 $(1)-source:		$$($(2)_TARGET_RSYNC_SOURCE)
 endif
 
-$(1)-legal-info:	$(1)-source $(LEGAL_INFO_DIR)
+$(1)-legal-info:	$(1)-source $(LEGAL_INFO_DIR) $(REDIST_SOURCES_DIR)
 			@echo -e "$(1)\t$$($(3)_VERSION)\t$$($(3)_LICENSE)"
 			@echo "$(1),$$($(3)_VERSION),$$($(3)_LICENSE)" \
 				>>$(LEGAL_MANIFEST_CSV)
+			@cp $(DL_DIR)/$$($(3)_SOURCE) $(REDIST_SOURCES_DIR)
 
 $(1)-show-depends:
 			@echo $$($(2)_DEPENDENCIES)
-- 
1.7.5.4

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

* [Buildroot] [RFC 04/15] legal-info: do not copy sources for proprietary packages
  2012-01-29 15:11 [Buildroot] [RFC 00/15] Automatically produce legal compliance info Luca Ceresoli
                   ` (2 preceding siblings ...)
  2012-01-29 15:11 ` [Buildroot] [RFC 03/15] legal-info: save source tarballs for all packages Luca Ceresoli
@ 2012-01-29 15:11 ` Luca Ceresoli
  2012-01-29 15:11 ` [Buildroot] [RFC 05/15] mpc: define license Luca Ceresoli
                   ` (12 subsequent siblings)
  16 siblings, 0 replies; 35+ messages in thread
From: Luca Ceresoli @ 2012-01-29 15:11 UTC (permalink / raw)
  To: buildroot

Signed-off-by: Luca Ceresoli <luca@lucaceresoli.net>
---
 package/Makefile.package.in |    2 ++
 1 files changed, 2 insertions(+), 0 deletions(-)

diff --git a/package/Makefile.package.in b/package/Makefile.package.in
index 0d7e081..745cb26 100644
--- a/package/Makefile.package.in
+++ b/package/Makefile.package.in
@@ -657,7 +657,9 @@ $(1)-legal-info:	$(1)-source $(LEGAL_INFO_DIR) $(REDIST_SOURCES_DIR)
 			@echo -e "$(1)\t$$($(3)_VERSION)\t$$($(3)_LICENSE)"
 			@echo "$(1),$$($(3)_VERSION),$$($(3)_LICENSE)" \
 				>>$(LEGAL_MANIFEST_CSV)
+ifneq ($$($(3)_LICENSE),PROPRIETARY)
 			@cp $(DL_DIR)/$$($(3)_SOURCE) $(REDIST_SOURCES_DIR)
+endif
 
 $(1)-show-depends:
 			@echo $$($(2)_DEPENDENCIES)
-- 
1.7.5.4

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

* [Buildroot] [RFC 05/15] mpc: define license
  2012-01-29 15:11 [Buildroot] [RFC 00/15] Automatically produce legal compliance info Luca Ceresoli
                   ` (3 preceding siblings ...)
  2012-01-29 15:11 ` [Buildroot] [RFC 04/15] legal-info: do not copy sources for proprietary packages Luca Ceresoli
@ 2012-01-29 15:11 ` Luca Ceresoli
  2012-01-29 15:11 ` [Buildroot] [RFC 06/15] linux: " Luca Ceresoli
                   ` (11 subsequent siblings)
  16 siblings, 0 replies; 35+ messages in thread
From: Luca Ceresoli @ 2012-01-29 15:11 UTC (permalink / raw)
  To: buildroot

Signed-off-by: Luca Ceresoli <luca@lucaceresoli.net>
---
 package/mpc/mpc.mk |    1 +
 1 files changed, 1 insertions(+), 0 deletions(-)

diff --git a/package/mpc/mpc.mk b/package/mpc/mpc.mk
index e5ee489..949b111 100644
--- a/package/mpc/mpc.mk
+++ b/package/mpc/mpc.mk
@@ -6,6 +6,7 @@
 
 MPC_VERSION = 0.9
 MPC_SITE = http://www.multiprecision.org/mpc/download
+MPC_LICENSE = LGPL_V2.1
 MPC_INSTALL_STAGING = YES
 MPC_DEPENDENCIES = gmp mpfr
 MPC_AUTORECONF = YES
-- 
1.7.5.4

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

* [Buildroot] [RFC 06/15] linux: define license
  2012-01-29 15:11 [Buildroot] [RFC 00/15] Automatically produce legal compliance info Luca Ceresoli
                   ` (4 preceding siblings ...)
  2012-01-29 15:11 ` [Buildroot] [RFC 05/15] mpc: define license Luca Ceresoli
@ 2012-01-29 15:11 ` Luca Ceresoli
  2012-01-29 15:11 ` [Buildroot] [RFC 07/15] m4: " Luca Ceresoli
                   ` (10 subsequent siblings)
  16 siblings, 0 replies; 35+ messages in thread
From: Luca Ceresoli @ 2012-01-29 15:11 UTC (permalink / raw)
  To: buildroot

Signed-off-by: Luca Ceresoli <luca@lucaceresoli.net>
---
 linux/linux.mk |    1 +
 1 files changed, 1 insertions(+), 0 deletions(-)

diff --git a/linux/linux.mk b/linux/linux.mk
index 5c5a1d2..cb481b1 100644
--- a/linux/linux.mk
+++ b/linux/linux.mk
@@ -4,6 +4,7 @@
 #
 ###############################################################################
 LINUX_VERSION=$(call qstrip,$(BR2_LINUX_KERNEL_VERSION))
+LINUX_LICENSE = GPL_V2_ONLY
 
 # Compute LINUX_SOURCE and LINUX_SITE from the configuration
 ifeq ($(LINUX_VERSION),custom)
-- 
1.7.5.4

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

* [Buildroot] [RFC 07/15] m4: define license
  2012-01-29 15:11 [Buildroot] [RFC 00/15] Automatically produce legal compliance info Luca Ceresoli
                   ` (5 preceding siblings ...)
  2012-01-29 15:11 ` [Buildroot] [RFC 06/15] linux: " Luca Ceresoli
@ 2012-01-29 15:11 ` Luca Ceresoli
  2012-01-29 15:11 ` [Buildroot] [RFC 08/15] busybox: " Luca Ceresoli
                   ` (9 subsequent siblings)
  16 siblings, 0 replies; 35+ messages in thread
From: Luca Ceresoli @ 2012-01-29 15:11 UTC (permalink / raw)
  To: buildroot

Signed-off-by: Luca Ceresoli <luca@lucaceresoli.net>
---
 package/m4/m4.mk |    1 +
 1 files changed, 1 insertions(+), 0 deletions(-)

diff --git a/package/m4/m4.mk b/package/m4/m4.mk
index 173bba8..480df7b 100644
--- a/package/m4/m4.mk
+++ b/package/m4/m4.mk
@@ -7,6 +7,7 @@
 M4_VERSION = 1.4.16
 M4_SOURCE = m4-$(M4_VERSION).tar.bz2
 M4_SITE = $(BR2_GNU_MIRROR)/m4
+M4_LICENSE = GPL_V3
 M4_CONF_ENV = gl_cv_func_gettimeofday_clobber=no
 
 ifneq ($(BR2_USE_WCHAR),y)
-- 
1.7.5.4

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

* [Buildroot] [RFC 08/15] busybox: define license
  2012-01-29 15:11 [Buildroot] [RFC 00/15] Automatically produce legal compliance info Luca Ceresoli
                   ` (6 preceding siblings ...)
  2012-01-29 15:11 ` [Buildroot] [RFC 07/15] m4: " Luca Ceresoli
@ 2012-01-29 15:11 ` Luca Ceresoli
  2012-01-29 15:11 ` [Buildroot] [RFC 09/15] bzip2: " Luca Ceresoli
                   ` (8 subsequent siblings)
  16 siblings, 0 replies; 35+ messages in thread
From: Luca Ceresoli @ 2012-01-29 15:11 UTC (permalink / raw)
  To: buildroot

Signed-off-by: Luca Ceresoli <luca@lucaceresoli.net>
---
 package/busybox/busybox.mk |    1 +
 1 files changed, 1 insertions(+), 0 deletions(-)

diff --git a/package/busybox/busybox.mk b/package/busybox/busybox.mk
index d18b6d0..b3c43d3 100644
--- a/package/busybox/busybox.mk
+++ b/package/busybox/busybox.mk
@@ -12,6 +12,7 @@ BUSYBOX_VERSION = $(call qstrip,$(BR2_BUSYBOX_VERSION))
 BUSYBOX_SITE = http://www.busybox.net/downloads
 endif
 BUSYBOX_SOURCE = busybox-$(BUSYBOX_VERSION).tar.bz2
+BUSYBOX_LICENSE = GPL_V2_ONLY
 BUSYBOX_BUILD_CONFIG = $(BUSYBOX_DIR)/.config
 # Allows the build system to tweak CFLAGS
 BUSYBOX_MAKE_ENV = $(TARGET_MAKE_ENV) CFLAGS="$(TARGET_CFLAGS) -I$(LINUX_HEADERS_DIR)/include"
-- 
1.7.5.4

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

* [Buildroot] [RFC 09/15] bzip2: define license
  2012-01-29 15:11 [Buildroot] [RFC 00/15] Automatically produce legal compliance info Luca Ceresoli
                   ` (7 preceding siblings ...)
  2012-01-29 15:11 ` [Buildroot] [RFC 08/15] busybox: " Luca Ceresoli
@ 2012-01-29 15:11 ` Luca Ceresoli
  2012-01-29 15:11 ` [Buildroot] [RFC 10/15] directfb: " Luca Ceresoli
                   ` (7 subsequent siblings)
  16 siblings, 0 replies; 35+ messages in thread
From: Luca Ceresoli @ 2012-01-29 15:11 UTC (permalink / raw)
  To: buildroot

Signed-off-by: Luca Ceresoli <luca@lucaceresoli.net>
---
 package/bzip2/bzip2.mk |    1 +
 1 files changed, 1 insertions(+), 0 deletions(-)

diff --git a/package/bzip2/bzip2.mk b/package/bzip2/bzip2.mk
index d3bb2b0..877cfdf 100644
--- a/package/bzip2/bzip2.mk
+++ b/package/bzip2/bzip2.mk
@@ -7,6 +7,7 @@ BZIP2_VERSION:=1.0.5
 BZIP2_SONAME=1.0.4
 BZIP2_SOURCE:=bzip2-$(BZIP2_VERSION).tar.gz
 BZIP2_SITE:=http://www.bzip.org/$(BZIP2_VERSION)
+BZIP2_LICENSE = BSD
 BZIP2_INSTALL_STAGING=YES
 
 define BZIP2_FIX_MAKEFILE
-- 
1.7.5.4

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

* [Buildroot] [RFC 10/15] directfb: define license
  2012-01-29 15:11 [Buildroot] [RFC 00/15] Automatically produce legal compliance info Luca Ceresoli
                   ` (8 preceding siblings ...)
  2012-01-29 15:11 ` [Buildroot] [RFC 09/15] bzip2: " Luca Ceresoli
@ 2012-01-29 15:11 ` Luca Ceresoli
  2012-01-29 15:11 ` [Buildroot] [RFC 11/15] iostat: " Luca Ceresoli
                   ` (6 subsequent siblings)
  16 siblings, 0 replies; 35+ messages in thread
From: Luca Ceresoli @ 2012-01-29 15:11 UTC (permalink / raw)
  To: buildroot

Signed-off-by: Luca Ceresoli <luca@lucaceresoli.net>
---
 package/directfb/directfb.mk |    1 +
 1 files changed, 1 insertions(+), 0 deletions(-)

diff --git a/package/directfb/directfb.mk b/package/directfb/directfb.mk
index 977d272..fb6450c 100644
--- a/package/directfb/directfb.mk
+++ b/package/directfb/directfb.mk
@@ -7,6 +7,7 @@ DIRECTFB_VERSION_MAJOR = 1.4
 DIRECTFB_VERSION = $(DIRECTFB_VERSION_MAJOR).15
 DIRECTFB_SITE = http://www.directfb.org/downloads/Core/DirectFB-$(DIRECTFB_VERSION_MAJOR)
 DIRECTFB_SOURCE = DirectFB-$(DIRECTFB_VERSION).tar.gz
+DIRECTFB_LICENSE = LGPL_V2.1
 DIRECTFB_AUTORECONF = YES
 DIRECTFB_INSTALL_STAGING = YES
 DIRECTFB_CONF_OPT = \
-- 
1.7.5.4

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

* [Buildroot] [RFC 11/15] iostat: define license
  2012-01-29 15:11 [Buildroot] [RFC 00/15] Automatically produce legal compliance info Luca Ceresoli
                   ` (9 preceding siblings ...)
  2012-01-29 15:11 ` [Buildroot] [RFC 10/15] directfb: " Luca Ceresoli
@ 2012-01-29 15:11 ` Luca Ceresoli
  2012-01-29 15:11 ` [Buildroot] [RFC 12/15] lzop: " Luca Ceresoli
                   ` (5 subsequent siblings)
  16 siblings, 0 replies; 35+ messages in thread
From: Luca Ceresoli @ 2012-01-29 15:11 UTC (permalink / raw)
  To: buildroot

Signed-off-by: Luca Ceresoli <luca@lucaceresoli.net>
---
 package/iostat/iostat.mk |    1 +
 1 files changed, 1 insertions(+), 0 deletions(-)

diff --git a/package/iostat/iostat.mk b/package/iostat/iostat.mk
index 83eea07..52b7e08 100644
--- a/package/iostat/iostat.mk
+++ b/package/iostat/iostat.mk
@@ -6,6 +6,7 @@
 
 IOSTAT_VERSION = 2.2
 IOSTAT_SITE = http://www.linuxinsight.com/files
+IOSTAT_LICENSE = GPL_V2
 
 iostat-source: $(DL_DIR)/$(IOSTAT_SOURCE)
 
-- 
1.7.5.4

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

* [Buildroot] [RFC 12/15] lzop: define license
  2012-01-29 15:11 [Buildroot] [RFC 00/15] Automatically produce legal compliance info Luca Ceresoli
                   ` (10 preceding siblings ...)
  2012-01-29 15:11 ` [Buildroot] [RFC 11/15] iostat: " Luca Ceresoli
@ 2012-01-29 15:11 ` Luca Ceresoli
  2012-01-29 15:11 ` [Buildroot] [RFC 13/15] tslib: " Luca Ceresoli
                   ` (4 subsequent siblings)
  16 siblings, 0 replies; 35+ messages in thread
From: Luca Ceresoli @ 2012-01-29 15:11 UTC (permalink / raw)
  To: buildroot

Signed-off-by: Luca Ceresoli <luca@lucaceresoli.net>
---
 package/lzop/lzop.mk |    1 +
 1 files changed, 1 insertions(+), 0 deletions(-)

diff --git a/package/lzop/lzop.mk b/package/lzop/lzop.mk
index 6d1d674..2ef329b 100644
--- a/package/lzop/lzop.mk
+++ b/package/lzop/lzop.mk
@@ -6,6 +6,7 @@
 LZOP_VERSION = 1.03
 LZOP_SOURCE = lzop-$(LZOP_VERSION).tar.gz
 LZOP_SITE = http://www.lzop.org/download/
+LZOP_LICENSE = GPL_V2
 LZOP_DEPENDENCIES = lzo
 
 $(eval $(call AUTOTARGETS))
-- 
1.7.5.4

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

* [Buildroot] [RFC 13/15] tslib: define license
  2012-01-29 15:11 [Buildroot] [RFC 00/15] Automatically produce legal compliance info Luca Ceresoli
                   ` (11 preceding siblings ...)
  2012-01-29 15:11 ` [Buildroot] [RFC 12/15] lzop: " Luca Ceresoli
@ 2012-01-29 15:11 ` Luca Ceresoli
  2012-01-29 15:11 ` [Buildroot] [RFC 14/15] foobar: create a fake proprietary package (testing only) Luca Ceresoli
                   ` (3 subsequent siblings)
  16 siblings, 0 replies; 35+ messages in thread
From: Luca Ceresoli @ 2012-01-29 15:11 UTC (permalink / raw)
  To: buildroot

Signed-off-by: Luca Ceresoli <luca@lucaceresoli.net>
---
 package/tslib/tslib.mk |    1 +
 1 files changed, 1 insertions(+), 0 deletions(-)

diff --git a/package/tslib/tslib.mk b/package/tslib/tslib.mk
index 885bd88..b59daaa 100644
--- a/package/tslib/tslib.mk
+++ b/package/tslib/tslib.mk
@@ -5,6 +5,7 @@
 #############################################################
 TSLIB_VERSION = 412d99d8b92c
 TSLIB_SITE = git://github.com/kergoth/tslib.git
+TSLIB_LICENSE = GPL_V2
 TSLIB_AUTORECONF = YES
 TSLIB_INSTALL_STAGING = YES
 TSLIB_INSTALL_STAGING_OPT = DESTDIR=$(STAGING_DIR) LDFLAGS=-L$(STAGING_DIR)/usr/lib install
-- 
1.7.5.4

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

* [Buildroot] [RFC 14/15] foobar: create a fake proprietary package (testing only)
  2012-01-29 15:11 [Buildroot] [RFC 00/15] Automatically produce legal compliance info Luca Ceresoli
                   ` (12 preceding siblings ...)
  2012-01-29 15:11 ` [Buildroot] [RFC 13/15] tslib: " Luca Ceresoli
@ 2012-01-29 15:11 ` Luca Ceresoli
  2012-01-29 15:26   ` Diego Iastrubni
  2012-01-29 15:11 ` [Buildroot] [RFC 15/15] Create a test config " Luca Ceresoli
                   ` (2 subsequent siblings)
  16 siblings, 1 reply; 35+ messages in thread
From: Luca Ceresoli @ 2012-01-29 15:11 UTC (permalink / raw)
  To: buildroot

This is only for testing the proprietary package handling, not to be
committed in any serious repository.

Signed-off-by: Luca Ceresoli <luca@lucaceresoli.net>
---
 package/Config.in              |    1 +
 package/foobar/Config.in       |    5 +++++
 package/foobar/foobar.mk       |   13 +++++++++++++
 package/foobar/source/foobar.c |    7 +++++++
 4 files changed, 26 insertions(+), 0 deletions(-)
 create mode 100644 package/foobar/Config.in
 create mode 100644 package/foobar/foobar.mk
 create mode 100644 package/foobar/source/foobar.c

diff --git a/package/Config.in b/package/Config.in
index 65c2a98..d310f9d 100644
--- a/package/Config.in
+++ b/package/Config.in
@@ -409,6 +409,7 @@ endmenu
 
 menu "Miscellaneous"
 source "package/shared-mime-info/Config.in"
+source "package/foobar/Config.in"
 endmenu
 
 menu "Networking applications"
diff --git a/package/foobar/Config.in b/package/foobar/Config.in
new file mode 100644
index 0000000..c88da26
--- /dev/null
+++ b/package/foobar/Config.in
@@ -0,0 +1,5 @@
+config BR2_PACKAGE_FOOBAR
+	bool "foobar"
+	default y
+	help
+	  Fake propritary package
diff --git a/package/foobar/foobar.mk b/package/foobar/foobar.mk
new file mode 100644
index 0000000..e2394f8
--- /dev/null
+++ b/package/foobar/foobar.mk
@@ -0,0 +1,13 @@
+#############################################################
+#
+# foobar - just a dummy, fake proprietary package
+#
+#############################################################
+
+FOOBAR_VERSION = 1.2.3.4
+FOOBAR_SOURCE = foobar-$(FOOBAR_VERSION).tar.bz2
+FOOBAR_SITE = package/foobar/source
+FOOBAR_SITE_METHOD = local
+FOOBAR_LICENSE = PROPRIETARY
+
+$(eval $(call GENTARGETS))
diff --git a/package/foobar/source/foobar.c b/package/foobar/source/foobar.c
new file mode 100644
index 0000000..2c375ef
--- /dev/null
+++ b/package/foobar/source/foobar.c
@@ -0,0 +1,7 @@
+#include <stdlib.h>
+
+int main(void)
+{
+  printf("Hello, World!\n");
+  return 0;
+}
-- 
1.7.5.4

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

* [Buildroot] [RFC 15/15] Create a test config (testing only)
  2012-01-29 15:11 [Buildroot] [RFC 00/15] Automatically produce legal compliance info Luca Ceresoli
                   ` (13 preceding siblings ...)
  2012-01-29 15:11 ` [Buildroot] [RFC 14/15] foobar: create a fake proprietary package (testing only) Luca Ceresoli
@ 2012-01-29 15:11 ` Luca Ceresoli
  2012-01-31  7:15 ` [Buildroot] [RFC 00/15] Automatically produce legal compliance info Arnout Vandecappelle
  2012-01-31 22:27 ` Yann E. MORIN
  16 siblings, 0 replies; 35+ messages in thread
From: Luca Ceresoli @ 2012-01-29 15:11 UTC (permalink / raw)
  To: buildroot

This is for testing only, not to be committed in any serious repository

Signed-off-by: Luca Ceresoli <luca@lucaceresoli.net>
---
 configs/legal_info_test_defconfig |   13 +++++++++++++
 1 files changed, 13 insertions(+), 0 deletions(-)
 create mode 100644 configs/legal_info_test_defconfig

diff --git a/configs/legal_info_test_defconfig b/configs/legal_info_test_defconfig
new file mode 100644
index 0000000..ccb2df8
--- /dev/null
+++ b/configs/legal_info_test_defconfig
@@ -0,0 +1,13 @@
+BR2_x86_pentiumpro=y
+BR2_TARGET_GENERIC_GETTY_PORT="tty1"
+BR2_PACKAGE_BZIP2=y
+BR2_PACKAGE_LZOP=y
+BR2_PACKAGE_DIRECTFB=y
+BR2_PACKAGE_IOSTAT=y
+BR2_PACKAGE_KBD=y
+BR2_TARGET_ROOTFS_EXT2=y
+# BR2_TARGET_ROOTFS_TAR is not set
+BR2_LINUX_KERNEL=y
+BR2_LINUX_KERNEL_CUSTOM_VERSION=y
+BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y
+BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="board/qemu/x86/linux-3.2.config"
-- 
1.7.5.4

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

* [Buildroot] [RFC 14/15] foobar: create a fake proprietary package (testing only)
  2012-01-29 15:11 ` [Buildroot] [RFC 14/15] foobar: create a fake proprietary package (testing only) Luca Ceresoli
@ 2012-01-29 15:26   ` Diego Iastrubni
  2012-01-29 15:50     ` Michael S. Zick
  0 siblings, 1 reply; 35+ messages in thread
From: Diego Iastrubni @ 2012-01-29 15:26 UTC (permalink / raw)
  To: buildroot

On Sun, Jan 29, 2012 at 5:11 PM, Luca Ceresoli <luca@lucaceresoli.net> wrote:
>
> This is only for testing the proprietary package handling, not to be
> committed in any serious repository.
>
> +FOOBAR_LICENSE = PROPRIETARY
>
> +++ b/package/foobar/source/foobar.c
> @@ -0,0 +1,7 @@
> +#include <stdlib.h>
> +
> +int main(void)
> +{
> + ?printf("Hello, World!\n");
> + ?return 0;
> +}


<sarcasm>
OMG OMG... buildroot is forking into a?proprietary?applications DB...
where is ./ where we need them?
</sarcasm>

/me takes a cup of water and relaxes... ;-)

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

* [Buildroot] [RFC 14/15] foobar: create a fake proprietary package (testing only)
  2012-01-29 15:26   ` Diego Iastrubni
@ 2012-01-29 15:50     ` Michael S. Zick
  2012-01-29 16:08       ` Diego Iastrubni
  2012-01-30 11:51       ` Luca Ceresoli
  0 siblings, 2 replies; 35+ messages in thread
From: Michael S. Zick @ 2012-01-29 15:50 UTC (permalink / raw)
  To: buildroot

On Sun January 29 2012, Diego Iastrubni wrote:
> On Sun, Jan 29, 2012 at 5:11 PM, Luca Ceresoli <luca@lucaceresoli.net> wrote:
> >
> > This is only for testing the proprietary package handling, not to be
> > committed in any serious repository.
> >
> > +FOOBAR_LICENSE = PROPRIETARY
> >
> > +++ b/package/foobar/source/foobar.c
> > @@ -0,0 +1,7 @@
> > +#include <stdlib.h>
> > +
> > +int main(void)
> > +{
> > + ?printf("Hello, World!\n");
> > + ?return 0;
> > +}
> 
> 
> <sarcasm>
> OMG OMG... buildroot is forking into a?proprietary?applications DB...
> where is ./ where we need them?
> </sarcasm>
> 

Perhaps you missed the recently added support for closed source
binary firmware blobs?

<sarcasm>
Your panic threshold setting may have to be tweaked up a bit.
</sarcasm>

If this proposal or something like it is included in the build
system, then those firmware blob licenses could also be handled
with the new bit of infrastructure.

Mike
> /me takes a cup of water and relaxes... ;-)
> _______________________________________________
> buildroot mailing list
> buildroot at busybox.net
> http://lists.busybox.net/mailman/listinfo/buildroot
> 
> 

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

* [Buildroot] [RFC 14/15] foobar: create a fake proprietary package (testing only)
  2012-01-29 15:50     ` Michael S. Zick
@ 2012-01-29 16:08       ` Diego Iastrubni
  2012-01-30 11:51       ` Luca Ceresoli
  1 sibling, 0 replies; 35+ messages in thread
From: Diego Iastrubni @ 2012-01-29 16:08 UTC (permalink / raw)
  To: buildroot

Michael,

I think both of us forgot to take the funny pill today.

I always get confused, is it the blue pill.. or red pill...? :)

On Sun, Jan 29, 2012 at 5:50 PM, Michael S. Zick <minimod@morethan.org> wrote:
> On Sun January 29 2012, Diego Iastrubni wrote:
>> On Sun, Jan 29, 2012 at 5:11 PM, Luca Ceresoli <luca@lucaceresoli.net> wrote:
>> >
>> > This is only for testing the proprietary package handling, not to be
>> > committed in any serious repository.
>> >
>> > +FOOBAR_LICENSE = PROPRIETARY
>> >
>> > +++ b/package/foobar/source/foobar.c
>> > @@ -0,0 +1,7 @@
>> > +#include <stdlib.h>
>> > +
>> > +int main(void)
>> > +{
>> > + ?printf("Hello, World!\n");
>> > + ?return 0;
>> > +}
>>
>>
>> <sarcasm>
>> OMG OMG... buildroot is forking into a?proprietary?applications DB...
>> where is ./ where we need them?
>> </sarcasm>
>>
>
> Perhaps you missed the recently added support for closed source
> binary firmware blobs?
>
> <sarcasm>
> Your panic threshold setting may have to be tweaked up a bit.
> </sarcasm>
>
> If this proposal or something like it is included in the build
> system, then those firmware blob licenses could also be handled
> with the new bit of infrastructure.
>
> Mike
>> /me takes a cup of water and relaxes... ;-)
>> _______________________________________________
>> buildroot mailing list
>> buildroot at busybox.net
>> http://lists.busybox.net/mailman/listinfo/buildroot
>>
>>
>
>
> _______________________________________________
> buildroot mailing list
> buildroot at busybox.net
> http://lists.busybox.net/mailman/listinfo/buildroot

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

* [Buildroot] [RFC 14/15] foobar: create a fake proprietary package (testing only)
  2012-01-29 15:50     ` Michael S. Zick
  2012-01-29 16:08       ` Diego Iastrubni
@ 2012-01-30 11:51       ` Luca Ceresoli
  1 sibling, 0 replies; 35+ messages in thread
From: Luca Ceresoli @ 2012-01-30 11:51 UTC (permalink / raw)
  To: buildroot

Hi Michael,

Michael S. Zick wrote:
> On Sun January 29 2012, Diego Iastrubni wrote:
>> On Sun, Jan 29, 2012 at 5:11 PM, Luca Ceresoli<luca@lucaceresoli.net>  wrote:
>>>
> If this proposal or something like it is included in the build
> system, then those firmware blob licenses could also be handled
> with the new bit of infrastructure.


Thanks for pointing out.
I had a look at the linux-firmware module, and it raises some
interesting points for discussion of the compliance stuff in general,
as well as the implementation.

Firstly, linux-firmware is a package composed of different parts with
different licenses.
This makes it hard for BR to handle the legal stuff for this package,
as it should show a different set of licenses depending on which parts
are actually used.
This is not unique of linux-firmware though. binutils has as many as
9 license files in its sources.

Second, I read a few random license files in linux-firmware and most of
them are similar to BSD licenses, in that they require the license text
to be included in the product documentation.
This is why I did not implement the third goal of my RFC, "save the
complete text of all license files that must be included in the product
documentation". It would be far from trivial.
In fact, in a case such as linux-firmare, it would be relatively easy to
copy all the (many) license files, but it would be of limited
usefulness.
The best thing to do would be to copy only the license files for those
parts of the package that are actually used in the product. I think
there's no way to obtain such a feature without a manual work of the
package's .mk creator. This work could probably be limited to packages
with a non-obvious licensing scheme, though.

Luca

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

* [Buildroot] [RFC 00/15] Automatically produce legal compliance info
  2012-01-29 15:11 [Buildroot] [RFC 00/15] Automatically produce legal compliance info Luca Ceresoli
                   ` (14 preceding siblings ...)
  2012-01-29 15:11 ` [Buildroot] [RFC 15/15] Create a test config " Luca Ceresoli
@ 2012-01-31  7:15 ` Arnout Vandecappelle
  2012-01-31 22:27 ` Yann E. MORIN
  16 siblings, 0 replies; 35+ messages in thread
From: Arnout Vandecappelle @ 2012-01-31  7:15 UTC (permalink / raw)
  To: buildroot

On Sunday 29 January 2012 16:11:33 Luca Ceresoli wrote:
[snip]
>   $ make legal-info
>   busybox  1.19.3       GPL_V2_ONLY
>   bzip2    1.0.5        BSD
>   directfb 1.4.15       LGPL_V2.1
>   foobar   1.2.3.4      PROPRIETARY
>   freetype 2.4.8        unknown
>   iostat   2.2          GPL_V2

 Cool!

>   ...
>   $ cat output/legal-info/manifest.csv 
>   package,version,license
>   busybox,1.19.3,GPL_V2_ONLY
>   bzip2,1.0.5,BSD
>   directfb,1.4.15,LGPL_V2.1
>   foobar,1.2.3.4,PROPRIETARY
>   freetype,2.4.8,unknown
>   iostat,2.2,GPL_V2
>   ...

 Personally I'd have used tabs instead of commas, so it is still
human-readable.  Not sure how non-libreoffice spreadsheets deal with
that, though.

>   $ ls output/legal-info/sources/
>   autoconf-2.65.tar.bz2
>   automake-1.11.1.tar.bz2
>   binutils-2.21.1.tar.bz2
>   busybox-1.19.3.tar.bz2
>   bzip2-1.0.5.tar.gz
>   DirectFB-1.4.15.tar.gz
>   fakeroot_1.9.5.tar.gz
>   freetype-2.4.8.tar.bz2
>   ...

 I think these should be hardlinks instead of copies of the dl 
directory.  You can use 'cp -l', which I believe falls back to
actual copying if the target filesystem doesn't support hardlinks
(although I can't think of a filesystem that supports symlinks but
not hardlinks).

[snip]
> The implementation takes only ~35 lines of code so it should be simple to
> review.

 I'll try to do that the coming days.  Without Reviewed-by tag, since this 
is still RFC.

> 
> Now the long list of open issues.
> 
> The semantics of the _LICENSE variable is still non well defined.
> It might be a generic string (e.g. FOOBAR_LICENSE = modified 3-clause BSD),
> or one from a well-defined list of known licenses.
> The former interpretation is probably the more useful for producing a manifest
> file. The latter might be useful to help an automated implementation of the
> last goal listed above: save the complete text of all license files to a
> directory.

 I would pre-define a number of strings, for which a predefined license
text exists.  The packager should check if the license text is identical,
and attach 'dirty' or something to the name if not.


[snip]
> Copying the source tarball does not currently work for packages with
> _SITE_METHOD equal to local, as there is no tarball associated to it.
 That should be fixed for the final version.

> Other methods, such as file and all versioning systems, are not tested, but
> they should work as there's a tarball in the download dir.
> 
> Non-gentargets and non-autotargets packages are not tested. I guess they need
> a $(PKG)-legal-info target to be defined manually.
 Those packages should be converted anyway.


> It might be useful to remove the output/legal-info dir before populating it,
> to be sure there are no remnants of previous runs. It would not have a big
> additional cost, since the computations and copies must be done anyway.
 I agree.

[snip]

 Regards,
 Arnout

-- 
Arnout Vandecappelle                               arnout at mind be
Senior Embedded Software Architect                 +32-16-286540
Essensium/Mind                                     http://www.mind.be
G.Geenslaan 9, 3001 Leuven, Belgium                BE 872 984 063 RPR Leuven
LinkedIn profile: http://www.linkedin.com/in/arnoutvandecappelle
GPG fingerprint:  7CB5 E4CC 6C2E EFD4 6E3D A754 F963 ECAB 2450 2F1F

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

* [Buildroot] [RFC 01/15] legal-info: new target to echo basic per-package legal info
  2012-01-29 15:11 ` [Buildroot] [RFC 01/15] legal-info: new target to echo basic per-package legal info Luca Ceresoli
@ 2012-01-31 17:15   ` Arnout Vandecappelle
  2012-02-01 21:07     ` Luca Ceresoli
  0 siblings, 1 reply; 35+ messages in thread
From: Arnout Vandecappelle @ 2012-01-31 17:15 UTC (permalink / raw)
  To: buildroot

On Sunday 29 January 2012 16:11:34 Luca Ceresoli wrote:
> Signed-off-by: Luca Ceresoli <luca@lucaceresoli.net>
Reviewed-by: Arnout Vandecappelle (Essensium/Mind) <arnout@mind.be>

> ---
>  Makefile                    |    9 ++++++++-
>  package/Makefile.package.in |    6 ++++++
>  2 files changed, 14 insertions(+), 1 deletions(-)
> 
> diff --git a/Makefile b/Makefile
> index 912012f..507fd78 100644
> --- a/Makefile
> +++ b/Makefile
> @@ -354,6 +354,11 @@ HOST_DEPS = $(sort $(foreach dep,\
>  		$($(dep))))
>  HOST_SOURCE += $(addsuffix -source,$(sort $(TARGETS_HOST_DEPS) $(HOST_DEPS)))
>  
> +TARGETS_LEGAL_INFO:=$(patsubst %,%-legal-info,\
> +		$(filter-out makedevs,\
> +		$(patsubst host-%,%,\
> +		$(TARGETS) $(BASE_TARGETS) $(TARGETS_HOST_DEPS) $(HOST_DEPS))))
> +
 Are we creating the legal info of the target or the SDK here?  If it is
for the target, the host-% are not needed since they are not distributed.
I think there should be a separate command for the SDK's legal info.

[snip]
> +$(1)-legal-info:	$(1)-source
> +			@echo -e "$(1)\t$$($(3)_VERSION)\t$$($(3)_LICENSE)"
> +
 Minor detail: if this patch is separate from the one that saves the source
tarball, the dependency on $(1)-source is unnecessary.

[snip]

 Regards,
 Arnout

-- 
Arnout Vandecappelle                               arnout at mind be
Senior Embedded Software Architect                 +32-16-286540
Essensium/Mind                                     http://www.mind.be
G.Geenslaan 9, 3001 Leuven, Belgium                BE 872 984 063 RPR Leuven
LinkedIn profile: http://www.linkedin.com/in/arnoutvandecappelle
GPG fingerprint:  7CB5 E4CC 6C2E EFD4 6E3D A754 F963 ECAB 2450 2F1F

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

* [Buildroot] [RFC 02/15] legal-info: produce a manifest file with licensing info
  2012-01-29 15:11 ` [Buildroot] [RFC 02/15] legal-info: produce a manifest file with licensing info Luca Ceresoli
@ 2012-01-31 17:25   ` Arnout Vandecappelle
  2012-02-01 21:29     ` Luca Ceresoli
  0 siblings, 1 reply; 35+ messages in thread
From: Arnout Vandecappelle @ 2012-01-31 17:25 UTC (permalink / raw)
  To: buildroot

On Sunday 29 January 2012 16:11:35 Luca Ceresoli wrote:
> Signed-off-by: Luca Ceresoli <luca@lucaceresoli.net>
Reviewed-by: Arnout Vandecappelle (Essensium/Mind) <arnout@mind.be>

[snip]
>  dirs: $(DL_DIR) $(TOOLCHAIN_DIR) $(BUILD_DIR) $(STAGING_DIR) $(TARGET_DIR) \
> -	$(HOST_DIR) $(BINARIES_DIR) $(STAMP_DIR)
> +	$(HOST_DIR) $(BINARIES_DIR) $(STAMP_DIR) $(LEGAL_INFO_DIR)
 Since legal-info-prepare-manifest already depends on LEGAL_INFO_DIR, this
 is redundant.

[snip]
> +legal-info-prepare-manifest: $(LEGAL_INFO_DIR)
> +	@rm -f $(LEGAL_MANIFEST_CSV)
> +	@echo "package,version,license" >$(LEGAL_MANIFEST_CSV)
> +
 I might be wrong, but I think this won't rebuild the manifest if the
directory already exists.  You'd need a dependency on FORCE (and add the
phony FORCE target).

 Again a minor comment: the clean target is missing here (but it's added
in the next patch).  But for me, the first three patches can be rolled
into one.

> +legal-info: legal-info-prepare-manifest $(TARGETS_LEGAL_INFO)
>  
>  show-targets:
>  	@echo $(TARGETS)
> diff --git a/package/Makefile.package.in b/package/Makefile.package.in
> index 8e73f34..e117223 100644
> --- a/package/Makefile.package.in
> +++ b/package/Makefile.package.in
> @@ -653,8 +653,10 @@ $(1)-rsync:		$$($(2)_TARGET_RSYNC)
>  $(1)-source:		$$($(2)_TARGET_RSYNC_SOURCE)
>  endif
>  
> -$(1)-legal-info:	$(1)-source
> +$(1)-legal-info:	$(1)-source $(LEGAL_INFO_DIR)
>  			@echo -e "$(1)\t$$($(3)_VERSION)\t$$($(3)_LICENSE)"
> +			@echo "$(1),$$($(3)_VERSION),$$($(3)_LICENSE)" \
> +				>>$(LEGAL_MANIFEST_CSV)
 Same here: will the manifest be rebuilt if the directory already exists?

 Regards,
 Arnout

>  
>  $(1)-show-depends:
>  			@echo $$($(2)_DEPENDENCIES)
> 

-- 
Arnout Vandecappelle                               arnout at mind be
Senior Embedded Software Architect                 +32-16-286540
Essensium/Mind                                     http://www.mind.be
G.Geenslaan 9, 3001 Leuven, Belgium                BE 872 984 063 RPR Leuven
LinkedIn profile: http://www.linkedin.com/in/arnoutvandecappelle
GPG fingerprint:  7CB5 E4CC 6C2E EFD4 6E3D A754 F963 ECAB 2450 2F1F

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

* [Buildroot] [RFC 03/15] legal-info: save source tarballs for all packages
  2012-01-29 15:11 ` [Buildroot] [RFC 03/15] legal-info: save source tarballs for all packages Luca Ceresoli
@ 2012-01-31 22:10   ` Arnout Vandecappelle
  2012-02-01 21:38     ` Luca Ceresoli
  0 siblings, 1 reply; 35+ messages in thread
From: Arnout Vandecappelle @ 2012-01-31 22:10 UTC (permalink / raw)
  To: buildroot

On Sunday 29 January 2012 16:11:36 Luca Ceresoli wrote:
> Signed-off-by: Luca Ceresoli <luca@lucaceresoli.net>
 Darn, I've been adding Reviewed-by tags even though I said I wouldn't :-)

[snip]
> @@ -633,7 +635,8 @@ endif
>  
>  clean:
>  	rm -rf $(STAGING_DIR) $(TARGET_DIR) $(BINARIES_DIR) $(HOST_DIR) \
> -		$(STAMP_DIR) $(BUILD_DIR) $(TOOLCHAIN_DIR) $(BASE_DIR)/staging
> +		$(STAMP_DIR) $(BUILD_DIR) $(TOOLCHAIN_DIR) $(BASE_DIR)/staging \
> +		$(LEGAL_INFO_DIR) $(REDIST_SOURCES_DIR)
 $(REDIST_SOURCES_DIR) is a subdir of $(LEGAL_INFO_DIR), so doesn't need
to be cleaned twice.

>  
>  distclean: clean
>  ifeq ($(DL_DIR),$(TOPDIR)/dl)
> diff --git a/package/Makefile.package.in b/package/Makefile.package.in
> index e117223..0d7e081 100644
> --- a/package/Makefile.package.in
> +++ b/package/Makefile.package.in
> @@ -653,10 +653,11 @@ $(1)-rsync:		$$($(2)_TARGET_RSYNC)
>  $(1)-source:		$$($(2)_TARGET_RSYNC_SOURCE)
>  endif
>  
> -$(1)-legal-info:	$(1)-source $(LEGAL_INFO_DIR)
> +$(1)-legal-info:	$(1)-source $(LEGAL_INFO_DIR) $(REDIST_SOURCES_DIR)
>  			@echo -e "$(1)\t$$($(3)_VERSION)\t$$($(3)_LICENSE)"
>  			@echo "$(1),$$($(3)_VERSION),$$($(3)_LICENSE)" \
>  				>>$(LEGAL_MANIFEST_CSV)
> +			@cp $(DL_DIR)/$$($(3)_SOURCE) $(REDIST_SOURCES_DIR)

 Actually, for local and override packages (of which you said they are not
supported at the moment), $(1)-source should create a tar file.

 Regards,
 Arnout

>  
>  $(1)-show-depends:
>  			@echo $$($(2)_DEPENDENCIES)
> 

-- 
Arnout Vandecappelle                               arnout at mind be
Senior Embedded Software Architect                 +32-16-286540
Essensium/Mind                                     http://www.mind.be
G.Geenslaan 9, 3001 Leuven, Belgium                BE 872 984 063 RPR Leuven
LinkedIn profile: http://www.linkedin.com/in/arnoutvandecappelle
GPG fingerprint:  7CB5 E4CC 6C2E EFD4 6E3D A754 F963 ECAB 2450 2F1F

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

* [Buildroot] [RFC 00/15] Automatically produce legal compliance info
  2012-01-29 15:11 [Buildroot] [RFC 00/15] Automatically produce legal compliance info Luca Ceresoli
                   ` (15 preceding siblings ...)
  2012-01-31  7:15 ` [Buildroot] [RFC 00/15] Automatically produce legal compliance info Arnout Vandecappelle
@ 2012-01-31 22:27 ` Yann E. MORIN
  2012-02-01 15:25   ` Thomas De Schampheleire
  16 siblings, 1 reply; 35+ messages in thread
From: Yann E. MORIN @ 2012-01-31 22:27 UTC (permalink / raw)
  To: buildroot

Luca, All,

On Sunday 29 January 2012 16:11:33 Luca Ceresoli wrote:
> during the latest Buildroot Developers Day in November 2011 and in this
> mailing list there has been some discussion about introducing in Buildroot the
> possibility to derive automatically legally relevant material, such as
> licensing info and source tarballs for open source packages.
> 
> This is a first tentative implementation of these features.
> 
> This code is not yet fully working, but I wanted to share it with you to
> receive some early comments. I also wanted to allow those who will participate
> to the next Buildroot Developer Day next Friday to have an idea of this
> proposal in advance, in case this were object of discussion during the
> meeting.
> 
> My approach is based on the creation of a per-package _LICENSE constant in
> eack .mk file, such as:
>   FOOBAR_LICENSE = GPL_V3
>   MYAPP_LICENSE = PROPRIETARY
> This is the only effort required to the package creator. Where it is not
> specified it defaults to "unknown".
> 
> My overall goal is to add a new 'make legal-info' target that:
>  - produces a manifest file listing all packages, including closed-source ones
>    (and, why not, prints out to stdout the same info);
>  - copies source code tarballs for all non-proprietary packages (although I'm
>    saving also tarballs for BSD-licensed packages for now);
>  - save the complete text of all license files that must be included in the
>    product documentation (typically COPYING and LICENSE files); this is to
>    simplify the work of who must provide these info to documentation writers.
> 
> This patchset implements the first two points, albeit with some issues that I
> discuss below.
> About the third point I devised a few different possible implementations, but
> each of them has relevant drawbacks, so I left this point out for the moment.
> 
> Here's what is currently implmented:
> 
>   $ make legal-info
>   busybox  1.19.3       GPL_V2_ONLY
>   bzip2    1.0.5        BSD
>   directfb 1.4.15       LGPL_V2.1
>   foobar   1.2.3.4      PROPRIETARY
>   freetype 2.4.8        unknown
>   iostat   2.2          GPL_V2
>   ...
>   $ cat output/legal-info/manifest.csv 
>   package,version,license
>   busybox,1.19.3,GPL_V2_ONLY
>   bzip2,1.0.5,BSD
>   directfb,1.4.15,LGPL_V2.1
>   foobar,1.2.3.4,PROPRIETARY
>   freetype,2.4.8,unknown
>   iostat,2.2,GPL_V2
>   ...
>   $ ls output/legal-info/sources/
>   autoconf-2.65.tar.bz2
>   automake-1.11.1.tar.bz2
>   binutils-2.21.1.tar.bz2
>   busybox-1.19.3.tar.bz2
>   bzip2-1.0.5.tar.gz
>   DirectFB-1.4.15.tar.gz
>   fakeroot_1.9.5.tar.gz
>   freetype-2.4.8.tar.bz2
>   ...

That's a pretty nice feature! Great!

However, I can see something missing for GPL/LGPL packages. GPL/LGPL states
that you must also provide "the scripts used to control compilation and
installation of the executable."

Which means that, for packages such as Linux, busybox and uClibc (maybe
others as well), the associated .config file should be bundled as well.

Also, the config/build/install instructions for each GPL/LGPL package
must be provided. This could probably be done by bundling the buildroot
sources too in output/legal-info/sources/, or by leveraging the package
infrastructure to output the executed commands for every packages.

Also, for packages that get patches applied by buildroot, you must make
sure that the tarballs for those packages do contain the pathced code,
or that the patches are bundled as well. From what I see, you currently
only copy the downladed tarballs. Of course, if buildroot is also copied
to the output/legal-info/sources/ the patches will be there.

My 2 cents...

Regards,
Yann E. MORIN.

-- 
.-----------------.--------------------.------------------.--------------------.
|  Yann E. MORIN  | Real-Time Embedded | /"\ ASCII RIBBON | Erics' conspiracy: |
| +33 662 376 056 | Software  Designer | \ / CAMPAIGN     |  ___               |
| +33 223 225 172 `------------.-------:  X  AGAINST      |  \e/  There is no  |
| http://ymorin.is-a-geek.org/ | _/*\_ | / \ HTML MAIL    |   v   conspiracy.  |
'------------------------------^-------^------------------^--------------------'

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

* [Buildroot] [RFC 00/15] Automatically produce legal compliance info
  2012-01-31 22:27 ` Yann E. MORIN
@ 2012-02-01 15:25   ` Thomas De Schampheleire
  2012-02-01 21:47     ` Luca Ceresoli
  0 siblings, 1 reply; 35+ messages in thread
From: Thomas De Schampheleire @ 2012-02-01 15:25 UTC (permalink / raw)
  To: buildroot

Hi Luca,

On Tue, Jan 31, 2012 at 11:27 PM, Yann E. MORIN <yann.morin.1998@free.fr> wrote:
> Luca, All,
>
> On Sunday 29 January 2012 16:11:33 Luca Ceresoli wrote:
>> during the latest Buildroot Developers Day in November 2011 and in this
>> mailing list there has been some discussion about introducing in Buildroot the
>> possibility to derive automatically legally relevant material, such as
>> licensing info and source tarballs for open source packages.
>>
>> This is a first tentative implementation of these features.
>>
>> This code is not yet fully working, but I wanted to share it with you to
>> receive some early comments. I also wanted to allow those who will participate
>> to the next Buildroot Developer Day next Friday to have an idea of this
>> proposal in advance, in case this were object of discussion during the
>> meeting.
>>
>> My approach is based on the creation of a per-package _LICENSE constant in
>> eack .mk file, such as:
>> ? FOOBAR_LICENSE = GPL_V3
>> ? MYAPP_LICENSE = PROPRIETARY
>> This is the only effort required to the package creator. Where it is not
>> specified it defaults to "unknown".
>>
>> My overall goal is to add a new 'make legal-info' target that:
>> ?- produces a manifest file listing all packages, including closed-source ones
>> ? ?(and, why not, prints out to stdout the same info);
>> ?- copies source code tarballs for all non-proprietary packages (although I'm
>> ? ?saving also tarballs for BSD-licensed packages for now);
>> ?- save the complete text of all license files that must be included in the
>> ? ?product documentation (typically COPYING and LICENSE files); this is to
>> ? ?simplify the work of who must provide these info to documentation writers.
>>
>> This patchset implements the first two points, albeit with some issues that I
>> discuss below.
>> About the third point I devised a few different possible implementations, but
>> each of them has relevant drawbacks, so I left this point out for the moment.
>>
>> Here's what is currently implmented:
>>
>> ? $ make legal-info
>> ? busybox ?1.19.3 ? ? ? GPL_V2_ONLY
>> ? bzip2 ? ?1.0.5 ? ? ? ?BSD
>> ? directfb 1.4.15 ? ? ? LGPL_V2.1
>> ? foobar ? 1.2.3.4 ? ? ?PROPRIETARY
>> ? freetype 2.4.8 ? ? ? ?unknown
>> ? iostat ? 2.2 ? ? ? ? ?GPL_V2
>> ? ...
>> ? $ cat output/legal-info/manifest.csv
>> ? package,version,license
>> ? busybox,1.19.3,GPL_V2_ONLY
>> ? bzip2,1.0.5,BSD
>> ? directfb,1.4.15,LGPL_V2.1
>> ? foobar,1.2.3.4,PROPRIETARY
>> ? freetype,2.4.8,unknown
>> ? iostat,2.2,GPL_V2
>> ? ...
>> ? $ ls output/legal-info/sources/
>> ? autoconf-2.65.tar.bz2
>> ? automake-1.11.1.tar.bz2
>> ? binutils-2.21.1.tar.bz2
>> ? busybox-1.19.3.tar.bz2
>> ? bzip2-1.0.5.tar.gz
>> ? DirectFB-1.4.15.tar.gz
>> ? fakeroot_1.9.5.tar.gz
>> ? freetype-2.4.8.tar.bz2
>> ? ...
>
> That's a pretty nice feature! Great!
>
> However, I can see something missing for GPL/LGPL packages. GPL/LGPL states
> that you must also provide "the scripts used to control compilation and
> installation of the executable."
>
> Which means that, for packages such as Linux, busybox and uClibc (maybe
> others as well), the associated .config file should be bundled as well.
>
> Also, the config/build/install instructions for each GPL/LGPL package
> must be provided. This could probably be done by bundling the buildroot
> sources too in output/legal-info/sources/, or by leveraging the package
> infrastructure to output the executed commands for every packages.
>
> Also, for packages that get patches applied by buildroot, you must make
> sure that the tarballs for those packages do contain the pathced code,
> or that the patches are bundled as well. From what I see, you currently
> only copy the downladed tarballs. Of course, if buildroot is also copied
> to the output/legal-info/sources/ the patches will be there.

I agree with Yann: I think we should package buildroot itself as well.

In fact, I think we should:
- make distclean
- create the manifest
- download all needed sources
- run a pre-legal-package script for customization
- create a .tar file with the whole

The pre-legal-package script (whatever the name) is similar to the
post-build script, and allows projects to modify certain things. For
example, modify the defconfig to disable some proprietary things that
are not useful or usable by the customer.

Also, I think the DL_DIR setting should be modified so that it points
to the location where the source tarballs are downloaded. This way,
the customer can directly use these sources from that location when
re-building buildroot.

I haven't done a technical review of your patches, but I went through
them and agree with the principle. Thanks for posting them before the
developer day, it will certainly help the discussion!

Best regards,
Thomas

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

* [Buildroot] [RFC 01/15] legal-info: new target to echo basic per-package legal info
  2012-01-31 17:15   ` Arnout Vandecappelle
@ 2012-02-01 21:07     ` Luca Ceresoli
  0 siblings, 0 replies; 35+ messages in thread
From: Luca Ceresoli @ 2012-02-01 21:07 UTC (permalink / raw)
  To: buildroot

Hi Arnout,
thanks for the review.

Arnout Vandecappelle wrote:
> On Sunday 29 January 2012 16:11:34 Luca Ceresoli wrote:
>> Signed-off-by: Luca Ceresoli<luca@lucaceresoli.net>
> Reviewed-by: Arnout Vandecappelle (Essensium/Mind)<arnout@mind.be>
>
>> ---
>>   Makefile                    |    9 ++++++++-
>>   package/Makefile.package.in |    6 ++++++
>>   2 files changed, 14 insertions(+), 1 deletions(-)
>>
>> diff --git a/Makefile b/Makefile
>> index 912012f..507fd78 100644
>> --- a/Makefile
>> +++ b/Makefile
>> @@ -354,6 +354,11 @@ HOST_DEPS = $(sort $(foreach dep,\
>>   		$($(dep))))
>>   HOST_SOURCE += $(addsuffix -source,$(sort $(TARGETS_HOST_DEPS) $(HOST_DEPS)))
>>
>> +TARGETS_LEGAL_INFO:=$(patsubst %,%-legal-info,\
>> +		$(filter-out makedevs,\
>> +		$(patsubst host-%,%,\
>> +		$(TARGETS) $(BASE_TARGETS) $(TARGETS_HOST_DEPS) $(HOST_DEPS))))
>> +
>   Are we creating the legal info of the target or the SDK here?  If it is
> for the target, the host-% are not needed since they are not distributed.
> I think there should be a separate command for the SDK's legal info.

The intent was to save also the SDK (toolchain), except it does not
currently work.
But this raises a more high-level question about what we want to save
here: target packages, host packages (toolchain and others), BR sources,
BR .config? I think the right answer is "all of them", but I've put it
on my list of issues to be discussed in the BDD.

>
> [snip]
>> +$(1)-legal-info:	$(1)-source
>> +			@echo -e "$(1)\t$$($(3)_VERSION)\t$$($(3)_LICENSE)"
>> +
>   Minor detail: if this patch is separate from the one that saves the source
> tarball, the dependency on $(1)-source is unnecessary.

Ops, this is the result of the massive rebases I did before posting.
Moved to the right patch, thanks.

Luca

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

* [Buildroot] [RFC 02/15] legal-info: produce a manifest file with licensing info
  2012-01-31 17:25   ` Arnout Vandecappelle
@ 2012-02-01 21:29     ` Luca Ceresoli
  2012-02-01 22:15       ` Thomas Petazzoni
  2012-02-02  7:41       ` Thomas De Schampheleire
  0 siblings, 2 replies; 35+ messages in thread
From: Luca Ceresoli @ 2012-02-01 21:29 UTC (permalink / raw)
  To: buildroot

Arnout Vandecappelle wrote:
> On Sunday 29 January 2012 16:11:35 Luca Ceresoli wrote:
>> Signed-off-by: Luca Ceresoli<luca@lucaceresoli.net>
> Reviewed-by: Arnout Vandecappelle (Essensium/Mind)<arnout@mind.be>
>
> [snip]
>>   dirs: $(DL_DIR) $(TOOLCHAIN_DIR) $(BUILD_DIR) $(STAGING_DIR) $(TARGET_DIR) \
>> -	$(HOST_DIR) $(BINARIES_DIR) $(STAMP_DIR)
>> +	$(HOST_DIR) $(BINARIES_DIR) $(STAMP_DIR) $(LEGAL_INFO_DIR)
>   Since legal-info-prepare-manifest already depends on LEGAL_INFO_DIR, this
>   is redundant.

I used to think some Buildroot user might want to 'make dirs'. I
understand this is pretty useless, so I'll remove it.

>
> [snip]
>> +legal-info-prepare-manifest: $(LEGAL_INFO_DIR)
>> +	@rm -f $(LEGAL_MANIFEST_CSV)
>> +	@echo "package,version,license">$(LEGAL_MANIFEST_CSV)
>> +
>   I might be wrong, but I think this won't rebuild the manifest if the
> directory already exists.  You'd need a dependency on FORCE (and add the
> phony FORCE target).

It is rebuilt because legal-info-prepare-manifest is PHONY.

>
>   Again a minor comment: the clean target is missing here (but it's added
> in the next patch).  But for me, the first three patches can be rolled
> into one.

I could move the clean target to the 2nd patch, but actually this
maintenance burden is quite annoying, and is going to be even more since
this patchset will definitely have further changes.

Anybody has something against squashing the first 3 or 4 patches as
Arnout suggests?

>
>> +legal-info: legal-info-prepare-manifest $(TARGETS_LEGAL_INFO)
>>
>>   show-targets:
>>   	@echo $(TARGETS)
>> diff --git a/package/Makefile.package.in b/package/Makefile.package.in
>> index 8e73f34..e117223 100644
>> --- a/package/Makefile.package.in
>> +++ b/package/Makefile.package.in
>> @@ -653,8 +653,10 @@ $(1)-rsync:		$$($(2)_TARGET_RSYNC)
>>   $(1)-source:		$$($(2)_TARGET_RSYNC_SOURCE)
>>   endif
>>
>> -$(1)-legal-info:	$(1)-source
>> +$(1)-legal-info:	$(1)-source $(LEGAL_INFO_DIR)
>>   			@echo -e "$(1)\t$$($(3)_VERSION)\t$$($(3)_LICENSE)"
>> +			@echo "$(1),$$($(3)_VERSION),$$($(3)_LICENSE)" \
>> +				>>$(LEGAL_MANIFEST_CSV)
>   Same here: will the manifest be rebuilt if the directory already exists?

It is rebuilt as well because $(1)-info-prepare-manifest is PHONY.

Luca

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

* [Buildroot] [RFC 03/15] legal-info: save source tarballs for all packages
  2012-01-31 22:10   ` Arnout Vandecappelle
@ 2012-02-01 21:38     ` Luca Ceresoli
  0 siblings, 0 replies; 35+ messages in thread
From: Luca Ceresoli @ 2012-02-01 21:38 UTC (permalink / raw)
  To: buildroot

Arnout Vandecappelle wrote:
> On Sunday 29 January 2012 16:11:36 Luca Ceresoli wrote:
>> Signed-off-by: Luca Ceresoli<luca@lucaceresoli.net>
>   Darn, I've been adding Reviewed-by tags even though I said I wouldn't :-)
>
> [snip]
>> @@ -633,7 +635,8 @@ endif
>>
>>   clean:
>>   	rm -rf $(STAGING_DIR) $(TARGET_DIR) $(BINARIES_DIR) $(HOST_DIR) \
>> -		$(STAMP_DIR) $(BUILD_DIR) $(TOOLCHAIN_DIR) $(BASE_DIR)/staging
>> +		$(STAMP_DIR) $(BUILD_DIR) $(TOOLCHAIN_DIR) $(BASE_DIR)/staging \
>> +		$(LEGAL_INFO_DIR) $(REDIST_SOURCES_DIR)
>   $(REDIST_SOURCES_DIR) is a subdir of $(LEGAL_INFO_DIR), so doesn't need
> to be cleaned twice.

You're right.
Again a remnant of my initial drafts, when the two subdirs ere not one
inside the other...

>
>>
>>   distclean: clean
>>   ifeq ($(DL_DIR),$(TOPDIR)/dl)
>> diff --git a/package/Makefile.package.in b/package/Makefile.package.in
>> index e117223..0d7e081 100644
>> --- a/package/Makefile.package.in
>> +++ b/package/Makefile.package.in
>> @@ -653,10 +653,11 @@ $(1)-rsync:		$$($(2)_TARGET_RSYNC)
>>   $(1)-source:		$$($(2)_TARGET_RSYNC_SOURCE)
>>   endif
>>
>> -$(1)-legal-info:	$(1)-source $(LEGAL_INFO_DIR)
>> +$(1)-legal-info:	$(1)-source $(LEGAL_INFO_DIR) $(REDIST_SOURCES_DIR)
>>   			@echo -e "$(1)\t$$($(3)_VERSION)\t$$($(3)_LICENSE)"
>>   			@echo "$(1),$$($(3)_VERSION),$$($(3)_LICENSE)" \
>>   				>>$(LEGAL_MANIFEST_CSV)
>> +			@cp $(DL_DIR)/$$($(3)_SOURCE) $(REDIST_SOURCES_DIR)
>
>   Actually, for local and override packages (of which you said they are not
> supported at the moment), $(1)-source should create a tar file.

Yes, this is another point in my TODO list. I have a few implementation
options to choose from.

Luca

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

* [Buildroot] [RFC 00/15] Automatically produce legal compliance info
  2012-02-01 15:25   ` Thomas De Schampheleire
@ 2012-02-01 21:47     ` Luca Ceresoli
  2012-02-02  8:32       ` Thomas De Schampheleire
  0 siblings, 1 reply; 35+ messages in thread
From: Luca Ceresoli @ 2012-02-01 21:47 UTC (permalink / raw)
  To: buildroot

Yann, Thomas,
thanks for your follow-ups.

Thomas De Schampheleire wrote:
>>
>> However, I can see something missing for GPL/LGPL packages. GPL/LGPL states
>> that you must also provide "the scripts used to control compilation and
>> installation of the executable."
>>
>> Which means that, for packages such as Linux, busybox and uClibc (maybe
>> others as well), the associated .config file should be bundled as well.
>>
>> Also, the config/build/install instructions for each GPL/LGPL package
>> must be provided. This could probably be done by bundling the buildroot
>> sources too in output/legal-info/sources/, or by leveraging the package
>> infrastructure to output the executed commands for every packages.
>>
>> Also, for packages that get patches applied by buildroot, you must make
>> sure that the tarballs for those packages do contain the pathced code,
>> or that the patches are bundled as well. From what I see, you currently
>> only copy the downladed tarballs. Of course, if buildroot is also copied
>> to the output/legal-info/sources/ the patches will be there.
>
> I agree with Yann: I think we should package buildroot itself as well.
>
> In fact, I think we should:
> - make distclean
> - create the manifest
> - download all needed sources
> - run a pre-legal-package script for customization
> - create a .tar file with the whole
>
> The pre-legal-package script (whatever the name) is similar to the
> post-build script, and allows projects to modify certain things. For
> example, modify the defconfig to disable some proprietary things that
> are not useful or usable by the customer.
>
> Also, I think the DL_DIR setting should be modified so that it points
> to the location where the source tarballs are downloaded. This way,
> the customer can directly use these sources from that location when
> re-building buildroot.
>
> I haven't done a technical review of your patches, but I went through
> them and agree with the principle. Thanks for posting them before the
> developer day, it will certainly help the discussion!

I think the best way is to just package BR itself in the legal-info
subdir. I'll have to check if/how it is feasible.
I'd also copy the current .config, which IMHO is part of the "scripts
used to control compilation".

OTOH I don't think a pre-legal-package script would be a good idea, as
it would easily allow to trick and create a fake GPL-compliant release.
In other words, what I use for building must go directly in the stuff
to be released.

Luca

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

* [Buildroot] [RFC 02/15] legal-info: produce a manifest file with licensing info
  2012-02-01 21:29     ` Luca Ceresoli
@ 2012-02-01 22:15       ` Thomas Petazzoni
  2012-02-02  7:41       ` Thomas De Schampheleire
  1 sibling, 0 replies; 35+ messages in thread
From: Thomas Petazzoni @ 2012-02-01 22:15 UTC (permalink / raw)
  To: buildroot

Le Wed, 01 Feb 2012 22:29:55 +0100,
Luca Ceresoli <luca@lucaceresoli.net> a ?crit :

> Anybody has something against squashing the first 3 or 4 patches as
> Arnout suggests?

No, I think it's ok to have them squashed together, as long as the
commit log in sufficiently long to explain how the implementation works.

Thomas
-- 
Thomas Petazzoni, Free Electrons
Kernel, drivers, real-time and embedded Linux
development, consulting, training and support.
http://free-electrons.com

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

* [Buildroot] [RFC 02/15] legal-info: produce a manifest file with licensing info
  2012-02-01 21:29     ` Luca Ceresoli
  2012-02-01 22:15       ` Thomas Petazzoni
@ 2012-02-02  7:41       ` Thomas De Schampheleire
  1 sibling, 0 replies; 35+ messages in thread
From: Thomas De Schampheleire @ 2012-02-02  7:41 UTC (permalink / raw)
  To: buildroot

On Wed, Feb 1, 2012 at 10:29 PM, Luca Ceresoli <luca@lucaceresoli.net> wrote:
> Arnout Vandecappelle wrote:
>>
>> On Sunday 29 January 2012 16:11:35 Luca Ceresoli wrote:
>>>
>>> Signed-off-by: Luca Ceresoli<luca@lucaceresoli.net>
>>
>> Reviewed-by: Arnout Vandecappelle (Essensium/Mind)<arnout@mind.be>
>>
>> [snip]
>>>
>>> ?dirs: $(DL_DIR) $(TOOLCHAIN_DIR) $(BUILD_DIR) $(STAGING_DIR)
>>> $(TARGET_DIR) \
>>> - ? ? ? $(HOST_DIR) $(BINARIES_DIR) $(STAMP_DIR)
>>> + ? ? ? $(HOST_DIR) $(BINARIES_DIR) $(STAMP_DIR) $(LEGAL_INFO_DIR)
>>
>> ?Since legal-info-prepare-manifest already depends on LEGAL_INFO_DIR, this
>> ?is redundant.
>
>
> I used to think some Buildroot user might want to 'make dirs'. I
> understand this is pretty useless, so I'll remove it.

For $(LEGAL_INFO_DIR), there isn't a real problem since you indeed put
it as a dependency elsewhere, which means that the directory will be
created anyway.
In other cases, like downloading packages, there is no such explicit
dependency on $(DL_DIR), and there may be certain scenarios that you
need to do 'make dirs' explicitly. One such scenario is when the first
downloaded package is not handled by wget (which creates the DL_DIR
automatically) but with e.g. git download.

>
>
>>
>> [snip]
>>>
>>> +legal-info-prepare-manifest: $(LEGAL_INFO_DIR)
>>> + ? ? ? @rm -f $(LEGAL_MANIFEST_CSV)
>>> + ? ? ? @echo "package,version,license">$(LEGAL_MANIFEST_CSV)
>>> +
>>
>> ?I might be wrong, but I think this won't rebuild the manifest if the
>> directory already exists. ?You'd need a dependency on FORCE (and add the
>> phony FORCE target).
>
>
> It is rebuilt because legal-info-prepare-manifest is PHONY.
>
>
>>
>> ?Again a minor comment: the clean target is missing here (but it's added
>> in the next patch). ?But for me, the first three patches can be rolled
>> into one.
>
>
> I could move the clean target to the 2nd patch, but actually this
> maintenance burden is quite annoying, and is going to be even more since
> this patchset will definitely have further changes.
>
> Anybody has something against squashing the first 3 or 4 patches as
> Arnout suggests?
>

No problem for me.

>
>>
>>> +legal-info: legal-info-prepare-manifest $(TARGETS_LEGAL_INFO)
>>>
>>> ?show-targets:
>>> ? ? ? ?@echo $(TARGETS)
>>> diff --git a/package/Makefile.package.in b/package/Makefile.package.in
>>> index 8e73f34..e117223 100644
>>> --- a/package/Makefile.package.in
>>> +++ b/package/Makefile.package.in
>>> @@ -653,8 +653,10 @@ $(1)-rsync: ? ? ? ? ? ? ? ?$$($(2)_TARGET_RSYNC)
>>> ?$(1)-source: ? ? ? ? ?$$($(2)_TARGET_RSYNC_SOURCE)
>>> ?endif
>>>
>>> -$(1)-legal-info: ? ? ? $(1)-source
>>> +$(1)-legal-info: ? ? ? $(1)-source $(LEGAL_INFO_DIR)
>>> ? ? ? ? ? ? ? ? ? ? ? ?@echo -e
>>> "$(1)\t$$($(3)_VERSION)\t$$($(3)_LICENSE)"
>>> + ? ? ? ? ? ? ? ? ? ? ? @echo "$(1),$$($(3)_VERSION),$$($(3)_LICENSE)" \
>>> + ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? >>$(LEGAL_MANIFEST_CSV)
>>
>> ?Same here: will the manifest be rebuilt if the directory already exists?
>
>
> It is rebuilt as well because $(1)-info-prepare-manifest is PHONY.
>
> Luca
>
> _______________________________________________
> buildroot mailing list
> buildroot at busybox.net
> http://lists.busybox.net/mailman/listinfo/buildroot

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

* [Buildroot] [RFC 00/15] Automatically produce legal compliance info
  2012-02-01 21:47     ` Luca Ceresoli
@ 2012-02-02  8:32       ` Thomas De Schampheleire
  2012-02-02  9:27         ` Luca Ceresoli
  0 siblings, 1 reply; 35+ messages in thread
From: Thomas De Schampheleire @ 2012-02-02  8:32 UTC (permalink / raw)
  To: buildroot

On Wed, Feb 1, 2012 at 10:47 PM, Luca Ceresoli <luca@lucaceresoli.net> wrote:
> Yann, Thomas,
> thanks for your follow-ups.
>
>
> Thomas De Schampheleire wrote:
>>>
>>>
>>> However, I can see something missing for GPL/LGPL packages. GPL/LGPL
>>> states
>>> that you must also provide "the scripts used to control compilation and
>>> installation of the executable."
>>>
>>> Which means that, for packages such as Linux, busybox and uClibc (maybe
>>> others as well), the associated .config file should be bundled as well.
>>>
>>> Also, the config/build/install instructions for each GPL/LGPL package
>>> must be provided. This could probably be done by bundling the buildroot
>>> sources too in output/legal-info/sources/, or by leveraging the package
>>> infrastructure to output the executed commands for every packages.
>>>
>>> Also, for packages that get patches applied by buildroot, you must make
>>> sure that the tarballs for those packages do contain the pathced code,
>>> or that the patches are bundled as well. From what I see, you currently
>>> only copy the downladed tarballs. Of course, if buildroot is also copied
>>> to the output/legal-info/sources/ the patches will be there.
>>
>>
>> I agree with Yann: I think we should package buildroot itself as well.
>>
>> In fact, I think we should:
>> - make distclean
>> - create the manifest
>> - download all needed sources
>> - run a pre-legal-package script for customization
>> - create a .tar file with the whole
>>
>> The pre-legal-package script (whatever the name) is similar to the
>> post-build script, and allows projects to modify certain things. For
>> example, modify the defconfig to disable some proprietary things that
>> are not useful or usable by the customer.
>>
>> Also, I think the DL_DIR setting should be modified so that it points
>> to the location where the source tarballs are downloaded. This way,
>> the customer can directly use these sources from that location when
>> re-building buildroot.
>>
>> I haven't done a technical review of your patches, but I went through
>> them and agree with the principle. Thanks for posting them before the
>> developer day, it will certainly help the discussion!
>
>
> I think the best way is to just package BR itself in the legal-info
> subdir. I'll have to check if/how it is feasible.
> I'd also copy the current .config, which IMHO is part of the "scripts
> used to control compilation".
>
> OTOH I don't think a pre-legal-package script would be a good idea, as
> it would easily allow to trick and create a fake GPL-compliant release.
> In other words, what I use for building must go directly in the stuff
> to be released.

I don't think we should attempt a guaranteed GPL-compliant release. We
have no control over what someone did with its buildroot repository,
whether or not they modified the LICENSE variables etc. A malicious
company will be able to create a non-compliant tarball in many ways.
By modifying buildroot itself, by using a pre-legal-package script,
but also by post-processing the tarball. It's not something we should
try to guard against IMO.

Moreover, I think there are valid use cases. For example, in our case,
we build a proprietary package from within buildroot. This means we
need the sources available. A customer shouldn't get these sources.
But our .config or defconfig does enable the package. As a result, if
the customer does 'make', there will be an attempt to find the
proprietary sources, and the build will fail.
A pre-legal-package script could make such modifications to the
defconfig file: disable the proprietary packages.
Another use cas is where the pre-legal-package script could copy in
binary proprietary applications from elsewhere.
Or add a README file specific for the project.
Or maybe modify the login banner to indicate in the target image that
this is no official release, but one built by the customer.
Or ...

None of these are attempts to trick the customer or to be deviant from
GPL or other license obligations.

Best regards,
Thomas

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

* [Buildroot] [RFC 00/15] Automatically produce legal compliance info
  2012-02-02  8:32       ` Thomas De Schampheleire
@ 2012-02-02  9:27         ` Luca Ceresoli
  2012-02-02 11:19           ` Thomas De Schampheleire
  0 siblings, 1 reply; 35+ messages in thread
From: Luca Ceresoli @ 2012-02-02  9:27 UTC (permalink / raw)
  To: buildroot

Thomas De Schampheleire wrote:
>> I think the best way is to just package BR itself in the legal-info
>> subdir. I'll have to check if/how it is feasible.
>> I'd also copy the current .config, which IMHO is part of the "scripts
>> used to control compilation".
>>
>> OTOH I don't think a pre-legal-package script would be a good idea, as
>> it would easily allow to trick and create a fake GPL-compliant release.
>> In other words, what I use for building must go directly in the stuff
>> to be released.
>
> I don't think we should attempt a guaranteed GPL-compliant release. We
> have no control over what someone did with its buildroot repository,
> whether or not they modified the LICENSE variables etc. A malicious
> company will be able to create a non-compliant tarball in many ways.
> By modifying buildroot itself, by using a pre-legal-package script,
> but also by post-processing the tarball. It's not something we should
> try to guard against IMO.
>
> Moreover, I think there are valid use cases. For example, in our case,
> we build a proprietary package from within buildroot. This means we
> need the sources available. A customer shouldn't get these sources.
> But our .config or defconfig does enable the package. As a result, if
> the customer does 'make', there will be an attempt to find the
> proprietary sources, and the build will fail.
> A pre-legal-package script could make such modifications to the
> defconfig file: disable the proprietary packages.
> Another use cas is where the pre-legal-package script could copy in
> binary proprietary applications from elsewhere.
> Or add a README file specific for the project.
> Or maybe modify the login banner to indicate in the target image that
> this is no official release, but one built by the customer.
> Or ...
>
> None of these are attempts to trick the customer or to be deviant from
> GPL or other license obligations.

After having slept on it, and after your clarifications, I think you're
probably right.

On one hand, it's not feasible to have Buildroot enforce a compliant
release, and I would not take the risk of saying it does even if it did.

On the other hand, there are ways a pre-legal-package script may be
useful, as your examples demonstrate.

By the law you must release the sources, but not necessarily make them
straightforward to use. So to fulfill legal obligations you probably
don't need such a script (provided that BR can package all the code that
must be released).

But there are also FOSS-friendly device vendors that might want to sell
a product with some proprietary software on them, while releasing the
open-source part in a way that is fully usable except for the absence
of the proprietary parts.

Bottom line: I think the script you suggest would be useful, but non
strictly necessary. So I consider it something that might be added
later, unless it's a simple addition to the current patchset.
I'd prefer to keep the first patchset thin, for better review/discussion
and to ease Peter's integration work.

Luca

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

* [Buildroot] [RFC 00/15] Automatically produce legal compliance info
  2012-02-02  9:27         ` Luca Ceresoli
@ 2012-02-02 11:19           ` Thomas De Schampheleire
  0 siblings, 0 replies; 35+ messages in thread
From: Thomas De Schampheleire @ 2012-02-02 11:19 UTC (permalink / raw)
  To: buildroot

Hi Luca,

On Thu, Feb 2, 2012 at 10:27 AM, Luca Ceresoli <luca@lucaceresoli.net> wrote:
> Thomas De Schampheleire wrote:
>>>
>>> I think the best way is to just package BR itself in the legal-info
>>> subdir. I'll have to check if/how it is feasible.
>>> I'd also copy the current .config, which IMHO is part of the "scripts
>>> used to control compilation".
>>>
>>> OTOH I don't think a pre-legal-package script would be a good idea, as
>>> it would easily allow to trick and create a fake GPL-compliant release.
>>> In other words, what I use for building must go directly in the stuff
>>> to be released.
>>
>>
>> I don't think we should attempt a guaranteed GPL-compliant release. We
>> have no control over what someone did with its buildroot repository,
>> whether or not they modified the LICENSE variables etc. A malicious
>> company will be able to create a non-compliant tarball in many ways.
>> By modifying buildroot itself, by using a pre-legal-package script,
>> but also by post-processing the tarball. It's not something we should
>> try to guard against IMO.
>>
>> Moreover, I think there are valid use cases. For example, in our case,
>> we build a proprietary package from within buildroot. This means we
>> need the sources available. A customer shouldn't get these sources.
>> But our .config or defconfig does enable the package. As a result, if
>> the customer does 'make', there will be an attempt to find the
>> proprietary sources, and the build will fail.
>> A pre-legal-package script could make such modifications to the
>> defconfig file: disable the proprietary packages.
>> Another use cas is where the pre-legal-package script could copy in
>> binary proprietary applications from elsewhere.
>> Or add a README file specific for the project.
>> Or maybe modify the login banner to indicate in the target image that
>> this is no official release, but one built by the customer.
>> Or ...
>>
>> None of these are attempts to trick the customer or to be deviant from
>> GPL or other license obligations.
>
>
> After having slept on it, and after your clarifications, I think you're
> probably right.
>
> On one hand, it's not feasible to have Buildroot enforce a compliant
> release, and I would not take the risk of saying it does even if it did.
>
> On the other hand, there are ways a pre-legal-package script may be
> useful, as your examples demonstrate.
>
> By the law you must release the sources, but not necessarily make them
> straightforward to use. So to fulfill legal obligations you probably
> don't need such a script (provided that BR can package all the code that
> must be released).
>
> But there are also FOSS-friendly device vendors that might want to sell
> a product with some proprietary software on them, while releasing the
> open-source part in a way that is fully usable except for the absence
> of the proprietary parts.
>
> Bottom line: I think the script you suggest would be useful, but non
> strictly necessary. So I consider it something that might be added
> later, unless it's a simple addition to the current patchset.
> I'd prefer to keep the first patchset thin, for better review/discussion
> and to ease Peter's integration work.

Ok, I understand.
Let's keep the script out of the patchset for now. We can add it later.

Best regards,
Thomas

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

end of thread, other threads:[~2012-02-02 11:19 UTC | newest]

Thread overview: 35+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2012-01-29 15:11 [Buildroot] [RFC 00/15] Automatically produce legal compliance info Luca Ceresoli
2012-01-29 15:11 ` [Buildroot] [RFC 01/15] legal-info: new target to echo basic per-package legal info Luca Ceresoli
2012-01-31 17:15   ` Arnout Vandecappelle
2012-02-01 21:07     ` Luca Ceresoli
2012-01-29 15:11 ` [Buildroot] [RFC 02/15] legal-info: produce a manifest file with licensing info Luca Ceresoli
2012-01-31 17:25   ` Arnout Vandecappelle
2012-02-01 21:29     ` Luca Ceresoli
2012-02-01 22:15       ` Thomas Petazzoni
2012-02-02  7:41       ` Thomas De Schampheleire
2012-01-29 15:11 ` [Buildroot] [RFC 03/15] legal-info: save source tarballs for all packages Luca Ceresoli
2012-01-31 22:10   ` Arnout Vandecappelle
2012-02-01 21:38     ` Luca Ceresoli
2012-01-29 15:11 ` [Buildroot] [RFC 04/15] legal-info: do not copy sources for proprietary packages Luca Ceresoli
2012-01-29 15:11 ` [Buildroot] [RFC 05/15] mpc: define license Luca Ceresoli
2012-01-29 15:11 ` [Buildroot] [RFC 06/15] linux: " Luca Ceresoli
2012-01-29 15:11 ` [Buildroot] [RFC 07/15] m4: " Luca Ceresoli
2012-01-29 15:11 ` [Buildroot] [RFC 08/15] busybox: " Luca Ceresoli
2012-01-29 15:11 ` [Buildroot] [RFC 09/15] bzip2: " Luca Ceresoli
2012-01-29 15:11 ` [Buildroot] [RFC 10/15] directfb: " Luca Ceresoli
2012-01-29 15:11 ` [Buildroot] [RFC 11/15] iostat: " Luca Ceresoli
2012-01-29 15:11 ` [Buildroot] [RFC 12/15] lzop: " Luca Ceresoli
2012-01-29 15:11 ` [Buildroot] [RFC 13/15] tslib: " Luca Ceresoli
2012-01-29 15:11 ` [Buildroot] [RFC 14/15] foobar: create a fake proprietary package (testing only) Luca Ceresoli
2012-01-29 15:26   ` Diego Iastrubni
2012-01-29 15:50     ` Michael S. Zick
2012-01-29 16:08       ` Diego Iastrubni
2012-01-30 11:51       ` Luca Ceresoli
2012-01-29 15:11 ` [Buildroot] [RFC 15/15] Create a test config " Luca Ceresoli
2012-01-31  7:15 ` [Buildroot] [RFC 00/15] Automatically produce legal compliance info Arnout Vandecappelle
2012-01-31 22:27 ` Yann E. MORIN
2012-02-01 15:25   ` Thomas De Schampheleire
2012-02-01 21:47     ` Luca Ceresoli
2012-02-02  8:32       ` Thomas De Schampheleire
2012-02-02  9:27         ` Luca Ceresoli
2012-02-02 11:19           ` Thomas De Schampheleire

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.