quicklisp / quicklisp-client

Quicklisp client.
http://www.quicklisp.org/
MIT License
298 stars 75 forks source link

Support installing non-primary systems not explicitly defined in .asd #139

Open daewok opened 7 years ago

daewok commented 7 years ago

When using ASDF's package-inferred-system, not all systems are explicitly defined in the .asd file, and therefore do not get picked up during the metadata generation. This makes it impossible to load these subsystems directly (for example: "lil/pure/all").

This patch solves this by trying to find a system in a dist by its primary name (the part before the first slash) if it is not found verbatim. If the minimum ASDF version is upped in the future, I recommend replacing much of this with asdf:primary-system-name.

quicklisp commented 7 years ago

I believe this is fixed on the ASDF side, which re-runs search functions with the primary name if the original name is not found.

daewok commented 7 years ago

That works only if the release containing the system has already been installed.

daewok commented 7 years ago

(updated title and commit message to make it more clear the issue exists when trying to install the systems)

svetlyak40wt commented 11 months ago

This problem bother me too.

But I've used another approach – patched ql::compute-load-strategy function like this: https://github.com/40ants/quicklisp-client-fix/blob/master/quicklisp-fix.lisp#L3C8-L3C29

@quicklisp are there any change that some of these approaches will be merged into the upstream?

Or probably we could make a hook instead of ql::compute-load-strategy which will allow to replace the original function with an alternative?