From 3101ae3f0febd98d2f1a110c7ee76fe3182b1ef2 Mon Sep 17 00:00:00 2001 From: Brandon Low Date: Tue, 25 Jan 2011 22:54:23 -0800 Subject: [PATCH] Give main.py the a --profile option This is just a convenience for anyone who is interested in seeing where CPU seconds are going. Signed-off-by: Brandon Low --- main.py | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/main.py b/main.py index feb3013..196f693 100755 --- a/main.py +++ b/main.py @@ -30,7 +30,7 @@ from bup.helpers import * os.environ['WIDTH'] = str(tty_width()) def usage(): - log('Usage: bup [-?|--help] [-d BUP_DIR] [--debug] ' + log('Usage: bup [-?|--help] [-d BUP_DIR] [--debug] [--profile]' ' [options...]\n\n') common = dict( ftp = 'Browse backup sets using an ftp-like client', @@ -70,14 +70,15 @@ if len(argv) < 2: # Handle global options. try: - global_args, subcmd = getopt.getopt(argv[1:], '?VDd:', - ['help', 'version', 'debug', 'bup-dir=']) + optspec = ['help', 'version', 'debug', 'profile', 'bup-dir='] + global_args, subcmd = getopt.getopt(argv[1:], '?VDd:', optspec) except getopt.GetoptError, ex: log('error: ' + ex.msg + '\n') usage() help_requested = None dest_dir = None +do_profile = False for opt in global_args: if opt[0] in ['-?', '--help']: @@ -87,6 +88,8 @@ for opt in global_args: elif opt[0] in ['-D', '--debug']: helpers.buglvl += 1 os.environ['BUP_DEBUG'] = str(helpers.buglvl) + elif opt[0] in ['--profile']: + do_profile = True elif opt[0] in ['-d', '--bup-dir']: dest_dir = opt[1] else: @@ -119,7 +122,8 @@ def subpath(s): sp = os.path.join(cmdpath, 'bup-%s' % s) return sp -if not os.path.exists(subpath(subcmd_name)): +subcmd[0] = subpath(subcmd_name) +if not os.path.exists(subcmd[0]): log('error: unknown command "%s"\n' % subcmd_name) usage() @@ -164,8 +168,8 @@ ret = 95 p = None try: try: - p = subprocess.Popen([subpath(subcmd_name)] + subcmd[1:], - stdout=outf, stderr=errf, preexec_fn=force_tty) + c = (do_profile and [sys.executable, '-m', 'cProfile'] or []) + subcmd + p = subprocess.Popen(c, stdout=outf, stderr=errf, preexec_fn=force_tty) while 1: # if we get a signal while waiting, we have to keep waiting, just # in case our child doesn't die. @@ -177,7 +181,7 @@ try: os.kill(p.pid, e.signum) ret = 94 except OSError, e: - log('%s: %s\n' % (subpath(subcmd_name), e)) + log('%s: %s\n' % (subcmd[0], e)) ret = 98 finally: if p and p.poll() == None: -- 2.39.2