>>>>> "Gareth" == Gareth McCaughan <[EMAIL PROTECTED]> writes:
Gareth> I am, I'm sure, just about unique in feeling that I don't fully
Gareth> grasp the Common Lisp pathname facility. So, what am I
No, you're not. I ALWAYS have to read the spec to figure out what's
supposed to happen.
[snip]
Gareth> (setf (logical-pathname-translations "cl-library")
Gareth> '(("**;*.*.*" "/home/gjm11/u/lib/lisp/**/")))
Shouldn't the translation to be
'(("**;*.*.*" "/home/gjm11/u/lib/lisp/**/*.*"))
But I guess that works.
Gareth> I have a pile of packages under ~/u/lib/lisp; for instance,
Gareth> the one I'm currently trying to get to work is Elephant, at
Gareth> /home/gjm11/u/lib/lisp/elephant/ . In its ASDF system
Gareth> definition, I've put
Gareth> :pathname #p"cl-library:elephant;"
I think asdf doesn't really support logical pathnames. But I'm not a
real asdf user.
Gareth> A more self-contained illustration of what confuses me:
Gareth> * (merge-pathnames #p"foo.lisp" #p"cl-library:zog;")
Gareth> #p"/zog/foo.lisp"
Ok. I think this is right, or at least not totally wrong. First,
(describe #p"foo.lisp") says:
#P"foo.lisp" is a structure of type PATHNAME.
HOST: #<LISP::UNIX-HOST>.
DEVICE: NIL.
DIRECTORY: NIL.
NAME: "foo".
TYPE: "lisp".
VERSION: NIL.
so the host is already set, so we can't use the host from the default
pathname. The directory is not set, so we can use the (absolute)
directory component from the default. The result should then be
#p"/zog/foo.lisp".
To get what you want, I think you need
(merge-pathnames (make-pathname :host nil :name "foo" :type "lisp")
#p"cl-library:zog;")
=> #P"CL-LIBRARY:ZOG;FOO.LISP"
But asdf doesn't do that, I think.
Ray