diff --git a/builder.py b/builder.py index 783d6e4..febfeb6 100644 --- a/builder.py +++ b/builder.py @@ -70,6 +70,7 @@ class BuildJob: (dofile, basename, ext) = _find_do_file(t) if not dofile: if os.path.exists(t): + state.stamp(t) return self._after2(0) else: err('no rule to make %r\n' % t) diff --git a/t/deps/.gitignore b/t/deps/.gitignore index efb409b..4dfb618 100644 --- a/t/deps/.gitignore +++ b/t/deps/.gitignore @@ -2,3 +2,5 @@ t1a t2.count overwrite overwrite[123] +genfile2 +genfile.log \ No newline at end of file diff --git a/t/deps/clean.do b/t/deps/clean.do index fc9a0cc..a1d9f1e 100644 --- a/t/deps/clean.do +++ b/t/deps/clean.do @@ -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 + diff --git a/t/deps/genfile1.do b/t/deps/genfile1.do new file mode 100644 index 0000000..2f85915 --- /dev/null +++ b/t/deps/genfile1.do @@ -0,0 +1,2 @@ +redo-ifchange genfile2 +echo $$ >>genfile.log diff --git a/t/deps/gentest.do b/t/deps/gentest.do new file mode 100644 index 0000000..5b6772e --- /dev/null +++ b/t/deps/gentest.do @@ -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