loading lisp files from inside the java jar
xach at xach.com
Tue Aug 18 12:21:23 UTC 2015
"Pascal J. Bourguignon" <pjb at informatimago.com> writes:
>>> On Aug 18, 2015, at 14:35 , Hamda Binte Ajmal <hamda.binte.ajmal at gmail.com> wrote:
>>> To be more specific
>>> The load statement looks like
>>> (load "jar:file:C:/Users/Administrator.NUIG-1Z7HN12/Documents/NetBeansProjects/Interface/dist/Profet.jar!/aima/quicklisp/setup.lisp")
>>> and the error thrown is
>>> "Unhandled lisp condition: Can't ensure directory
>>> ancestor of
> At last!
> So the problem you have here is that when loading setup.lisp it tries
> to compile asdf.lisp and to save the fasl file INSIDE the jar, as per
> the cache directory determined by setup.lisp.
> IIRC, quicklisp respects the XDG Base Directory Specification to find
> out the cache directory where to save the fasl. So one option could
> be to set the required XDG environment variables to direct it
> elsewhere than inside the jar.
> $ export XDG_CACHE_HOME=$HOME/.cache
> $ abcl
> could help.
> You might want to send a feature request to Xach (quicklisp) so that
> it would detect this situation and adjust to a more convenient
Quicklisp does not look at XDG environment variables. The intent is that
if no sufficiently-new ASDF is already loaded, it will try to compile to
a fasl file in ~/quicklisp/cache/asdf-fasls/<hash>/.
I was going to suggest loading a sufficiently new ASDF before trying to
load the quicklisp/setup.lisp file.
However, now that I look at the Quicklisp setup code, I see that it
*unconditionally* does (ensure-directories-exist ...) on the asdf fasl
cache directory, even though it should only be done if Quicklisp needs
to compile its own ASDF.
I think one option is to preload the asdf-fasl cache and put that in the
I'll open a Quicklisp issue for the unconditional fasl cache directory
creation problem and try to fix it soon.
More information about the armedbear-devel