On Fri, 11 Sep 2009 16:25:07 +0200 Alessio Stalla alessiostalla@gmail.com wrote:
On Fri, Sep 11, 2009 at 3:20 PM, Matthew D. Swank akopa@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.
java.security.AccessControlException: access denied (java.io.FilePermission /home/singollo/root/appengine-proj/abcl-test/war/load.lisp read) at java.security.AccessControlContext.checkPermission(AccessControlContext.java:323) at java.security.AccessController.checkPermission(AccessController.java:546) at java.lang.SecurityManager.checkPermission(SecurityManager.java:532) at com.google.appengine.tools.development.DevAppServerFactory$CustomSecurityManager.checkPermission(DevAppServerFactory.java:139) at java.lang.SecurityManager.checkRead(SecurityManager.java:871) at java.io.File.isFile(File.java:776) at org.armedbear.lisp.Load.findLoadableFile(Load.java:67) at org.armedbear.lisp.Load.load(Load.java:132) at org.armedbear.lisp.Load.load(Load.java:728) at org.armedbear.lisp.Load.access$200(Load.java:50) at org.armedbear.lisp.Load$2.execute(Load.java:680) at org.armedbear.lisp.Symbol.execute(Symbol.java:816) at org.armedbear.lisp.LispThread.execute(LispThread.java:563) at org.armedbear.lisp.load_1.execute(load.lisp:33) at org.armedbear.lisp.CompiledClosure.execute(CompiledClosure.java:91) at org.armedbear.lisp.LispThread.execute(LispThread.java:511) at org.armedbear.lisp.Lisp.evalCall(Lisp.java:489) at org.armedbear.lisp.Lisp.eval(Lisp.java:454) at org.armedbear.lisp.Lisp.eval(Lisp.java:452) at org.armedbear.lisp.Lisp.eval(Lisp.java:395) at org.armedbear.lisp.Interpreter.eval(Interpreter.java:156)