How to distribute the asdf/quicklisp dependencies along with an app compiled with Embeddable Common Lisp?

限于喜欢 提交于 2019-12-02 03:00:03

问题


I have tried this example ECL repository asdf example , it works fine but it doesn't have any asdf dependencies. If i add

:depends-on (#:inferior-shell)

to example.asd then running the compiled standalone executable gives this error:

Condition of type: SIMPLE-PACKAGE-ERROR
There exists no package with name "ASDF/DRIVER"
No restarts available.

What causes this error, and what is the idiomatic way of dealing with asdf dependencies on ECL ?


回答1:


EDIT: this problem is fixed for ECL newer than 16.1.3 (fixed in develop branch), so no `require' trick should be needed in the upcoming release.

In general path you have taken is correct.

Make sure, that you have required the ASDF:

(require 'asdf)
(find-package "ASDF/DRIVER")

Then "ASDF/DRIVER" package is defined. On the other hand inferior-shell requires a few other libraries (alexandria for instance), so you have to put the path to them in the ASDF central registry or use the Quicklisp bundles.

More detailed info about building with ECL is available in its Documentation.

// EDIT After investigation it appears that ASDF has to be manually required at the program start. It is probably a bug. As a workaround add

:prologue-code '(require 'asdf)

to the (asdf:make-build …) for standalone executable. Everything works fine then.



来源:https://stackoverflow.com/questions/34062166/how-to-distribute-the-asdf-quicklisp-dependencies-along-with-an-app-compiled-wit

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!