user-homedir-pathname on cmucl
Raymond Toy
toy.raymond at gmail.com
Sun Dec 20 18:14:39 UTC 2015
>>>>> "Robert" == Robert Goldman <rpgoldman at 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)))))
Robert> When I run cmucl 20f, I don't have any trouble with the current ASDF,
Robert> and it makes files inside
Robert> ~/.cache/common-lisp/cmu-20f__20f_unicode_-macosx-x86/ just fine.
Robert> So if you could give a concrete example of how this is confusing ASDF
Robert> and CMUCL, I'd appreciate it.
Yeah, I've been using asdf with cmucl for years and have never run
into this problem; it's working just fine for me now.
But I created a new local user for testing some gitlab ci integration,
and it fails with a type error caused by pathname-match-p.
This is what I did:
1. curl -s http://beta.quicklisp.org/archive/rt/2010-10-06/rt-20101006-git.tgz | tar xf -
2. Run cmulisp -noinit and enter
(require :asdf)
(load "rt-20101006-git/rt.asd")
(asdf:oos 'asdf:load-op :rt :force t)
Running asdf causes the error. This user is bare bones; no other lisp
installed anywhere, no quicklisp, not even an .cmucl-init.lisp file.
Ah, I wasn't able to reproduce this with my account, but I see now the
key is that I can't have a ~/.cache directory. Removing it causes an
error.
--
Ray
More information about the asdf-devel
mailing list