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'."