Closed mtstickney closed 6 years ago
I've been doing more testing, and it looks like I was mistaken the first time around -- what I observed was caused by the (to-be-fixed) assumption that system file names match system names in the slot-unbound
method for a release's provided-systems
slot, and an incorrect hack to blacklist some of wookie's plugin systems on my part.
As far as I can tell, quicklisp correctly adds new systems to the index when find-system-in-dist
is called, provided that the system names match. Apologies for the false-positive report.
I'm tracking down an issue I ran into when loading systems via qlot. After much debugging, I think I've found an issue in quicklisp that causes it.
qlot is doing the following when installing a dist (paraphrased a bit):
When
install-dist
is called, theslot-unbound
method on the dist'sprovided-systems
slot causesinitialize-system-index
to be called, which correctly picks up systems. However when installing a release in the second step, theslot-unbound
method for the release'sprovided-systems
slot only references the dist'ssystem-index
slot, notprovided-systems
. Theslot-unbound
method forsystem-index
only creates a default hash-table, and does not initialize the system index; the release install winds up bombing out becausefind-system-in-dist
has returnednil
for a bunch of the dist's systems.In this case, qlot could be modified to save the dist returned by
install-dist
instead of re-creating it from the distinfo file, but this seems an issue on the quicklisp side of things too. The most obvious would be to have theslot-unbound
method for thesystem-index
slot on dists do the initialization, so you always get an initialized index, but that causes an infinite loop (initialize-system-index
retrievessystem-index
to check for items initialized via CDB).Does this sound like a genuine issue in quicklisp, and if so, any ideas for a fix? I'll keep playing with it, and if I come with anything compelling I'll submit a PR.