diff --git a/builder.py b/builder.py index 7ee69c9..342c5b4 100644 --- a/builder.py +++ b/builder.py @@ -73,7 +73,7 @@ class BuildJob: except ImmediateReturn, e: return self._after2(e.rv) - if dirty == True: + if vars.NO_OOB or dirty == True: self._start_do() else: self._start_oob(dirty) diff --git a/redo-oob.py b/redo-oob.py index 9da8fa6..9b989a7 100755 --- a/redo-oob.py +++ b/redo-oob.py @@ -12,11 +12,14 @@ deps = sys.argv[2:] me = state.File(name=target) -argv = ['redo'] + deps +os.environ['REDO_NO_OOB'] = '1' +argv = ['redo-ifchange'] + deps rv = os.spawnvp(os.P_WAIT, argv[0], argv) if rv: sys.exit(rv) +# we know our caller already owns the lock on target, so we don't have to +# acquire another one. os.environ['REDO_UNLOCKED'] = '1' argv = ['redo-ifchange', target] rv = os.spawnvp(os.P_WAIT, argv[0], argv) diff --git a/vars.py b/vars.py index 534ccff..39a3346 100644 --- a/vars.py +++ b/vars.py @@ -25,3 +25,6 @@ while BASE and BASE.endswith('/'): UNLOCKED = os.environ.get('REDO_UNLOCKED', '') and 1 or 0 os.environ['REDO_UNLOCKED'] = '' # not inheritable by subprocesses + +NO_OOB = os.environ.get('REDO_NO_OOB', '') and 1 or 0 +os.environ['REDO_NO_OOB'] = '' # not inheritable by subprocesses