freenode/#ecl - IRC Chatlog
Search
16:19:11
_user
hello everyone, I'm using EQL and trying to include quicklisp libraries in my compiled binary, any help?
16:19:59
_user
that's my makefile, it includes my existing source files, but doesn't include quicklisp libraries in the binary resulting in an error when launching saying "function quicklisp-client::quickload is undefined"
16:20:42
jackdaniel
for instance it is possible to have asdf built-in, or tcp - there you have examples how to make them part of libecl itself
16:21:42
jackdaniel
(or compile-in quicklisp itself, but quicklisp requires some directory structure for its cache etc)
16:22:28
jackdaniel
one way to have a static library *without* quicklisp is creating a bundle (see quicklisp's bundle functionality), which bundles all dependencies in one directory structure and load file, and doesn't put quicklisp in the image when you load it
16:22:57
jackdaniel
if library uses quicklisp itself, then we are back at the directory hierarchy problem
16:23:14
_user
I don't literally need quicklisp, I just need cl-strings, which I installed via quicklisp
16:24:28
_user
if I am understanding you correctly, I have to create the ecl library file with cl-strings, and then just do a (use-package :cl-strings) instead of a (ql:quickload) in my source file?
16:26:01
_user
The exact thing I am trying to achieve is the following: I have a EQL application, that I can run using my script here: https://github.com/nEXT-Browser/nEXT/blob/master/next/run.lisp
16:26:28
_user
I can compile it using my build script here: https://github.com/nEXT-Browser/nEXT/blob/master/next/build.sh
16:26:55
_user
but the compiled version throws an error saying Condition of type: UNDEFINED-FUNCTION
16:27:29
_user
Therefore I looked at this file here: https://github.com/nEXT-Browser/nEXT/blob/master/next/lisp/keymap.lisp and decided that this must be the problem
16:29:24
_user
thank you for your help so far btw, even if I don't understand all of your advice so far, it gives me something to research
16:29:50
jackdaniel
OK, you can't do that (as you have already figured), unless you have quicklisp already compiled (or loaded)
16:31:22
_user
jackdaniel: this one? https://gitlab.com/embeddable-common-lisp/ecl/tree/develop/examples/asdf
16:32:21
jackdaniel
yes, and https://gitlab.com/embeddable-common-lisp/ecl/tree/develop/examples/asdf_with_dependence
16:33:37
jackdaniel
see also https://common-lisp.net/project/ecl/static/ecldoc/Extensions.html#Compiling-with-ASDF
16:33:56
jackdaniel
and https://common-lisp.net/project/ecl/static/ecldoc/Extensions.html#System-building for broader view
16:35:49
_user
sorry, lots of dumb questions, I've been only been using lisp for about a month now, and most of the time was spent reading practical common lisp
16:36:26
jackdaniel
if you have name.lisp and name.fas, then name.fas will be loaded, because it is already compiled
16:38:51
jackdaniel
then you need to do something like (asdf:make-build "my-system-name" :monolithic t type :static-library :move-here "/tmp/my-dir-with-lib/")
16:40:04
_user
will you be online later so I can ask questions, or should I try to ask as many as I can now :P?
16:40:07
jackdaniel
that's how most of the libraries are defined nowdays (quicklisp works on top of asdf)
16:40:26
jackdaniel
sure, ask right away, I may have lag with answering, but I will answer them eventually
16:42:54
jackdaniel
btw, Paul wrote a tutorial post about using EQL5 on Android: https://common-lisp.net/project/ecl/posts/Lisp-ECL-and-QML-Qt5-on-Android.html
16:47:23
_user
he mentioned integrating asdf with eql later which is why I wasnt sure if it was possible or not