Compiling a binary that uses quicklisp

Daniel Kochmański daniel at turtleware.eu
Fri Feb 10 06:07:29 UTC 2023


Hello Brandon,


------- Original Message -------
On Friday, February 10th, 2023 at 00:20, Brandon Hale <bthaleproductions at gmail.com> wrote:


> Hello all,
> 
> I apologize if this is either the wrong place to get help with ecl, or if this is asked all of the time. 

this is the right place, don't worry :)


> I've written a small replacement for i3status with common lisp and want to use ecl to make a binary so when i3wm loads, it just loads the cl-i3status binary. I've looked at the ecl documentation online and it suggests doing something like this:
> 
> (ql:quickload :cl-i3)
> 
> (asdf:make-build :cl-i3
> 
>                  :type :program
> 
>                  :move-here #P"/home/brandon/Programming/lisp/cl-i3/"
> 
>                  :prologue-code '(require 'asdf))
> 
> So, I run this and the binary appears. However, when I try to run it, I get this output:
> 
> ;;; Loading #P"/usr/lib/ecl-21.2.1/asdf.fas"
> ;;; Computing Hangul syllable names
> Condition of type: MISSING-COMPONENT
> Component "str" not found
> 
> Available restarts:
> 
> 1. (RETRY) Retry ASDF operation.
> 2. (CLEAR-CONFIGURATION-AND-RETRY) Retry ASDF operation after resetting the configuration.
> 
> Top level in: #<process TOP-LEVEL 0x557ade1c2f80>.
> >
> 
> I imagine it is just because of my use of quicklisp packages, but how do I compile the packages into the binary?

this error message seems to suggest that you use a system "str" without declaring it in dependencies. In your
project file my-project.asd add

(defsystem "my-project"
  ...
  :depends-on (... "str")
  ...)

depending on what you want from your project you may not need (require 'asdf) in the prologue code. Also you
may consider passing :monolithic t flag to make-build.

Make sure that you study well-commented example in ecl source repository under examples/asdf_with_dependence/.

Last but not least make sure that you use the latest release (currently it is 21.2.1) or a build from the branch
"develop" if you are not afraid of cutting your self on the bleeding edge ;).

If none of these advises helps then please try to minimize the test case to the minimum (basically an asd system
with a singly stub file and all dependencies you need) and make an issue ticket on gitlab

https://gitlab.com/embeddable-common-lisp/ecl/-/issues

mind that such action requires registration on the gitlab platform.

> 
> Thank you very much for any help you can offer,
> 
> Brandon Hale

Best regards,
Daniel

--
Daniel Kochmański ;; aka jackdaniel | Przemyśl, Poland
TurtleWare - Daniel Kochmański      | www.turtleware.eu

"Be the change that you wish to see in the world." - Mahatma Gandhi




More information about the ecl-devel mailing list