On 29 June 2010 16:31, Robert Goldman rpgoldman@sift.info wrote:
Here I think I disagree with Fare. I think a build tool needs to "know" when dependencies are broken, and having it try to blindly load systems that are named the same, but that are of the wrong version, seems deeply undesirable to me.
I don't think we really disagree all that much. It's good that ASDF should check that systems being used are indeed compatible. But it doesn't and shouldn't try to resolve compatibility constraints amongst a pool of available systems. It picks the one and only configured system with a given name and checks that it's indeed the expected version. If the constraint language is made richer, it will be nice if ASDF can keep doing checking. But I think it's a very bad design to ever try to add the constraint resolution in ASDF itself.
To be honest, I don't think it's particularly helpful to think of ASDF as a "build tool." I think that, given CL's nature as a dynamic language, it's more productive to think of ASDF as a tool for loading software *and maintaining consistency of the lisp image*. ASDF must react to changing states of systems within a long-term running lisp session, which is very different from the much simpler task that must be performed by make.
If only... Unhappily, my experience with making ASDF itself upgradable has taught me that CL is very ill-suited to code upgrade, and that there's no easy reliable modification you can make to the image besides adding new code. So no real "change of state", only "building".
Even taking that into account, I think that it's possible that having make be only a simple build tool may not be ideal. I'm sure we've all had one of those experiences where we thrashed about and lost a bunch of time because of version skew when building a system through make. For that matter, configure is essentially an expert system that tries to guess, based on various probes, whether version dependencies are satisfied...
dpkg can do much more than that. It can actually do the NP-complete constraint solving.
--#f He who says he will die for a cause will probably lie for it and may kill for it. — John McCarthy