+;; Defeat ASDF's built-in knowledge of itself. If we've just loaded the most
+;; up-to-date version of ASDF then it won't bother loading the system
+;; definition from disk which knows about the actual source files. And if it
+;; doesn't think it has any source files then it won't compile anything.
+(funcall (symbol-function (find-symbol "LOAD-ASD" "ASDF"))
+ (funcall (let* ((cache-pkg (find-package "ASDF/CACHE"))
+ (session-pkg (find-package "ASDF/SESSION")))
+ (symbol-function
+ (cond (cache-pkg
+ (find-symbol "CALL-WITH-ASDF-CACHE" cache-pkg))
+ (session-pkg
+ (find-symbol "CALL-WITH-ASDF-SESSION" session-pkg))
+ (t
+ (error "I don't know how to hack this version ~
+ of ASDF: please report this as a bug.")))))
+ (lambda ()
+ (asdf:search-for-system-definition "asdf")))
+ :name "asdf")
+
+(defparameter *asdf* (asdf:find-system "asdf")
+ "The `asdf' system itself.")