[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