Impact on modifying the current planning code (was Re: Plans for ASDF 3.3)
rpgoldman at sift.net
Thu May 4 16:13:09 UTC 2017
On 5/4/17 May 4 -11:01 AM, Alan Ruttenberg wrote:
> Here is what I see a problem is: ASDF only resolves dependencies on a
> system by system basis. The cross-system link is that if system B
> depends on system A we can avoid loading A if it has already been
> loaded. If an identical source file happens to be in both B and A that
> isn't recognized, but also doesn't have consequence - the functions in
> it are redefined.
That's correct. If you want to build a composite system with A and B,
you should create a system C that depends on both.
Note that this problem you cite for Maven really exists for ASDF anyway.
If you have two lisp systems that collide with each other (e.g.,
package collision), then you lose with ASDF.
So I think what you have to do here is track the Maven dependencies,
detect incompatible versions of a single library, and throw an error for
the programmer to fix if it happens.
Note that this reminds me that ASDF currently (for Lisp) doesn't support
a maximum version number, only a minimum. I keep meaning to fix that,
but never get around to it. And yes, it does happen, I have had systems
that relied on, e.g., older versions of XMLS. For now we handled that
by pinning revisions in the RCS, but that can be problematic if you get
the ASDF config wrong.
More information about the asdf-devel