[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Bug#219595: More information on building 'standalone' libffi



Etienne Gagnon wrote:
Hi Nathanael,

Could you reply to both parts of this message?  Thanks.

PART I
======

Nathanael Nerode wrote:
 > There is really nothing wrong with sharing install-sh & friends.  Lots
 > of packages do it.

This is not true.  The GNU GPL version 2, section 2 says:
--- BEGIN---
 2. You may modify your copy or copies of the Program or any portion
 of it, thus forming a work based on the Program, and copy and
 distribute such modifications or work under the terms of Section 1
 above, provided that you also meet all of these conditions:
 ... (conditions)...
 These requirements apply to the modified work as a whole.  If
 identifiable sections of that work are not derived from the Program,
 and can be reasonably considered independent and separate works in
 themselves, then this License, and its terms, do not apply to those
 sections when you distribute them as separate works.  But when you
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 distribute the same sections as part of a whole which is a work based
 on the Program, the distribution of the whole must be on the terms of
                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 this License, whose permissions for other licensees extend to the
 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 entire whole, and thus to each and every part regardless of who wrote it.
 ^^^^^^^^^^^^
 ...
 In addition, mere aggregation of another work not based on the Program
              ^^^^^^^^^^^^^^^^
 with the Program (or with a work based on the Program) on a volume of
 a storage or distribution medium does not bring the other work under
 the scope of this License.
--- END ---

The inclusion of libffi & gcc in a single .tar.gz that shares scripts,
configure, and Makefiles, does *not* constitutes a "mere aggregation".
Thus, the whole package *must* be distributed under the terms of the
GPL.
Yes.

 Once this is done, you cannot exctract libffi back from the GPLed
package and say "look, these files are not GPLed".
No. :-) You really can extract it back out (in this case). I guess this is a common point of confusion; if a GPLed program uses some BSD-licensed files, the BSD-licensed files don't get "contaminated".

Libffi and install-sh & friends are "identifiable sections", "not derived from the Program" ('the Program' meaning any work available only under the GPL), "can be reasonably considered independent and separate works in themselves", and so they can be distributed as separate works.

If you prefer, take libffi (a separate work) and combine it with a different copy of install-sh & friends (they are available in many other places).

Of course, putting a gcc.tar.gz and libffi.tar.gz on a single CD would be a mere
aggregation, but the current situation is quite different.


PART II
=======


I am sure that there are no deep dependencies between gcc and libffi.  My
major problem, right now, is that I seems unable to acually *build* libffi
using "cd gcc-3.3.2/libffi; ./configure; make" as you suggested.

Could you tell me what I am doing wrong, below?  Thanks in advance.

$ apt-get source libffi2
$ cd gcc-3.3-3.3.2ds4/
$ tar -xjvf gcc-3.3.2.tar.bz2
$ cd gcc-3.3.2/libffi/
$ ./configure
creating cache ./config.cache
checking for Cygwin environment... no
checking for mingw32 environment... no
configure: error: can not find install-sh or install.sh in ../.. ./../..
Oh, I know what's going on here.

Most of the stuff in the gcc and src repositories prefers to be built with a separate builddir != srcdir, and libffi is no exception.

Try this.
mkdir build
cd build
../gcc-3.3.2/libffi/configure
make

If that fails, I'll look a little further.




Reply to: