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