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.
This commit is contained in:
Avery Pennarun 2010-12-11 18:32:40 -08:00
commit e18fa85d58
12 changed files with 72 additions and 69 deletions

View file

@ -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):

View file

@ -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

View file

@ -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)

49
log.py Normal file
View file

@ -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))

View file

@ -1,7 +1,7 @@
#!/usr/bin/python
import sys, os
import vars, state
from helpers import err
from log import err
try:

View file

@ -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)

View file

@ -1,7 +1,7 @@
#!/usr/bin/python
import sys, os
import vars, state
from helpers import err
from log import err
try:

View file

@ -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])

View file

@ -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])

View file

@ -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)

View file

@ -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

View file

@ -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]