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."
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.