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

Two difficulties in running PCL on AKCL

I am now running a very recent version (this month's, in fact)
of Austin KCL.  I'm trying to compile and run the latest PCL
(August 28) on top of it.  I've run into two problems,
illustrated in the examples below.

1) Consider the file

(defvar symb 'func)
(export symb)
(defun func nil t)

This file is accepted without incident if loaded interpretively;
but if compiled, a fresh AKCL refuses to load the .o, claiming
that  symb  is not bound.  Surrounding the forms with

(eval (compile load eval)

doesn't help.

The "pkg" file in PCL contains a construct like this.

2) Consider the file

(defmacro mac (arg) `(progn t (car ,arg)))
(defsetf mac (arg) (val) `(setf (car ,arg) ,val))

After loading this file, any attempt to use  setf  with  mac  -
that is, a form like

(setf (mac stuff) item)

fails.  Apparently  setf  does not look for a setf-form for  mac ,
but rather immediately macro-expands  (mac stuff) .  It then
fails to find a setf-form for  progn , and complains.

CLtL says that the so-called "access function" in  defsetf
can indeed be a macro.  A construct like this is used in PCL's
"low" file.

I have inserted workarounds in these cases, but I'd still like
to know:  Do these constructs work for other people?
Shouldn't they work?

	Lawrence G. Mayka
	AT&T Bell Laboratories

To: kcl@cli.com
Subject: Bypassing the Super User
Reply-To: boyer@cs.utexas.edu
Status: O

Two problems that can be encountered when installing and using KCL
that apparently require super-user privileges to fix are (a)
installing /usr/lib/cmpinclude.h and (b) not having enough space in
/tmp for compiling large files.  Bill Schelter has produced solutions
in AKCL not requiring super-user privilges for both of these problems.
The solutions work in the Sun/BSD/cc case, but not may work, for
example in System V.  However, similar patches for other system
probably exist.

To use to use the connected directory instead of /tmp for the
temporary files involved in compilation, one can do
   (setq compiler::*cc* (concatenate 'string compiler::*cc* "-temp=. ")),
at least for the Sun cc.  This is not at all standard.  It does not
work for gcc for example or system V although there is some such method there.

Concerning cmpinclude.h you can
   (setq compiler::*cc* (concatenate 'string compiler::*cc* " -I/usr2/akcl/h ")),
where /usr2/skcl/ is the directory where akcl resides, to let the
compiler know to check that directory for the cmpinclude.h file.