[asdf-devel] clearing output-translations for a "dumped" image

Faré fahree at gmail.com
Fri Mar 1 20:53:38 UTC 2013

> When I save a lisp image and copy the image together with quicklisp/ directory
> to another location, the libraries can not locate their static files. In my example,
> hunchentoot says "The requested URL / was not found on this server."
This is the reason why asdf3 has register-image-restore-hook
and register-image-dump-hook, so you may register functions that
(re)initialize variables that hold such paths when you restore your image
(which also runs the function immediately by default)
and unbind them before you dump a new image (which doesn't).

> I have tried to (asdf:clear-configuration) before saving the image and after
> image is restored to
>   (setf ql:*quicklisp-home* (truename (merge-pathnames "quicklisp/" *default-pathname-defaults*)))
>   (ql:setup)
> but it didn't help.
Well, if asdf:system-relative-pathname is called while evaluating
the defvar or defparameter, then it must be called again
when the image is restored.

I should probably define a (define-image-variable ...) or some such
that automatically registers a function to re-initialize the variable
when the image is restored.

Of course, you must then update all relevant libraries to use it.

> For general use, where application depends on many libraries I am afraid there
> is no way to make relocatable lisp images. Even if I find a way to reinitialize
> asdf and quicklisp configurations, there are libraries which have their own custom
> variables holding file system paths. For such applications I only see one reliable
> way - prebuild all the .fals files with disabled asdf-output-translations so that
> .fals files are placed near the sources. Then copy full application and library
> sources to new location and reload them by (load "quicklisp/setup.lisp") (ql:quickload :my-application).
If that's the route you choose, instead of the one that consists
in fixing libraries to take image restore and dump into account,
you could use ASDF's fasl-op or monolithic-fasl-op to deliver those fasls.

—♯ƒ • François-René ÐVB Rideau •Reflection&Cybernethics• http://fare.tunes.org
I have never let my schooling interfere with my education. — Mark Twain

More information about the asdf-devel mailing list