Comment 9 for bug 1660547

Revision history for this message
Daniel KochmaƄski (jackdaniel) wrote :

Not sure what's there to understand. Two files, one is "vanilla" (not using external dependencies), second makes use of symbols in the dependencies defined: alexandria, sb-bsd-sockets (pulled indirectly by usocket) and asdf:

(print `(alex ,(alexandria:ensure-list 1)
         sb-s ,sb-bsd-sockets::+AF-LOCAL+
         asdf ,asdf::*asdf-version*))

Being able to access a symbol is a proof, that package is available in the program. If you want to, you may wrap this snippet in a function and make it an entry point.

ECL ships with ASDF which has UIOP included, but it's not built-in in the image. That means in particular, that since ECL has a clear separation of build phase and runtime, that having required ASDF for building phase doesn't mean that it will be included in the executable. Depending only on UIOP may pull standalone UIOP from the registry (i.e QL distribution) which doesn't have ASDF, but depending on ASDF picks nothing, because there is no ASDF system.

ECL names prebuilt ASDF system prebuilt-asdf and has it in its lib directory:

(defsystem "prebuilt-asdf" :class asdf::prebuilt-system
        :lib #P"SYS:LIBASDF.A"
        :depends-on ("cmp")
        :components ((:compiled-file "prebuilt-asdf" :pathname #P"SYS:ASDF.FAS")))

I hope that this helps with your understanding of this code. Regarding supporting things, its up to you, each library decides which implementations it wants to support.