François-René ÐVB Rideau écrivait:
Your manual (asdf:load-system ...) from the .asd file is equivalent to a :defsystem-depends-on dependency. It creates a dependency at system-definition-time, but not at runtime. Not at runtime, ergo, not to be included in the executable.
No, this is wrong. Like I said, there is ALSO a load-time (indirect) dependency on the setup system via :depends-on, so the setup system IS included in the executable.
If it defines packages that are required in the executable, it MUST be added as a load-time dependency as well as a system-definition-time dependency.
Which, again, is exactly the case. After sleeping over it, I have a different hypothesis: a problem in the execution order of everything that's dumped. The reason for the LOAD-SYSTEM call is for this line in the system definition:
:version #.(net.didierverna.clon.setup:version :short)
So I don't really know how program-op works in ECL (in particular, what it does with the .asd files), but now I think that at the time this above function needs to be called, the setup system isn't hot yet, and so its package hasn't been created.
Regardless, if that's indeed the case, the conclusion remains the same: in order to "program-op" a system depending on Clon with ECL, an explicit dependency on clon.setup needs to be added first.
The other obvious solution would be for ASDF to let me provide a form to be executed without the need for #., but I seem to recall that you didn't want such things to be possible in system definitions.