Note that I have been maintaining my variant of A-B-L as part of cl-launch, and upon noticing that resolve-symlinks had been removed, I immediately issued a new release 2.23 of cl-launch. I for one would welcome A-B-L becoming part of ASDF, so I could have cl-launch just use that (after a transition period). I agree that logical pathnames are indeed broken as specified, and that since at least SBCL enforces the specification, they shouldn't be used. [ François-René ÐVB Rideau | Reflection&Cybernethics | http://fare.tunes.org ] To stay young requires unceasing cultivation of the ability to unlearn old falsehoods. -- Robert Heinlein, "Time Enough For Love" 2009/9/9 Robert Goldman <rpgoldman@sift.info>:
james anderson wrote:
hello;
i recall, that we have started down this path before, but we never got very far, so i would like to pick up the thread again:
what exactly fails (or is just inconsistent) in the respective logical pathname implementations to preclude accomplishing the same thing with logical pathnames? whatever that may be, why is it better to re-implement the functionality for asdf rather than to fix the problem?
Two things rule out logical pathnames as a solution for this problem:
1. They don't actually solve the problem --- in order to get what you want you'd still need to have logic that redirects the binary files to different directories. I.e., we'd have to add logic to differentially define logical pathnames for binaries depending on features of the lisp implementation and then we'd have to add logic to methods for output-files. Gary's A-B-L just fixes this with methods for output-files. So it's a simpler solution and more portable.
2. Logical pathnames are defined in ANSI CL to use case-flattened pathnames. That means they are an extremely poor fit for modern case-sensitive file systems. Some number of existing ASDF systems would break because their directory structures contain case-sensitive pathnames. From the Hyperspec grammar for logical pathname namestrings (section 19.3.1):
"word---one or more uppercase letters, digits, and hyphens."
As long as SBCL hews to the letter of the ANSI spec for logical pathnames, I regard logical pathnames as useless in portable code. I now use them only in code that, for one reason or another, will only run in ACL. [Note that this is /not/ meant as a criticism of the SBCL policy.]
So Gary's existing solution is (a) more portable; (b) simpler; and (c) less damaging to existing ASDF systems; (d) it's done and (e) it's extensively tested in the wild.
I think the only question is whether we should make A-B-L optional as now (but distribute it with stock ASDF) or, as Attila suggests, integrate it fully, but configure it so that it behaves as current stock ASDF.
Best, R
On 2009-09-09, at 14:39 , Robert Goldman wrote:
Gary King wrote:
(cc'd to list)
Damn. The function disappeared recently (by my hand). I didn't realize (obviously) that it was used. I'll fix. Gary,
Maybe this would be a good time to push A-B-L into the ASDF repository? I've always been in favor of this, acnyway, since it's such a critical extension. IMO it would be great if anyone who had ASDF could also get A-B-L with no more work than a call to asdf:oos.
Best, r
On Sep 8, 2009, at 11:17 PM, Robert Goldman wrote:
I just updated, and now can't start up lisp because asdf-binary-locations calls ASDF::RESOLVE-SYMLINKS which seems to have vanished from asdf.lisp.
Any insight?