Remove the need for relpath (and thus abspath) in builder.py.

This commit is contained in:
Avery Pennarun 2010-11-21 03:34:32 -08:00
commit f644f3bd04
2 changed files with 14 additions and 8 deletions

View file

@ -1,6 +1,6 @@
import sys, os, subprocess, random import sys, os, subprocess, random
import vars, jwack, state import vars, jwack, state
from helpers import log, log_, relpath, debug2, err, unlink from helpers import log, log_, debug2, err, unlink
class BuildError(Exception): class BuildError(Exception):
@ -32,13 +32,19 @@ def _find_do_file(t):
def _preexec(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_TARGET'] = os.path.basename(t)
os.environ['REDO_DEPTH'] = vars.DEPTH + ' ' os.environ['REDO_DEPTH'] = vars.DEPTH + ' '
dn = os.path.dirname(t)
if dn: if dn:
os.chdir(dn) os.chdir(dn)
def _nice(t):
return os.path.normpath(os.path.join(vars.PWD, t))
def _build(t): def _build(t):
if (os.path.exists(t) and not state.is_generated(t) if (os.path.exists(t) and not state.is_generated(t)
and not os.path.exists('%s.do' % t)): and not os.path.exists('%s.do' % t)):
@ -68,7 +74,7 @@ def _build(t):
if vars.VERBOSE: if vars.VERBOSE:
argv[1] += 'v' argv[1] += 'v'
log_('\n') log_('\n')
log('%s\n' % relpath(t, vars.STARTDIR)) log('%s\n' % _nice(t))
rv = subprocess.call(argv, preexec_fn=lambda: _preexec(t), rv = subprocess.call(argv, preexec_fn=lambda: _preexec(t),
stdout=f.fileno()) stdout=f.fileno())
if rv==0: if rv==0:
@ -87,7 +93,7 @@ def _build(t):
if rv != 0: if rv != 0:
raise BuildError('%s: exit code %d' % (t,rv)) raise BuildError('%s: exit code %d' % (t,rv))
if vars.VERBOSE: if vars.VERBOSE:
log('%s (done)\n\n' % relpath(t, vars.STARTDIR)) log('%s (done)\n\n' % _nice(t))
def build(t): def build(t):
@ -121,7 +127,7 @@ def main(targets, buildfunc):
lock = state.Lock(t) lock = state.Lock(t)
lock.trylock() lock.trylock()
if not lock.owned: if not lock.owned:
log('%s (locked...)\n' % relpath(t, vars.STARTDIR)) log('%s (locked...)\n' % _nice(t))
locked.append(t) locked.append(t)
else: else:
jwack.start_job(t, lock, jwack.start_job(t, lock,
@ -136,10 +142,9 @@ def main(targets, buildfunc):
lock.wait() lock.wait()
lock.trylock() lock.trylock()
assert(lock.owned) assert(lock.owned)
relp = relpath(t, vars.STARTDIR) log('%s (...unlocked!)\n' % _nice(t))
log('%s (...unlocked!)\n' % relp)
if state.stamped(t) == None: 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 retcode[0] = 2
lock.unlock() lock.unlock()
else: else:

View file

@ -1,6 +1,7 @@
import os import os
import atoi import atoi
PWD = os.environ.get('REDO_PWD', '')
TARGET = os.environ.get('REDO_TARGET', '') TARGET = os.environ.get('REDO_TARGET', '')
DEPTH = os.environ.get('REDO_DEPTH', '') DEPTH = os.environ.get('REDO_DEPTH', '')
DEBUG = atoi.atoi(os.environ.get('REDO_DEBUG', '')) DEBUG = atoi.atoi(os.environ.get('REDO_DEBUG', ''))