asdf binary locations
This ASDF-Extension below shows one good way to specify the binary locations used ASDF systems.

FWIW, Gary King has packaged up what's below with some extra loving and SLIME code goodness to make the ASDF-Binary-locations package.

ASDF doesn't specify the output directories for binaries (FASL) files because the system definition isn't the right place to do this. However, specifying the output location is a common question. Here's an answer.

You can find the original source code for ABL here. The ASDF-Binary-locations package has added a few extensions to this source.

It works well, and it is extensible so that you can add other source-fasl locations to the global variable. My clisp and sbcl init files contain the same thing but with different fasl directories.

Issues

  • The only thing regarding this method that is sometimes problematic is for packages which come with data files. The way ASDF works, it will look for those data files in the fasl directory instead of the source directory, and you will get a sometimes cryptic compilation error. The way I solve this in the few cases where it happens is by manually copying the files to the fasl directory.

  • SBCL ships with several included ASDF libraries. Unless you tell it not to, ABL will try to place the compiled files for these into new directories which may fail due to directory permissions. You can tell ABL to not mess with the SBCL files by added something like the following to your ~/.sbclrc file
;; force SBCL things to stay in SBCL
(defvar asdf::*system-configuration-paths* 
  '(("/usr/local/lib/sbcl/" nil)))