[armedbear-devel] packaging external libs with abcl

Matthew D. Swank akopa at charter.net
Sun Sep 20 22:59:00 UTC 2009

On Fri, 11 Sep 2009 16:25:07 +0200
Alessio Stalla <alessiostalla at gmail.com> wrote:

> On Fri, Sep 11, 2009 at 3:20 PM, Matthew D. Swank <akopa at 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
at java.lang.SecurityManager.checkPermission(SecurityManager.java:532)
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

"You do not really understand something unless you can explain it to
your grandmother." -- Albert Einstein.

More information about the armedbear-devel mailing list