summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--doc/user/command-line.in2
-rw-r--r--doc/user/command-line.sgml2
-rw-r--r--src/engine/SCons/Script/Main.py28
-rw-r--r--src/engine/SCons/Script/SConscript.py4
-rw-r--r--src/engine/SCons/Script/__init__.py5
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',