From dce00765545f05003c99b0f714e0af4c338fe925 Mon Sep 17 00:00:00 2001 From: Avery Pennarun Date: Mon, 22 Nov 2010 03:34:37 -0800 Subject: [PATCH] Print a useful message and exit when the .redo directory disappears. --- builder.py | 6 ++++++ state.py | 12 +++++++++++- 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/builder.py b/builder.py index b22d873..ef6319a 100644 --- a/builder.py +++ b/builder.py @@ -153,6 +153,9 @@ def main(targets, shouldbuildfunc): jwack.get_token(t) if retcode[0] and not vars.KEEP_GOING: break + if not state.is_sane(): + retcode[0] = 205 + break lock = state.Lock(t) lock.trylock() if not lock.owned: @@ -173,6 +176,9 @@ def main(targets, shouldbuildfunc): if retcode[0] and not vars.KEEP_GOING: break if locked: + if not state.is_sane(): + retcode[0] = 205 + break t = locked.pop(0) lock = state.Lock(t) lock.waitlock() diff --git a/state.py b/state.py index 4a5ad18..6810bab 100644 --- a/state.py +++ b/state.py @@ -1,6 +1,6 @@ import sys, os, errno, glob import vars -from helpers import unlink, debug2, mkdirp, close_on_exec +from helpers import unlink, err, debug2, mkdirp, close_on_exec def init(): @@ -17,6 +17,16 @@ def init(): os.unlink(f) +_insane = None +def is_sane(): + global _insane + if not _insane: + _insane = not os.path.exists('%s/.redo' % vars.BASE) + if _insane: + err('.redo directory disappeared; cannot continue.\n') + return not _insane + + def relpath(t, base): t = os.path.normpath(os.path.join(os.getcwd(), t)) tparts = t.split('/')