From f644f3bd0433d7a85b9933759006a9fb5e1b9865 Mon Sep 17 00:00:00 2001 From: Avery Pennarun Date: Sun, 21 Nov 2010 03:34:32 -0800 Subject: [PATCH] Remove the need for relpath (and thus abspath) in builder.py. --- builder.py | 21 +++++++++++++-------- vars.py | 1 + 2 files changed, 14 insertions(+), 8 deletions(-) diff --git a/builder.py b/builder.py index 71a2544..fd5a0f3 100644 --- a/builder.py +++ b/builder.py @@ -1,6 +1,6 @@ import sys, os, subprocess, random import vars, jwack, state -from helpers import log, log_, relpath, debug2, err, unlink +from helpers import log, log_, debug2, err, unlink class BuildError(Exception): @@ -32,13 +32,19 @@ def _find_do_file(t): def _preexec(t): + td = os.environ.get('REDO_PWD', '') + dn = os.path.dirname(t) + os.environ['REDO_PWD'] = os.path.join(td, dn) os.environ['REDO_TARGET'] = os.path.basename(t) os.environ['REDO_DEPTH'] = vars.DEPTH + ' ' - dn = os.path.dirname(t) if dn: os.chdir(dn) +def _nice(t): + return os.path.normpath(os.path.join(vars.PWD, t)) + + def _build(t): if (os.path.exists(t) and not state.is_generated(t) and not os.path.exists('%s.do' % t)): @@ -68,7 +74,7 @@ def _build(t): if vars.VERBOSE: argv[1] += 'v' log_('\n') - log('%s\n' % relpath(t, vars.STARTDIR)) + log('%s\n' % _nice(t)) rv = subprocess.call(argv, preexec_fn=lambda: _preexec(t), stdout=f.fileno()) if rv==0: @@ -87,7 +93,7 @@ def _build(t): if rv != 0: raise BuildError('%s: exit code %d' % (t,rv)) if vars.VERBOSE: - log('%s (done)\n\n' % relpath(t, vars.STARTDIR)) + log('%s (done)\n\n' % _nice(t)) def build(t): @@ -121,7 +127,7 @@ def main(targets, buildfunc): lock = state.Lock(t) lock.trylock() if not lock.owned: - log('%s (locked...)\n' % relpath(t, vars.STARTDIR)) + log('%s (locked...)\n' % _nice(t)) locked.append(t) else: jwack.start_job(t, lock, @@ -136,10 +142,9 @@ def main(targets, buildfunc): lock.wait() lock.trylock() assert(lock.owned) - relp = relpath(t, vars.STARTDIR) - log('%s (...unlocked!)\n' % relp) + log('%s (...unlocked!)\n' % _nice(t)) if state.stamped(t) == None: - err('%s: failed in another thread\n' % relp) + err('%s: failed in another thread\n' % _nice(t)) retcode[0] = 2 lock.unlock() else: diff --git a/vars.py b/vars.py index c750cfc..ae7ad0a 100644 --- a/vars.py +++ b/vars.py @@ -1,6 +1,7 @@ import os import atoi +PWD = os.environ.get('REDO_PWD', '') TARGET = os.environ.get('REDO_TARGET', '') DEPTH = os.environ.get('REDO_DEPTH', '') DEBUG = atoi.atoi(os.environ.get('REDO_DEBUG', ''))