On systems where 'python' refers to python3, redo failed to launch. All invocations of python have been made explicitly python2 invocations. All tests pass on an Arch Linux system as of this commit.
46 lines
1.2 KiB
Python
Executable file
46 lines
1.2 KiB
Python
Executable file
#!/usr/bin/env python2
|
|
import sys, os
|
|
|
|
import vars_init
|
|
vars_init.init(sys.argv[1:])
|
|
|
|
import vars, state, builder, jwack, deps
|
|
from helpers import unlink
|
|
from log import debug, debug2, err
|
|
|
|
def should_build(t):
|
|
f = state.File(name=t)
|
|
if f.is_failed():
|
|
raise builder.ImmediateReturn(32)
|
|
dirty = deps.isdirty(f, depth = '', max_changed = vars.RUNID,
|
|
already_checked=[])
|
|
return dirty==[f] and deps.DIRTY or dirty
|
|
|
|
|
|
rv = 202
|
|
try:
|
|
if vars.TARGET and not vars.UNLOCKED:
|
|
me = os.path.join(vars.STARTDIR,
|
|
os.path.join(vars.PWD, vars.TARGET))
|
|
f = state.File(name=me)
|
|
debug2('TARGET: %r %r %r\n' % (vars.STARTDIR, vars.PWD, vars.TARGET))
|
|
else:
|
|
f = me = None
|
|
debug2('redo-ifchange: not adding depends.\n')
|
|
try:
|
|
targets = sys.argv[1:]
|
|
if f:
|
|
for t in targets:
|
|
f.add_dep('m', t)
|
|
f.save()
|
|
state.commit()
|
|
rv = builder.main(targets, should_build)
|
|
finally:
|
|
try:
|
|
state.rollback()
|
|
finally:
|
|
jwack.force_return_tokens()
|
|
except KeyboardInterrupt:
|
|
sys.exit(200)
|
|
state.commit()
|
|
sys.exit(rv)
|