user-homedir-pathname on cmucl

Robert Goldman rpgoldman at
Mon Jan 4 14:44:26 UTC 2016

Thanks for the response.  I have a test.  I'm just making sure it works
on all the implementations, and then I will push it as a new ASDF version.

Let me know if/when you are thinking of slurping this into the new CMUCL
release, and I will make a patch release of ASDF for you.  Going
forward, I'd prefer to see implementations bundle an official ASDF
release, instead of some random git state....


On 12/31/15 Dec 31 -3:54 PM, Raymond Toy wrote:
>>>>>> "Robert" == Robert Goldman <rpgoldman at> writes:
>     Robert> On 12/20/15 Dec 20 -12:14 PM, Raymond Toy wrote:
>     >>>>>>> "Robert" == Robert Goldman
>     >>>>>>> <rpgoldman at> writes:
>     >>
> I thought I had sent a response to this, but I guess not.
>     Robert> I think what we want is this, right?
>     Robert> (defun test () (pathname-match-p
>     Robert> (uiop/common-lisp:user-homedir-pathname) (first
>     Robert> (ext:search-list (cl:user-homedir-pathname)))))
>     Robert> that fails on master, and passes with your patch.
> Yeah, that's the correct version.
>     Robert> It's not particularly clear to anyone who's not familiar
>     Robert> with CMUCL.  Is there a way to illustrate the issue
>     Robert> without reference to EXT:SEARCH-LIST?  Or can you provide
> The whole issue is the search-list and how pathname-match-p doesn't
> handle it.
> Here's a separate example of the issue.
> (setf (search-list "tmp:") '("/tmp/"))
> (pathname-match-p #p"/tmp/foo.lisp" "tmp:foo.lisp") gives an error.
> But if you had a logical-pathname host "temp", then
> (pathname-match-p #p"/tmp/foo.lisp" "temp:*.lisp") doesn't signal an
> error.  It actually returns nil, which doesn't seem quite right if
> there's a translation ("*.lisp" "/tmp/*.lisp").
> Ugh. I hate pathname issues.
>     Robert> comment for this?  If I just drop this form into the test
>     Robert> suite, I foresee it creating great confusion for some poor
>     Robert> shlub (possibly me) who reads in > 6 months from now....
> A comment is that asdf doesn't want to use search-lists for
> user-homedir-pathname,  Convert it to a physical pathaname.
>     Robert> It seems like we're doing *SOMETHING* with
>     Robert> USER-HOMEDIR-PATHNAME followed by merging that causes
>     Robert> PATHNAME-MATCH-P in this function to error out.
>     Robert> But to be honest, I have no idea what's going wrong, or
>     Robert> why it's ASDF's fault.  If you merge a pathname with
>     Robert> USER-HOMEDIR-PATHNAME's return value, it seems to me you
>     Robert> ought to be able to call PATHNAME-MATCH-P on the result.
> Yes, and indeed (merge-pathnames "foo.lisp" (user-homedir-pathname))
> returns "home:foo.lisp" as expected.  But pathname-match-p doesn't
> like search-lists.  I guess that's cmucl's fault.
>     Robert> It seems like you're saying it's something about the way
>     Robert> that search-lists deal with nonexistent directories.  Is
>     Robert> that right?
>     Robert> Or is this because when we merge we aren't appropriately
>     Robert> creating something that's a wildcard pathname?
> I don't know either.
> I will look into making pathname-match-p understand search-lists.
> I'll leave it up to you on whether asdf should use a different
> user-homedir-pathname.  I think it makes some sense for any using
> cmucl with a pathname-match-p fix with newer versions of asdf.
> --
> Ray

More information about the asdf-devel mailing list