diff --git a/redo-ifchange.py b/redo-ifchange.py index d178c71..412052c 100755 --- a/redo-ifchange.py +++ b/redo-ifchange.py @@ -95,7 +95,8 @@ def should_build(t): f = state.File(name=t) if f.is_failed(): raise builder.ImmediateReturn(32) - return dirty_deps(f, depth = '', max_changed = vars.RUNID) + dirty = dirty_deps(f, depth = '', max_changed = vars.RUNID) + return dirty==[f] and DIRTY or dirty rv = 202 diff --git a/redo-oob.py b/redo-oob.py index 9b989a7..a60fc0a 100755 --- a/redo-oob.py +++ b/redo-oob.py @@ -10,6 +10,9 @@ if len(sys.argv[1:]) < 2: target = sys.argv[1] deps = sys.argv[2:] +for d in deps: + assert(d != target) + me = state.File(name=target) os.environ['REDO_NO_OOB'] = '1' diff --git a/state.py b/state.py index 103bfb6..3965236 100644 --- a/state.py +++ b/state.py @@ -262,6 +262,7 @@ class File(object): reldep = relpath(dep, vars.BASE) debug2('add-dep: %r < %s %r\n' % (self.name, mode, reldep)) assert(src.name == reldep) + assert(self.id != src.id) _write("insert or replace into Deps " " (target, mode, source) values (?,?,?)", [self.id, mode, src.id]) diff --git a/t/stamp/stamptest.do b/t/stamp/stamptest.do index 8b98df0..68576d8 100644 --- a/t/stamp/stamptest.do +++ b/t/stamp/stamptest.do @@ -56,3 +56,9 @@ redo-ifchange usestamp usestamp2 [ "$(wc -l