- When compiling with Microsoft Visual Studio, don't include the ATL and
MFC directories in the default INCLUDE and LIB environment variables.
+ - Remove the following deprecated features: the ParseConfig()
+ global function (deprecated in 0.93); the misspelled "validater"
+ keyword to the Options.Add() method (deprecated in 0.91); the
+ SetBuildSignatureType(), SetContentSignatureType(), SetJobs() and
+ GetJobs() global functions (deprecated in 0.14).
+
From Gary Oberbrunner:
- Add an Environment.Dump() method to print the contents of a
env = Environment(MSVS_USE_MFC_DIRS = 1)
+ - The following deprecated global functions have been removed:
+ ParseConfig(), SetBuildSignatureType(), SetContentSignatureType(),
+ SetJobs() and GetJobs().
+
+ - The deprecated "validater" keyword to the Options.Add() method
+ has been removed.
+
Please note the following important changes since release 0.95:
- All Builder calls (both built-in like Program(), Library(),
test_it('foo-bar')
test_it('foo.bar')
- save = {}
- save['warn'] = SCons.Warnings.warn
- save['DeprecatedWarning'] = SCons.Warnings.DeprecatedWarning
- def warn(type, message, save=save):
- save['type'] = type
- save['message'] = message
- SCons.Warnings.warn = warn
- SCons.Warnings.DeprecatedWarning = "xyzzy"
-
- try:
- opts.Add('MISSPELLED',
- 'test using the old validater keyword',
- "42",
- validater=check,
- converter=lambda x: int(x) + 12)
- finally:
- SCons.Warnings.DeprecatedWarning = save['DeprecatedWarning']
- SCons.Warnings.warn = save['warn']
- assert save['type'] == "xyzzy", save['type']
- assert string.find(save['message'], "keyword of the Options.Add() method", save['message'] != -1), save['message']
- o = opts.options[2]
- o.validator(o.key, o.converter(o.default), {})
-
def test_AddOptions(self):
"""Test adding a list of options to an Options object"""
opts = SCons.Options.Options()
not SCons.Util.is_valid_construction_var(key):
raise SCons.Errors.UserError, "Illegal Options.Add() key `%s'" % str(key)
- if kw.has_key('validater'):
- SCons.Warnings.warn(SCons.Warnings.DeprecatedWarning,
- "The 'validater' keyword of the Options.Add() method is deprecated\n" +\
- "and should be changed to 'validator'.")
- if validator is None:
- validator = kw['validater']
-
self._do_add(key, help, default, validator, converter)
def Options(files=None, args=Arguments):
return SCons.Options.Options(files, args)
-def SetBuildSignatureType(type):
- SCons.Warnings.warn(SCons.Warnings.DeprecatedWarning,
- "The SetBuildSignatureType() function has been deprecated;\n" +\
- "\tuse the TargetSignatures() function instead.")
- SCons.Defaults.DefaultEnvironment().TargetSignatures(type)
-
-def SetContentSignatureType(type):
- SCons.Warnings.warn(SCons.Warnings.DeprecatedWarning,
- "The SetContentSignatureType() function has been deprecated;\n" +\
- "\tuse the SourceSignatures() function instead.")
- SCons.Defaults.DefaultEnvironment().SourceSignatures(type)
-
-def GetJobs():
- SCons.Warnings.warn(SCons.Warnings.DeprecatedWarning,
- "The GetJobs() function has been deprecated;\n" +\
- "\tuse GetOption('num_jobs') instead.")
-
- return GetOption('num_jobs')
-
-def SetJobs(num):
- SCons.Warnings.warn(SCons.Warnings.DeprecatedWarning,
- "The SetJobs() function has been deprecated;\n" +\
- "\tuse SetOption('num_jobs', num) instead.")
- SetOption('num_jobs', num)
-
-def ParseConfig(env, command, function=None):
- SCons.Warnings.warn(SCons.Warnings.DeprecatedWarning,
- "The ParseConfig() function has been deprecated;\n" +\
- "\tuse the env.ParseConfig() method instead.")
- return env.ParseConfig(command, function)
-
#
_DefaultEnvironmentProxy = None
globals['CScan'] = SCons.Defaults.CScan
globals['DefaultEnvironment'] = SCons.Defaults.DefaultEnvironment
- # Deprecated functions, leave these here for now.
- globals['GetJobs'] = GetJobs
- globals['ParseConfig'] = ParseConfig
- globals['SetBuildSignatureType'] = SetBuildSignatureType
- globals['SetContentSignatureType'] = SetContentSignatureType
- globals['SetJobs'] = SetJobs
-
globals.update(GlobalDict)
return globals
print env['CCFLAGS']
""" % (TestSCons.python, test_config))
-test.write('SConstruct3', """
-env = Environment(CPPPATH = [], LIBPATH = [], LIBS = [], CCFLAGS = '')
-ParseConfig(env, r"%s %s --libs --cflags")
-print env['CPPPATH']
-print env['LIBPATH']
-print map(lambda x: str(x), env['LIBS'])
-print env['CCFLAGS']
-""" % (TestSCons.python, test_config))
-
good_stdout = test.wrap_stdout(read_str = """\
['/usr/include/fum', 'bar']
['/usr/fax', 'foo']
test.run(arguments = "-f SConstruct2 .", stdout = good_stdout)
-test.run(arguments = "-f SConstruct3 .",
- stdout = good_stdout,
- stderr = """
-scons: warning: The ParseConfig() function has been deprecated;
- use the env.ParseConfig() method instead.
-File "SConstruct3", line 3, in ?
-""")
-
test.pass_test()
+++ /dev/null
-#!/usr/bin/env python
-#
-# __COPYRIGHT__
-#
-# Permission is hereby granted, free of charge, to any person obtaining
-# a copy of this software and associated documentation files (the
-# "Software"), to deal in the Software without restriction, including
-# without limitation the rights to use, copy, modify, merge, publish,
-# distribute, sublicense, and/or sell copies of the Software, and to
-# permit persons to whom the Software is furnished to do so, subject to
-# the following conditions:
-#
-# The above copyright notice and this permission notice shall be included
-# in all copies or substantial portions of the Software.
-#
-# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
-# KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
-# WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-#
-
-__revision__ = "__FILE__ __REVISION__ __DATE__ __DEVELOPER__"
-
-import TestSCons
-
-test = TestSCons.TestSCons()
-
-warning = """\
-
-scons: warning: The SetBuildSignatureType() function has been deprecated;
- use the TargetSignatures() function instead.
-File "SConstruct", line %d, in ?
-"""
-
-test.write('SConstruct', """
-env = Environment()
-
-def copy1(env, source, target):
- open(str(target[0]), 'wb').write(open(str(source[0]), 'rb').read())
-
-def copy2(env, source, target):
- return copy1(env, source, target)
-
-env['BUILDERS']['Copy1'] = Builder(action=copy1)
-env['BUILDERS']['Copy2'] = Builder(action=copy2)
-
-env.Copy2('foo.out', 'foo.in')
-env.Copy1('foo.out.out', 'foo.out')
-
-SetBuildSignatureType('content')
-""")
-
-test.write('foo.in', 'foo.in')
-
-test.run(arguments='foo.out.out',
- stdout=test.wrap_stdout("""\
-copy2(["foo.out"], ["foo.in"])
-copy1(["foo.out.out"], ["foo.out"])
-"""),
- stderr=warning%16)
-
-test.run(arguments='foo.out.out',
- stdout=test.wrap_stdout("scons: `foo.out.out' is up to date.\n"),
- stderr=warning%16)
-
-test.write('SConstruct', """
-env = Environment()
-
-def copy1(env, source, target):
- open(str(target[0]), 'wb').write(open(str(source[0]), 'rb').read())
-
-def copy2(env, source, target):
- x = 2 # added this line
- return copy1(env, source, target)
-
-env['BUILDERS']['Copy1'] = Builder(action=copy1)
-env['BUILDERS']['Copy2'] = Builder(action=copy2)
-
-env.Copy2('foo.out', 'foo.in')
-env.Copy1('foo.out.out', 'foo.out')
-
-SetBuildSignatureType('content')
-""")
-
-test.run(arguments='foo.out.out',
- stdout=test.wrap_stdout("""\
-copy2(["foo.out"], ["foo.in"])
-scons: `foo.out.out' is up to date.
-"""),
- stderr=warning%17)
-
-test.write('SConstruct', """
-env = Environment()
-
-def copy1(env, source, target):
- open(str(target[0]), 'wb').write(open(str(source[0]), 'rb').read())
-
-def copy2(env, source, target):
- x = 2 # added this line
- return copy1(env, source, target)
-
-env['BUILDERS']['Copy1'] = Builder(action=copy1)
-env['BUILDERS']['Copy2'] = Builder(action=copy2)
-
-env.Copy2('foo.out', 'foo.in')
-env.Copy1('foo.out.out', 'foo.out')
-
-SetBuildSignatureType('build')
-""")
-
-test.run(arguments='foo.out.out',
- stdout=test.wrap_stdout("""\
-copy1(["foo.out.out"], ["foo.out"])
-"""),
- stderr=warning%17)
-
-test.write('SConstruct', """
-env = Environment()
-
-def copy1(env, source, target):
- open(str(target[0]), 'wb').write(open(str(source[0]), 'rb').read())
-
-def copy2(env, source, target):
- return copy1(env, source, target)
-
-env['BUILDERS']['Copy1'] = Builder(action=copy1)
-env['BUILDERS']['Copy2'] = Builder(action=copy2)
-
-env.Copy2('foo.out', 'foo.in')
-env.Copy1('foo.out.out', 'foo.out')
-
-SetBuildSignatureType('build')
-""")
-
-test.run(arguments='foo.out.out',
- stdout=test.wrap_stdout("""\
-copy2(["foo.out"], ["foo.in"])
-copy1(["foo.out.out"], ["foo.out"])
-"""),
- stderr=warning%16)
-
-
-test.pass_test()
+++ /dev/null
-#!/usr/bin/env python
-#
-# __COPYRIGHT__
-#
-# Permission is hereby granted, free of charge, to any person obtaining
-# a copy of this software and associated documentation files (the
-# "Software"), to deal in the Software without restriction, including
-# without limitation the rights to use, copy, modify, merge, publish,
-# distribute, sublicense, and/or sell copies of the Software, and to
-# permit persons to whom the Software is furnished to do so, subject to
-# the following conditions:
-#
-# The above copyright notice and this permission notice shall be included
-# in all copies or substantial portions of the Software.
-#
-# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
-# KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
-# WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-#
-
-__revision__ = "__FILE__ __REVISION__ __DATE__ __DEVELOPER__"
-
-import imp
-import os
-import os.path
-
-import TestSCons
-
-test = TestSCons.TestSCons()
-
-warning = """\
-
-scons: warning: The SetContentSignatureType() function has been deprecated;
- use the SourceSignatures() function instead.
-File "SConstruct", line %d, in ?
-"""
-
-test.write('SConstruct', """
-def build(env, target, source):
- open(str(target[0]), 'wt').write(open(str(source[0]), 'rt').read())
-B = Builder(action = build)
-env = Environment(BUILDERS = { 'B' : B })
-env.B(target = 'f1.out', source = 'f1.in')
-env.B(target = 'f2.out', source = 'f2.in')
-env.B(target = 'f3.out', source = 'f3.in')
-env.B(target = 'f4.out', source = 'f4.in')
-
-SetContentSignatureType('timestamp')
-""")
-
-test.write('f1.in', "f1.in\n")
-test.write('f2.in', "f2.in\n")
-test.write('f3.in', "f3.in\n")
-test.write('f4.in', "f4.in\n")
-
-test.run(arguments = 'f1.out f3.out',
- stderr = warning%11)
-
-test.run(arguments = 'f1.out f2.out f3.out f4.out',
- stdout = test.wrap_stdout("""\
-scons: `f1.out' is up to date.
-build(["f2.out"], ["f2.in"])
-scons: `f3.out' is up to date.
-build(["f4.out"], ["f4.in"])
-"""),
- stderr = warning%11)
-
-os.utime(test.workpath('f1.in'),
- (os.path.getatime(test.workpath('f1.in')),
- os.path.getmtime(test.workpath('f1.in'))+10))
-os.utime(test.workpath('f3.in'),
- (os.path.getatime(test.workpath('f3.in')),
- os.path.getmtime(test.workpath('f3.in'))+10))
-
-test.run(arguments = 'f1.out f2.out f3.out f4.out',
- stdout = test.wrap_stdout("""\
-build(["f1.out"], ["f1.in"])
-scons: `f2.out' is up to date.
-build(["f3.out"], ["f3.in"])
-scons: `f4.out' is up to date.
-"""),
- stderr = warning%11)
-
-test.write('SConstruct', """
-def build(env, target, source):
- open(str(target[0]), 'wt').write(open(str(source[0]), 'rt').read())
-B = Builder(action = build)
-env = Environment(BUILDERS = { 'B' : B })
-env.B(target = 'f1.out', source = 'f1.in')
-env.B(target = 'f2.out', source = 'f2.in')
-env.B(target = 'f3.out', source = 'f3.in')
-env.B(target = 'f4.out', source = 'f4.in')
-
-SetContentSignatureType('MD5')
-""")
-
-test.write('f1.in', "f1.in\n")
-test.write('f2.in', "f2.in\n")
-test.write('f3.in', "f3.in\n")
-test.write('f4.in', "f4.in\n")
-
-test.run(arguments = 'f1.out f3.out',
- stderr = warning%11)
-
-test.run(arguments = 'f1.out f2.out f3.out f4.out',
- stdout = test.wrap_stdout("""\
-scons: `f1.out' is up to date.
-build(["f2.out"], ["f2.in"])
-scons: `f3.out' is up to date.
-build(["f4.out"], ["f4.in"])
-"""),
- stderr = warning%11)
-
-os.utime(test.workpath('f1.in'),
- (os.path.getatime(test.workpath('f1.in')),
- os.path.getmtime(test.workpath('f1.in'))+10))
-os.utime(test.workpath('f3.in'),
- (os.path.getatime(test.workpath('f3.in')),
- os.path.getmtime(test.workpath('f3.in'))+10))
-
-test.run(arguments = 'f1.out f2.out f3.out f4.out',
- stdout = test.wrap_stdout("""\
-scons: `f1.out' is up to date.
-scons: `f2.out' is up to date.
-scons: `f3.out' is up to date.
-scons: `f4.out' is up to date.
-"""),
- stderr = warning%11)
-
-test.write('SConstruct', """
-def build(env, target, source):
- open(str(target[0]), 'wt').write(open(str(source[0]), 'rt').read())
-B = Builder(action = build)
-env = Environment(BUILDERS = { 'B' : B })
-env.B(target = 'f1.out', source = 'f1.in')
-env.B(target = 'f2.out', source = 'f2.in')
-env.B(target = 'f3.out', source = 'f3.in')
-env.B(target = 'f4.out', source = 'f4.in')
-""")
-
-test.up_to_date(arguments = 'f1.out f2.out f3.out f4.out')
-
-test.pass_test()
-
-test.write('SConstruct', """
-def build(env, target, source):
- open(str(target[0]), 'wt').write(open(str(source[0]), 'rt').read())
-B = Builder(action = build)
-env = Environment(BUILDERS = { 'B' : B })
-env.B(target = 'f1.out', source = 'f1.in')
-env.B(target = 'f2.out', source = 'f2.in')
-env.B(target = 'f3.out', source = 'f3.in')
-env.B(target = 'f4.out', source = 'f4.in')
-
-SetContentSignatureType('timestamp')
-""")
-
-test.run(arguments = 'f1.out f2.out f3.out f4.out',
- stdout = test.wrap_stdout(''),
- stderr = warning%11)