I think I may have stumbled on an incompleteness in this method.
Here's the test case:
1. Define a system. S1, with a version loaded from a version file;
2. Load S1 into session.
3. Hack hack hack.
4. Bump S1's version number in the version.lisp-expr file
5. Load S2 that depends on new version of S1.
As far as I can tell, ASDF is simply checking the .asd file, not
S1-version.lisp-expr, to see if it's stale. So my load in step 5 is
failing.
This is, I believe, because S1-version.lisp-expr is not in the set of
INPUT-FILES for S1's DEFINE-OP.
It's a little unsettling to change this on the fly, but I think the
right thing is probably to push the version.lisp-expr file onto a set of
ancillary dependencies when it's read.
If this sounds right, I'll stick this in as a ticket, and try to find
where we could inject a fix.
Best,
r