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!


Reply via email to