README.org: Use a more principled hack to make emphasis work.
[runlisp] / dump-ecl
index 1f5373e..0648d86 100755 (executable)
--- a/dump-ecl
+++ b/dump-ecl
@@ -33,6 +33,25 @@ run () { echo "$*"; "$@"; }
 cat >"$tmp/ecl-build.lisp" <<'EOF'
 (require "asdf")
 
+;; 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.")
 
@@ -167,7 +186,7 @@ EOF
   -s -o "ecl-run.o" ${eclopt}compile "ecl-run.lisp")
 
 ## Finally link everything together.
-run "$ecl" ${eclopt}norc -o "$image"\
+run "$ecl" ${eclopt}norc -o "$image" \
   ${eclopt}link "$tmp/asdf.o" "$tmp/ecl-run.o"
 
 ###----- That's all, folks --------------------------------------------------