[Openmcl-devel] problems compiling CLOCC

Gary Byers gb at clozure.com
Thu Feb 23 16:24:24 PST 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

<http://clozure.com/mailman/htdig/openmcl-devel/2005-November/003085.html>)

>
> The offending function is this:
>
> (defun time-diff (end beg)
>   "Compute the time (in seconds) between the two given internal
> timestamps."
>   (declare (type real end beg)) ; values of LINEAR in ETA are not
> integer
>   (/ (- 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 "#
> +clisp".
> 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 -
namely, doing:

? (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
> this?


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.



>
> Thanks
> -kevin
>
>
> _______________________________________________
> Openmcl-devel mailing list
> Openmcl-devel at clozure.com
> http://clozure.com/mailman/listinfo/openmcl-devel
>
>



More information about the Openmcl-devel mailing list