On 9/1/11 Sep 1 -10:40 PM, Robert Goldman wrote: Here's the new problem: when we reload Xach's foo system, we get a new definition with files "a" and "b." Unfortunately, when ASDF reads this new definition, it first says "Oh, file a in system foo --- I have seen that before, and it's already loaded." So when I tell ASDF to load foo (again), it says "a is already loaded, I need only load b." Unfortunately, that is not true --- the OLD "a" component is already loaded, but the NEW one has not been loaded.
...
[Indeed, Faré and I had in the past discussed the possibility that when a new system definition for an existing system is loaded, we should simply regard the entire system as "dirty" and always rebuild everything in it.]
This is a REALLY big change to the behavior of ASDF, so I would like to hear some comments before proposing a patch.
Makefiles handle this by checking timestamps between source and object files. Other build systems do this by checking hashes. However, both approaches rely on dependency tracking and assume that each output is compiled in isolation and everything is relinked at the end.
In a serial CL process (all files loaded/compiled by the same image), the presence or absence of a file may greatly affect all files visited after it. Thus given this interactive image model, I don't think any simple option will work in all cases. The current behavior is reasonable (modulo where the files are found).
Thus, I wouldn't force a rebuild when the system definition changes, but a rebuild might be deserved when the source location changes.
Isn't there an option to force rebuilding of all files in a system? How does that interact with Zach's case?
- Daniel