[Openmcl-devel] Help with build commands (Re: Debian packaging for CCL)

Faheem Mitha faheem at faheem.info
Thu Jul 12 15:11:09 PDT 2012



On Wed, 11 Jul 2012, Faheem Mitha wrote:

> Thanks, that is clear and explicit. I think I have enough information
> for a first stab at building.

Ok, I did some work on this. So far, the build steps I have are given at 
the end of this message. I almost succeeded in the basic compilation, but 
the last step is a showstopper.

This work is complicated by the fact that CCL overwrites the shipped
kernel and heap image while building. (These are lx86cl and
lx86cl-image in my 32 bit case.) This makes it difficult for a clean
target. Debian policy says about the clean target:

"This must undo any effects that the build and binary targets may have
had, except that it should leave alone any output files created in the
parent directory by a run of a binary target."

So clean should remove all effects of the build. But that is difficult
if the original shipped binaries are overwritten in
place. Unfortunately, the build commands for the most part don't have
the option to write files elsewhere, which necessitates a certain
amount of hacking around,

I'd like to know if the developers would be open to the idea of
extending these commands. If not, I can manage. The commands below
don't overwrite the shipped binaries, though they are a little bit
ugly. I did have to patch the Makefile in lisp-kernel/linuxx8632,
though.

Now for the showstopper. The CCL manual says

""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""

To build a full image from a bootstrapping image, just invoke the
kernel with the bootstrapping image as an argument

$ cd ccl                        # wherever your ccl directory is
$ ./KERNEL --image-name BOOT_IMAGE --no-init

Where KERNEL and BOOT_IMAGE are the names of the kernel and boot image
appropriate to the platform you are running on. See Table 3.1,
“Platform-specific filename conventions”

That should load a few dozen fasl files (printing a message as each
file is loaded.) If all of these files successfully load, the lisp
will print a prompt. You should be able to do essentially everything
in that environment that you can in the environment provided by a
"real" heap image. If you're confident that things loaded OK, you can
save that image:

? (ccl:save-application "image_name") ; Overwriting the existing heap
image

Where image_name is the name of the full heap image for your
platform. See Table 3.1, “Platform-specific filename conventions”.

"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""

However, how can I perform this step non-interactively, i.e. without
having to type something at the REPL? It tried

./lx86cl -I ../../x86-boot32 -e '(progn (ccl:save-application "lx86cl.new.image") (ccl::quit))' --no-init

but it did not work. I was still dropped in the REPL.

Finally, here are the build steps.

install -d debian/build
make -C lisp-kernel/linuxx8632
cd debian/build && ./lx86cl  -I ../../lx86cl.image  -e '(progn (ccl:xload-level-0 :force) (ccl::quit))'
cd debian/build && ./lx86cl  -I ../../lx86cl.image  -e '(progn (ccl:compile-ccl) (ccl::quit))'
cp level-1.lx32fsl debian/build
cp -r l1-fasls debian/build
cp -r bin debian/build
cd debian/build && ./lx86cl -I ../../x86-boot32 -e '(progn (ccl:save-application "lx86cl.new.image") (ccl::quit))' --no-init

BTW, I looked at the Gentoo build for CCL. It looks like CCL was removed 
from Gentoo in February 2012, if I understood the commit messages 
correctly.  Regardless. this packaging was not very impressive, and 
completely ignores the clean issue, as far as I can see.

                                                      Regards, Faheem


More information about the Openmcl-devel mailing list