summaryrefslogtreecommitdiffstats
path: root/src/engine/SCons/Script
diff options
context:
space:
mode:
authorSteven Knight <knight@baldmt.com>2005-06-02 21:54:58 (GMT)
committerSteven Knight <knight@baldmt.com>2005-06-02 21:54:58 (GMT)
commit17e82150b6490ae8b9ccad2a1112639faa7c6051 (patch)
treeaad52cb29da8e5b54f393dcf93c0c2e8b9961fcd /src/engine/SCons/Script
parent7aa84f19934a3334950c13788ebf4e98c7ba2566 (diff)
downloadSCons-17e82150b6490ae8b9ccad2a1112639faa7c6051.zip
SCons-17e82150b6490ae8b9ccad2a1112639faa7c6051.tar.gz
SCons-17e82150b6490ae8b9ccad2a1112639faa7c6051.tar.bz2
Don't print duplicate stats when --profile is used.
Diffstat (limited to 'src/engine/SCons/Script')
-rw-r--r--src/engine/SCons/Script/Main.py21
1 files changed, 10 insertions, 11 deletions
diff --git a/src/engine/SCons/Script/Main.py b/src/engine/SCons/Script/Main.py
index cdf0139..d5be3eb 100644
--- a/src/engine/SCons/Script/Main.py
+++ b/src/engine/SCons/Script/Main.py
@@ -255,7 +255,6 @@ ignore_errors = 0
sconscript_time = 0
command_time = 0
exit_status = 0 # exit status, assume success by default
-profiling = 0
repositories = []
num_jobs = 1 # this is modifed by SConscript.SetJobs()
@@ -676,16 +675,8 @@ class OptParser(OptionParser):
'--recon', action="store_true", dest='noexec',
default=0, help="Don't build; just print commands.")
- def opt_profile(option, opt, value, parser):
- global profiling
- if not profiling:
- profiling = 1
- import profile
- profile.run('SCons.Script.Main.main()', value)
- sys.exit(exit_status)
- self.add_option('--profile', nargs=1, action="callback",
- callback=opt_profile, type="string", dest="profile",
- metavar="FILE",
+ self.add_option('--profile', action="store",
+ dest="profile_file", metavar="FILE",
help="Profile SCons and put results in FILE.")
self.add_option('-q', '--question', action="store_true", default=0,
@@ -1190,6 +1181,14 @@ def _exec_main():
if type(options.debug) == type([]) and "pdb" in options.debug:
import pdb
pdb.Pdb().runcall(_main, args, parser)
+ elif options.profile_file:
+ import profile
+ prof = profile.Profile()
+ try:
+ prof.runcall(_main, args, parser)
+ except SystemExit:
+ pass
+ prof.dump_stats(options.profile_file)
else:
_main(args, parser)