diff options
| author | Steven Knight <knight@baldmt.com> | 2003-02-06 04:59:18 (GMT) |
|---|---|---|
| committer | Steven Knight <knight@baldmt.com> | 2003-02-06 04:59:18 (GMT) |
| commit | c07047f3cfdb2eb3c7f29a96afb2accdfed69184 (patch) | |
| tree | 30f7a8eaaf3a53ed7e7ec2f571db675a3cfa6873 /src/engine/SCons/Script/__init__.py | |
| parent | 1321ef0af677827deb274d698d06ffa8b73010b0 (diff) | |
| download | SCons-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__.py | 25 |
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) |
