[alexandria-devel] Alexandria/SBCL buglet

Daniel Herring dherring at tentpost.com
Sun Nov 2 04:12:15 UTC 2008


There's a subtle bug in the 'include' target in alexandria/doc/Makefile.

include:
         sbcl --eval '(progn (require :asdf) (require :alexandria) (rename-package :alexandria :alexandria))' \
         --eval '(load (merge-pathnames "doc/manual/docstrings" (posix-getenv "SBCL_SOURCE_ROOT")))' \
         --eval '(sb-texinfo:generate-includes "include/" :alexandria)' \
         --eval '(quit)'
         mv include/fun-alexandria-type=.texinfo include/fun-alexandria-type-equal.texinfo


When the SBCL manual is built, it creates a directory named "docstrings"; 
so you now have both
doc/manual/docstrings and
doc/manual/docstrings.lisp

Thus (load (merge-pathnames "doc/manual/docstrings" ...) fails with a

debugger invoked on a SB-INT:SIMPLE-STREAM-ERROR in thread #<THREAD "initial thread" RUNNING {100274FC21}>:
   couldn't read from #<SB-SYS:FD-STREAM for "file /path/to/sbcl/doc/manual/docstrings" {1002871401}>:
     Is a directory

[SBCL 1.0.22.7 on x86-64 linux]

- Daniel


P.S.  Since "clean:" is the first target in this Makefile, it runs by 
default when you simply type `make`.  That surprised me; I expected the 
first rule to be something like

all: pdf html

or

all:
 	echo "Try 'make clean', 'make pdf', or 'make html'."




More information about the alexandria-devel mailing list