After thinking hard about the problems Ray pointed out with the previous
approach I tried, I decided to start again. I present the "bs2" branch
that I just pushed to Sourceforge [1]. In a couple of days I'll delete
the "build-system" branch that I tried before, since it's not the right
way to do things, I don't think.
[If you don't care that much, and just want to check I haven't broken
your build, skip down to the line of stars]
Improvements on the current build system:
- dependency files (eg. clisp-depends.mk and the like) are generated
automatically
- sys-proclaim.lisp is generated automatically with GCL
- Mere mortals can understand src/Makefile.am
There is no longer the bug (or my fundamental misunderstanding) that
meant code from the older build-system branch could only compile with
one lisp implementation at once.
There is however a problem that I realised a minute ago. My idea was
that we could delete lots of automatically generated files from the git
tree and users could regenerate them when compiling at their end. All
very sensible. Unfortunately, there are (apparently) some users who
compile straight from the defsystem files and don't actually use
make. Since these users aren't going to be able to build the weirder
dependencies (or the documentation, random share files or anything else,
for that matter), we have to support them somehow.
I *was* going to suggest that building all the automatically generated
files could be part of the job of rolling a tarball. But some of them
require the relevant implementation to generate them. For example, you
really need a copy of SCL to make scl-depends.mk and so on. So, I think
there are three options:
(1) The status quo. Use checked-in copies of automatically generated
files. These may or may not be in date. Those that are used less
often (eg ones for Windows users or proprietary lisps) might be
massively out of date.
(2) Tell anyone wishing to compile Maxima that they must run "make" at
least once in the source tree. This will sort out all of those
pesky automatic files for them and then they can go back to the
Lisp world from then on.
(3) Try to support a couple of configurations with no Makefile. That
is, when we roll a tarball we make sure to build all the files that
are needed for compilation with GCL, say. This wouldn't be a
ridiculous workload / expense for the release manager, but it could
support some Make-less users.
Second question: Why are we installing copies of the lisp
implementation? At the moment, the install targets for Clisp and SCL
both make copies of the lisp implementation and stick them in the
installation directory. The CMUCL and SBCL targets try/tried to do this,
but for SBCL, at least, we don't do it right.
Is there a reason for this behaviour? I see legality issues with SCL
(having just had the pleasure of reading their licence document). And on
SBCL/CMUCL, this is completely silly since none of the required support
files for the implementation get installed. Is anyone using this?
**********************************************************************
Now here's the begging bit. Please, please, please could you check
whether this branch still builds for you in the way you expect? I've
tested on Linux with CLISP, ECL, GCL, ACL, CCL (OpenMCL) and SBCL. And
it feels like I've also tested most of the 2^7 subsets.
I *haven't* tested CMUCL, since for some bizarre reason, both the Debian
package of CMUCL and version 20d downloaded from cons.org die instantly
with a segfault on my machine. I also haven't tested SCL since you have
to wait for someone to approve the download of the non-commercial
version. I'm waiting.
I've also not tested Windows or Mac builds.
I'd be very very grateful if anyone could check up on the bits I've
missed and let me know whether everything works.
Also, if you are one of the users who doesn't use Make, please speak up!
I've heard lots about the existence of you guys but I have no idea what
platform you're on...
Comments? Breakage? Flames? Rotten fruit?
Rupert
[1] Get it with "git fetch; git checkout bs2". The acronym is for
build-system, no matter what you might think my code / Automake...
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 315 bytes
Desc: not available
URL: <http://www.math.utexas.edu/pipermail/maxima/attachments/20130317/13d5ecfd/attachment.pgp>