Apparently, this approach seems to work. I’m not sure if it is the best approach.
Here is what my code looks like. It creates a directory in /tmp/ and asdf:load-system
seems to compile the .fasl files into there.
(require :asdf)
(require :sb-posix)
(let ((home (directory-namestring (user-homedir-pathname)))
(uid (sb-posix:getuid))
(pid (sb-posix:getpid)))
(setf asdf::*user-cache* (ensure-directories-exist (format nil "/tmp~A~D/~D/" home uid pid))))
#-quicklisp
(let ((quicklisp-init
"/lrde/home/jnewton/quicklisp/setup.lisp"))
(if (probe-file quicklisp-init)
(load quicklisp-init)
(error "file not found ~S" quicklisp-init)))
(asdf:load-system :lisp-types-test)