[armedbear-devel] how to load fasls from jar via asdf

Mark Evenson evenson at panix.com
Wed Aug 25 04:52:52 UTC 2010


On 8/24/10 7:42 AM, Robert Dodier wrote:

[…]

> $ jar tvf foo.jar
>       0 Mon Aug 23 23:32:52 MDT 2010 META-INF/
>      71 Mon Aug 23 23:32:52 MDT 2010 META-INF/MANIFEST.MF
>       0 Mon Aug 23 23:32:32 MDT 2010 systemfoo/
>    1618 Mon Aug 23 23:32:02 MDT 2010 systemfoo/foobar.abcl
>      47 Mon Aug 23 23:26:32 MDT 2010 systemfoo/foo.asd
>

[…]

> CL-USER(1): (require 'asdf)
> ("CLOS" "PRINT-OBJECT" "FORMAT" "ASDF")
> CL-USER(2): (pushnew "jar:file:/tmp/foo.jar!/systemfoo/" asdf:*central-registry*)
> ("jar:file:/tmp/foo.jar!/systemfoo/")
> CL-USER(3): (asdf:operate 'asdf:load-op :foo)
> ; loading system definition from jar:file:/tmp/foo.jar!/systemfoo/foo.asd into #<PACKAGE "ASDF0">
> ; registering #<SYSTEM FOO>  as FOO
> #<THREAD "interpreter" {1CD1CEA}>: Debugger invoked on condition of type FILE-ERROR
>    The file "jar:file:/tmp/foo.jar!/systemfoo/foobar.lisp" does not exist.
>
>
> I guess ASDF didn't see foobar.abcl in the jar file.
> Can you tell what's going on here?

Actually, if you look at the error, ASDF is looking for 'foobar.lisp' to 
see if it is out of date with respect to the 'foobar.abcl' FASL.  With 
ASDF2, you just need to package the source in the jar as there is a new 
mechanism for establishing links between the source and the compiled in 
the ASDF-OUTPUT-TRANSLATIONS machinery, which by default writes all 
FASLs under "~/.cache/common-lisp".

If your intention is to provide a jar archive containing the entire 
Maxima system ready to run without further compilation, you'll need to 
fiddle with the source-to-fasl translation mechanism as documented in 
the [ASDF manual][1], but as a shortcut convince yourself that things 
will work from a jar, you can probably start with calling 
ASDF:DISABLE-OUTPUT-TRANSLATIONS before you invoke the ASDF:LOAD-OP.

[1]: 
http://common-lisp.net/project/asdf/asdf/Controlling-where-ASDF-saves-compiled-files.html#Controlling-where-ASDF-saves-compiled-files

I remember some traffic on the ASDF mailing list a couple months ago 
about creating pure binary ADSF definitions in the context of 
distributing systems for ECL, for which a runtime without gcc means no 
compiler.

And maybe Alan Ruttenberg has a more advanced solution here as he had 
(from what I remember) experimental code to dump all current ASDF 
definitions in a running ABCL image to a jar file that could be 
restarted.  I believe if you search the armedbear-devel archive there 
might be a reference to this work.

-- 
"A screaming comes across the sky.  It has happened before, but there
is nothing to compare to it now."




More information about the armedbear-devel mailing list