Use os.lstat() instead of os.stat().

I think this aligns better with how redo works.  Otherwise, if a.do
creates a as a symlink, then changes to the symlink's *target* will
change a's stat/stamp information without re-running a.do, which looks
to redo like you modified a by hand, which causes it to stop running
a.do altogether.

With this change, modifications to a's target are okay, but they don't
trigger any redo dependency changes.  If you want that, then a.do
should redo-ifchange on its symlink target explicitly.
This commit is contained in:
Avery Pennarun 2018-10-06 00:14:02 -04:00
commit 34669fba65
8 changed files with 47 additions and 2 deletions

View file

@ -10,4 +10,5 @@ rm -f fail
touch fail
../flush-cache
# since we created this file by hand, fail.do won't run, so it won't fail.
redo-ifchange fail >&/dev/null || exit 55 # expected to pass