On 12/20/15 Dec 20 -12:14 PM, Raymond Toy wrote: >>>>>> "Robert" == Robert Goldman <rpgold...@sift.net> writes: > > Robert> On 12/19/15 Dec 19 -2:32 PM, Raymond Toy wrote: > >> > >> Not sure how this ever worked with cmucl, but user-homedir-pathname on > >> cmucl returns #p"home:", where "home:" is a search-list. In some > >> cases, it looks like asdf is trying to create the cache directory and > >> end up with a path like > >> > >> P"home:.cache/common-lisp/cmu-21a__21a_unicode_-macosx-x86/**/*.*.~*~" > >> > >> but this confuses other parts of asdf and cmucl when trying to run > >> pathname-match-p. > >> > >> Perhaps the best thing is to make asdf us a custom > >> user-homedir-pathname like what is done with other lisps. An > >> appropriate version would be > >> > >> (defun user-homedir-pathname () > >> (first (ext:search-list (cl:user-homedir-pathname)))) > > Robert> Hi, Ray -- > > Robert> I will be happy to make this modification. > > Robert> Can you provide a test that will barf when using the current, > incorrect > Robert> form of user-homedir-pathname? > > Here's a really simple test: > > (defun test () > (pathname-match-p (cl:user-homedir-pathname) > (first (ext:search-list > (cl:user-homedir-pathname)))))
Hm. That doesn't seem like a good test for me to add to the suite because it fails for me even after I have applied your patch. I think what we want is this, right? (defun test () (pathname-match-p (uiop/common-lisp:user-homedir-pathname) (first (ext:search-list (cl:user-homedir-pathname))))) that fails on master, and passes with your patch. It's not particularly clear to anyone who's not familiar with CMUCL. Is there a way to illustrate the issue without reference to EXT:SEARCH-LIST? Or can you provide a comment for this? If I just drop this form into the test suite, I foresee it creating great confusion for some poor shlub (possibly me) who reads in > 6 months from now.... Looking at the context in which the error occurs (if I'm right), I think it's in APPLY-OUTPUT-TRANSLATIONS in output-translations.lisp. It seems like we're doing *SOMETHING* with USER-HOMEDIR-PATHNAME followed by merging that causes PATHNAME-MATCH-P in this function to error out. But to be honest, I have no idea what's going wrong, or why it's ASDF's fault. If you merge a pathname with USER-HOMEDIR-PATHNAME's return value, it seems to me you ought to be able to call PATHNAME-MATCH-P on the result. It seems like you're saying it's something about the way that search-lists deal with nonexistent directories. Is that right? Or is this because when we merge we aren't appropriately creating something that's a wildcard pathname? Pretty lost here, actually. Thanks, r