[pro] library configuration

Daniel Herring dherring at tentpost.com
Wed Jun 29 04:38:21 UTC 2011


Regarding the original question, take a look at cl-pdf.asd.  CL projects 
needing configuration capabilities have devised various approaches; but 
the current standard is to have a user-editable asd file, and cl-pdf is 
one of the more sophisticated examples.


On Tue, 28 Jun 2011, Zach Beane wrote:

> Faré <fahree at gmail.com> writes:
>
>> What's so special about Lisp here? How do other languages do it?
>
> ./configure --with-foo=/bar/baz

The specialness about CL is that people want an all-in-one solution. 
Download, configure, build, install, and load all in one step.

Unfortunately, this doesn't leave natural breaks for humans to oversee the 
process.

In a way, user-editable asd files remind me of pre-autoconf makefiles...


C users have download, configure, make, make install, compile with 
headers, link with objects, and run with loader all as separate steps. 
Sometimes tedious, but remarkably flexible and robust.  Distributions of 
precompiled code hide the tedium from end users.

A while ago, I was toying with a more decoupled build system for CL.  It 
consisted of three components based on experience with the GNU autotools. 
(Yes, they're built on a terrible foundation of m4 and portable shell and 
portable make, but they're light years ahead of the competition in terms 
of good engineering.)

coli - configure lisp (including user inputs and automated probes)
buli - build and install lisp (and trace what was built/required)
loli - load lisp (a well-defined REQUIRE with hooks for versioning)

The idea was that the components are designed to work together, but there 
are public APIs so they can be swapped out or used individually.  Put 
hooks and restarts in loli so buli can (re)compile as needed.  Another 
user may disable these hooks and delete the sources after each install. 
Add hooks in buli to (re)run coli.  With a public API, loli's hooks could 
be redirected to booli which could emulate buli's hook points -- people 
could rewrite and swap pieces without forking the whole build system. 
etc.

Like so many things, this was shelved due to a perceived lack of community 
interest and a definite shunting of personal energy.


- Daniel


More information about the pro mailing list