2.26.9: Another major rewrite of traverse, to propagate timestamps correctly.
This fixes the major issue whereby asdf's operation-done-p was failing to check the timestamps of dependencies, only checking those of the immediate operation. https://bugs.launchpad.net/asdf/+bug/1087609 This rewrite is also a vast simplification: * we rely purely on filesystem timestamps of files * we stop using get-universal-time and therefore eschew clock skews issues between processor and filesystem * we do away with the ugly do-first dependencies, previously made necessary by the way get-universal-time messed with load timestamps. * we simplify the protocol to visit components, with a better internal API that we use twice: once, recursively, in traverse, and once, shallowly, in compute-action-stamp (the new internals for operation-done-p). * make-sub-operation is drastically simplified. For the sake of backward-compatibility, the code style had to be contrived, notably introducing a special variable *stamp*, supporting dual modes for operation-done-p, and keeping the old names of many functions that would better be renamed.
Showing
- asdf.asd 4 additions, 3 deletionsasdf.asd
- asdf.lisp 297 additions, 326 deletionsasdf.lisp
- test/dweinreb-tests.lisp 2 additions, 4 deletionstest/dweinreb-tests.lisp
- test/script-support.lisp 3 additions, 0 deletionstest/script-support.lisp
- test/test-module-excessive-depend.asd 4 additions, 6 deletionstest/test-module-excessive-depend.asd
- test/test-module-excessive-depend.script 3 additions, 6 deletionstest/test-module-excessive-depend.script
This diff is collapsed.
Please register or sign in to comment