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]