Remove the need for relpath (and thus abspath) in builder.py.
This commit is contained in:
parent
61c7e0f8a8
commit
f644f3bd04
2 changed files with 14 additions and 8 deletions
21
builder.py
21
builder.py
|
|
@ -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:
|
||||||
|
|
|
||||||
1
vars.py
1
vars.py
|
|
@ -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', ''))
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue