On 9/21/09 12:59 AM, Matthew D. Swank wrote:
On Fri, 11 Sep 2009 16:25:07 +0200 Alessio Stallaalessiostalla@gmail.com wrote:
On Fri, Sep 11, 2009 at 3:20 PM, Matthew D. Swankakopa@charter.net wrote:
I've been messing with running abcl on the google appengine, and I was wondering what was the best way to package libraries, especially the results of loading an asdf system and its dependencies?
This has been somewhat discussed in the thread "[OT] best way to structure and deploy a project" which I started. What I ended up doing is to use ANT to build my system, both the Java part (natively) and the Lisp part, by making it invoke ABCL with --load compile-system.lisp, where compile-system.lisp is (push such-and-such asdf:*central-registry*) (asdf:oos 'asdf:compile-op :the-system). ANT packages it all in a jar, with a directory structure such as, e.g.,
system-name/ bin/ --classes, .lisp, fasls lib/ --lisp libraries
This is similar to what ABCL itself does (in fact, my ant file is basically a trimmed down version of abcl's), except abcl has no library dependencies. Now, afaik asdf can only load from files, so the jar contains a main class written in Java that detects if it's been launched from a jar, and if it is, it extracts the jar in a temporary directory and uses asdf to load the system from there. This of course cannot work on AppEngine; maybe the patch to load from jars addresses this issue as well?
I must have miss read the doc, I don't even have r/o access to the file system. I'm not sure how I'd bootstrap an abcl application on the google app engine.
I think one has to package everything inside 'abcl.jar', placing your code in the 'org.armedbear.lisp' directory. This should be what *LISP-HOME* gets set to. I have yet to get enough time to figure out how to deploy to Google App Engine (GAE) myself: it's on a long TODO list which got pushed further down with having to figure out how to use the Eclipse plugin to deploy to GAE.