[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

RE: [Axiom-developer] sbcl and Axiom

From: Page, Bill
Subject: RE: [Axiom-developer] sbcl and Axiom
Date: Wed, 26 Jul 2006 01:36:10 -0400

On Tuesday, July 25, 2006 9:31 PM C Y wrote:
> ... 
> The axiom_cmu.tgz archive does not contain the boot directory.

I have to admit that I had not previously looked deeply at the
axiom_cmu build but it seems to me that it is based on a different
version of boot then the one built by the standard distribution
of Axiom (i.e. Tim's). Although I do see '#+:tpd' in the util.lisp

Apparently in axiom_cmu boot is compiled as part of the
/interp/Makefile. See especially the clisp "bootstrap boot files"
in the inter/lisp subdirectory. These are similar to but different
from the clisp boot bootstrap files embedded in the *.pamphlet
files in the boot directory of the standard distribution. If
you look for 'BOOTTOCL' for example you will see that it is
implemented in ptyout.boot.pamphlet in the standard distribution
but in interp/util.lisp in the axiom_cmu version.

I do believe that there was an "old" and a "new" boot compiler
so it could be that axiom_cmu is using an older version.

I suppose that only Tim Daly and/or Juergen Weiss will be able
to sort all this out for us... :(

> Also, when trying to load src-pkg.lisp, there appear to be
> exports which are in conflict with definitions made in the boot
> files - I'm not completely sure about that but some of the
> errors make me wonder.
> > No the boot directory is not redundant.
> > 
> > Yes you need to compile boot first before you can compile
> > anything from interp.
> There is however a second option - take the intermediate lisp files
> produced in the current "normal" build, and build those directly
> without first generating them from the boot files.  I was reluctant
> to do that until Axiom formally makes the switch, but the boot
> translator appears to do a few non-ANSI things and it will take
> some digging to change that.

I think there are some changes in the axiom_cmu source specifically
for this. In

Juergen Weiss wrote:

> ... there is the quoted function stuff and some minor
> changes (a few macros and one or two places in the algebra
> code) for string-char, both of which I already have taken care
> of in my cmucl port 2 years ago.

So I guess you should look specifically for the ':cmu' specific
code in vmlisp.lisp (i.e. macros). A diff between int/interp/
vmlisp.lisp file from the standard distribution and this file
shows a lot of cmu specific changes (including changing :cmulisp
to :cmu). There are other changes but in some cases it is rather
hard to tell if these are applicable or regressions due to a
differences in the base version of vmlisp.lisp.


+(defmacro define-function (f v)
+  `(eval-when (eval load compile)
+     (setf (symbol-function ,f) ,v)
+     #+(or :akcl :cmu)
+     (define-compiler-macro ,(cadr f) (&rest args)
+         `(,',(cadr v) ,@args))
+   ))

is the "quoted function stuff" referred to by Weiss?

Anyway, such is the difficulty that is cut out for you in this
task... :) I hope you can attract the help of others more

> I can load the boot-strap lisp files in boot (after some
> tweaking) but I have not as yet attempted to repeat the cycle
> by loading the clisp files produced from that process.  For
> that cycle to work automatically, changes at the boot->lisp
> level are necessary.

Could you give some examples of the "tweaking"?

> > No the interp directory code does not contain all of the
> > functionality of boot (nor any of the functionality of boot
> > for that matter).
> Hmm.  OK :-).
> > No what you have been doing so far is not a waste of time.
> > However, I think you should be using the make process as
> > defined in the current Axiom makefiles first before trying
> > to change things in a radical manner.
> Since I'm not familiar with make as a tool, I'm trying to keep
> everything as much as possible in lisp.

Good luck! make is fundamental to almost all open source (with
some lisp code and some python code as the only exceptions that
I know about). I really recommend taking a look at the gnu make

> Theoretically the build order is the key point, at least once
> I figure out the technical reason for using multiple images.
> Also, once the changes needed to run in sbcl are made, those
> pamphlet files should just plug right into the make process.

Could you explain a little more about how you see this working?
It seems to me that more than build order is important.

> During development though, I find asdf a bit more convenient
> for lisp loading - I can easily load, for example, the boot
> subsystem defined in the boot dir without the rest of the
> compile proceeding, then incrementally attempt loading each
> file from the next step. 

I suppose it is possible to integrate asdf into parts of the
current build process. You will end up using both make and

> (Currently I'm a bit stalled on interp/sys-pkg.lisp - VMLISP
> and BOOT exports appear to be causing a bit of confusion,
> although it may be I haven't sorted out what's really going
> on yet.)

Are you trying to build interp starting with the boot image?
I think that is not the way the current build works. Even the
axiom_cmu Makefile builds two separate images (depsys and

> I'm using both the Makefiles and debugsys.lisp for file orders,
> so they're definitely playing a role, and the files themselves
> should just plug back into their old spots, once they're working.

We are here to try to help ... :)

Bill Page.

reply via email to

[Prev in Thread] Current Thread [Next in Thread]