In CMUCL 18e, ASDF 1.84:
ASDF is not working for me at all, apparently because
I am defining my logical pathnames wrong.
Here's a simple example:
(setf (logical-pathname-translations "x")
`(("asdf;**;*.*.*" "/home/cstacy/S/L/asdf/**/")
("uffi;**;*.*.*" "/home/cstacy/L/uffi-1.4.12/**/")))
With the above logical pathnames, I can do this:
(load "x:asdf;asdf")
; Loading #p"/mnt/bonk/k/S/L/asdf/asdf.x86f".
That pathname works even though it refers to a sambda mount on
a Windows machine (I just thought I'd mention that,
but I don't think SMB is an issue here.)
Now I want to use ASDF to load UFFI.
(UFFI's pathname is a local file system pathname, by the way.)
(pushnew "x:uffi;" asdf:*central-registry* :test #'equal)
=> ("x:uffi;" *DEFAULT-PATHNAME-DEFAULTS*)
(probe-file "X:UFFI;UFFI.ASD")
=> #p"/home/cstacy/L/uffi-1.4.12/uffi.asd"
(probe-file "x:uffi;uffi.asd")
=> #p"/home/cstacy/L/uffi-1.4.12/uffi.asd"
I think the pathname parser just converts all those
components to their canonical case for logical hosts.
Both of those were really uppercase.
(asdf:oos 'asdf:load-op :uffi)
component "uffi" not found
But the pathname that ASDF is probing has some components
in uppercase, and some in lowercase:
#.(logical-pathname "X:UFFI;uffi.asd") is a structure of type LOGICAL-PATHNAME.
HOST: #<COMMON-LISP::LOGICAL-HOST>.
DEVICE: :UNSPECIFIC.
DIRECTORY: (:ABSOLUTE "UFFI").
NAME: "uffi".
TYPE: "asd".
VERSION: :NEWEST.
Probing uffi.asd
#p"uffi.asd" is a structure of type PATHNAME.
HOST: #<COMMON-LISP::UNIX-HOST>.
DEVICE: NIL.
DIRECTORY: NIL.
NAME: "uffi".
TYPE: "asd".
Since ASDF is obviously working for everyone else in the world,
perhaps someone here can shed some light on what I am doing wrong.
Maybe I'm supposed to define my logical host differently?
When I asked this on comp.lang.lisp, someone suggested using
MAKE-PATHNAME like this:
("uffi;**;*.*.*" ,(make-pathname
:directory '(:absolute "home" "cstacy" "L" "uffi-1.4.12"
:wild-inferiors)
:name :wild :type :wild :version :wild))
But that didn't help me at all. I suppose it had no effect because
ASDF:SYSDEF-CENTRAL-REGISTRY-SEARCH makes the actual pathname like:
(MAKE-PATHNAME :DEFAULTS DEFAULTS :VERSION :NEWEST
:NAME NAME :TYPE "asd" :CASE :LOCAL)
(Is that :LOCAL case really supposed to be there?)
Could someone just please show me a working example of a use
of LOGICAL-PATHNAME-TRANSLATIONS in conjunction with ASDF?
I'm baffled as to what the problem could be, and apparently
whatever everyone else does, just works, so I am being very
dense somewhere along the way!