If a target's .do file disappears, don't forget to stamp it.

If a file previously was generated but now isn't (ie. its .do file
disappears), we would never re-stamp that target, and so all its
dependencies would rebuild continually.
This commit is contained in:
Avery Pennarun 2010-11-24 03:37:30 -08:00
commit 0ec15eeb09
6 changed files with 28 additions and 3 deletions

2
t/deps/.gitignore vendored
View file

@ -2,3 +2,5 @@ t1a
t2.count
overwrite
overwrite[123]
genfile2
genfile.log

View file

@ -1,3 +1,4 @@
redo basic/clean dirtest/clean
rm -f *~ .*~ *.count t1a overwrite overwrite[123]
rm -f *~ .*~ *.count t1a overwrite overwrite[123] genfile2 genfile.log

2
t/deps/genfile1.do Normal file
View file

@ -0,0 +1,2 @@
redo-ifchange genfile2
echo $$ >>genfile.log

20
t/deps/gentest.do Normal file
View file

@ -0,0 +1,20 @@
rm -f genfile2 genfile2.do genfile.log
echo echo hello >genfile2.do
. ../flush-cache.sh
redo genfile1
# this will cause a rebuild:
# genfile1 depends on genfile2 depends on genfile2.do
rm -f genfile2.do
. ../flush-cache.sh
redo-ifchange genfile1
# but genfile2.do was gone last time, so genfile2 no longer depends on it.
# thus, it can be considered up-to-date. Prior versions of redo had a bug
# where the dependency on genfile2.do was never dropped.
. ../flush-cache.sh
redo-ifchange genfile1
COUNT=$(wc -l <genfile.log)
[ "$COUNT" = 2 ] || exit 77

View file

@ -1,2 +1 @@
redo test1 test2 ifchange-fail overwrite basic/test dirtest/test
redo test1 test2 ifchange-fail overwrite gentest basic/test dirtest/test