From e18fa85d58415d0e92be872dac32da46e76ba334 Mon Sep 17 00:00:00 2001 From: Avery Pennarun Date: Sat, 11 Dec 2010 18:32:40 -0800 Subject: [PATCH] The only thing in helpers.py that needed vars.py was the log stuff. So put it in its own file. Now it's safer to import and use helpers even if you can't safely touch vars. --- builder.py | 3 ++- helpers.py | 50 ++---------------------------------------------- jwack.py | 7 +++---- log.py | 49 +++++++++++++++++++++++++++++++++++++++++++++++ redo-always.py | 2 +- redo-ifchange.py | 3 ++- redo-ifcreate.py | 2 +- redo-oob.py | 2 +- redo-stamp.py | 2 +- redo.py | 9 +++++---- state.py | 6 ++---- vars.py | 6 +++--- 12 files changed, 72 insertions(+), 69 deletions(-) create mode 100644 log.py diff --git a/builder.py b/builder.py index 342c5b4..9878e86 100644 --- a/builder.py +++ b/builder.py @@ -1,6 +1,7 @@ import sys, os, errno, stat import vars, jwack, state -from helpers import log, log_, debug, debug2, err, warn, unlink, close_on_exec +from helpers import unlink, close_on_exec +from log import log, log_, debug, debug2, err, warn def _possible_do_files(t): diff --git a/helpers.py b/helpers.py index 169d39c..75f0d6b 100644 --- a/helpers.py +++ b/helpers.py @@ -1,5 +1,5 @@ -import sys, os, errno, fcntl -import vars +import os, errno, fcntl +from atoi import atoi def unlink(f): @@ -15,52 +15,6 @@ def unlink(f): pass # it doesn't exist, that's what you asked for -def log_(s): - sys.stdout.flush() - if vars.DEBUG_PIDS: - sys.stderr.write('%d %s' % (os.getpid(), s)) - else: - sys.stderr.write(s) - sys.stderr.flush() - - -def _clog(s): - log_('\x1b[32mredo %s\x1b[1m%s\x1b[m' % (vars.DEPTH, s)) -def _bwlog(s): - log_('redo %s%s' % (vars.DEPTH, s)) - -def _cerr(s): - log_('\x1b[31mredo: %s\x1b[1m%s\x1b[m' % (vars.DEPTH, s)) -def _bwerr(s): - log_('redo: %s%s' % (vars.DEPTH, s)) - -def _cwarn(s): - log_('\x1b[33mredo: %s\x1b[1m%s\x1b[m' % (vars.DEPTH, s)) -def _bwwarn(s): - log_('redo: %s%s' % (vars.DEPTH, s)) - - -if os.isatty(2): - log = _clog - err = _cerr - warn = _cwarn -else: - log = _bwlog - err = _bwerr - warn = _bwwarn - - -def debug(s): - if vars.DEBUG >= 1: - log_('redo: %s%s' % (vars.DEPTH, s)) -def debug2(s): - if vars.DEBUG >= 2: - log_('redo: %s%s' % (vars.DEPTH, s)) -def debug3(s): - if vars.DEBUG >= 3: - log_('redo: %s%s' % (vars.DEPTH, s)) - - def close_on_exec(fd, yes): fl = fcntl.fcntl(fd, fcntl.F_GETFD) fl &= ~fcntl.FD_CLOEXEC diff --git a/jwack.py b/jwack.py index 41050df..99303d8 100644 --- a/jwack.py +++ b/jwack.py @@ -2,7 +2,7 @@ # beware the jobberwack # import sys, os, errno, select, fcntl, signal -import atoi +from helpers import atoi, close_on_exec _toplevel = 0 _mytokens = 1 @@ -83,8 +83,8 @@ def setup(maxjobs): s = flags[ofs+len(FIND):] (arg,junk) = s.split(' ', 1) (a,b) = arg.split(',', 1) - a = atoi.atoi(a) - b = atoi.atoi(b) + a = atoi(a) + b = atoi(b) if a <= 0 or b <= 0: raise ValueError('invalid --jobserver-fds: %r' % arg) try: @@ -242,7 +242,6 @@ def start_job(reason, jobfunc, donefunc): finally: _debug('exit: %d\n' % rv) os._exit(rv) - from helpers import close_on_exec close_on_exec(r, True) os.close(w) pd = Job(reason, pid, donefunc) diff --git a/log.py b/log.py new file mode 100644 index 0000000..736f732 --- /dev/null +++ b/log.py @@ -0,0 +1,49 @@ +import sys, os +import vars + +def log_(s): + sys.stdout.flush() + if vars.DEBUG_PIDS: + sys.stderr.write('%d %s' % (os.getpid(), s)) + else: + sys.stderr.write(s) + sys.stderr.flush() + + +def _clog(s): + log_('\x1b[32mredo %s\x1b[1m%s\x1b[m' % (vars.DEPTH, s)) +def _bwlog(s): + log_('redo %s%s' % (vars.DEPTH, s)) + +def _cerr(s): + log_('\x1b[31mredo: %s\x1b[1m%s\x1b[m' % (vars.DEPTH, s)) +def _bwerr(s): + log_('redo: %s%s' % (vars.DEPTH, s)) + +def _cwarn(s): + log_('\x1b[33mredo: %s\x1b[1m%s\x1b[m' % (vars.DEPTH, s)) +def _bwwarn(s): + log_('redo: %s%s' % (vars.DEPTH, s)) + + +if os.isatty(2): + log = _clog + err = _cerr + warn = _cwarn +else: + log = _bwlog + err = _bwerr + warn = _bwwarn + + +def debug(s): + if vars.DEBUG >= 1: + log_('redo: %s%s' % (vars.DEPTH, s)) +def debug2(s): + if vars.DEBUG >= 2: + log_('redo: %s%s' % (vars.DEPTH, s)) +def debug3(s): + if vars.DEBUG >= 3: + log_('redo: %s%s' % (vars.DEPTH, s)) + + diff --git a/redo-always.py b/redo-always.py index 3f53bd3..ea8e343 100755 --- a/redo-always.py +++ b/redo-always.py @@ -1,7 +1,7 @@ #!/usr/bin/python import sys, os import vars, state -from helpers import err +from log import err try: diff --git a/redo-ifchange.py b/redo-ifchange.py index a044289..d92a556 100755 --- a/redo-ifchange.py +++ b/redo-ifchange.py @@ -1,7 +1,8 @@ #!/usr/bin/python import sys, os, errno, stat import vars, state, builder, jwack -from helpers import debug, debug2, err, unlink +from helpers import unlink +from log import debug, debug2, err def _nice(t): return state.relpath(os.path.join(vars.BASE, t), vars.STARTDIR) diff --git a/redo-ifcreate.py b/redo-ifcreate.py index d4c190c..183e686 100755 --- a/redo-ifcreate.py +++ b/redo-ifcreate.py @@ -1,7 +1,7 @@ #!/usr/bin/python import sys, os import vars, state -from helpers import err +from log import err try: diff --git a/redo-oob.py b/redo-oob.py index a60fc0a..d93d3a5 100755 --- a/redo-oob.py +++ b/redo-oob.py @@ -1,7 +1,7 @@ #!/usr/bin/python import sys, os import state -from helpers import err +from log import err if len(sys.argv[1:]) < 2: err('%s: at least 2 arguments expected.\n' % sys.argv[0]) diff --git a/redo-stamp.py b/redo-stamp.py index a9b9009..81fdeaf 100755 --- a/redo-stamp.py +++ b/redo-stamp.py @@ -1,7 +1,7 @@ #!/usr/bin/python import sys, os import vars, state -from helpers import err, debug2 +from log import err, debug2 if len(sys.argv) > 1: err('%s: no arguments expected.\n' % sys.argv[0]) diff --git a/redo.py b/redo.py index 1507bb8..4b55c19 100755 --- a/redo.py +++ b/redo.py @@ -1,6 +1,7 @@ #!/usr/bin/python import sys, os -import options, jwack, atoi +import options +from helpers import atoi optspec = """ redo [targets...] @@ -57,15 +58,15 @@ if is_root: os.environ['REDO'] = os.path.abspath(sys.argv[0]) -import vars, state, builder -from helpers import err +import vars, state, builder, jwack +from log import err if is_root: state.init() try: - j = atoi.atoi(opt.jobs or 1) + j = atoi(opt.jobs or 1) if j < 1 or j > 1000: err('invalid --jobs value: %r\n' % opt.jobs) jwack.setup(j) diff --git a/state.py b/state.py index 1650d62..ce43ad1 100644 --- a/state.py +++ b/state.py @@ -1,7 +1,7 @@ import sys, os, errno, glob, stat, fcntl, sqlite3 import vars -from helpers import unlink, err, debug2, debug3, close_on_exec -import helpers +from helpers import unlink, close_on_exec +from log import err, debug2, debug3 SCHEMA_VER=1 TIMEOUT=60 @@ -97,7 +97,6 @@ def _write(q, l): return global _wrote _wrote += 1 - #helpers.log_('W: %r %r\n' % (q,l)) db().execute(q, l) @@ -106,7 +105,6 @@ def commit(): return global _wrote if _wrote: - #helpers.log_("COMMIT (%d)\n" % _wrote) db().commit() _wrote = 0 diff --git a/vars.py b/vars.py index 39a3346..b10f742 100644 --- a/vars.py +++ b/vars.py @@ -1,5 +1,5 @@ import os -import atoi +from atoi import atoi if not os.environ.get('REDO'): import sys @@ -10,7 +10,7 @@ if not os.environ.get('REDO'): 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', '')) +DEBUG = atoi(os.environ.get('REDO_DEBUG', '')) DEBUG_LOCKS = os.environ.get('REDO_DEBUG_LOCKS', '') and 1 or 0 DEBUG_PIDS = os.environ.get('REDO_DEBUG_PIDS', '') and 1 or 0 VERBOSE = os.environ.get('REDO_VERBOSE', '') and 1 or 0 @@ -18,7 +18,7 @@ XTRACE = os.environ.get('REDO_XTRACE', '') and 1 or 0 KEEP_GOING = os.environ.get('REDO_KEEP_GOING', '') and 1 or 0 SHUFFLE = os.environ.get('REDO_SHUFFLE', '') and 1 or 0 STARTDIR = os.environ['REDO_STARTDIR'] -RUNID = atoi.atoi(os.environ.get('REDO_RUNID')) or None +RUNID = atoi(os.environ.get('REDO_RUNID')) or None BASE = os.environ['REDO_BASE'] while BASE and BASE.endswith('/'): BASE = BASE[:-1]