mk:defsystem for maxima



--- James Amundson <amundson@fnal.gov> wrote:
> Hi, 
> 
> As I said before on the Maxima mailing list, I think that the future
> direction for Maxima should be toward ANSI-CL and away from GCL
> idiosyncrasies. To that end, I have a version of Maxima that builds
> consistently with CLISP, CMUCL and GCL using mk:defsystem from CLOCC.

In a word - AWESOME!

> Much of what I have is derived from work done by Liam Healy, who
> deserves most of the credit and none of the blame. 
> Building requires defsystem.lisp from CLOCC and (for the time being)
> my patched version of CLOCC's run-lisp, which I have included.
> To build with clisp:
> 	make
> To build with CMUCL:
> 	make L=cmucl
> To build with gcl
> 	make L=gcl
> 
> The Makefile is a temporary hack; I plan to setup an
> autoconf/automake system for maxima so that it can be configured, 
> built and installed in a way familiar to users of other autoconf'ed 
> projects. 

That would be really, really, really cool.  That was one of the big
barriors for me when I first tried maxima - the nonstandard build
process.

> The lisp part will continue to actually be built by mk:defsystem.

I doubt that'll be a problem - in fact, that would probably be the best
thing.  One thing, though - can autoconf check for the presence of
mk:defsystem as part of its initial stuff, and give an informative
message about installing it if it isn't already present?  I am not sure
how to install mk:defsystem, which just shows how clueless I really am
with lisp - would it be possible for you to document how you set up
your lisp system to handle this setup?  Something like:

ERROR: mk:defsystem is not present in your lisp system
see INSTALL.mkdef for details on how to install it.

and then in INSTALL.mkdef have a step by step process for the lisps? 
(I'll be glad to handle writing it up if you can give me the steps and
put up with a few dumb questions.)
 
> I also plan to write a wrapper script so that maxima can be invoked
> from the command line in a manner independent of lisp implementation.

Also very cool.  Do you think maybe you could add an option (this may
be a bad idea, but it kind of strikes me as cool so I'll throw it out)
to tell the compile system to make binarys from different lisps, and
then have the script accept an option as to which lisp to run it in?

Say, for example, I wanted to compile maxima against GCL, CMUCL, and
Clisp, 'cause I'm a geek and want to use different lisps for different
types of jobs:

./configure --use-gcl --use-cmucl --use-clisp --default clisp

and that would have the make system build three binaries automatically.
 Then, once installed, the script could be used to select which lisp
you wanted to run with.  Say I wanted to do some fast calculations, I
could launch maxima with

maxima --cmucl

and when the students want to start it

maxima

will just give the default build with the more friendly Clisp.

Sorry if I'm off base again, but it sort of seemed like a cool idea.

> I'm sending this message now not because I have a polished final
> product ready, but because I hope others will be interested in 
> discussing and working on it.

Unfortunately I personally don't have the expertise to help you put it
togeather, but I'll volunteer to be an early and frequent tester.  Do
we have any autoconf gurus out there?

> The differences between what I have and the current head of the
> maxima cvs repository are quite small. I've appended the diff. 
> Please let me know if you would like a copy of the modified files.

Definitely.  I think this is significant to the future of maxima, and
it should definitely be worked on.  Thanks for being willing to do
this.
CY

__________________________________________________
Do You Yahoo!?
Make a great connection at Yahoo! Personals.
http://personals.yahoo.com