Closed mtstickney closed 6 years ago
Personally, I think wookie should get out of the business of loading code itself.
Oh man, you have no idea how much I wish I'd realized that up front, and how much I wished I'd known about middleware before building the stupid plugin system.
Regardless, Wookie is pretty much in stasis for the time being, so it will probably remain how it is (unless somebody wants to rewrite the plugin system).
Thanks for digging in and fixing this.
This PR is a preliminary change to fix issues using quicklisp symbols in the plugin code. I'm afraid I haven't tested it, since I'm really not familiar with wookie's plugin system; if you have suggestions or would like to see a different approach, please let me know.
The problem is that your solution of using macros to avoid errors when quicklisp isn't present is only half-correct. The problem is this: you load the system with quicklisp available, so the macros emit
ql:quickload
& co; asdf caches the resulting fasl file; the system now errors whenever it is loaded from an image without quicklisp (e.g. buildapp with a manifest file) because asdf is loading the cached fasl with quicklisp symbols in it, but the quicklisp package doesn't exist.This branch does a few things:
find-symbol
, and notintern
, because it doesn't have unpleasant side-effects)There are some other changes that could be made as well:
asdf/missing-component:missing-requires
*log-output*
variable is not actually a special variable (I'm guessing this was meant to bevom:*log-stream*
?)Personally, I think wookie should get out of the business of loading code itself. It's a lot of extra complication (there are at least 5 systems for loading lisp code that I know of), and it doesn't seem like it's asking a lot of users to add a system to their dependencies lists and (maybe) insert a one-line
(wookie:register-plugin 'boogle)
line. Still, it's your project; I mostly just want to fix the embedded-symbol issue.