[Openmcl-devel] problems compiling CLOCC
gb at clozure.com
Thu Feb 23 19:24:24 EST 2006
On Thu, 23 Feb 2006, Kevin Y. Kim (Lists) wrote:
> I'm trying to compile CLOCC, and have noticed a few interesting errors.
> One I can work around; the other I don't know enough Lisp :-)
> First, I got this error:
> Reader error on stream #<FILE-CHARACTER-INPUT-STREAM ("clocc/src/
> cllib/log.lisp"/8) #x8604C5E>:
> Undefined character #\, in a #\# dispatch macro.
> [Condition of type CCL::SIMPLE-READER-ERROR]
#, isn't a standard reader macro, but it once was and removing it
in 1.0 may have done more harm than good. (See
> The offending function is this:
> (defun time-diff (end beg)
> "Compute the time (in seconds) between the two given internal
> (declare (type real end beg)) ; values of LINEAR in ETA are not
> (/ (- end beg)
> ;; CLISP compiled files are cross-platform,
> ;; so this value must be fixed at load time, not at read time
> #+clisp #,(dfloat internal-time-units-per-second)
> #-clisp #.(dfloat internal-time-units-per-second)))
> Simple enough to fix, i just commented out the line beginning with "#
> But I was wondering, shouldn't the compiler know to ignore the rest
> of the line
> since the "#+clisp" will evaluate to nil?
Even if the results of the expression following the #+clisp won't be
used, the reader still needs to know how to read expressions involving
#, (so that it knows what to ignore.)
I think that the solution proposed in the email message cited above -
? (require "SHARP-COMMA")
before compiling (actually, before READing) files containing legacy
usage of #, - makes the most sense. If you do:
shell> cd ccl
shell> cvs login # the password is "cvs"; this step only needs
# to be done once
shell> cvs update
you'll get (among other things) a "ccl/library/sharp-comma.lisp" file
that contains the (old, deprecated, non-standard) definition of the
#, reader macro, and the REQUIRE suggested above will work.
> Second, after fixing the above, I got this:
> While compiling an anonymous function :
> Type (24616 :DOUBLE-FLOAT-VECTOR) not supported on target :PPC32
> [Condition of type CCL::COMPILE-TIME-PROGRAM-ERROR]
> in the file stat.lisp. I think the first function is the culprit,
> but I'm not sure.
> (It's rather long, so I haven't included it). I guess I understand
> the error - PPC32
> doesn't support DOUBLE-FLOAT-VECTOR. Can someone explain why, and
> how I might work around
That's a (fairly embarassing) bug; I checked the fix into the main
CVS tree a little while ago.
I'll send another message to this list in a minute or two explaining
how 1.0 users can upgrade without having to rebuild from CVS.
> Openmcl-devel mailing list
> Openmcl-devel at clozure.com
More information about the Openmcl-devel