summaryrefslogtreecommitdiffstats
path: root/src/engine
diff options
context:
space:
mode:
authorGreg Noel <GregNoel@tigris.org>2010-05-26 16:17:09 (GMT)
committerGreg Noel <GregNoel@tigris.org>2010-05-26 16:17:09 (GMT)
commit545d2a0a389e9eacdb1d92fbf5f26f2d981029ad (patch)
tree23f5cda5c621bd7bb657ef9fd1d07e4578d4a934 /src/engine
parent5c2e07585593ee4994b8e7d79b3d181a56cd7f13 (diff)
downloadSCons-545d2a0a389e9eacdb1d92fbf5f26f2d981029ad.zip
SCons-545d2a0a389e9eacdb1d92fbf5f26f2d981029ad.tar.gz
SCons-545d2a0a389e9eacdb1d92fbf5f26f2d981029ad.tar.bz2
Start the deprecation cycle for the BuildDir() method and the build_dir
keyword parameter. Several existing tests were still using BuildDir() or build_dir; they were converted to use VariantDir() and variant_dir. New tests were added to validate that the --warn=deprecated-build-dir option and the SetOption method did the right thing. This led to the discovery that a commonly-used test pattern provided by the infrastructure gobbled up too much, causing tests to succeed when they should have failed. Fixing the pattern led to other tests needing to be fixed. In the process, it was discovered that the SCONSFLAG environment variable was not getting correctly reset to its original value. Fixing this also caused additional tests to misbehave, requiring them to be updated. And test/Sig.py, which tests the deprecated SCons.Sig module, was moved to the test/Deprecated directory. All in all, quite a lot of action for what was supposed to be a simple change.
Diffstat (limited to 'src/engine')
-rw-r--r--src/engine/SCons/Environment.py5
-rw-r--r--src/engine/SCons/Script/Main.py17
-rw-r--r--src/engine/SCons/Script/SConscript.py5
-rw-r--r--src/engine/SCons/Warnings.py45
4 files changed, 38 insertions, 34 deletions
diff --git a/src/engine/SCons/Environment.py b/src/engine/SCons/Environment.py
index 96f42da..38a712e 100644
--- a/src/engine/SCons/Environment.py
+++ b/src/engine/SCons/Environment.py
@@ -1812,6 +1812,8 @@ class Base(SubstitutionEnvironment):
return tlist
def BuildDir(self, *args, **kw):
+ msg = """BuildDir() and the build_dir keyword have been deprecated;\n\tuse VariantDir() and the variant_dir keyword instead."""
+ SCons.Warnings.warn(SCons.Warnings.DeprecatedBuildDirWarning, msg)
if 'build_dir' in kw:
kw['variant_dir'] = kw['build_dir']
del kw['build_dir']
@@ -2043,6 +2045,9 @@ class Base(SubstitutionEnvironment):
def SourceCode(self, entry, builder):
"""Arrange for a source code builder for (part of) a tree."""
+ #msg = """SourceCode() has been deprecated and there is no replacement.
+#\tIf you need this function, please contact dev@scons.tigris.org."""
+ #SCons.Warnings.warn(SCons.Warnings.DeprecatedBuildDirWarning, msg)
entries = self.arg2nodes(entry, self.fs.Entry)
for entry in entries:
entry.set_src_builder(builder)
diff --git a/src/engine/SCons/Script/Main.py b/src/engine/SCons/Script/Main.py
index d5057e1..0c39340 100644
--- a/src/engine/SCons/Script/Main.py
+++ b/src/engine/SCons/Script/Main.py
@@ -752,21 +752,8 @@ def _main(parser):
# suppress) appropriate warnings about anything that might happen,
# as configured by the user.
- default_warnings = [ SCons.Warnings.CorruptSConsignWarning,
+ default_warnings = [ SCons.Warnings.WarningOnByDefault,
SCons.Warnings.DeprecatedWarning,
- SCons.Warnings.DuplicateEnvironmentWarning,
- SCons.Warnings.FutureReservedVariableWarning,
- SCons.Warnings.LinkWarning,
- SCons.Warnings.MissingSConscriptWarning,
- SCons.Warnings.NoMD5ModuleWarning,
- SCons.Warnings.NoMetaclassSupportWarning,
- SCons.Warnings.NoObjectCountWarning,
- SCons.Warnings.NoParallelSupportWarning,
- SCons.Warnings.MisleadingKeywordsWarning,
- SCons.Warnings.ReservedVariableWarning,
- SCons.Warnings.StackSizeWarning,
- SCons.Warnings.VisualVersionMismatch,
- SCons.Warnings.VisualCMissingWarning,
]
for warning in default_warnings:
@@ -944,7 +931,7 @@ def _main(parser):
# $SCONSFLAGS, or in the SConscript file, then the search through
# the list of deprecated warning classes will find that disabling
# first and not issue the warning.
- SCons.Warnings.enableWarningClass(SCons.Warnings.PythonVersionWarning)
+ #SCons.Warnings.enableWarningClass(SCons.Warnings.PythonVersionWarning)
SCons.Warnings.process_warn_strings(options.warn)
# Now that we've read the SConscript files, we can check for the
diff --git a/src/engine/SCons/Script/SConscript.py b/src/engine/SCons/Script/SConscript.py
index c3433ca..aa555da 100644
--- a/src/engine/SCons/Script/SConscript.py
+++ b/src/engine/SCons/Script/SConscript.py
@@ -378,7 +378,7 @@ class SConsEnvironment(SCons.Environment.Base):
def _get_SConscript_filenames(self, ls, kw):
"""
- Convert the parameters passed to # SConscript() calls into a list
+ Convert the parameters passed to SConscript() calls into a list
of files and export variables. If the parameters are invalid,
throws SCons.Errors.UserError. Returns a tuple (l, e) where l
is a list of SConscript filenames and e is a list of exports.
@@ -523,6 +523,9 @@ class SConsEnvironment(SCons.Environment.Base):
raise SCons.Errors.UserError("Import of non-existent variable '%s'"%x)
def SConscript(self, *ls, **kw):
+ if 'build_dir' in kw:
+ msg = """The build_dir keyword has been deprecated; use the variant_dir keyword instead."""
+ SCons.Warnings.warn(SCons.Warnings.DeprecatedBuildDirWarning, msg)
def subst_element(x, subst=self.subst):
if SCons.Util.is_List(x):
x = list(map(subst, x))
diff --git a/src/engine/SCons/Warnings.py b/src/engine/SCons/Warnings.py
index b17d863..a260c4a 100644
--- a/src/engine/SCons/Warnings.py
+++ b/src/engine/SCons/Warnings.py
@@ -36,6 +36,8 @@ import SCons.Errors
class Warning(SCons.Errors.UserError):
pass
+class WarningOnByDefault(Warning):
+ pass
# NOTE: If you add a new warning class, add it to the man page, too!
@@ -43,51 +45,51 @@ class Warning(SCons.Errors.UserError):
class CacheWriteErrorWarning(Warning):
pass
-class CorruptSConsignWarning(Warning):
+class CorruptSConsignWarning(WarningOnByDefault):
pass
class DependencyWarning(Warning):
pass
-class DuplicateEnvironmentWarning(Warning):
+class DuplicateEnvironmentWarning(WarningOnByDefault):
pass
-class FutureReservedVariableWarning(Warning):
+class FutureReservedVariableWarning(WarningOnByDefault):
pass
-class LinkWarning(Warning):
+class LinkWarning(WarningOnByDefault):
pass
-class MisleadingKeywordsWarning(Warning):
+class MisleadingKeywordsWarning(WarningOnByDefault):
pass
-class MissingSConscriptWarning(Warning):
+class MissingSConscriptWarning(WarningOnByDefault):
pass
-class NoMD5ModuleWarning(Warning):
+class NoMD5ModuleWarning(WarningOnByDefault):
pass
-class NoMetaclassSupportWarning(Warning):
+class NoMetaclassSupportWarning(WarningOnByDefault):
pass
-class NoObjectCountWarning(Warning):
+class NoObjectCountWarning(WarningOnByDefault):
pass
-class NoParallelSupportWarning(Warning):
+class NoParallelSupportWarning(WarningOnByDefault):
pass
-class ReservedVariableWarning(Warning):
+class ReservedVariableWarning(WarningOnByDefault):
pass
-class StackSizeWarning(Warning):
+class StackSizeWarning(WarningOnByDefault):
pass
-class VisualCMissingWarning(Warning):
+class VisualCMissingWarning(WarningOnByDefault):
pass
# Used when MSVC_VERSION and MSVS_VERSION do not point to the
# same version (MSVS_VERSION is deprecated)
-class VisualVersionMismatch(Warning):
+class VisualVersionMismatch(WarningOnByDefault):
pass
class VisualStudioMissingWarning(Warning):
@@ -109,9 +111,19 @@ class MandatoryDeprecatedWarning(DeprecatedWarning):
pass
+# Special case; base always stays DeprecatedWarning
class PythonVersionWarning(DeprecatedWarning):
pass
+class DeprecatedSourceCodeWarning(FutureDeprecatedWarning):
+ pass
+
+class DeprecatedBuildDirWarning(DeprecatedWarning):
+ pass
+
+class TaskmasterNeedsExecuteWarning(DeprecatedWarning):
+ pass
+
class DeprecatedCopyWarning(MandatoryDeprecatedWarning):
pass
@@ -124,9 +136,6 @@ class DeprecatedSourceSignaturesWarning(MandatoryDeprecatedWarning):
class DeprecatedTargetSignaturesWarning(MandatoryDeprecatedWarning):
pass
-class TaskmasterNeedsExecuteWarning(DeprecatedWarning):
- pass
-
class DeprecatedDebugOptionsWarning(MandatoryDeprecatedWarning):
pass
@@ -153,7 +162,7 @@ def suppressWarningClass(clazz):
_enabled.insert(0, (clazz, 0))
def enableWarningClass(clazz):
- """Enable all warnings that are of type clazz or
+ """Enables all warnings that are of type clazz or
derived from clazz."""
_enabled.insert(0, (clazz, 1))