Clozure / ccl

Clozure Common Lisp
http://ccl.clozure.com
Apache License 2.0
840 stars 105 forks source link

stack overflow when wild pathname on asdf:*central-registry* #486

Open xrme opened 2 months ago

xrme commented 2 months ago

Someone is messing up here. :-)

? (require 'asdf)
ASDF
("uiop" "UIOP" "asdf" "ASDF")
? (pushnew #p"home:someplace;**" asdf:*central-registry*)
(#P"home:someplace;**")
? (asdf:find-system :foo)
> Error: While searching for system "foo": #P"home:someplace;**" evaluated to #P"home:someplace;**" which is not an absolute directory.
> While executing: ASDF/SYSTEM-REGISTRY:SYSDEF-CENTRAL-REGISTRY-SEARCH, in process listener(1).
> Error: Can't reliably convert wild pathname #P"home:someplace;**"
> While executing: (:INTERNAL ASDF/SYSTEM-REGISTRY:SYSDEF-CENTRAL-REGISTRY-SEARCH), in process listener(1).
> Error: Can't reliably convert wild pathname #P"home:someplace;**"
> While executing: (:INTERNAL ASDF/SYSTEM-REGISTRY:SYSDEF-CENTRAL-REGISTRY-SEARCH), in process listener(1).
...
Unrecoverable stack overflow.
? for help
[62046] Clozure CL kernel debugger: 
svspire commented 2 months ago

(pushnew #p"home:someplace;" asdf:*central-registry*) ; works

ASDF appears to want only non-wild directory pathnames on the *central-registry*. That's no excuse for an unrecoverable stack overflow, but it seems to be the case.

Also ASDF hates logical pathnames with a passion that is both justified and stupid. Justified because logical pathnames are specified incorrectly in the hyperspec, and stupid because some implementations like CCL ignore the wrongness and do the right thing anyway, and so should ASDF in my opinion.

Also asdf:*central-registry* has been deprecated and they want everybody to use the source-registry now.