On 2015/12/14 23:39, John Pallister wrote:
[…]
> That is, merging a relative path with the (absolute) JFAD path retained the
> default JAR file "device" (and remains a relative path, which ASDF won't
> accept), but merging an absolute path reset the device component. I've read
> through the documentation for MERGE-PATHNAMES in the HyperSpec[2] and
> AFAICT the device component should be copied across. I'm reasonably
> confident that if it were, things would work better. But I could be
> (doubly) wrong.
>
> I am trying to figure this out for myself, but I'm stuck for now, so I'm
> hoping someone (i.e. Mark) can, on reading this, offer some guidance as to
> where I should go from here. I haven't (yet) tried posting to the ASDF
> mailing list as this seems like a fairly ABCL-specific issue.
>
[…]
You are probably being bit here by the shenanigans noted in section
1.1.1 entitled "ANSI Common Lisp" of the [User Manual][1]:
[…]
When merging pathnames and the defaults point to a EXT:JAR-PATHNAME, we
set the DEVICE of the result to :UNSPECIFIC if the pathname to be be
merged does not contain a specified DEVICE, does not contain a specified
HOST, does contain a relative DIRECTORY, and we are not running on a
MSFT Windows platform.
[…]
[Footnote] The intent of this rather arcane sounding deviation from
conformance is so that the result of a merge won’t fill in a DEVICE with
the wrong ”default device for the host” in the sense of the fourth
paragraph in the CLHS description of MERGE-PATHNAMES (see in [P+96] the
paragraph beginning ”If the PATHNAME explicitly specifies a host and not
a device”). A future version of the implementation may return to
conformance by using the HOST value to reflect the type explicitly.
[…]
[1]: http://abcl.org/releases/1.3.3/abcl-1.3.3.pdf
If desired, one can study the current aim of the implementation in using
the DEVICE field to represent a JAR file via the [url-pathname][2] and
[jar-pathname][3] design notes. More history can be gleaned with the
[notes on the last time I mucked with MERGE-PATHNAMES][4].
[2]:
http://abcl.org/trac/browser/trunk/abcl/doc/design/pathnames/url-pathnames.markdown
[3]:
http://abcl.org/trac/browser/trunk/abcl/doc/design/pathnames/jar-pathnames.markdown
[4]:
http://abcl.org/trac/browser/trunk/abcl/doc/design/pathnames/merging-defaults.markdown
Could you provide the values for LISP-IMPLEMENTATION-VERSION executed on
your GAE container?
I need more time to analyze what the right way forward would be if we
need to fix the MERGE-PATHNAME semantics, as I need to preserve a whole
lot of edge cases for which I don't have time to develop reliable tests.
Time. Slipping like a river, into the future.
--
"A screaming comes across the sky. It has happened before, but there
is nothing to compare to it now."