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-compil...
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.