diff options
author | Steven Knight <knight@baldmt.com> | 2001-07-29 12:16:01 (GMT) |
---|---|---|
committer | Steven Knight <knight@baldmt.com> | 2001-07-29 12:16:01 (GMT) |
commit | d30b5d7c747a906752e5ab680743dade655e1537 (patch) | |
tree | b79afc687fbe0d8ecd50323484fe7fc50a11a952 /src | |
parent | 3e824b614bd10b82a4e7a046d0b51970d4602712 (diff) | |
download | SCons-d30b5d7c747a906752e5ab680743dade655e1537.zip SCons-d30b5d7c747a906752e5ab680743dade655e1537.tar.gz SCons-d30b5d7c747a906752e5ab680743dade655e1537.tar.bz2 |
add the -j argument
Diffstat (limited to 'src')
-rw-r--r-- | src/scons.py | 81 |
1 files changed, 76 insertions, 5 deletions
diff --git a/src/scons.py b/src/scons.py index c700f77..70d336a 100644 --- a/src/scons.py +++ b/src/scons.py @@ -5,13 +5,42 @@ import os.path import string import sys -opts, targets = getopt.getopt(sys.argv[1:], 'f:') +def PrintUsage(): + print "Usage: scons [OPTION]... TARGET..." + print "Build TARGET or multiple TARGET(s)" + print " " + print ' -f CONSCRIPT execute CONSCRIPT instead of "SConstruct"' + print " -j N execute N parallel jobs" + print " --help print this message and exit" + +try: + opts, targets = getopt.getopt(sys.argv[1:], 'f:j:', ['help']) +except getopt.GetoptError, x: + print x + PrintUsage() + sys.exit() Scripts = [] +num_jobs = 1 for o, a in opts: if o == '-f': Scripts.append(a) + if o == '-j': + try: + num_jobs = int(a) + except: + PrintUsage() + sys.exit(1) + + if num_jobs <= 0: + PrintUsage() + sys.exit(1) + + if o == '--help': + PrintUsage() + sys.exit(0) + if not Scripts: Scripts.append('SConstruct') @@ -26,13 +55,16 @@ if not Scripts: #for dir in sys.path: # scons = os.path.join(dir, 'scons') # if os.path.isdir(scons): -# dirlist = dirlist + [scons] +# dirlist = dirlist + [scons] # dirlist = dirlist + [dir] # #sys.path = dirlist + from scons.Node.FS import init, Dir, File, lookup from scons.Environment import Environment +import scons.Job +from scons.Builder import Builder init() @@ -49,6 +81,45 @@ while Scripts: -for path in targets: - target = lookup(File, path) - target.build() +class Task: + "this is here only until the build engine is implemented" + + def __init__(self, target): + self.target = target + + def execute(self): + self.target.build() + + + +class Taskmaster: + "this is here only until the build engine is implemented" + + def __init__(self, targets): + self.targets = targets + self.num_iterated = 0 + + + def next_task(self): + if self.num_iterated == len(self.targets): + return None + else: + current = self.num_iterated + self.num_iterated = self.num_iterated + 1 + return Task(self.targets[current]) + + def is_blocked(self): + return 0 + + def executed(self, task): + pass + + + +taskmaster = Taskmaster(map(lambda x: lookup(File, x), targets)) + +jobs = scons.Job.Jobs(num_jobs, taskmaster) +jobs.start() +jobs.wait() + + |