From 984ad747f84ef0734827e04339fef7dd62480e54 Mon Sep 17 00:00:00 2001 From: Avery Pennarun Date: Wed, 24 Nov 2010 02:48:27 -0800 Subject: [PATCH] Remove special case for "dirname" -> "dirname/all" It actually decreases readability of the .do files - by not making it explicit when you're going into a subdir. Plus it adds ambiguity: what if there's a dirname.do *and* a dirname/all? We could resolve the ambiguity if we wanted, but that adds more code, while taking out this special case makes *less* code and improves readability. I think it's the right way to go. --- builder.py | 3 --- minimal/do | 3 --- redo-ifchange.py | 14 +++++++------- t/.gitignore | 2 ++ t/all.do | 3 ++- t/clean.do | 2 +- t/deps/dirtest/t1.do | 2 +- t/deps/dirtest/t2.do | 2 -- t/deps/dirtest/t3.do | 2 -- t/deps/dirtest/test.do | 34 +++++++++++++++------------------- t/makedir.do | 3 ++- t/makedir2.do | 7 +++++++ t/test.do | 2 +- 13 files changed, 38 insertions(+), 41 deletions(-) delete mode 100644 t/deps/dirtest/t2.do delete mode 100644 t/deps/dirtest/t3.do create mode 100644 t/makedir2.do diff --git a/builder.py b/builder.py index 1a33270..783d6e4 100644 --- a/builder.py +++ b/builder.py @@ -176,9 +176,6 @@ def main(targets, shouldbuildfunc): for i in range(len(targets)): t = targets[i] - if os.path.exists('%s/all.do' % t): - # t is a directory, but it has a default target - targets[i] = '%s/all' % t # In the first cycle, we just build as much as we can without worrying # about any lock contention. If someone else has it locked, we move on. diff --git a/minimal/do b/minimal/do index cf0ccec..8272604 100755 --- a/minimal/do +++ b/minimal/do @@ -73,9 +73,6 @@ _do() redo() { for i in "$@"; do - if [ -e "$i/." ]; then - i="$i/all" - fi _dirsplit "$i" ( cd "$dir" && _do "$dir" "$base" ) || exit $? done diff --git a/redo-ifchange.py b/redo-ifchange.py index 542ce24..4d2b51d 100755 --- a/redo-ifchange.py +++ b/redo-ifchange.py @@ -5,8 +5,13 @@ from helpers import debug, err, mkdirp, unlink def dirty_deps(t, depth): - if os.path.exists('%s/.' % t): - t = '%s/all' % t + try: + st = os.stat(t) + realtime = st.st_mtime + except OSError: + st = None + realtime = 0 + debug('%s?%s\n' % (depth, t)) if state.isbuilt(t): debug('%s-- DIRTY (built)\n' % depth) @@ -20,11 +25,6 @@ def dirty_deps(t, depth): debug('%s-- DIRTY (no stamp)\n' % depth) return True - try: - realtime = os.stat(t).st_mtime - except OSError: - realtime = 0 - if stamptime != realtime: debug('%s-- DIRTY (mtime)\n' % depth) return True diff --git a/t/.gitignore b/t/.gitignore index 608d5f9..3989fa7 100644 --- a/t/.gitignore +++ b/t/.gitignore @@ -8,3 +8,5 @@ test.args test2.args /passfail mode1 +makedir +makedir.log \ No newline at end of file diff --git a/t/all.do b/t/all.do index 2169f2a..668323c 100644 --- a/t/all.do +++ b/t/all.do @@ -1 +1,2 @@ -redo-ifchange hello yellow bellow c d example/ +redo-ifchange hello yellow bellow c d example/all + diff --git a/t/clean.do b/t/clean.do index 27c473d..e4f5666 100644 --- a/t/clean.do +++ b/t/clean.do @@ -1,4 +1,4 @@ redo example/clean curse/clean deps/clean "space dir/clean" -rm -f c c.c c.c.c c.c.c.b c.c.c.b.b d mode1 +rm -f c c.c c.c.c c.c.c.b c.c.c.b.b d mode1 makedir.log rm -f hello [by]ellow *.o *~ .*~ CC LD passfail rm -rf makedir \ No newline at end of file diff --git a/t/deps/dirtest/t1.do b/t/deps/dirtest/t1.do index b9b84b9..48e8643 100644 --- a/t/deps/dirtest/t1.do +++ b/t/deps/dirtest/t1.do @@ -1,2 +1,2 @@ -redo-ifchange dir1/ +redo-ifchange dir1/all echo $$ >>log diff --git a/t/deps/dirtest/t2.do b/t/deps/dirtest/t2.do deleted file mode 100644 index e01695e..0000000 --- a/t/deps/dirtest/t2.do +++ /dev/null @@ -1,2 +0,0 @@ -redo-ifchange dir1 -echo $$ >>log diff --git a/t/deps/dirtest/t3.do b/t/deps/dirtest/t3.do deleted file mode 100644 index 48e8643..0000000 --- a/t/deps/dirtest/t3.do +++ /dev/null @@ -1,2 +0,0 @@ -redo-ifchange dir1/all -echo $$ >>log diff --git a/t/deps/dirtest/test.do b/t/deps/dirtest/test.do index e48de59..2c5f8ee 100644 --- a/t/deps/dirtest/test.do +++ b/t/deps/dirtest/test.do @@ -1,19 +1,15 @@ -touch t?.do -for first in t1 t2 t3; do - for second in t1 t2 t3; do - rm -f log dir1/log dir1/stinky - . ../../flush-cache.sh - redo $first - touch $second.do - . ../../flush-cache.sh - redo $second - . ../../flush-cache.sh - redo-ifchange $second - C1="$(wc -l $second, c1=$C1, c2=$C2" >&2 - exit 55 - fi - done -done +rm -f log dir1/log dir1/stinky +touch t1.do +. ../../flush-cache.sh +redo t1 +touch t1.do +. ../../flush-cache.sh +redo t1 +. ../../flush-cache.sh +redo-ifchange t1 +C1="$(wc -l t1, c1=$C1, c2=$C2" >&2 + exit 55 +fi diff --git a/t/makedir.do b/t/makedir.do index a110c2f..6147e18 100644 --- a/t/makedir.do +++ b/t/makedir.do @@ -1,2 +1,3 @@ -[ -e "$1" ] && rmdir $1 +rm -rf "$1" mkdir $1 +echo $$ >>makedir.log diff --git a/t/makedir2.do b/t/makedir2.do new file mode 100644 index 0000000..9918b69 --- /dev/null +++ b/t/makedir2.do @@ -0,0 +1,7 @@ +rm -f makedir.log +redo makedir +touch makedir/outfile +. ./flush-cache.sh +redo-ifchange makedir +COUNT=$(wc -l &2 redo deltest deltest2 test.args test2.args passfailtest \ - curse/test deps/test "space dir/test" modetest makedir + curse/test deps/test "space dir/test" modetest makedir2