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 sys, os, errno, stat
import vars, jwack, state 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): def _possible_do_files(t):

View file

@ -1,5 +1,5 @@
import sys, os, errno, fcntl import os, errno, fcntl
import vars from atoi import atoi
def unlink(f): def unlink(f):
@ -15,52 +15,6 @@ def unlink(f):
pass # it doesn't exist, that's what you asked for 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): def close_on_exec(fd, yes):
fl = fcntl.fcntl(fd, fcntl.F_GETFD) fl = fcntl.fcntl(fd, fcntl.F_GETFD)
fl &= ~fcntl.FD_CLOEXEC fl &= ~fcntl.FD_CLOEXEC

View file

@ -2,7 +2,7 @@
# beware the jobberwack # beware the jobberwack
# #
import sys, os, errno, select, fcntl, signal import sys, os, errno, select, fcntl, signal
import atoi from helpers import atoi, close_on_exec
_toplevel = 0 _toplevel = 0
_mytokens = 1 _mytokens = 1
@ -83,8 +83,8 @@ def setup(maxjobs):
s = flags[ofs+len(FIND):] s = flags[ofs+len(FIND):]
(arg,junk) = s.split(' ', 1) (arg,junk) = s.split(' ', 1)
(a,b) = arg.split(',', 1) (a,b) = arg.split(',', 1)
a = atoi.atoi(a) a = atoi(a)
b = atoi.atoi(b) b = atoi(b)
if a <= 0 or b <= 0: if a <= 0 or b <= 0:
raise ValueError('invalid --jobserver-fds: %r' % arg) raise ValueError('invalid --jobserver-fds: %r' % arg)
try: try:
@ -242,7 +242,6 @@ def start_job(reason, jobfunc, donefunc):
finally: finally:
_debug('exit: %d\n' % rv) _debug('exit: %d\n' % rv)
os._exit(rv) os._exit(rv)
from helpers import close_on_exec
close_on_exec(r, True) close_on_exec(r, True)
os.close(w) os.close(w)
pd = Job(reason, pid, donefunc) 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 #!/usr/bin/python
import sys, os import sys, os
import vars, state import vars, state
from helpers import err from log import err
try: try:

View file

@ -1,7 +1,8 @@
#!/usr/bin/python #!/usr/bin/python
import sys, os, errno, stat import sys, os, errno, stat
import vars, state, builder, jwack 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): def _nice(t):
return state.relpath(os.path.join(vars.BASE, t), vars.STARTDIR) return state.relpath(os.path.join(vars.BASE, t), vars.STARTDIR)

View file

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

View file

@ -1,7 +1,7 @@
#!/usr/bin/python #!/usr/bin/python
import sys, os import sys, os
import state import state
from helpers import err from log import err
if len(sys.argv[1:]) < 2: if len(sys.argv[1:]) < 2:
err('%s: at least 2 arguments expected.\n' % sys.argv[0]) err('%s: at least 2 arguments expected.\n' % sys.argv[0])

View file

@ -1,7 +1,7 @@
#!/usr/bin/python #!/usr/bin/python
import sys, os import sys, os
import vars, state import vars, state
from helpers import err, debug2 from log import err, debug2
if len(sys.argv) > 1: if len(sys.argv) > 1:
err('%s: no arguments expected.\n' % sys.argv[0]) err('%s: no arguments expected.\n' % sys.argv[0])

View file

@ -1,6 +1,7 @@
#!/usr/bin/python #!/usr/bin/python
import sys, os import sys, os
import options, jwack, atoi import options
from helpers import atoi
optspec = """ optspec = """
redo [targets...] redo [targets...]
@ -57,15 +58,15 @@ if is_root:
os.environ['REDO'] = os.path.abspath(sys.argv[0]) os.environ['REDO'] = os.path.abspath(sys.argv[0])
import vars, state, builder import vars, state, builder, jwack
from helpers import err from log import err
if is_root: if is_root:
state.init() state.init()
try: try:
j = atoi.atoi(opt.jobs or 1) j = atoi(opt.jobs or 1)
if j < 1 or j > 1000: if j < 1 or j > 1000:
err('invalid --jobs value: %r\n' % opt.jobs) err('invalid --jobs value: %r\n' % opt.jobs)
jwack.setup(j) jwack.setup(j)

View file

@ -1,7 +1,7 @@
import sys, os, errno, glob, stat, fcntl, sqlite3 import sys, os, errno, glob, stat, fcntl, sqlite3
import vars import vars
from helpers import unlink, err, debug2, debug3, close_on_exec from helpers import unlink, close_on_exec
import helpers from log import err, debug2, debug3
SCHEMA_VER=1 SCHEMA_VER=1
TIMEOUT=60 TIMEOUT=60
@ -97,7 +97,6 @@ def _write(q, l):
return return
global _wrote global _wrote
_wrote += 1 _wrote += 1
#helpers.log_('W: %r %r\n' % (q,l))
db().execute(q, l) db().execute(q, l)
@ -106,7 +105,6 @@ def commit():
return return
global _wrote global _wrote
if _wrote: if _wrote:
#helpers.log_("COMMIT (%d)\n" % _wrote)
db().commit() db().commit()
_wrote = 0 _wrote = 0

View file

@ -1,5 +1,5 @@
import os import os
import atoi from atoi import atoi
if not os.environ.get('REDO'): if not os.environ.get('REDO'):
import sys import sys
@ -10,7 +10,7 @@ if not os.environ.get('REDO'):
PWD = os.environ.get('REDO_PWD', '') PWD = os.environ.get('REDO_PWD', '')
TARGET = os.environ.get('REDO_TARGET', '') TARGET = os.environ.get('REDO_TARGET', '')
DEPTH = os.environ.get('REDO_DEPTH', '') 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_LOCKS = os.environ.get('REDO_DEBUG_LOCKS', '') and 1 or 0
DEBUG_PIDS = os.environ.get('REDO_DEBUG_PIDS', '') 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 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 KEEP_GOING = os.environ.get('REDO_KEEP_GOING', '') and 1 or 0
SHUFFLE = os.environ.get('REDO_SHUFFLE', '') and 1 or 0 SHUFFLE = os.environ.get('REDO_SHUFFLE', '') and 1 or 0
STARTDIR = os.environ['REDO_STARTDIR'] 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'] BASE = os.environ['REDO_BASE']
while BASE and BASE.endswith('/'): while BASE and BASE.endswith('/'):
BASE = BASE[:-1] BASE = BASE[:-1]