summaryrefslogtreecommitdiffstats
path: root/src/engine/SCons/Script/Main.py
diff options
context:
space:
mode:
Diffstat (limited to 'src/engine/SCons/Script/Main.py')
-rw-r--r--src/engine/SCons/Script/Main.py38
1 files changed, 26 insertions, 12 deletions
diff --git a/src/engine/SCons/Script/Main.py b/src/engine/SCons/Script/Main.py
index 6a0ad81..ca7f68c 100644
--- a/src/engine/SCons/Script/Main.py
+++ b/src/engine/SCons/Script/Main.py
@@ -74,6 +74,9 @@ import SCons.Warnings
display = SCons.Util.display
progress_display = SCons.Util.DisplayEngine()
+first_command_start = None
+last_command_end = None
+
# Task control.
#
class BuildTask(SCons.Taskmaster.Task):
@@ -88,12 +91,17 @@ class BuildTask(SCons.Taskmaster.Task):
if target.has_builder() and not hasattr(target.builder, 'status'):
if print_time:
start_time = time.time()
+ global first_command_start
+ if first_command_start is None:
+ first_command_start = start_time
SCons.Taskmaster.Task.execute(self)
if print_time:
+ global cumulative_command_time
+ global last_command_end
finish_time = time.time()
- global command_time
- command_time = command_time+finish_time-start_time
- print "Command execution time: %f seconds"%(finish_time-start_time)
+ last_command_end = finish_time
+ cumulative_command_time = cumulative_command_time+finish_time-start_time
+ sys.stdout.write("Command execution time: %f seconds\n"%(finish_time-start_time))
break
else:
if self.top and target.has_builder():
@@ -320,10 +328,10 @@ print_stacktrace = 0
print_time = 0
ignore_errors = 0
sconscript_time = 0
-command_time = 0
+cumulative_command_time = 0
exit_status = 0 # exit status, assume success by default
repositories = []
-num_jobs = 1 # this is modifed by SConscript.SetJobs()
+num_jobs = None
delayed_warnings = []
diskcheck_all = SCons.Node.FS.diskcheck_types()
@@ -617,7 +625,7 @@ def _load_site_scons_dir(topdir, site_dir_name=None):
site_init_filename = "site_init.py"
site_init_modname = "site_init"
site_tools_dirname = "site_tools"
- sys.path = [site_dir] + sys.path
+ sys.path = [os.path.abspath(site_dir)] + sys.path
site_init_file = os.path.join(site_dir, site_init_filename)
site_tools_dir = os.path.join(site_dir, site_tools_dirname)
if os.path.exists(site_init_file):
@@ -1354,9 +1362,10 @@ def _main(args, parser):
tmtrace = None
taskmaster = SCons.Taskmaster.Taskmaster(nodes, task_class, order, tmtrace)
- nj = ssoptions.get('num_jobs')
- jobs = SCons.Job.Jobs(nj, taskmaster)
- if nj > 1 and jobs.num_jobs == 1:
+ global num_jobs
+ num_jobs = ssoptions.get('num_jobs')
+ jobs = SCons.Job.Jobs(num_jobs, taskmaster)
+ if num_jobs > 1 and jobs.num_jobs == 1:
msg = "parallel builds are unsupported by this version of Python;\n" + \
"\tignoring -j or num_jobs option.\n"
SCons.Warnings.warn(SCons.Warnings.NoParallelSupportWarning, msg)
@@ -1413,6 +1422,7 @@ def _exec_main():
def main():
global exit_status
+ global first_command_start
try:
_exec_main()
@@ -1453,11 +1463,15 @@ def main():
SCons.Taskmaster.dump_stats()
if print_time:
- total_time = time.time()-SCons.Script.start_time
- scons_time = total_time-sconscript_time-command_time
+ total_time = time.time() - SCons.Script.start_time
+ if num_jobs == 1:
+ ct = cumulative_command_time
+ else:
+ ct = last_command_end - first_command_start
+ scons_time = total_time - sconscript_time - ct
print "Total build time: %f seconds"%total_time
print "Total SConscript file execution time: %f seconds"%sconscript_time
print "Total SCons execution time: %f seconds"%scons_time
- print "Total command execution time: %f seconds"%command_time
+ print "Total command execution time: %f seconds"%ct
sys.exit(exit_status)