ccl-ffigen_1.2-1_amd64.changes REJECTED

Faheem Mitha faheem at faheem.info
Wed Sep 11 00:59:04 UTC 2013


On Tue, 9 Apr 2013, Luca Falavigna wrote:

> Hi,
>
> sorry, but we do not think introducing a convenience copy of gcc
> is a good thing. Also, the 4.0 sources contain files licensed under
> GFDL with invariant sections, which are not suitable for main.
>
> Please try to build your code using existing gcc versions in the archive
> implementing Built-Using field.
>
> Cheers,
> Luca
>
> ===
>
> Please feel free to respond to this email if you don't understand why
> your files were rejected, or if you upload new files which address our
> concerns.

Extremely belated reply to this message, I've been busy. But if I waited 
for a good time, this might never be answered.

I think the package was rejected based on a misunderstanding.

As described at 
https://bitbucket.org/faheem/ccl-ffigen-debian/src/tip/README.Debian?at=default 
this package exists to build CCL's interface databases.

As described in http://trac.clozure.com/ccl/wiki/CustomFramework (FFI
is Foreign Function Interface)

"""To support its FFI, CCL maintains a binary database of information
about classes, methods, functions, types, and variables available from
foreign libraries in several ".cdb" files. You will need to generate
this information for your particular library. In order to do this, you
will need to obtain and build ffigen4. """

This has little or nothing to do with GCC per se. It is *not* a fork.
Basically, it uses the GCC frontend for a purpose that is presumably
sufficiently similar to conventional compilation to enable a compiler
frontend to be used., namely building .cdb files which reflect the C
API of some .h files. I'm fuzzy about the details myself.

Anyway, getting it to build the code using existing versions of GCC in the 
archive would be impracticably difficult for a non-expert. (For the 
record, getting CCL to build correctly and in particular build the 
interface databases in question was quite hair-raisingly difficult 
enough.) If you doubt me, look at the 'source' subdirectory in the ffigen 
tarball, which has the patches against gcc 4.0, and tell me if you 
understand what they do.

I doubt even the main CCL developers would attempt it. They farmed out
the job to someone else years ago, who used the then-current GCC
compiler to get this to work. I could dig up more details, and talk to
the CCL developers themselves (who are usually grumpy and not
particularly sympathetic towards Debian, however) if you really need
further clarification. I'm including the ffigen README below, which
adds some details and history.

As for the documentation thing, I guess I could just strip out the
doc/FDL files from the tarball?

                                                           Regards, Faheem.

###########################################################################

# $Log$
# Revision 1.2  2005/08/10 05:05:46  gb
# Updated.
#
# Revision 1.1  2005/04/08 07:03:16  gb
# New file.
#

'ffigen' is a modified version of the GCC backend, based on similar
modifications to the 'LCC' compiler described at:

<http://www.ccs.neu.edu/home/lth/ffigen/index.html>

It's a work derived from GCC, and therefore licensed under the GPL.

Versions of ffigen - based on GCC 2.95 sources - were distributed
as adjunct components of OpenMCL in 2001 and 2002.  It's become
increasingly difficult to use those versions, since they're sensitive
to the exact format of the 2.95 C preprocessor output (and since GCC
2.95 is fading into obsolescence.)  The source distributions consisted
of a set of patches (relative to a canonical 2.95 source tree) and
a README file that explained the build process.

In the summer of 2004, Helmut Eller made available a set of patches
relative to GCC 3.4.1.  (Unlike previous versions, GCC 3.x's
preprocessor and frontend are a single program, so an ffigen program
derived from GCC 3 is likely to be a little more self-contained than
earlier versions.)

This version is based on GCC 4.0, builds on Helmut's work, and adds
some initial support for translating Objective-C class and method
information.  In addition, it provides a heavily conditionalized
Makefile which builds a binary package (.tar.gz file) on both LinuxPPC
and DarwinPPC.

In order to build the program, it's necessary to obtain canonical
versions of GCC (with ObjC support) for the target platform; the
Makefile tersely explains what's missing and suggests where to find
it.  You need to obtain the following files from gcc.gnu.org or a
mirror site and install them in this directory:

gcc-core-4.0.0.tar.bz2
gcc-objc-4.0.0.tar.bz2

Once those archives are installed, doing:

shell> make

will build the modified frontend, create an archive containing that
frontend and related support files, and create a text file explaining
how to install things.

These patches are maintained in CVS on clozure.com.  For anonymous
access:

shell> cvs -d :pserver:cvs at clozure.com:/usr/local/publiccvs login

[The anonymous CVS password is 'cvs']

shell> cvs -d :pserver:cvs at clozure.com:/usr/local/publiccvs get ffigen4



More information about the pkg-common-lisp-devel mailing list