From 22f8cb48f4abfa1c0611945d128064f03be3db71 Mon Sep 17 00:00:00 2001 From: Avery Pennarun Date: Fri, 19 Nov 2010 07:32:16 -0800 Subject: [PATCH] redo-ifchange: call builder directly, rather than forking redo. Now we no longer rebuild the same stuff over and over! --- redo-ifchange.py | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/redo-ifchange.py b/redo-ifchange.py index d0e9472..a9951b7 100755 --- a/redo-ifchange.py +++ b/redo-ifchange.py @@ -1,6 +1,6 @@ #!/usr/bin/python import sys, os, errno -import vars, state +import vars, state, builder from helpers import debug, err, mkdirp, unlink @@ -39,10 +39,16 @@ def dirty_deps(t, depth, fromdir=None): return False +def maybe_build(t): + if dirty_deps(t, depth = ''): + builder.build(t) + + if not vars.TARGET: err('redo-ifchange: error: must be run from inside a .do\n') sys.exit(100) +rv = 202 try: want_build = [] for t in sys.argv[1:]: @@ -50,7 +56,7 @@ try: if dirty_deps(t, depth = ''): want_build.append(t) - if want_build: - os.execvp('redo', ['redo', '--'] + want_build) + rv = builder.main(want_build, maybe_build) except KeyboardInterrupt: sys.exit(200) +sys.exit(rv)