Patchwork schifra: new package

login
register
mail settings
Submitter Simon Dawson
Date Aug. 24, 2012, 9:39 a.m.
Message ID <1345801194-28735-1-git-send-email-spdawson@gmail.com>
Download mbox | patch
Permalink /patch/179801/
State Accepted
Headers show

Comments

Simon Dawson - Aug. 24, 2012, 9:39 a.m.
From: Simon Dawson <spdawson@gmail.com>

Signed-off-by: Simon Dawson <spdawson@gmail.com>
---
 package/Config.in          |    1 +
 package/schifra/Config.in  |   18 ++++++++++++++++
 package/schifra/schifra.mk |   50 ++++++++++++++++++++++++++++++++++++++++++++
 3 files changed, 69 insertions(+)
 create mode 100644 package/schifra/Config.in
 create mode 100644 package/schifra/schifra.mk
Thomas Petazzoni - Aug. 25, 2012, 3:21 p.m.
Le Fri, 24 Aug 2012 10:39:54 +0100,
spdawson@gmail.com a écrit :

> +SCHIFRA_LICENSE = schifra license
> +SCHIFRA_LICENSE_FILES = schifra_license.txt

Shouldn't we put something like "GPLv2 or commercial" here? Apparently,
their license is: GPLv2 is you do something open-source, otherwise if
you want to link in a proprietary application, you need to buy a
commercial license. I would at least like to have explicitly "GPLv2"
mentioned here as it would more clearly raise the attention of people
checking the license compatibility of the libraries they are using.

Luca, thoughts?

Thomas
Luca Ceresoli - Aug. 27, 2012, 10:52 a.m.
Thomas Petazzoni wrote:
> Le Fri, 24 Aug 2012 10:39:54 +0100,
> spdawson@gmail.com a écrit :
>
>> +SCHIFRA_LICENSE = schifra license
>> +SCHIFRA_LICENSE_FILES = schifra_license.txt
>
> Shouldn't we put something like "GPLv2 or commercial" here? Apparently,
> their license is: GPLv2 is you do something open-source, otherwise if
> you want to link in a proprietary application, you need to buy a
> commercial license. I would at least like to have explicitly "GPLv2"
> mentioned here as it would more clearly raise the attention of people
> checking the license compatibility of the libraries they are using.
>
> Luca, thoughts?

Disclaimer: I'd like remind everybody I'm not a lawyer. I implemented
the legal-info feature in Buildroot, but do not consider my views about
licensing as legal advice. These are only my interpretations of the
various package licenses (which happen to be very fancy sometimes!).

GPL licenses natively imply that you cannot use the code in a proprietary
application (unless you obtain a license otherwise, of course). This used
to be the case for Qt before Nokia released them under the LGPL. This is
also the case of other libraries, such as eXosip:
(http://git.savannah.gnu.org/cgit/exosip.git/tree/COPYING).

But schifra has a more restrictive (and a bit ambiguous, IMHO) license.
They grant a GPLv2 license only "within an open source, academic or other
noncommercial/not-for-profit environment"
(http://www.schifra.com/license.html).

So, a for-profit company might ship a device containinga "regular"
GPL-licensed library (e.g. eXosip), plus a GPL application using it (e.g.
Linphone), plus a proprietary application not using that library.

But for schifra this is not the case: even though all code using schifra
is GPL, if it lives in a commercial device side-by-side to a proprietary
application not using schifra, this breaks the schifra license.

Since most embedded devices in the world are built in a commercial
environment, I think it is very difficult to use schifra in the embedded
world without buying a license. But this is not a problem of mine, of
course.

Bottom line, how to encode all of this in SCHIFRA_LICENSE is a challenge.
"GPLv2 only for open source, academic, noncommercial, not-for-profit" is
not concise, but quite informative. "General Schifra License agreement",
which is how they name it in  schifra_license.txt, is the safest option,
and an invitation to potential users to read such a convoluted piece of
licensing literature and learn how not to license a package...

Luca
Arnout Vandecappelle - Aug. 27, 2012, 10:22 p.m.
On 08/27/12 12:52, Luca Ceresoli wrote:
> Thomas Petazzoni wrote:
>> Le Fri, 24 Aug 2012 10:39:54 +0100,
>> spdawson@gmail.com a écrit :
>>
>>> +SCHIFRA_LICENSE = schifra license
>>> +SCHIFRA_LICENSE_FILES = schifra_license.txt
>>
>> Shouldn't we put something like "GPLv2 or commercial" here? Apparently,
>> their license is: GPLv2 is you do something open-source, otherwise if
>> you want to link in a proprietary application, you need to buy a
>> commercial license. I would at least like to have explicitly "GPLv2"
>> mentioned here as it would more clearly raise the attention of people
>> checking the license compatibility of the libraries they are using.
>>
>> Luca, thoughts?
>
> Disclaimer: I'd like remind everybody I'm not a lawyer. I implemented
> the legal-info feature in Buildroot, but do not consider my views about
> licensing as legal advice. These are only my interpretations of the
> various package licenses (which happen to be very fancy sometimes!).

  Same here.

>
> GPL licenses natively imply that you cannot use the code in a proprietary
> application (unless you obtain a license otherwise, of course). This used
> to be the case for Qt before Nokia released them under the LGPL. This is
> also the case of other libraries, such as eXosip:
> (http://git.savannah.gnu.org/cgit/exosip.git/tree/COPYING).
>
> But schifra has a more restrictive (and a bit ambiguous, IMHO) license.
> They grant a GPLv2 license only "within an open source, academic or other
> noncommercial/not-for-profit environment"
> (http://www.schifra.com/license.html).

  According to my reading, this means that somebody in an open source
environment (whatever that means) can use the library under the terms
of the GPLv2. And those terms stipulate that the user is allowed to
redistribute it under the terms of the GPLv2...

  So if you ask me, if we mirror it on sources.buildroot.net, it becomes
GPLv2.

[snip]
> Bottom line, how to encode all of this in SCHIFRA_LICENSE is a challenge.
> "GPLv2 only for open source, academic, noncommercial, not-for-profit" is
> not concise, but quite informative. "General Schifra License agreement",
> which is how they name it in schifra_license.txt, is the safest option,
> and an invitation to potential users to read such a convoluted piece of
> licensing literature and learn how not to license a package...

  Yup.  We want to indicate here that the legal team should pay special
attention, so 'Schifra license' is a good flag.


  Regards,
  Arnout
Simon Dawson - Aug. 28, 2012, 7:34 a.m.
Hi Arnount, Luca, Thomas. Thanks for your help with this.

For the sake of consistency, I'll opt for "schifra license".

Simon.
Peter Korsgaard - Sept. 10, 2012, 8:45 a.m.
>>>>> "spdawson" == spdawson  <spdawson@gmail.com> writes:

 spdawson> From: Simon Dawson <spdawson@gmail.com>
 spdawson> Signed-off-by: Simon Dawson <spdawson@gmail.com>

Committed with minor changes (see below), thanks.

 spdawson> +#############################################################
 spdawson> +#
 spdawson> +# schifra
 spdawson> +#
 spdawson> +#############################################################
 spdawson> +SCHIFRA_VERSION = 0.0.1
 spdawson> +SCHIFRA_SITE = http://www.schifra.com/downloads
 spdawson> +SCHIFRA_SOURCE = schifra.tgz
 spdawson> +SCHIFRA_INSTALL_STAGING = YES
 spdawson> +SCHIFRA_LICENSE = schifra license
 spdawson> +SCHIFRA_LICENSE_FILES = schifra_license.txt
 spdawson> +
 spdawson> +SCHIFRA_MAKE_OPT = COMPILER="$(TARGET_CXX)"

We also need to pass TARGET_CFLAGS / TARGET_LDFLAGS

 spdawson> +
 spdawson> +# The examples are the only buildable artefacts.
 spdawson> +ifeq ($(BR2_PACKAGE_SCHIFRA_EXAMPLES),y)
 spdawson> +define SCHIFRA_BUILD_CMDS
 spdawson> +	$(MAKE) -C $(@D) $(SCHIFRA_MAKE_OPT) all
 spdawson> +endef
 spdawson> +endif
 spdawson> +
 spdawson> +define SCHIFRA_INSTALL_TARGET_CMDS
 spdawson> +	$(INSTALL) -m 0755 -d $(TARGET_DIR)/usr/include
 spdawson> +	$(INSTALL) -m 0644 -t $(TARGET_DIR)/usr/include $(@D)/schifra_*.hpp
 spdawson> +	$(INSTALL) -m 0755 -d $(TARGET_DIR)/usr/bin
 spdawson> +	for i in `find $(@D) -type f -name 'schifra_*' -executable` ; \
 spdawson> +	do \
 spdawson> +		$(INSTALL) -m 0755 -t $(TARGET_DIR)/usr/bin $$i ; \
 spdawson> +	done

I would like to keep the examples handling seperate (similar to the
build step), so I moved it to a _TARGET_INSTALL hook.

 spdawson> +endef
 spdawson> +
 spdawson> +define SCHIFRA_INSTALL_STAGING_CMDS
 spdawson> +	$(INSTALL) -m 0755 -d $(STAGING_DIR)/usr/include
 spdawson> +	$(INSTALL) -m 0644 -t $(STAGING_DIR)/usr/include $(@D)/schifra_*.hpp

We typically do a loop doing install -D instead, so I changed it to that
for consistency.
Simon Dawson - Sept. 10, 2012, 9:16 a.m.
On 10 September 2012 09:45, Peter Korsgaard <jacmet@uclibc.org> wrote:
> Committed with minor changes (see below), thanks.

Thanks for your work on this Peter.

Simon.

Patch

diff --git a/package/Config.in b/package/Config.in
index f308de7..993a5ad 100644
--- a/package/Config.in
+++ b/package/Config.in
@@ -464,6 +464,7 @@  source "package/lttng-libust/Config.in"
 source "package/orc/Config.in"
 source "package/poco/Config.in"
 source "package/protobuf/Config.in"
+source "package/schifra/Config.in"
 source "package/startup-notification/Config.in"
 endmenu
 
diff --git a/package/schifra/Config.in b/package/schifra/Config.in
new file mode 100644
index 0000000..466ac0e
--- /dev/null
+++ b/package/schifra/Config.in
@@ -0,0 +1,18 @@ 
+config BR2_PACKAGE_SCHIFRA
+	bool "schifra"
+	depends on BR2_INSTALL_LIBSTDCPP
+	help
+	  Schifra is a very robust, highly optimized and extremely configurable
+	  Reed-Solomon error correcting code library for both software and IP
+	  core based applications with implementations in C++ and VHDL.
+
+	  http://www.schifra.com/
+
+config BR2_PACKAGE_SCHIFRA_EXAMPLES
+	bool "schifra examples"
+	depends on BR2_PACKAGE_SCHIFRA
+	help
+	  Build and install the schifra example applications.
+
+comment "schifra requires a toolchain with C++ support enabled"
+	depends on !BR2_INSTALL_LIBSTDCPP
diff --git a/package/schifra/schifra.mk b/package/schifra/schifra.mk
new file mode 100644
index 0000000..e97dede
--- /dev/null
+++ b/package/schifra/schifra.mk
@@ -0,0 +1,50 @@ 
+#############################################################
+#
+# schifra
+#
+#############################################################
+SCHIFRA_VERSION = 0.0.1
+SCHIFRA_SITE = http://www.schifra.com/downloads
+SCHIFRA_SOURCE = schifra.tgz
+SCHIFRA_INSTALL_STAGING = YES
+SCHIFRA_LICENSE = schifra license
+SCHIFRA_LICENSE_FILES = schifra_license.txt
+
+SCHIFRA_MAKE_OPT = COMPILER="$(TARGET_CXX)"
+
+# The examples are the only buildable artefacts.
+ifeq ($(BR2_PACKAGE_SCHIFRA_EXAMPLES),y)
+define SCHIFRA_BUILD_CMDS
+	$(MAKE) -C $(@D) $(SCHIFRA_MAKE_OPT) all
+endef
+endif
+
+define SCHIFRA_INSTALL_TARGET_CMDS
+	$(INSTALL) -m 0755 -d $(TARGET_DIR)/usr/include
+	$(INSTALL) -m 0644 -t $(TARGET_DIR)/usr/include $(@D)/schifra_*.hpp
+	$(INSTALL) -m 0755 -d $(TARGET_DIR)/usr/bin
+	for i in `find $(@D) -type f -name 'schifra_*' -executable` ; \
+	do \
+		$(INSTALL) -m 0755 -t $(TARGET_DIR)/usr/bin $$i ; \
+	done
+endef
+
+define SCHIFRA_INSTALL_STAGING_CMDS
+	$(INSTALL) -m 0755 -d $(STAGING_DIR)/usr/include
+	$(INSTALL) -m 0644 -t $(STAGING_DIR)/usr/include $(@D)/schifra_*.hpp
+endef
+
+define SCHIFRA_UNINSTALL_TARGET_CMDS
+	$(RM) $(TARGET_DIR)/usr/include/schifra_*.hpp
+	$(RM) $(TARGET_DIR)/usr/bin/schifra_*
+endef
+
+define SCHIFRA_UNINSTALL_STAGING_CMDS
+	$(RM) $(STAGING_DIR)/usr/include/schifra_*.hpp
+endef
+
+define SCHIFRA_CLEAN_CMDS
+	$(MAKE) -C $(@D) $(SCHIFRA_MAKE_OPT) clean
+endef
+
+$(eval $(generic-package))