[asdf-devel] test-logical-pathnames hangs on ACL 8.2 on Mac OS X

Robert Goldman rpgoldman at sift.info
Sun Jan 6 22:53:22 UTC 2013


I get to

Test logical pathnames in source-registry, recursive

and ACL goes away seemingly forever.

The reason, I believe, is that this:

#+allegro #.(asdf::pathname-root #p"ASDF:")

returns "/" for me.

When I look, I see that pathname-root is losing the host name somehow:

CL-USER> (pathname-host #P"HOME:")
"HOME"
CL-USER> (pathname-host (pathname-root #P"HOME:"))
NIL

As far as I can tell messing around in the REPL, it's the specification
of both :defaults #P"HOME" *and* :host NIL when MAKE-PATHNAME* calls
MAKE-PATHNAME that does the damage:  on ACL the :host NIL seems to smash
the value for :host that would come from the defaults:

CL-USER> (make-pathname :defaults #P"HOME:" :name "foo" :type "lisp"
:host nil)
#P"foo.lisp"
CL-USER> (make-pathname :defaults #P"HOME:" :name "foo" :type "lisp")
#P"HOME:foo.lisp"

The ANSI spec for make-pathname says "After the components supplied
explicitly by host, device, directory, name, type, and version are
filled in, the merging rules used by merge-pathnames are used to fill in
any unsupplied components from the defaults supplied by defaults."

So I think it's an acceptable interpretation that the :host field should
be cleared in the return value of MAKE-PATHNAME.

Would it be possible to modify make-pathname* so that instead of passing
defaults through to make-pathname as it does now, it would *unpack* the
defaults argument into fields of the return value?

I will try some experiments.

cheers,
r




More information about the asdf-devel mailing list