>>>>> On Wed, 12 May 2004 14:00:38 -0400, Raymond Toy ("Raymond") writes:

>>>>> "Chris" == Christopher C Stacy <[EMAIL PROTECTED]> writes:
 Chris> In CMUCL 18e, ASDF 1.84:
 Chris> ASDF is not working for me at all, apparently because 
 Chris> I am defining my logical pathnames wrong.

 Raymond> Pathnames make my head hurt.  Add case, and I get a migraine.

 Chris> Here's a simple example:

 Chris> (setf (logical-pathname-translations "x") 
 Chris> `(("asdf;**;*.*.*"   "/home/cstacy/S/L/asdf/**/")
 Chris> ("uffi;**;*.*.*"   "/home/cstacy/L/uffi-1.4.12/**/")))

 Chris> But that didn't help me at all.  I suppose it had no effect because
 Chris> ASDF:SYSDEF-CENTRAL-REGISTRY-SEARCH makes the actual pathname like:

 Chris> (MAKE-PATHNAME :DEFAULTS DEFAULTS :VERSION :NEWEST
 Chris> :NAME NAME :TYPE "asd" :CASE :LOCAL)

 Raymond> What are the values of default and name here?
 Raymond> I'm trying to reproduce the problem, without having asdf.

(Raymond: Thanks!)

DEFAULTS is a pathname designator representing a directory; it's taken
from the list in ASDF::*CENTRAL-REGISTRY* so depends what you push
onto it.  Each element of *CENTRAL-REGISTRY* is run through EVAL, 
so you can put variable names there, too.  It comes initialized with
the symbol *DEFAULT-PATHNAME-DEFAULTS* on the list.

My entries are like "X:UFFI;" in either string or #P form, in either
upper or lower case. (CMUCL parses the #P syntax for logical pathnames
as being uppercase, so there's only one logical pathname to consider.)

Here's what ASDF is probing for:

Trying this one: "X:UFFI;"
Gives this pathname: #.(logical-pathname "X:UFFI;uffi.asd")
    HOST: #<COMMON-LISP::LOGICAL-HOST>.
    DEVICE: :UNSPECIFIC.
    DIRECTORY: (:ABSOLUTE "UFFI").
    NAME: "uffi".
    TYPE: "asd".
    VERSION: :NEWEST.

Trying this one: "x:uffi;"
Gives this pathname: #.(logical-pathname "X:UFFI;uffi.asd")
    HOST: #<COMMON-LISP::LOGICAL-HOST>.
    DEVICE: :UNSPECIFIC.
    DIRECTORY: (:ABSOLUTE "UFFI").
    NAME: "uffi".
    TYPE: "asd".
    VERSION: :NEWEST.

Trying this one: #.(logical-pathname "X:UFFI;")
    HOST: #<COMMON-LISP::LOGICAL-HOST>.
    DEVICE: :UNSPECIFIC.
    DIRECTORY: (:ABSOLUTE "UFFI").
    NAME: NIL.
    TYPE: NIL.
    VERSION: NIL.
Gives this pathname: #.(logical-pathname "X:UFFI;uffi.asd")
    HOST: #<COMMON-LISP::LOGICAL-HOST>.
    DEVICE: :UNSPECIFIC.
    DIRECTORY: (:ABSOLUTE "UFFI").
    NAME: "uffi".
    TYPE: "asd".
    VERSION: :NEWEST.

Trying this one: *DEFAULT-PATHNAME-DEFAULTS*
   #p"" is a structure of type PATHNAME.
   HOST: #<COMMON-LISP::UNIX-HOST>.
   DEVICE: NIL.
   DIRECTORY: NIL.
   NAME: NIL.
   TYPE: NIL.
   VERSION: :NEWEST.
Gives this pathname: #p"uffi.asd"
    HOST: #<COMMON-LISP::UNIX-HOST>.
    DEVICE: NIL.
    DIRECTORY: NIL.
    NAME: "uffi".
    TYPE: "asd".

The NAME is canonically lowercase; the function COERCE-NAME calls
STRING-DOWNCASE on the symbol (eg. :UFFI) that names the system.
I also tried to call ASDF on a system named "UFFI" (uppercase string)
in order to force the NAME component to uppercase (although I am not
sure if it's really supposed to work to name systems like that).

The TYPE is lowercase; hardwired into SYSDEF-CENTRAL-REGISTRY-SEARCH,

There seems to be some assumptions about the case of the pathname
components - lowercase is built into the code in various places.
It seems to me that this can't ever work, since logical pathnames
are parsed by CMUCL as uppercase.

At this point, I must repeat my call to anyone who is using ASDF.  
(So far only one person has answered, saying that they don't think it
works with logical pathnames!)  I was under the impression that many
people are actively using ASDF in CMUCL, and surely they must be using
logical pathnames.  I must be totally misunderstanding how logical
pathnames are supposed to be used, or how ASDF is supposed to be used.
It works for everyone but me, and I can't see how.

This does not seem to be a new issue.  In the ancient version of ASDF
that I was using for the last year or so, I see that I had hacked it up
to coerce the components to uppercase if they were logical pathnames.  
Apparently that's how I got around the problem before.  Now I am trying
to use the latest version of ASDF because I need to load the latest 
version of UFFI, so I can load the latest version of CL-SQL.  This ASDF
is considerably more complicated, and there isn't a single place where
I can put that same hack.

How is anyone else loading UFFI and CL-SQL ? I know there are users.
Won't someone please just recite the incantations they are using?
Surely the whole problem must be that I am doing something really stupid.

[Please note that I am not on the CCLAN-LIST mailing list, 
so I only see replies that are addressed to me.]

Chris


Reply via email to