Re: resolution of symlinks in asdf
Nikodemus Siivola <[email protected]>
| Newsgroups | gmane.lisp.cclan.general |
|---|---|
| Message-ID | <[email protected]> |
Kevin Layer <[email protected]> writes: > The problem is, asdf's defsystem macro follows the symlink of the > *load-truename*. That is, if the defsystem form is in foo.asd, which > is a symlink to a source directory, the output files will go into the > source directory. > > I added an option for getting around this behavior, :resolve-symlinks. > The changes are backward compatible--no existing program will break > due to the additional option. While the patch seems basically OK, there is a catch: I think working with OUTPUT-FILES would actually be the right solution: global settings (affecting all users of a specific system) should be reflected in the DEFSYSTEM form, whereas local settings can be implemented via overriding methods. (Global needs not catered to by DEFSYSTEM options do that too, but that is a different story.) Unfortunately using an OUTPUT-FILES :AROUND is not going to work, because as you later note, the original path information has been lost by the time OUTPUT-FILES is run. ASDF-BINARY-LOCATIONS works around this by having a mapping from lisp-implementation + asdf-system + asdf-module + asdf-component to a tree under a global or per-user root, but that isn't really what you want. It isn't immediately obvious to me what the Right Thing would be (while remaining backwards compatible), but I'm willing to believe :RESOLVE-SYMLINKS is an acceptable compromise. Unless there is hue and cry before next tuesday (30th), I'll merge this soonish after that. Cheers, -- Nikodemus Schemer: "Buddha is small, clean, and serious." Lispnik: "Buddha is big, has hairy armpits, and laughs."