diff options
-rw-r--r-- | doc/user/command-line.in | 2 | ||||
-rw-r--r-- | doc/user/command-line.sgml | 2 | ||||
-rw-r--r-- | src/engine/SCons/Script/Main.py | 28 | ||||
-rw-r--r-- | src/engine/SCons/Script/SConscript.py | 4 | ||||
-rw-r--r-- | src/engine/SCons/Script/__init__.py | 5 |
5 files changed, 34 insertions, 7 deletions
diff --git a/doc/user/command-line.in b/doc/user/command-line.in index b444d30..b2cb888 100644 --- a/doc/user/command-line.in +++ b/doc/user/command-line.in @@ -978,7 +978,7 @@ <para> - Other values that equate to &true; include + Other values that equate to &false; include <literal>n</literal>, <literal>0</literal>, <literal>off</literal> diff --git a/doc/user/command-line.sgml b/doc/user/command-line.sgml index 66de79c..1bc94d7 100644 --- a/doc/user/command-line.sgml +++ b/doc/user/command-line.sgml @@ -939,7 +939,7 @@ <para> - Other values that equate to &true; include + Other values that equate to &false; include <literal>n</literal>, <literal>0</literal>, <literal>off</literal> diff --git a/src/engine/SCons/Script/Main.py b/src/engine/SCons/Script/Main.py index 53e5129..a3c0a51 100644 --- a/src/engine/SCons/Script/Main.py +++ b/src/engine/SCons/Script/Main.py @@ -329,13 +329,39 @@ exit_status = 0 # exit status, assume success by default num_jobs = None delayed_warnings = [] -OptionsParser = None +class FakeOptionParser: + """ + A do-nothing option parser, used for the initial OptionsParser variable. + + During normal SCons operation, the OptionsParser is created right + away by the main() function. Certain tests scripts however, can + introspect on different Tool modules, the initialization of which + can try to add a new, local option to an otherwise uninitialized + OptionsParser object. This allows that introspection to happen + without blowing up. + + """ + class FakeOptionValues: + def __getattr__(self, attr): + return None + values = FakeOptionValues() + def add_local_option(self, *args, **kw): + pass + +OptionsParser = FakeOptionParser() def AddOption(*args, **kw): if not kw.has_key('default'): kw['default'] = None result = apply(OptionsParser.add_local_option, args, kw) return result + +def GetOption(name): + return getattr(OptionsParser.values, name) + +def SetOption(name, value): + return OptionsParser.values.set_option(name, value) + # class Stats: def __init__(self): diff --git a/src/engine/SCons/Script/SConscript.py b/src/engine/SCons/Script/SConscript.py index 7326c0c..a1856da 100644 --- a/src/engine/SCons/Script/SConscript.py +++ b/src/engine/SCons/Script/SConscript.py @@ -469,7 +469,7 @@ class SConsEnvironment(SCons.Environment.Base): def GetOption(self, name): name = self.subst(name) - return getattr(SCons.Script.Main.OptionsParser.values, name) + return SCons.Script.Main.GetOption(name) def Help(self, text): text = self.subst(text, raw=1) @@ -525,7 +525,7 @@ class SConsEnvironment(SCons.Environment.Base): def SetOption(self, name, value): name = self.subst(name) - SCons.Script.Main.OptionsParser.values.set_option(name, value) + SCons.Script.Main.SetOption(name, value) # # diff --git a/src/engine/SCons/Script/__init__.py b/src/engine/SCons/Script/__init__.py index 8f97c41..9288b85 100644 --- a/src/engine/SCons/Script/__init__.py +++ b/src/engine/SCons/Script/__init__.py @@ -106,7 +106,10 @@ CleanTask = Main.CleanTask QuestionTask = Main.QuestionTask #PrintHelp = Main.PrintHelp #SConscriptSettableOptions = Main.SConscriptSettableOptions + AddOption = Main.AddOption +GetOption = Main.GetOption +SetOption = Main.SetOption #keep_going_on_error = Main.keep_going_on_error #print_dtree = Main.print_dtree @@ -271,12 +274,10 @@ GlobalDefaultEnvironmentFunctions = [ 'Exit', 'Export', 'GetLaunchDir', - 'GetOption', 'Help', 'Import', #'SConscript', is handled separately, below. 'SConscriptChdir', - 'SetOption', # Methods from the Environment.Base class. 'AddPostAction', |