summaryrefslogtreecommitdiffstats
path: root/src/engine/SCons/Script/__init__.py
diff options
context:
space:
mode:
authorSteven Knight <knight@baldmt.com>2003-02-06 04:59:18 (GMT)
committerSteven Knight <knight@baldmt.com>2003-02-06 04:59:18 (GMT)
commitc07047f3cfdb2eb3c7f29a96afb2accdfed69184 (patch)
tree30f7a8eaaf3a53ed7e7ec2f571db675a3cfa6873 /src/engine/SCons/Script/__init__.py
parent1321ef0af677827deb274d698d06ffa8b73010b0 (diff)
downloadSCons-c07047f3cfdb2eb3c7f29a96afb2accdfed69184.zip
SCons-c07047f3cfdb2eb3c7f29a96afb2accdfed69184.tar.gz
SCons-c07047f3cfdb2eb3c7f29a96afb2accdfed69184.tar.bz2
Add the --random option.
Diffstat (limited to 'src/engine/SCons/Script/__init__.py')
-rw-r--r--src/engine/SCons/Script/__init__.py25
1 files changed, 20 insertions, 5 deletions
diff --git a/src/engine/SCons/Script/__init__.py b/src/engine/SCons/Script/__init__.py
index eed045d..41b95dc 100644
--- a/src/engine/SCons/Script/__init__.py
+++ b/src/engine/SCons/Script/__init__.py
@@ -41,6 +41,7 @@ start_time = time.time()
import os
import os.path
+import random
import string
import sys
import traceback
@@ -544,6 +545,9 @@ class OptParser(OptionParser):
default=0,
help="Don't print SCons progress messages.")
+ self.add_option('--random', dest="random", action="store_true",
+ default=0, help="Build dependencies in random order.")
+
self.add_option('-s', '--silent', '--quiet', action="store_true",
default=0, help="Don't print commands.")
@@ -607,10 +611,6 @@ class OptParser(OptionParser):
callback=opt_not_yet,
# help="Clear default environments and variables."
help=SUPPRESS_HELP)
- self.add_option('--random', action="callback",
- callback=opt_not_yet,
- # help="Build dependencies in random order."
- help=SUPPRESS_HELP)
self.add_option('-w', '--print-directory', action="callback",
callback=opt_not_yet,
# help="Print the current directory."
@@ -868,8 +868,23 @@ def _main():
calc = SCons.Sig.default_calc
+ if options.random:
+ def order(dependencies):
+ """Randomize the dependencies."""
+ # This is cribbed from the implementation of
+ # random.shuffle() in Python 2.X.
+ d = dependencies
+ for i in xrange(len(d)-1, 0, -1):
+ j = int(random.random() * (i+1))
+ d[i], d[j] = d[j], d[i]
+ return d
+ else:
+ def order(dependencies):
+ """Leave the order of dependencies alone."""
+ return dependencies
+
display("scons: Building targets ...")
- taskmaster = SCons.Taskmaster.Taskmaster(nodes, task_class, calc)
+ taskmaster = SCons.Taskmaster.Taskmaster(nodes, task_class, calc, order)
jobs = SCons.Job.Jobs(get_num_jobs(options), taskmaster)