Gary King wrote:
Perhaps a better solution would be to export OPERATION-FORCED and TRAVERSE, so that this could be deal with where-ever is needed -- especially in local initialization files for systems installed in read-only locations. The SBCL solution would look about the same -- it just would not reside inside asdf.lisp.
This seems like a reasonable solution.
I agree. There are probably two items here:
- Allowing a system definer to say "don't descend into this sub-system"
even when :force is t.
- Allowing a system user to say "I want to force the recompilation of
this system but not the systems on which it depends"
For #1, I'd suggest adding a slot to system that controls how force behaves. Ideas include
* read-only (to mean that the system cannot be edited or recompiled.) * ignore-force (to mean, well, ignore force).
For #2, I'd suggest using
recompile everything
- :force t
- :force :descend
recompile only the current system
- :force :system-only
Both of these seem worthwhile to me. I'd even have to implement them tonight if people like the idea!? (he said optimistically).
Far better than my suggestion of a separate keyword argument to modulate the effects of :force....