diff -Nru scons-3.1.1/CHANGES.txt scons-3.1.2/CHANGES.txt --- scons-3.1.1/CHANGES.txt 2019-08-08 14:50:09.000000000 +0000 +++ scons-3.1.2/CHANGES.txt 2019-12-17 02:07:12.000000000 +0000 @@ -4,6 +4,72 @@ Change Log +NOTE: The 4.0.0 Release of SCons will drop Python 2.7 Support + +RELEASE 3.1.2 - Mon, 17 Dec 2019 02:06:27 +0000 + + From Edoardo Bezzeccheri + - Added debug option "action_timestamps" which outputs to stdout the absolute start and end time for each target. + + From Rob Boehne + - Fix suncxx tool (Oracle Studio compiler) when using Python 3. Previously would throw an exception. + Resolved by properly handling tool version string output as unicode. + + From Tim Gates + - Resolved a typo in engine.SCons.Tool + + From Adam Gross: + - Resolved a race condition in multithreaded Windows builds with Python 2 + in the case where a child process is spawned while a Python action has a + file open. Original author: Ryan Beasley. + + From Jason Kenny + - Update Command() function to accept target_scanner, source_factory, and target_factory arguments. + This makes Command act more like a one-off builder. + + From Ivan Kravets + - Added support for "-imacros" to ParseFlags + + From Jacek Kuczera: + - Fix CheckFunc detection code for Visual 2019. Some functions + (e.g. memmove) were incorrectly recognized as not available. + + From Jakub Kulik + - Fix stacktrace when using SCons with Python 3.5+ and SunOS/Solaris related tools. + + From Philipp Maierhöfer: + - Avoid crash with UnicodeDecodeError on Python 3 when a Latex log file in + non-UTF-8 encoding (e.g. containing umlauts in Latin-1 encoding when + the fontenc package is included with \usepackage[T1]{fontenc}) is read. + + From Mathew Robinson: + - Improved threading performance by ensuring NodeInfo is shared + across threads. Results in ~13% improvement for parallel builds + (-j# > 1) with many shared nodes. + - Improve performance of Entry.disambiguate() by making check for + most common case first, preventing unnecessary IO. + - Improved DAG walk performance by reducing unnecessary work when + there are no un-visited children. + + From Mats Wichmann + - Replace instances of string find method with "in" checks where + the index from find() was not used. + - CmdStringHolder fix from issue #3428 + - Turn previously deprecated debug options into failures: + --debug=tree, --debug=dtree, --debug=stree, --debug=nomemoizer. + - Experimental New Feature: Enable caching MSVC configuration + If SCONS_CACHE_MSVC_CONFIG shell environment variable is set, + SCons will cache the results of past calls to vcvarsall.bat to + a file; integrates with existing memoizing of such vars. + On vs2019 saves 5+ seconds per SCons invocation, which really + helps test suite runs. + - Remove deprecated SourceSignatures, TargetSignatures + - Remove deprecated Builder keywords: overrides and scanner + - Remove deprecated env.Copy + - Remove deprecated BuildDir plus SConscript keyword build_dir + - A number of documentation improvements. + + RELEASE 3.1.1 - Mon, 07 Aug 2019 20:09:12 -0500 From William Deegan: diff -Nru scons-3.1.1/debian/changelog scons-3.1.2/debian/changelog --- scons-3.1.1/debian/changelog 2019-12-17 12:45:50.000000000 +0000 +++ scons-3.1.2/debian/changelog 2020-02-02 09:37:32.000000000 +0000 @@ -1,8 +1,35 @@ -scons (3.1.1-3build1) focal; urgency=medium +scons (3.1.2-2) unstable; urgency=medium - * No-change rebuild to generate dependencies on python2. + * Upload to unstable (Closes: #939487). + * debian/copyright: + - Add year 2020. + * Declare compliance with Debian Policy 4.5.0 (No changes needed). - -- Matthias Klose Tue, 17 Dec 2019 12:45:50 +0000 + -- Jörg Frings-Fürst Sun, 02 Feb 2020 10:37:32 +0100 + +scons (3.1.2-1) experimental; urgency=medium + + * New upstream release. + - Refresh patches. + * Switch to debhelper-compat: + - debian/control: Replace debhelper with debhelper-compat. + - Remove debian/compat. + * Declare compliance with Debian Policy 4.4.1.2 (No changes needed). + * debian/control: + - Switch to Rules-Requires-Root: no. + * Upload to experimental. + + -- Jörg Frings-Fürst Fri, 27 Dec 2019 10:03:54 +0100 + +scons (3.1.1-4) experimental; urgency=medium + + * Revert to release 3.1.1-1. + * Upload to experimental. + * Declare compliance with Debian Policy 4.4.1 (No changes needed). + * debian/control: + - Add Rules-Requires-Root: binary-targets. + + -- Jörg Frings-Fürst Mon, 07 Oct 2019 19:41:05 +0200 scons (3.1.1-3) unstable; urgency=medium diff -Nru scons-3.1.1/debian/compat scons-3.1.2/debian/compat --- scons-3.1.1/debian/compat 2019-08-13 18:11:56.000000000 +0000 +++ scons-3.1.2/debian/compat 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -12 diff -Nru scons-3.1.1/debian/control scons-3.1.2/debian/control --- scons-3.1.1/debian/control 2019-08-13 18:15:09.000000000 +0000 +++ scons-3.1.2/debian/control 2020-02-02 08:47:25.000000000 +0000 @@ -4,10 +4,11 @@ Maintainer: Jörg Frings-Fürst Uploaders: Laszlo Boszormenyi (GCS) Build-Depends: - debhelper (>= 12), + debhelper-compat (= 12), dh-python, - python-all -Standards-Version: 4.4.0 + python3-all (>= 3.5) +Standards-Version: 4.5.0 +Rules-Requires-Root: no Homepage: https://www.scons.org/ Vcs-Git: https://salsa.debian.org/debian/scons.git Vcs-Browser: https://salsa.debian.org/debian/scons @@ -15,7 +16,7 @@ Package: scons Architecture: all Depends: - ${python:Depends}, + ${python3:Depends}, ${misc:Depends} Description: replacement for make SCons is a make replacement providing a range of enhanced features such diff -Nru scons-3.1.1/debian/copyright scons-3.1.2/debian/copyright --- scons-3.1.1/debian/copyright 2019-08-13 18:11:56.000000000 +0000 +++ scons-3.1.2/debian/copyright 2020-02-02 08:42:25.000000000 +0000 @@ -17,7 +17,7 @@ Copyright: 2002 Moshe Zadka 2003-2008 Mark Brown 2008-2014 Luca Falavigna - 2014-2019 Jörg Frings-Fürst + 2014-2020 Jörg Frings-Fürst 2018 Laszlo Boszormenyi (GCS) License: GPL-3.0+ diff -Nru scons-3.1.1/debian/patches/0110-remove_stale_files.patch scons-3.1.2/debian/patches/0110-remove_stale_files.patch --- scons-3.1.1/debian/patches/0110-remove_stale_files.patch 2019-08-13 18:11:56.000000000 +0000 +++ scons-3.1.2/debian/patches/0110-remove_stale_files.patch 2019-12-27 08:27:54.000000000 +0000 @@ -7,7 +7,7 @@ =================================================================== --- trunk.orig/engine/SCons/Script/Main.py +++ trunk/engine/SCons/Script/Main.py -@@ -1115,6 +1115,21 @@ def _main(parser): +@@ -1122,6 +1122,21 @@ def _main(parser): print('Found nothing to build') exit_status = 2 diff -Nru scons-3.1.1/debian/patches/0600-manpage-spelling.patch scons-3.1.2/debian/patches/0600-manpage-spelling.patch --- scons-3.1.1/debian/patches/0600-manpage-spelling.patch 2019-08-13 18:11:56.000000000 +0000 +++ scons-3.1.2/debian/patches/0600-manpage-spelling.patch 2019-12-27 08:55:31.000000000 +0000 @@ -7,7 +7,7 @@ =================================================================== --- trunk.orig/scons.1 +++ trunk/scons.1 -@@ -447,7 +447,7 @@ call should use or generate the results +@@ -457,7 +457,7 @@ call should use or generate the results .PP \-\-config=auto .RS 4 @@ -16,7 +16,7 @@ .RE .PP \-\-config=force -@@ -1566,7 +1566,7 @@ The tool definition (i\&.e\&. my_tool()) +@@ -1572,7 +1572,7 @@ The tool definition (i\&.e\&. my_tool()) .PP If no tool list is specified, then SCons will auto\-detect the installed tools using the PATH variable in the ENV construction variable and the platform name when the Environment is constructed\&. Changing the PATH variable after the Environment is constructed will not cause the tools to be redetected\&. .PP @@ -25,7 +25,7 @@ .sp .if n \{\ .RS 4 -@@ -6509,7 +6509,7 @@ env\&.Substfile(\*(Aqfoo\&.in\*(Aq, SUBS +@@ -6544,7 +6544,7 @@ env\&.Substfile(\*(Aqfoo\&.in\*(Aq, SUBS good_foo = [(\*(Aq$foobar\*(Aq, \*(Aq$foobar\*(Aq), (\*(Aq$foo\*(Aq, \*(Aq$foo\*(Aq)] env\&.Substfile(\*(Aqfoo\&.in\*(Aq, SUBST_DICT = good_foo) @@ -34,7 +34,7 @@ bad_bar = {\*(Aq@bar@\*(Aq: \*(Aq@soap@\*(Aq, \*(Aq@soap@\*(Aq: \*(Aqlye\*(Aq} env\&.Substfile(\*(Aqbar\&.in\*(Aq, SUBST_DICT = bad_bar) -@@ -6658,7 +6658,7 @@ files will be automatically created (i\& +@@ -6693,7 +6693,7 @@ files will be automatically created (i\& \fB$LINGUAS_FILE\fR and \fB$POTDOMAIN\fR @@ -43,7 +43,7 @@ \fBPOTUpdate\fR, and \fBPOUpdate\fR work here too\&. -@@ -6741,7 +6741,7 @@ file\&. Note, that the updated +@@ -6776,7 +6776,7 @@ file\&. Note, that the updated POT and PO @@ -52,7 +52,7 @@ po/ directory contains LINGUAS -@@ -7281,7 +7281,7 @@ Example: +@@ -7348,7 +7348,7 @@ Example: AllowSubstExceptions() # Also allow a string containing a zero\-division expansion @@ -61,7 +61,7 @@ AllowSubstExceptions(IndexError, NameError, ZeroDivisionError) .fi .if n \{\ -@@ -9267,7 +9267,7 @@ Return([vars\&.\&.\&., stop=]) +@@ -9342,7 +9342,7 @@ Return([vars\&.\&.\&., stop=]) .RS 4 By default, this stops processing the current SConscript file and returns to the calling SConscript file the values of the variables named in the \fIvars\fR @@ -70,7 +70,7 @@ \fBReturn\fR\&. Any strings that contain white space .sp The optional -@@ -10175,7 +10175,7 @@ function to create a copy of your source +@@ -10117,7 +10117,7 @@ function to create a copy of your source \fIvariant_dir\fR is not found but exists under \fIsrc_dir\fR, the file or directory is copied to @@ -79,7 +79,7 @@ .sp \fBVariantDir\fR -@@ -11515,7 +11515,7 @@ is used to create PDF output from an XML +@@ -11411,7 +11411,7 @@ is used to create PDF output from an XML .PP DOCBOOK_FOPFLAGS .RS 4 @@ -88,7 +88,7 @@ fop or xep\&. -@@ -11542,7 +11542,7 @@ is used to resolve XIncludes for a given +@@ -11438,7 +11438,7 @@ is used to resolve XIncludes for a given .PP DOCBOOK_XMLLINTFLAGS .RS 4 @@ -97,7 +97,7 @@ xmllint\&. .RE .PP -@@ -11573,7 +11573,7 @@ is used to transform an XML file via a g +@@ -11469,7 +11469,7 @@ is used to transform an XML file via a g .PP DOCBOOK_XSLTPROCFLAGS .RS 4 @@ -106,7 +106,7 @@ xsltproc (or saxon, -@@ -11582,7 +11582,7 @@ xalan)\&. +@@ -11478,7 +11478,7 @@ xalan)\&. .PP DOCBOOK_XSLTPROCPARAMS .RS 4 @@ -115,7 +115,7 @@ saxon and saxon\-xslt, respectively\&. -@@ -14253,7 +14253,7 @@ A list of installed versions of the Metr +@@ -14142,7 +14142,7 @@ A list of installed versions of the Metr .PP NAME .RS 4 @@ -124,7 +124,7 @@ .RE .PP no_import_lib -@@ -16051,7 +16051,7 @@ The suffix used for tar file names\&. +@@ -15924,7 +15924,7 @@ The suffix used for tar file names\&. TEMPFILEARGJOIN .RS 4 The string (or character) to be used to join the arguments passed to TEMPFILE when command line exceeds the limit set by @@ -133,7 +133,7 @@ .RE .PP TEMPFILEPREFIX -@@ -16403,7 +16403,7 @@ file\&. +@@ -16276,7 +16276,7 @@ file\&. .PP X_RPM_EXTRADEFS .RS 4 @@ -142,7 +142,7 @@ \&.spec file\&. Each item is added as\-is with a carriage return appended\&. This is useful if some specific RPM feature not otherwise anticipated by SCons needs to be turned on or off\&. Note if this variable is omitted, SCons will by default supply the value \*(Aq%global debug_package %{nil}\*(Aq -@@ -16627,7 +16627,7 @@ builder\&. +@@ -16500,7 +16500,7 @@ builder\&. .PP _XGETTEXTFROMFLAGS .RS 4 @@ -151,12 +151,12 @@ \-D flags from the \fB$XGETTEXTPATH\fR -@@ -18569,7 +18569,7 @@ a = Action("build < ${SOURCE\&.file} > $ - The - \fBAction\fR() global function also takes an - \fBexitstatfunc\fR --keyword argument which specifies a function that is passed the exit status (or return value) from the specified action and can return an arbitrary or modified value\&. This can be used, for example, to specify that an Action object\*(Aqs return value should be ignored under special conditions and SCons should, therefore, consider that the action always suceeds: -+keyword argument which specifies a function that is passed the exit status (or return value) from the specified action and can return an arbitrary or modified value\&. This can be used, for example, to specify that an Action object\*(Aqs return value should be ignored under special conditions and SCons should, therefore, consider that the action always succeeds: +@@ -18442,7 +18442,7 @@ a = Action("build < ${SOURCE\&.file} > $ + .PP + + \fIexitstatfunc\fR +-specifies a function that is passed the exit status (or return value) from the specified action and can return an arbitrary or modified value\&. This can be used, for example, to specify that an Action object\*(Aqs return value should be ignored under special conditions and SCons should, therefore, consider that the action always suceeds: ++specifies a function that is passed the exit status (or return value) from the specified action and can return an arbitrary or modified value\&. This can be used, for example, to specify that an Action object\*(Aqs return value should be ignored under special conditions and SCons should, therefore, consider that the action always succeeds: .sp .if n \{\ .RS 4 diff -Nru scons-3.1.1/debian/patches/series scons-3.1.2/debian/patches/series --- scons-3.1.1/debian/patches/series 2019-08-13 18:11:56.000000000 +0000 +++ scons-3.1.2/debian/patches/series 2019-10-07 18:08:36.000000000 +0000 @@ -5,4 +5,4 @@ 0100-parallel_build.patch 0120-fix-bibtex-call.patch #0125-printf_regression.patch -#0130-python3.patch +0130-python3.patch diff -Nru scons-3.1.1/debian/rules scons-3.1.2/debian/rules --- scons-3.1.1/debian/rules 2019-08-13 18:16:34.000000000 +0000 +++ scons-3.1.2/debian/rules 2019-10-07 18:08:36.000000000 +0000 @@ -3,4 +3,4 @@ export PYBUILD_INSTALL_ARGS=--no-version-script --standalone-lib --no-install-man --no-install-bat %: - dh $@ --with python2,python3 --buildsystem=pybuild + dh $@ --with python3 --buildsystem=pybuild diff -Nru scons-3.1.1/engine/SCons/Action.py scons-3.1.2/engine/SCons/Action.py --- scons-3.1.1/engine/SCons/Action.py 2019-08-08 14:50:08.000000000 +0000 +++ scons-3.1.2/engine/SCons/Action.py 2019-12-17 02:07:11.000000000 +0000 @@ -98,7 +98,7 @@ # 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__ = "src/engine/SCons/Action.py 72ae09dc35ac2626f8ff711d8c4b30b6138e08e3 2019-08-08 14:50:06 bdeegan" +__revision__ = "src/engine/SCons/Action.py bee7caf9defd6e108fc2998a2520ddb36a967691 2019-12-17 02:07:09 bdeegan" import os import pickle diff -Nru scons-3.1.1/engine/SCons/Builder.py scons-3.1.2/engine/SCons/Builder.py --- scons-3.1.1/engine/SCons/Builder.py 2019-08-08 14:50:08.000000000 +0000 +++ scons-3.1.2/engine/SCons/Builder.py 2019-12-17 02:07:11.000000000 +0000 @@ -98,7 +98,7 @@ # 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__ = "src/engine/SCons/Builder.py 72ae09dc35ac2626f8ff711d8c4b30b6138e08e3 2019-08-08 14:50:06 bdeegan" +__revision__ = "src/engine/SCons/Builder.py bee7caf9defd6e108fc2998a2520ddb36a967691 2019-12-17 02:07:09 bdeegan" import collections @@ -396,16 +396,13 @@ self.env = env self.single_source = single_source if 'overrides' in overrides: - SCons.Warnings.warn(SCons.Warnings.DeprecatedBuilderKeywordsWarning, - "The \"overrides\" keyword to Builder() creation has been deprecated;\n" +\ - "\tspecify the items as keyword arguments to the Builder() call instead.") - overrides.update(overrides['overrides']) - del overrides['overrides'] + msg = "The \"overrides\" keyword to Builder() creation has been removed;\n" +\ + "\tspecify the items as keyword arguments to the Builder() call instead." + raise TypeError(msg) if 'scanner' in overrides: - SCons.Warnings.warn(SCons.Warnings.DeprecatedBuilderKeywordsWarning, - "The \"scanner\" keyword to Builder() creation has been deprecated;\n" - "\tuse: source_scanner or target_scanner as appropriate.") - del overrides['scanner'] + msg = "The \"scanner\" keyword to Builder() creation has been removed;\n" +\ + "\tuse: source_scanner or target_scanner as appropriate." + raise TypeError(msg) self.overrides = overrides self.set_suffix(suffix) diff -Nru scons-3.1.1/engine/SCons/CacheDir.py scons-3.1.2/engine/SCons/CacheDir.py --- scons-3.1.1/engine/SCons/CacheDir.py 2019-08-08 14:50:08.000000000 +0000 +++ scons-3.1.2/engine/SCons/CacheDir.py 2019-12-17 02:07:11.000000000 +0000 @@ -21,7 +21,7 @@ # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. # -__revision__ = "src/engine/SCons/CacheDir.py 72ae09dc35ac2626f8ff711d8c4b30b6138e08e3 2019-08-08 14:50:06 bdeegan" +__revision__ = "src/engine/SCons/CacheDir.py bee7caf9defd6e108fc2998a2520ddb36a967691 2019-12-17 02:07:09 bdeegan" __doc__ = """ CacheDir support diff -Nru scons-3.1.1/engine/SCons/compat/__init__.py scons-3.1.2/engine/SCons/compat/__init__.py --- scons-3.1.1/engine/SCons/compat/__init__.py 2019-08-08 14:50:08.000000000 +0000 +++ scons-3.1.2/engine/SCons/compat/__init__.py 2019-12-17 02:07:11.000000000 +0000 @@ -57,7 +57,7 @@ rest of our code will find our pre-loaded compatibility module. """ -__revision__ = "src/engine/SCons/compat/__init__.py 72ae09dc35ac2626f8ff711d8c4b30b6138e08e3 2019-08-08 14:50:06 bdeegan" +__revision__ = "src/engine/SCons/compat/__init__.py bee7caf9defd6e108fc2998a2520ddb36a967691 2019-12-17 02:07:09 bdeegan" import os import sys diff -Nru scons-3.1.1/engine/SCons/compat/_scons_dbm.py scons-3.1.2/engine/SCons/compat/_scons_dbm.py --- scons-3.1.1/engine/SCons/compat/_scons_dbm.py 2019-08-08 14:50:08.000000000 +0000 +++ scons-3.1.2/engine/SCons/compat/_scons_dbm.py 2019-12-17 02:07:11.000000000 +0000 @@ -30,7 +30,7 @@ Python won't blow up even if dbm wasn't compiled in. """ -__revision__ = "src/engine/SCons/compat/_scons_dbm.py 72ae09dc35ac2626f8ff711d8c4b30b6138e08e3 2019-08-08 14:50:06 bdeegan" +__revision__ = "src/engine/SCons/compat/_scons_dbm.py bee7caf9defd6e108fc2998a2520ddb36a967691 2019-12-17 02:07:09 bdeegan" class error(Exception): pass diff -Nru scons-3.1.1/engine/SCons/Conftest.py scons-3.1.2/engine/SCons/Conftest.py --- scons-3.1.1/engine/SCons/Conftest.py 2019-08-08 14:50:08.000000000 +0000 +++ scons-3.1.2/engine/SCons/Conftest.py 2019-12-17 02:07:12.000000000 +0000 @@ -290,6 +290,10 @@ #include %(hdr)s +#if _MSC_VER && !__INTEL_COMPILER + #pragma function(%(name)s) +#endif + int main(void) { #if defined (__stub_%(name)s) || defined (__stub___%(name)s) fail fail fail diff -Nru scons-3.1.1/engine/SCons/cpp.py scons-3.1.2/engine/SCons/cpp.py --- scons-3.1.1/engine/SCons/cpp.py 2019-08-08 14:50:08.000000000 +0000 +++ scons-3.1.2/engine/SCons/cpp.py 2019-12-17 02:07:12.000000000 +0000 @@ -21,7 +21,7 @@ # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. # -__revision__ = "src/engine/SCons/cpp.py 72ae09dc35ac2626f8ff711d8c4b30b6138e08e3 2019-08-08 14:50:06 bdeegan" +__revision__ = "src/engine/SCons/cpp.py bee7caf9defd6e108fc2998a2520ddb36a967691 2019-12-17 02:07:09 bdeegan" __doc__ = """ SCons C Pre-Processor module diff -Nru scons-3.1.1/engine/SCons/Debug.py scons-3.1.2/engine/SCons/Debug.py --- scons-3.1.1/engine/SCons/Debug.py 2019-08-08 14:50:08.000000000 +0000 +++ scons-3.1.2/engine/SCons/Debug.py 2019-12-17 02:07:12.000000000 +0000 @@ -31,7 +31,7 @@ # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. # -__revision__ = "src/engine/SCons/Debug.py 72ae09dc35ac2626f8ff711d8c4b30b6138e08e3 2019-08-08 14:50:06 bdeegan" +__revision__ = "src/engine/SCons/Debug.py bee7caf9defd6e108fc2998a2520ddb36a967691 2019-12-17 02:07:09 bdeegan" import os import sys diff -Nru scons-3.1.1/engine/SCons/Defaults.py scons-3.1.2/engine/SCons/Defaults.py --- scons-3.1.1/engine/SCons/Defaults.py 2019-08-08 14:50:08.000000000 +0000 +++ scons-3.1.2/engine/SCons/Defaults.py 2019-12-17 02:07:12.000000000 +0000 @@ -33,7 +33,7 @@ # from __future__ import division -__revision__ = "src/engine/SCons/Defaults.py 72ae09dc35ac2626f8ff711d8c4b30b6138e08e3 2019-08-08 14:50:06 bdeegan" +__revision__ = "src/engine/SCons/Defaults.py bee7caf9defd6e108fc2998a2520ddb36a967691 2019-12-17 02:07:09 bdeegan" import os diff -Nru scons-3.1.1/engine/SCons/Environment.py scons-3.1.2/engine/SCons/Environment.py --- scons-3.1.1/engine/SCons/Environment.py 2019-08-08 14:50:08.000000000 +0000 +++ scons-3.1.2/engine/SCons/Environment.py 2019-12-17 02:07:12.000000000 +0000 @@ -31,7 +31,7 @@ # 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__ = "src/engine/SCons/Environment.py 72ae09dc35ac2626f8ff711d8c4b30b6138e08e3 2019-08-08 14:50:06 bdeegan" +__revision__ = "src/engine/SCons/Environment.py bee7caf9defd6e108fc2998a2520ddb36a967691 2019-12-17 02:07:09 bdeegan" import copy @@ -46,7 +46,7 @@ import SCons.Debug from SCons.Debug import logInstanceCreation import SCons.Defaults -import SCons.Errors +from SCons.Errors import UserError, BuildError import SCons.Memoize import SCons.Node import SCons.Node.Alias @@ -75,11 +75,6 @@ semi_deepcopy = SCons.Util.semi_deepcopy semi_deepcopy_dict = SCons.Util.semi_deepcopy_dict -# Pull UserError into the global name space for the benefit of -# Environment().SourceSignatures(), which has some import statements -# which seem to mess up its ability to reference SCons directly. -UserError = SCons.Errors.UserError - def alias_builder(env, target, source): pass @@ -154,7 +149,7 @@ env._dict[key] = bd for k, v in value.items(): if not SCons.Builder.is_a_Builder(v): - raise SCons.Errors.UserError('%s is not a Builder.' % repr(v)) + raise UserError('%s is not a Builder.' % repr(v)) bd.update(value) def _del_SCANNERS(env, key): @@ -431,7 +426,7 @@ # efficient than calling another function or a method. if key not in self._dict \ and not _is_valid_var.match(key): - raise SCons.Errors.UserError("Illegal construction variable `%s'" % key) + raise UserError("Illegal construction variable `%s'" % key) self._dict[key] = value def get(self, key, default=None): @@ -707,31 +702,34 @@ append_next_arg_to = None # for multi-word args for arg in params: if append_next_arg_to: - if append_next_arg_to == 'CPPDEFINES': - append_define(arg) - elif append_next_arg_to == '-include': - t = ('-include', self.fs.File(arg)) - dict['CCFLAGS'].append(t) - elif append_next_arg_to == '-isysroot': - t = ('-isysroot', arg) - dict['CCFLAGS'].append(t) - dict['LINKFLAGS'].append(t) - elif append_next_arg_to == '-isystem': - t = ('-isystem', arg) - dict['CCFLAGS'].append(t) - elif append_next_arg_to == '-iquote': - t = ('-iquote', arg) - dict['CCFLAGS'].append(t) - elif append_next_arg_to == '-idirafter': - t = ('-idirafter', arg) - dict['CCFLAGS'].append(t) - elif append_next_arg_to == '-arch': - t = ('-arch', arg) - dict['CCFLAGS'].append(t) - dict['LINKFLAGS'].append(t) - else: - dict[append_next_arg_to].append(arg) - append_next_arg_to = None + if append_next_arg_to == 'CPPDEFINES': + append_define(arg) + elif append_next_arg_to == '-include': + t = ('-include', self.fs.File(arg)) + dict['CCFLAGS'].append(t) + elif append_next_arg_to == '-imacros': + t = ('-imacros', self.fs.File(arg)) + dict['CCFLAGS'].append(t) + elif append_next_arg_to == '-isysroot': + t = ('-isysroot', arg) + dict['CCFLAGS'].append(t) + dict['LINKFLAGS'].append(t) + elif append_next_arg_to == '-isystem': + t = ('-isystem', arg) + dict['CCFLAGS'].append(t) + elif append_next_arg_to == '-iquote': + t = ('-iquote', arg) + dict['CCFLAGS'].append(t) + elif append_next_arg_to == '-idirafter': + t = ('-idirafter', arg) + dict['CCFLAGS'].append(t) + elif append_next_arg_to == '-arch': + t = ('-arch', arg) + dict['CCFLAGS'].append(t) + dict['LINKFLAGS'].append(t) + else: + dict[append_next_arg_to].append(arg) + append_next_arg_to = None elif not arg[0] in ['-', '+']: dict['LIBS'].append(self.fs.File(arg)) elif arg == '-dylib_file': @@ -790,7 +788,7 @@ elif arg == '-mwindows': dict['LINKFLAGS'].append(arg) elif arg[:5] == '-std=': - if arg[5:].find('++')!=-1: + if '++' in arg[5:]: key='CXXFLAGS' else: key='CFLAGS' @@ -798,7 +796,7 @@ elif arg[0] == '+': dict['CCFLAGS'].append(arg) dict['LINKFLAGS'].append(arg) - elif arg in ['-include', '-isysroot', '-isystem', '-iquote', '-idirafter', '-arch']: + elif arg in ['-include', '-imacros', '-isysroot', '-isystem', '-iquote', '-idirafter', '-arch']: append_next_arg_to = arg else: dict['CCFLAGS'].append(arg) @@ -1430,14 +1428,6 @@ if SCons.Debug.track_instances: logInstanceCreation(self, 'Environment.EnvironmentClone') return clone - def Copy(self, *args, **kw): - global _warn_copy_deprecated - if _warn_copy_deprecated: - msg = "The env.Copy() method is deprecated; use the env.Clone() method instead." - SCons.Warnings.warn(SCons.Warnings.DeprecatedCopyWarning, msg) - _warn_copy_deprecated = False - return self.Clone(*args, **kw) - def _changed_build(self, dependency, target, prev_ni, repo_node=None): if dependency.changed_state(target, prev_ni, repo_node): return 1 @@ -1493,8 +1483,14 @@ self.copy_from_cache = copy_function + def Detect(self, progs): """Return the first available program in progs. + + :param progs: one or more command names to check for + :type progs: str or list + :returns str: first name from progs that can be found. + """ if not SCons.Util.is_List(progs): progs = [ progs ] @@ -1503,7 +1499,17 @@ if path: return prog return None + def Dictionary(self, *args): + """Return construction variables from an environment. + + :param *args: (optional) variable names to look up + :returns: if args omitted, the dictionary of all constr. vars. + If one arg, the corresponding value is returned. + If more than one arg, a list of values is returned. + :raises KeyError: if any of *args is not in the construction env. + + """ if not args: return self._dict dlist = [self._dict[x] for x in args] @@ -1511,23 +1517,28 @@ dlist = dlist[0] return dlist - def Dump(self, key = None): - """ - Using the standard Python pretty printer, return the contents of the - scons build environment as a string. - If the key passed in is anything other than None, then that will - be used as an index into the build environment dictionary and - whatever is found there will be fed into the pretty printer. Note - that this key is case sensitive. + def Dump(self, key=None): + """ Return pretty-printed string of construction variables. + + :param key: if None, format the whole dict of variables. + Else look up and format just the value for key. + """ import pprint pp = pprint.PrettyPrinter(indent=2) if key: - dict = self.Dictionary(key) + cvars = self.Dictionary(key) else: - dict = self.Dictionary() - return pp.pformat(dict) + cvars = self.Dictionary() + + # TODO: pprint doesn't do a nice job on path-style values + # if the paths contain spaces (i.e. Windows), because the + # algorithm tries to break lines on spaces, while breaking + # on the path-separator would be more "natural". Is there + # a better way to format those? + return pp.pformat(cvars) + def FindIxes(self, paths, prefix, suffix): """ @@ -1600,7 +1611,7 @@ for td in tdlist: targets.extend(td[0]) if len(targets) > 1: - raise SCons.Errors.UserError( + raise UserError( "More than one dependency target found in `%s': %s" % (filename, targets)) for target, depends in tdlist: @@ -1918,14 +1929,6 @@ t.set_always_build() 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'] - return self.VariantDir(*args, **kw) - def Builder(self, **kw): nkw = self.subst_kw(kw) return SCons.Builder.Builder(**nkw) @@ -1964,13 +1967,42 @@ be any type that the Builder constructor will accept for an action.""" bkw = { - 'action' : action, - 'target_factory' : self.fs.Entry, - 'source_factory' : self.fs.Entry, + 'action': action, + 'target_factory': self.fs.Entry, + 'source_factory': self.fs.Entry, } - try: bkw['source_scanner'] = kw['source_scanner'] - except KeyError: pass - else: del kw['source_scanner'] + # source scanner + try: + bkw['source_scanner'] = kw['source_scanner'] + except KeyError: + pass + else: + del kw['source_scanner'] + + # target scanner + try: + bkw['target_scanner'] = kw['target_scanner'] + except KeyError: + pass + else: + del kw['target_scanner'] + + # source factory + try: + bkw['source_factory'] = kw['source_factory'] + except KeyError: + pass + else: + del kw['source_factory'] + + # target factory + try: + bkw['target_factory'] = kw['target_factory'] + except KeyError: + pass + else: + del kw['target_factory'] + bld = SCons.Builder.Builder(**bkw) return bld(self, target, source, **kw) @@ -2039,7 +2071,7 @@ """ action = self.Action(action, *args, **kw) result = action([], [], self) - if isinstance(result, SCons.Errors.BuildError): + if isinstance(result, BuildError): errstr = result.errstr if result.filename: errstr = result.filename + ': ' + errstr @@ -2159,7 +2191,7 @@ for side_effect in side_effects: if side_effect.multiple_side_effect_has_builder(): - raise SCons.Errors.UserError("Multiple ways to build the same target were specified for: %s" % str(side_effect)) + raise UserError("Multiple ways to build the same target were specified for: %s" % str(side_effect)) side_effect.add_source(targets) side_effect.side_effect = 1 self.Precious(side_effect) @@ -2177,24 +2209,6 @@ entry.set_src_builder(builder) return entries - def SourceSignatures(self, type): - global _warn_source_signatures_deprecated - if _warn_source_signatures_deprecated: - msg = "The env.SourceSignatures() method is deprecated;\n" + \ - "\tconvert your build to use the env.Decider() method instead." - SCons.Warnings.warn(SCons.Warnings.DeprecatedSourceSignaturesWarning, msg) - _warn_source_signatures_deprecated = False - type = self.subst(type) - self.src_sig_type = type - if type == 'MD5': - if not SCons.Util.md5: - raise UserError("MD5 signatures are not available in this version of Python.") - self.decide_source = self._changed_content - elif type == 'timestamp': - self.decide_source = self._changed_timestamp_match - else: - raise UserError("Unknown source signature type '%s'" % type) - def Split(self, arg): """This function converts a string or list into a list of strings or Nodes. This makes things easier for users by allowing files to @@ -2216,28 +2230,6 @@ else: return [self.subst(arg)] - def TargetSignatures(self, type): - global _warn_target_signatures_deprecated - if _warn_target_signatures_deprecated: - msg = "The env.TargetSignatures() method is deprecated;\n" + \ - "\tconvert your build to use the env.Decider() method instead." - SCons.Warnings.warn(SCons.Warnings.DeprecatedTargetSignaturesWarning, msg) - _warn_target_signatures_deprecated = False - type = self.subst(type) - self.tgt_sig_type = type - if type in ('MD5', 'content'): - if not SCons.Util.md5: - raise UserError("MD5 signatures are not available in this version of Python.") - self.decide_target = self._changed_content - elif type == 'timestamp': - self.decide_target = self._changed_timestamp_match - elif type == 'build': - self.decide_target = self._changed_build - elif type == 'source': - self.decide_target = self._changed_source - else: - raise UserError("Unknown target signature type '%s'"%type) - def Value(self, value, built_value=None): """ """ @@ -2322,7 +2314,7 @@ return attr.clone(self) else: return attr - + def __setattr__(self, name, value): setattr(self.__dict__['__subject'], name, value) @@ -2334,7 +2326,7 @@ return self.__dict__['__subject'].__getitem__(key) def __setitem__(self, key, value): if not is_valid_construction_var(key): - raise SCons.Errors.UserError("Illegal construction variable `%s'" % key) + raise UserError("Illegal construction variable `%s'" % key) self.__dict__['overrides'][key] = value def __delitem__(self, key): try: diff -Nru scons-3.1.1/engine/SCons/Errors.py scons-3.1.2/engine/SCons/Errors.py --- scons-3.1.1/engine/SCons/Errors.py 2019-08-08 14:50:08.000000000 +0000 +++ scons-3.1.2/engine/SCons/Errors.py 2019-12-17 02:07:12.000000000 +0000 @@ -28,7 +28,7 @@ """ -__revision__ = "src/engine/SCons/Errors.py 72ae09dc35ac2626f8ff711d8c4b30b6138e08e3 2019-08-08 14:50:06 bdeegan" +__revision__ = "src/engine/SCons/Errors.py bee7caf9defd6e108fc2998a2520ddb36a967691 2019-12-17 02:07:09 bdeegan" import shutil import SCons.Util diff -Nru scons-3.1.1/engine/SCons/Executor.py scons-3.1.2/engine/SCons/Executor.py --- scons-3.1.1/engine/SCons/Executor.py 2019-08-08 14:50:08.000000000 +0000 +++ scons-3.1.2/engine/SCons/Executor.py 2019-12-17 02:07:12.000000000 +0000 @@ -28,7 +28,7 @@ # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. from __future__ import print_function -__revision__ = "src/engine/SCons/Executor.py 72ae09dc35ac2626f8ff711d8c4b30b6138e08e3 2019-08-08 14:50:06 bdeegan" +__revision__ = "src/engine/SCons/Executor.py bee7caf9defd6e108fc2998a2520ddb36a967691 2019-12-17 02:07:09 bdeegan" import collections diff -Nru scons-3.1.1/engine/SCons/exitfuncs.py scons-3.1.2/engine/SCons/exitfuncs.py --- scons-3.1.1/engine/SCons/exitfuncs.py 2019-08-08 14:50:08.000000000 +0000 +++ scons-3.1.2/engine/SCons/exitfuncs.py 2019-12-17 02:07:12.000000000 +0000 @@ -27,7 +27,7 @@ # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. # -__revision__ = "src/engine/SCons/exitfuncs.py 72ae09dc35ac2626f8ff711d8c4b30b6138e08e3 2019-08-08 14:50:06 bdeegan" +__revision__ = "src/engine/SCons/exitfuncs.py bee7caf9defd6e108fc2998a2520ddb36a967691 2019-12-17 02:07:09 bdeegan" import atexit diff -Nru scons-3.1.1/engine/SCons/__init__.py scons-3.1.2/engine/SCons/__init__.py --- scons-3.1.1/engine/SCons/__init__.py 2019-08-08 14:50:08.000000000 +0000 +++ scons-3.1.2/engine/SCons/__init__.py 2019-12-17 02:07:11.000000000 +0000 @@ -27,15 +27,15 @@ # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. # -__revision__ = "src/engine/SCons/__init__.py 72ae09dc35ac2626f8ff711d8c4b30b6138e08e3 2019-08-08 14:50:06 bdeegan" +__revision__ = "src/engine/SCons/__init__.py bee7caf9defd6e108fc2998a2520ddb36a967691 2019-12-17 02:07:09 bdeegan" -__version__ = "3.1.1" +__version__ = "3.1.2" -__build__ = "72ae09dc35ac2626f8ff711d8c4b30b6138e08e3" +__build__ = "bee7caf9defd6e108fc2998a2520ddb36a967691" __buildsys__ = "octodog" -__date__ = "2019-08-08 14:50:06" +__date__ = "2019-12-17 02:07:09" __developer__ = "bdeegan" diff -Nru scons-3.1.1/engine/SCons/Job.py scons-3.1.2/engine/SCons/Job.py --- scons-3.1.1/engine/SCons/Job.py 2019-08-08 14:50:08.000000000 +0000 +++ scons-3.1.2/engine/SCons/Job.py 2019-12-17 02:07:12.000000000 +0000 @@ -29,7 +29,7 @@ # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. # -__revision__ = "src/engine/SCons/Job.py 72ae09dc35ac2626f8ff711d8c4b30b6138e08e3 2019-08-08 14:50:06 bdeegan" +__revision__ = "src/engine/SCons/Job.py bee7caf9defd6e108fc2998a2520ddb36a967691 2019-12-17 02:07:09 bdeegan" import SCons.compat diff -Nru scons-3.1.1/engine/SCons/Memoize.py scons-3.1.2/engine/SCons/Memoize.py --- scons-3.1.1/engine/SCons/Memoize.py 2019-08-08 14:50:08.000000000 +0000 +++ scons-3.1.2/engine/SCons/Memoize.py 2019-12-17 02:07:12.000000000 +0000 @@ -22,7 +22,7 @@ # from __future__ import print_function -__revision__ = "src/engine/SCons/Memoize.py 72ae09dc35ac2626f8ff711d8c4b30b6138e08e3 2019-08-08 14:50:06 bdeegan" +__revision__ = "src/engine/SCons/Memoize.py bee7caf9defd6e108fc2998a2520ddb36a967691 2019-12-17 02:07:09 bdeegan" __doc__ = """Memoizer diff -Nru scons-3.1.1/engine/SCons/Node/Alias.py scons-3.1.2/engine/SCons/Node/Alias.py --- scons-3.1.1/engine/SCons/Node/Alias.py 2019-08-08 14:50:08.000000000 +0000 +++ scons-3.1.2/engine/SCons/Node/Alias.py 2019-12-17 02:07:12.000000000 +0000 @@ -30,7 +30,7 @@ # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. # -__revision__ = "src/engine/SCons/Node/Alias.py 72ae09dc35ac2626f8ff711d8c4b30b6138e08e3 2019-08-08 14:50:06 bdeegan" +__revision__ = "src/engine/SCons/Node/Alias.py bee7caf9defd6e108fc2998a2520ddb36a967691 2019-12-17 02:07:09 bdeegan" import collections diff -Nru scons-3.1.1/engine/SCons/Node/FS.py scons-3.1.2/engine/SCons/Node/FS.py --- scons-3.1.1/engine/SCons/Node/FS.py 2019-08-08 14:50:08.000000000 +0000 +++ scons-3.1.2/engine/SCons/Node/FS.py 2019-12-17 02:07:12.000000000 +0000 @@ -33,7 +33,7 @@ # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. from __future__ import print_function -__revision__ = "src/engine/SCons/Node/FS.py 72ae09dc35ac2626f8ff711d8c4b30b6138e08e3 2019-08-08 14:50:06 bdeegan" +__revision__ = "src/engine/SCons/Node/FS.py bee7caf9defd6e108fc2998a2520ddb36a967691 2019-12-17 02:07:09 bdeegan" import fnmatch import os @@ -963,14 +963,14 @@ def disambiguate(self, must_exist=None): """ - """ - if self.isdir(): - self.__class__ = Dir - self._morph() - elif self.isfile(): + """ + if self.isfile(): self.__class__ = File self._morph() self.clear() + elif self.isdir(): + self.__class__ = Dir + self._morph() else: # There was nothing on-disk at this location, so look in # the src directory. diff -Nru scons-3.1.1/engine/SCons/Node/__init__.py scons-3.1.2/engine/SCons/Node/__init__.py --- scons-3.1.1/engine/SCons/Node/__init__.py 2019-08-08 14:50:08.000000000 +0000 +++ scons-3.1.2/engine/SCons/Node/__init__.py 2019-12-17 02:07:12.000000000 +0000 @@ -43,7 +43,7 @@ # 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__ = "src/engine/SCons/Node/__init__.py 72ae09dc35ac2626f8ff711d8c4b30b6138e08e3 2019-08-08 14:50:06 bdeegan" +__revision__ = "src/engine/SCons/Node/__init__.py bee7caf9defd6e108fc2998a2520ddb36a967691 2019-12-17 02:07:09 bdeegan" import os import collections @@ -614,6 +614,7 @@ self._func_rexists = 1 self._func_get_contents = 0 self._func_target_from_source = 0 + self.ninfo = None self.clear_memoized_values() @@ -1131,11 +1132,10 @@ return ninfo def get_ninfo(self): - try: - return self.ninfo - except AttributeError: - self.ninfo = self.new_ninfo() + if self.ninfo is not None: return self.ninfo + self.ninfo = self.new_ninfo() + return self.ninfo def new_binfo(self): binfo = self.BuildInfo() diff -Nru scons-3.1.1/engine/SCons/Node/Python.py scons-3.1.2/engine/SCons/Node/Python.py --- scons-3.1.1/engine/SCons/Node/Python.py 2019-08-08 14:50:08.000000000 +0000 +++ scons-3.1.2/engine/SCons/Node/Python.py 2019-12-17 02:07:12.000000000 +0000 @@ -27,7 +27,7 @@ # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. # -__revision__ = "src/engine/SCons/Node/Python.py 72ae09dc35ac2626f8ff711d8c4b30b6138e08e3 2019-08-08 14:50:06 bdeegan" +__revision__ = "src/engine/SCons/Node/Python.py bee7caf9defd6e108fc2998a2520ddb36a967691 2019-12-17 02:07:09 bdeegan" import SCons.Node diff -Nru scons-3.1.1/engine/SCons/PathList.py scons-3.1.2/engine/SCons/PathList.py --- scons-3.1.1/engine/SCons/PathList.py 2019-08-08 14:50:08.000000000 +0000 +++ scons-3.1.2/engine/SCons/PathList.py 2019-12-17 02:07:12.000000000 +0000 @@ -21,7 +21,7 @@ # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. # -__revision__ = "src/engine/SCons/PathList.py 72ae09dc35ac2626f8ff711d8c4b30b6138e08e3 2019-08-08 14:50:06 bdeegan" +__revision__ = "src/engine/SCons/PathList.py bee7caf9defd6e108fc2998a2520ddb36a967691 2019-12-17 02:07:09 bdeegan" __doc__ = """SCons.PathList diff -Nru scons-3.1.1/engine/SCons/Platform/aix.py scons-3.1.2/engine/SCons/Platform/aix.py --- scons-3.1.1/engine/SCons/Platform/aix.py 2019-08-08 14:50:08.000000000 +0000 +++ scons-3.1.2/engine/SCons/Platform/aix.py 2019-12-17 02:07:12.000000000 +0000 @@ -30,7 +30,7 @@ # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. # -__revision__ = "src/engine/SCons/Platform/aix.py 72ae09dc35ac2626f8ff711d8c4b30b6138e08e3 2019-08-08 14:50:06 bdeegan" +__revision__ = "src/engine/SCons/Platform/aix.py bee7caf9defd6e108fc2998a2520ddb36a967691 2019-12-17 02:07:09 bdeegan" import os import subprocess diff -Nru scons-3.1.1/engine/SCons/Platform/cygwin.py scons-3.1.2/engine/SCons/Platform/cygwin.py --- scons-3.1.1/engine/SCons/Platform/cygwin.py 2019-08-08 14:50:08.000000000 +0000 +++ scons-3.1.2/engine/SCons/Platform/cygwin.py 2019-12-17 02:07:12.000000000 +0000 @@ -30,7 +30,7 @@ # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. # -__revision__ = "src/engine/SCons/Platform/cygwin.py 72ae09dc35ac2626f8ff711d8c4b30b6138e08e3 2019-08-08 14:50:06 bdeegan" +__revision__ = "src/engine/SCons/Platform/cygwin.py bee7caf9defd6e108fc2998a2520ddb36a967691 2019-12-17 02:07:09 bdeegan" import sys diff -Nru scons-3.1.1/engine/SCons/Platform/darwin.py scons-3.1.2/engine/SCons/Platform/darwin.py --- scons-3.1.1/engine/SCons/Platform/darwin.py 2019-08-08 14:50:08.000000000 +0000 +++ scons-3.1.2/engine/SCons/Platform/darwin.py 2019-12-17 02:07:12.000000000 +0000 @@ -30,7 +30,7 @@ # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. # -__revision__ = "src/engine/SCons/Platform/darwin.py 72ae09dc35ac2626f8ff711d8c4b30b6138e08e3 2019-08-08 14:50:06 bdeegan" +__revision__ = "src/engine/SCons/Platform/darwin.py bee7caf9defd6e108fc2998a2520ddb36a967691 2019-12-17 02:07:09 bdeegan" from . import posix import os diff -Nru scons-3.1.1/engine/SCons/Platform/hpux.py scons-3.1.2/engine/SCons/Platform/hpux.py --- scons-3.1.1/engine/SCons/Platform/hpux.py 2019-08-08 14:50:08.000000000 +0000 +++ scons-3.1.2/engine/SCons/Platform/hpux.py 2019-12-17 02:07:12.000000000 +0000 @@ -30,7 +30,7 @@ # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. # -__revision__ = "src/engine/SCons/Platform/hpux.py 72ae09dc35ac2626f8ff711d8c4b30b6138e08e3 2019-08-08 14:50:06 bdeegan" +__revision__ = "src/engine/SCons/Platform/hpux.py bee7caf9defd6e108fc2998a2520ddb36a967691 2019-12-17 02:07:09 bdeegan" from . import posix diff -Nru scons-3.1.1/engine/SCons/Platform/__init__.py scons-3.1.2/engine/SCons/Platform/__init__.py --- scons-3.1.1/engine/SCons/Platform/__init__.py 2019-08-08 14:50:08.000000000 +0000 +++ scons-3.1.2/engine/SCons/Platform/__init__.py 2019-12-17 02:07:12.000000000 +0000 @@ -43,7 +43,7 @@ # from __future__ import print_function -__revision__ = "src/engine/SCons/Platform/__init__.py 72ae09dc35ac2626f8ff711d8c4b30b6138e08e3 2019-08-08 14:50:06 bdeegan" +__revision__ = "src/engine/SCons/Platform/__init__.py bee7caf9defd6e108fc2998a2520ddb36a967691 2019-12-17 02:07:09 bdeegan" import SCons.compat diff -Nru scons-3.1.1/engine/SCons/Platform/irix.py scons-3.1.2/engine/SCons/Platform/irix.py --- scons-3.1.1/engine/SCons/Platform/irix.py 2019-08-08 14:50:08.000000000 +0000 +++ scons-3.1.2/engine/SCons/Platform/irix.py 2019-12-17 02:07:12.000000000 +0000 @@ -30,7 +30,7 @@ # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. # -__revision__ = "src/engine/SCons/Platform/irix.py 72ae09dc35ac2626f8ff711d8c4b30b6138e08e3 2019-08-08 14:50:06 bdeegan" +__revision__ = "src/engine/SCons/Platform/irix.py bee7caf9defd6e108fc2998a2520ddb36a967691 2019-12-17 02:07:09 bdeegan" from . import posix diff -Nru scons-3.1.1/engine/SCons/Platform/mingw.py scons-3.1.2/engine/SCons/Platform/mingw.py --- scons-3.1.1/engine/SCons/Platform/mingw.py 2019-08-08 14:50:08.000000000 +0000 +++ scons-3.1.2/engine/SCons/Platform/mingw.py 2019-12-17 02:07:12.000000000 +0000 @@ -27,7 +27,7 @@ # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. # -__revision__ = "src/engine/SCons/Platform/mingw.py 72ae09dc35ac2626f8ff711d8c4b30b6138e08e3 2019-08-08 14:50:06 bdeegan" +__revision__ = "src/engine/SCons/Platform/mingw.py bee7caf9defd6e108fc2998a2520ddb36a967691 2019-12-17 02:07:09 bdeegan" import sys diff -Nru scons-3.1.1/engine/SCons/Platform/os2.py scons-3.1.2/engine/SCons/Platform/os2.py --- scons-3.1.1/engine/SCons/Platform/os2.py 2019-08-08 14:50:08.000000000 +0000 +++ scons-3.1.2/engine/SCons/Platform/os2.py 2019-12-17 02:07:12.000000000 +0000 @@ -30,7 +30,7 @@ # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. # -__revision__ = "src/engine/SCons/Platform/os2.py 72ae09dc35ac2626f8ff711d8c4b30b6138e08e3 2019-08-08 14:50:06 bdeegan" +__revision__ = "src/engine/SCons/Platform/os2.py bee7caf9defd6e108fc2998a2520ddb36a967691 2019-12-17 02:07:09 bdeegan" from . import win32 def generate(env): diff -Nru scons-3.1.1/engine/SCons/Platform/posix.py scons-3.1.2/engine/SCons/Platform/posix.py --- scons-3.1.1/engine/SCons/Platform/posix.py 2019-08-08 14:50:08.000000000 +0000 +++ scons-3.1.2/engine/SCons/Platform/posix.py 2019-12-17 02:07:12.000000000 +0000 @@ -30,7 +30,7 @@ # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. # -__revision__ = "src/engine/SCons/Platform/posix.py 72ae09dc35ac2626f8ff711d8c4b30b6138e08e3 2019-08-08 14:50:06 bdeegan" +__revision__ = "src/engine/SCons/Platform/posix.py bee7caf9defd6e108fc2998a2520ddb36a967691 2019-12-17 02:07:09 bdeegan" import errno import os diff -Nru scons-3.1.1/engine/SCons/Platform/sunos.py scons-3.1.2/engine/SCons/Platform/sunos.py --- scons-3.1.1/engine/SCons/Platform/sunos.py 2019-08-08 14:50:08.000000000 +0000 +++ scons-3.1.2/engine/SCons/Platform/sunos.py 2019-12-17 02:07:12.000000000 +0000 @@ -30,7 +30,7 @@ # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. # -__revision__ = "src/engine/SCons/Platform/sunos.py 72ae09dc35ac2626f8ff711d8c4b30b6138e08e3 2019-08-08 14:50:06 bdeegan" +__revision__ = "src/engine/SCons/Platform/sunos.py bee7caf9defd6e108fc2998a2520ddb36a967691 2019-12-17 02:07:09 bdeegan" from . import posix diff -Nru scons-3.1.1/engine/SCons/Platform/virtualenv.py scons-3.1.2/engine/SCons/Platform/virtualenv.py --- scons-3.1.1/engine/SCons/Platform/virtualenv.py 2019-08-08 14:50:08.000000000 +0000 +++ scons-3.1.2/engine/SCons/Platform/virtualenv.py 2019-12-17 02:07:12.000000000 +0000 @@ -26,7 +26,7 @@ # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. # -__revision__ = "src/engine/SCons/Platform/virtualenv.py 72ae09dc35ac2626f8ff711d8c4b30b6138e08e3 2019-08-08 14:50:06 bdeegan" +__revision__ = "src/engine/SCons/Platform/virtualenv.py bee7caf9defd6e108fc2998a2520ddb36a967691 2019-12-17 02:07:09 bdeegan" import os import sys diff -Nru scons-3.1.1/engine/SCons/Platform/win32.py scons-3.1.2/engine/SCons/Platform/win32.py --- scons-3.1.1/engine/SCons/Platform/win32.py 2019-08-08 14:50:08.000000000 +0000 +++ scons-3.1.2/engine/SCons/Platform/win32.py 2019-12-17 02:07:12.000000000 +0000 @@ -30,7 +30,7 @@ # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. # -__revision__ = "src/engine/SCons/Platform/win32.py 72ae09dc35ac2626f8ff711d8c4b30b6138e08e3 2019-08-08 14:50:06 bdeegan" +__revision__ = "src/engine/SCons/Platform/win32.py bee7caf9defd6e108fc2998a2520ddb36a967691 2019-12-17 02:07:09 bdeegan" import os import os.path @@ -51,10 +51,6 @@ import msvcrt import win32api import win32con - - msvcrt.get_osfhandle - win32api.SetHandleInformation - win32con.HANDLE_FLAG_INHERIT except ImportError: parallel_msg = \ "you do not seem to have the pywin32 extensions installed;\n" + \ @@ -66,28 +62,44 @@ else: parallel_msg = None - _builtin_open = open + if sys.version_info.major == 2: + import __builtin__ - def _scons_open(*args, **kw): - fp = _builtin_open(*args, **kw) - win32api.SetHandleInformation(msvcrt.get_osfhandle(fp.fileno()), - win32con.HANDLE_FLAG_INHERIT, - 0) - return fp + _builtin_file = __builtin__.file + _builtin_open = __builtin__.open - open = _scons_open + def _scons_fixup_mode(mode): + """Adjust 'mode' to mark handle as non-inheritable. + + SCons is multithreaded, so allowing handles to be inherited by + children opens us up to races, where (e.g.) processes spawned by + the Taskmaster may inherit and retain references to files opened + by other threads. This may lead to sharing violations and, + ultimately, build failures. + + By including 'N' as part of fopen's 'mode' parameter, all file + handles returned from these functions are atomically marked as + non-inheritable. + """ + if not mode: + # Python's default is 'r'. + # https://docs.python.org/2/library/functions.html#open + mode = 'rN' + elif 'N' not in mode: + mode += 'N' + return mode - if sys.version_info.major == 2: - _builtin_file = file class _scons_file(_builtin_file): - def __init__(self, *args, **kw): - _builtin_file.__init__(self, *args, **kw) - win32api.SetHandleInformation(msvcrt.get_osfhandle(self.fileno()), - win32con.HANDLE_FLAG_INHERIT, 0) - file = _scons_file - else: - # No longer needed for python 3.4 and above. Files are opened non sharable - pass + def __init__(self, name, mode=None, *args, **kwargs): + _builtin_file.__init__(self, name, _scons_fixup_mode(mode), + *args, **kwargs) + + def _scons_open(name, mode=None, *args, **kwargs): + return _builtin_open(name, _scons_fixup_mode(mode), + *args, **kwargs) + + __builtin__.file = _scons_file + __builtin__.open = _scons_open diff -Nru scons-3.1.1/engine/SCons/Scanner/C.py scons-3.1.2/engine/SCons/Scanner/C.py --- scons-3.1.1/engine/SCons/Scanner/C.py 2019-08-08 14:50:08.000000000 +0000 +++ scons-3.1.2/engine/SCons/Scanner/C.py 2019-12-17 02:07:12.000000000 +0000 @@ -27,7 +27,7 @@ # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. # -__revision__ = "src/engine/SCons/Scanner/C.py 72ae09dc35ac2626f8ff711d8c4b30b6138e08e3 2019-08-08 14:50:06 bdeegan" +__revision__ = "src/engine/SCons/Scanner/C.py bee7caf9defd6e108fc2998a2520ddb36a967691 2019-12-17 02:07:09 bdeegan" import SCons.Node.FS import SCons.Scanner diff -Nru scons-3.1.1/engine/SCons/Scanner/Dir.py scons-3.1.2/engine/SCons/Scanner/Dir.py --- scons-3.1.1/engine/SCons/Scanner/Dir.py 2019-08-08 14:50:08.000000000 +0000 +++ scons-3.1.2/engine/SCons/Scanner/Dir.py 2019-12-17 02:07:12.000000000 +0000 @@ -20,7 +20,7 @@ # 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__ = "src/engine/SCons/Scanner/Dir.py 72ae09dc35ac2626f8ff711d8c4b30b6138e08e3 2019-08-08 14:50:06 bdeegan" +__revision__ = "src/engine/SCons/Scanner/Dir.py bee7caf9defd6e108fc2998a2520ddb36a967691 2019-12-17 02:07:09 bdeegan" import SCons.Node.FS import SCons.Scanner diff -Nru scons-3.1.1/engine/SCons/Scanner/D.py scons-3.1.2/engine/SCons/Scanner/D.py --- scons-3.1.1/engine/SCons/Scanner/D.py 2019-08-08 14:50:08.000000000 +0000 +++ scons-3.1.2/engine/SCons/Scanner/D.py 2019-12-17 02:07:12.000000000 +0000 @@ -30,7 +30,7 @@ # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. # -__revision__ = "src/engine/SCons/Scanner/D.py 72ae09dc35ac2626f8ff711d8c4b30b6138e08e3 2019-08-08 14:50:06 bdeegan" +__revision__ = "src/engine/SCons/Scanner/D.py bee7caf9defd6e108fc2998a2520ddb36a967691 2019-12-17 02:07:09 bdeegan" import SCons.Scanner diff -Nru scons-3.1.1/engine/SCons/Scanner/Fortran.py scons-3.1.2/engine/SCons/Scanner/Fortran.py --- scons-3.1.1/engine/SCons/Scanner/Fortran.py 2019-08-08 14:50:08.000000000 +0000 +++ scons-3.1.2/engine/SCons/Scanner/Fortran.py 2019-12-17 02:07:12.000000000 +0000 @@ -26,7 +26,7 @@ # 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__ = "src/engine/SCons/Scanner/Fortran.py 72ae09dc35ac2626f8ff711d8c4b30b6138e08e3 2019-08-08 14:50:06 bdeegan" +__revision__ = "src/engine/SCons/Scanner/Fortran.py bee7caf9defd6e108fc2998a2520ddb36a967691 2019-12-17 02:07:09 bdeegan" import re diff -Nru scons-3.1.1/engine/SCons/Scanner/IDL.py scons-3.1.2/engine/SCons/Scanner/IDL.py --- scons-3.1.1/engine/SCons/Scanner/IDL.py 2019-08-08 14:50:08.000000000 +0000 +++ scons-3.1.2/engine/SCons/Scanner/IDL.py 2019-12-17 02:07:12.000000000 +0000 @@ -28,7 +28,7 @@ # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. # -__revision__ = "src/engine/SCons/Scanner/IDL.py 72ae09dc35ac2626f8ff711d8c4b30b6138e08e3 2019-08-08 14:50:06 bdeegan" +__revision__ = "src/engine/SCons/Scanner/IDL.py bee7caf9defd6e108fc2998a2520ddb36a967691 2019-12-17 02:07:09 bdeegan" import SCons.Node.FS import SCons.Scanner diff -Nru scons-3.1.1/engine/SCons/Scanner/__init__.py scons-3.1.2/engine/SCons/Scanner/__init__.py --- scons-3.1.1/engine/SCons/Scanner/__init__.py 2019-08-08 14:50:08.000000000 +0000 +++ scons-3.1.2/engine/SCons/Scanner/__init__.py 2019-12-17 02:07:12.000000000 +0000 @@ -27,7 +27,7 @@ # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. # -__revision__ = "src/engine/SCons/Scanner/__init__.py 72ae09dc35ac2626f8ff711d8c4b30b6138e08e3 2019-08-08 14:50:06 bdeegan" +__revision__ = "src/engine/SCons/Scanner/__init__.py bee7caf9defd6e108fc2998a2520ddb36a967691 2019-12-17 02:07:09 bdeegan" import re diff -Nru scons-3.1.1/engine/SCons/Scanner/LaTeX.py scons-3.1.2/engine/SCons/Scanner/LaTeX.py --- scons-3.1.1/engine/SCons/Scanner/LaTeX.py 2019-08-08 14:50:08.000000000 +0000 +++ scons-3.1.2/engine/SCons/Scanner/LaTeX.py 2019-12-17 02:07:12.000000000 +0000 @@ -27,7 +27,7 @@ # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. # -__revision__ = "src/engine/SCons/Scanner/LaTeX.py 72ae09dc35ac2626f8ff711d8c4b30b6138e08e3 2019-08-08 14:50:06 bdeegan" +__revision__ = "src/engine/SCons/Scanner/LaTeX.py bee7caf9defd6e108fc2998a2520ddb36a967691 2019-12-17 02:07:09 bdeegan" import os.path import re diff -Nru scons-3.1.1/engine/SCons/Scanner/Prog.py scons-3.1.2/engine/SCons/Scanner/Prog.py --- scons-3.1.1/engine/SCons/Scanner/Prog.py 2019-08-08 14:50:08.000000000 +0000 +++ scons-3.1.2/engine/SCons/Scanner/Prog.py 2019-12-17 02:07:12.000000000 +0000 @@ -21,7 +21,7 @@ # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. # -__revision__ = "src/engine/SCons/Scanner/Prog.py 72ae09dc35ac2626f8ff711d8c4b30b6138e08e3 2019-08-08 14:50:06 bdeegan" +__revision__ = "src/engine/SCons/Scanner/Prog.py bee7caf9defd6e108fc2998a2520ddb36a967691 2019-12-17 02:07:09 bdeegan" import SCons.Node import SCons.Node.FS diff -Nru scons-3.1.1/engine/SCons/Scanner/RC.py scons-3.1.2/engine/SCons/Scanner/RC.py --- scons-3.1.1/engine/SCons/Scanner/RC.py 2019-08-08 14:50:08.000000000 +0000 +++ scons-3.1.2/engine/SCons/Scanner/RC.py 2019-12-17 02:07:12.000000000 +0000 @@ -28,7 +28,7 @@ # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. # -__revision__ = "src/engine/SCons/Scanner/RC.py 72ae09dc35ac2626f8ff711d8c4b30b6138e08e3 2019-08-08 14:50:06 bdeegan" +__revision__ = "src/engine/SCons/Scanner/RC.py bee7caf9defd6e108fc2998a2520ddb36a967691 2019-12-17 02:07:09 bdeegan" import re diff -Nru scons-3.1.1/engine/SCons/Scanner/SWIG.py scons-3.1.2/engine/SCons/Scanner/SWIG.py --- scons-3.1.1/engine/SCons/Scanner/SWIG.py 2019-08-08 14:50:08.000000000 +0000 +++ scons-3.1.2/engine/SCons/Scanner/SWIG.py 2019-12-17 02:07:12.000000000 +0000 @@ -27,7 +27,7 @@ # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. # -__revision__ = "src/engine/SCons/Scanner/SWIG.py 72ae09dc35ac2626f8ff711d8c4b30b6138e08e3 2019-08-08 14:50:06 bdeegan" +__revision__ = "src/engine/SCons/Scanner/SWIG.py bee7caf9defd6e108fc2998a2520ddb36a967691 2019-12-17 02:07:09 bdeegan" import SCons.Scanner diff -Nru scons-3.1.1/engine/SCons/SConf.py scons-3.1.2/engine/SCons/SConf.py --- scons-3.1.1/engine/SCons/SConf.py 2019-08-08 14:50:08.000000000 +0000 +++ scons-3.1.2/engine/SCons/SConf.py 2019-12-17 02:07:12.000000000 +0000 @@ -35,7 +35,7 @@ # from __future__ import print_function -__revision__ = "src/engine/SCons/SConf.py 72ae09dc35ac2626f8ff711d8c4b30b6138e08e3 2019-08-08 14:50:06 bdeegan" +__revision__ = "src/engine/SCons/SConf.py bee7caf9defd6e108fc2998a2520ddb36a967691 2019-12-17 02:07:09 bdeegan" import SCons.compat diff -Nru scons-3.1.1/engine/SCons/SConsign.py scons-3.1.2/engine/SCons/SConsign.py --- scons-3.1.1/engine/SCons/SConsign.py 2019-08-08 14:50:08.000000000 +0000 +++ scons-3.1.2/engine/SCons/SConsign.py 2019-12-17 02:07:12.000000000 +0000 @@ -29,7 +29,7 @@ from __future__ import print_function -__revision__ = "src/engine/SCons/SConsign.py 72ae09dc35ac2626f8ff711d8c4b30b6138e08e3 2019-08-08 14:50:06 bdeegan" +__revision__ = "src/engine/SCons/SConsign.py bee7caf9defd6e108fc2998a2520ddb36a967691 2019-12-17 02:07:09 bdeegan" import SCons.compat diff -Nru scons-3.1.1/engine/SCons/Script/__init__.py scons-3.1.2/engine/SCons/Script/__init__.py --- scons-3.1.1/engine/SCons/Script/__init__.py 2019-08-08 14:50:08.000000000 +0000 +++ scons-3.1.2/engine/SCons/Script/__init__.py 2019-12-17 02:07:12.000000000 +0000 @@ -34,7 +34,7 @@ # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. # -__revision__ = "src/engine/SCons/Script/__init__.py 72ae09dc35ac2626f8ff711d8c4b30b6138e08e3 2019-08-08 14:50:06 bdeegan" +__revision__ = "src/engine/SCons/Script/__init__.py bee7caf9defd6e108fc2998a2520ddb36a967691 2019-12-17 02:07:09 bdeegan" import time start_time = time.time() @@ -314,7 +314,6 @@ 'AddPreAction', 'Alias', 'AlwaysBuild', - 'BuildDir', 'CacheDir', 'Clean', #The Command() method is handled separately, below. @@ -346,10 +345,8 @@ 'SConsignFile', 'SideEffect', 'SourceCode', - 'SourceSignatures', 'Split', 'Tag', - 'TargetSignatures', 'Value', 'VariantDir', ] diff -Nru scons-3.1.1/engine/SCons/Script/Interactive.py scons-3.1.2/engine/SCons/Script/Interactive.py --- scons-3.1.1/engine/SCons/Script/Interactive.py 2019-08-08 14:50:08.000000000 +0000 +++ scons-3.1.2/engine/SCons/Script/Interactive.py 2019-12-17 02:07:12.000000000 +0000 @@ -21,7 +21,7 @@ # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. from __future__ import print_function -__revision__ = "src/engine/SCons/Script/Interactive.py 72ae09dc35ac2626f8ff711d8c4b30b6138e08e3 2019-08-08 14:50:06 bdeegan" +__revision__ = "src/engine/SCons/Script/Interactive.py bee7caf9defd6e108fc2998a2520ddb36a967691 2019-12-17 02:07:09 bdeegan" __doc__ = """ SCons interactive mode diff -Nru scons-3.1.1/engine/SCons/Script/Main.py scons-3.1.2/engine/SCons/Script/Main.py --- scons-3.1.1/engine/SCons/Script/Main.py 2019-08-08 14:50:08.000000000 +0000 +++ scons-3.1.2/engine/SCons/Script/Main.py 2019-12-17 02:07:12.000000000 +0000 @@ -38,7 +38,7 @@ # 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__ = "src/engine/SCons/Script/Main.py 72ae09dc35ac2626f8ff711d8c4b30b6138e08e3 2019-08-08 14:50:06 bdeegan" +__revision__ = "src/engine/SCons/Script/Main.py bee7caf9defd6e108fc2998a2520ddb36a967691 2019-12-17 02:07:09 bdeegan" import SCons.compat @@ -75,6 +75,7 @@ print_memoizer = 0 print_stacktrace = 0 print_time = 0 +print_action_timestamps = 0 sconscript_time = 0 cumulative_command_time = 0 exit_status = 0 # final exit status, assume success by default @@ -209,6 +210,9 @@ finish_time = time.time() last_command_end = finish_time cumulative_command_time = cumulative_command_time+finish_time-start_time + if print_action_timestamps: + sys.stdout.write("Command execution start timestamp: %s: %f\n"%(str(self.node), start_time)) + sys.stdout.write("Command execution end timestamp: %s: %f\n"%(str(self.node), finish_time)) sys.stdout.write("Command execution time: %s: %f seconds\n"%(str(self.node), finish_time-start_time)) def do_failed(self, status=2): @@ -636,7 +640,7 @@ return None def _set_debug_values(options): - global print_memoizer, print_objects, print_stacktrace, print_time + global print_memoizer, print_objects, print_stacktrace, print_time, print_action_timestamps debug_values = options.debug @@ -674,6 +678,9 @@ options.tree_printers.append(TreePrinter(status=True)) if "time" in debug_values: print_time = 1 + if "action-timestamps" in debug_values: + print_time = 1 + print_action_timestamps = 1 if "tree" in debug_values: options.tree_printers.append(TreePrinter()) if "prepare" in debug_values: diff -Nru scons-3.1.1/engine/SCons/Script/SConscript.py scons-3.1.2/engine/SCons/Script/SConscript.py --- scons-3.1.1/engine/SCons/Script/SConscript.py 2019-08-08 14:50:08.000000000 +0000 +++ scons-3.1.2/engine/SCons/Script/SConscript.py 2019-12-17 02:07:12.000000000 +0000 @@ -27,7 +27,7 @@ # 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__ = "src/engine/SCons/Script/SConscript.py 72ae09dc35ac2626f8ff711d8c4b30b6138e08e3 2019-08-08 14:50:06 bdeegan" +__revision__ = "src/engine/SCons/Script/SConscript.py bee7caf9defd6e108fc2998a2520ddb36a967691 2019-12-17 02:07:09 bdeegan" import SCons import SCons.Action @@ -42,7 +42,7 @@ import SCons.SConf import SCons.Script.Main import SCons.Tool -import SCons.Util +from SCons.Util import is_List, is_String, is_Dict, flatten from . import Main @@ -98,7 +98,7 @@ retval = {} try: for export in exports: - if SCons.Util.is_Dict(export): + if is_Dict(export): retval.update(export) else: try: @@ -133,7 +133,7 @@ def Return(*vars, **kw): retval = [] try: - fvars = SCons.Util.flatten(vars) + fvars = flatten(vars) for var in fvars: for v in var.split(): retval.append(call_stack[-1].globals[v]) @@ -420,7 +420,7 @@ except KeyError: raise SCons.Errors.UserError("Invalid SConscript usage - no parameters") - if not SCons.Util.is_List(dirs): + if not is_List(dirs): dirs = [ dirs ] dirs = list(map(str, dirs)) @@ -441,13 +441,13 @@ raise SCons.Errors.UserError("Invalid SConscript() usage - too many arguments") - if not SCons.Util.is_List(files): + if not is_List(files): files = [ files ] if kw.get('exports'): exports.extend(self.Split(kw['exports'])) - variant_dir = kw.get('variant_dir') or kw.get('build_dir') + variant_dir = kw.get('variant_dir') if variant_dir: if len(files) != 1: raise SCons.Errors.UserError("Invalid SConscript() usage - can only specify one SConscript with a variant_dir") @@ -577,9 +577,6 @@ UserError: a script is not found and such exceptions are enabled. """ - 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)) @@ -589,15 +586,10 @@ ls = list(map(subst_element, ls)) subst_kw = {} for key, val in kw.items(): - if SCons.Util.is_String(val): + if is_String(val): val = self.subst(val) elif SCons.Util.is_List(val): - result = [] - for v in val: - if SCons.Util.is_String(v): - v = self.subst(v) - result.append(v) - val = result + val = [self.subst(v) if is_String(v) else v for v in val] subst_kw[key] = val files, exports = self._get_SConscript_filenames(ls, subst_kw) diff -Nru scons-3.1.1/engine/SCons/Script/SConsOptions.py scons-3.1.2/engine/SCons/Script/SConsOptions.py --- scons-3.1.1/engine/SCons/Script/SConsOptions.py 2019-08-08 14:50:08.000000000 +0000 +++ scons-3.1.2/engine/SCons/Script/SConsOptions.py 2019-12-17 02:07:12.000000000 +0000 @@ -21,7 +21,7 @@ # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. # -__revision__ = "src/engine/SCons/Script/SConsOptions.py 72ae09dc35ac2626f8ff711d8c4b30b6138e08e3 2019-08-08 14:50:06 bdeegan" +__revision__ = "src/engine/SCons/Script/SConsOptions.py bee7caf9defd6e108fc2998a2520ddb36a967691 2019-12-17 02:07:09 bdeegan" import optparse import re @@ -584,9 +584,15 @@ help="Print build actions for files from CacheDir.") def opt_invalid(group, value, options): + """report an invalid option from a group""" errmsg = "`%s' is not a valid %s option type, try:\n" % (value, group) return errmsg + " %s" % ", ".join(options) + def opt_invalid_rm(group, value, msg): + """report an invalid option from a group: recognized but removed""" + errmsg = "`%s' is not a valid %s option type " % (value, group) + return errmsg + msg + config_options = ["auto", "force" ,"cache"] opt_config_help = "Controls Configure subsystem: %s." \ @@ -604,9 +610,11 @@ help="Search up directory tree for SConstruct, " "build all Default() targets.") - deprecated_debug_options = { + deprecated_debug_options = {} + + removed_debug_options = { "dtree" : '; please use --tree=derived instead', - "nomemoizer" : ' and has no effect', + "nomemoizer" : '; there is no replacement', "stree" : '; please use --tree=all,status instead', "tree" : '; please use --tree=all instead', } @@ -614,15 +622,16 @@ debug_options = ["count", "duplicate", "explain", "findlibs", "includes", "memoizer", "memory", "objects", "pdb", "prepare", "presub", "stacktrace", - "time"] + "time", "action-timestamps"] def opt_debug(option, opt, value__, parser, debug_options=debug_options, - deprecated_debug_options=deprecated_debug_options): + deprecated_debug_options=deprecated_debug_options, + removed_debug_options=removed_debug_options): for value in value__.split(','): if value in debug_options: parser.values.debug.append(value) - elif value in list(deprecated_debug_options.keys()): + elif value in deprecated_debug_options: parser.values.debug.append(value) try: parser.values.delayed_warnings @@ -632,6 +641,9 @@ w = "The --debug=%s option is deprecated%s." % (value, msg) t = (SCons.Warnings.DeprecatedDebugOptionsWarning, w) parser.values.delayed_warnings.append(t) + elif value in removed_debug_options: + msg = removed_debug_options[value] + raise OptionValueError(opt_invalid_rm('debug', value, msg)) else: raise OptionValueError(opt_invalid('debug', value, debug_options)) diff -Nru scons-3.1.1/engine/SCons/Subst.py scons-3.1.2/engine/SCons/Subst.py --- scons-3.1.1/engine/SCons/Subst.py 2019-08-08 14:50:08.000000000 +0000 +++ scons-3.1.2/engine/SCons/Subst.py 2019-12-17 02:07:12.000000000 +0000 @@ -26,7 +26,7 @@ # 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__ = "src/engine/SCons/Subst.py 72ae09dc35ac2626f8ff711d8c4b30b6138e08e3 2019-08-08 14:50:06 bdeegan" +__revision__ = "src/engine/SCons/Subst.py bee7caf9defd6e108fc2998a2520ddb36a967691 2019-12-17 02:07:09 bdeegan" import collections import re @@ -409,7 +409,7 @@ handles separating command lines into lists of arguments, so see that function if that's what you're looking for. """ - if isinstance(strSubst, str) and strSubst.find('$') < 0: + if (isinstance(strSubst, str) and '$' not in strSubst) or isinstance(strSubst, CmdStringHolder): return strSubst class StringSubber(object): diff -Nru scons-3.1.1/engine/SCons/Taskmaster.py scons-3.1.2/engine/SCons/Taskmaster.py --- scons-3.1.1/engine/SCons/Taskmaster.py 2019-08-08 14:50:08.000000000 +0000 +++ scons-3.1.2/engine/SCons/Taskmaster.py 2019-12-17 02:07:12.000000000 +0000 @@ -54,7 +54,7 @@ target(s) that it decides need to be evaluated and/or built. """ -__revision__ = "src/engine/SCons/Taskmaster.py 72ae09dc35ac2626f8ff711d8c4b30b6138e08e3 2019-08-08 14:50:06 bdeegan" +__revision__ = "src/engine/SCons/Taskmaster.py bee7caf9defd6e108fc2998a2520ddb36a967691 2019-12-17 02:07:09 bdeegan" from itertools import chain import operator @@ -874,8 +874,10 @@ # These nodes have not even been visited yet. Add # them to the list so that on some next pass we can # take a stab at evaluating them (or their children). - children_not_visited.reverse() - self.candidates.extend(self.order(children_not_visited)) + if children_not_visited: + if len(children_not_visited) > 1: + children_not_visited.reverse() + self.candidates.extend(self.order(children_not_visited)) # if T and children_not_visited: # T.write(self.trace_message(' adding to candidates: %s' % map(str, children_not_visited))) diff -Nru scons-3.1.1/engine/SCons/Tool/386asm.py scons-3.1.2/engine/SCons/Tool/386asm.py --- scons-3.1.1/engine/SCons/Tool/386asm.py 2019-08-08 14:50:08.000000000 +0000 +++ scons-3.1.2/engine/SCons/Tool/386asm.py 2019-12-17 02:07:12.000000000 +0000 @@ -32,7 +32,7 @@ # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. # -__revision__ = "src/engine/SCons/Tool/386asm.py 72ae09dc35ac2626f8ff711d8c4b30b6138e08e3 2019-08-08 14:50:06 bdeegan" +__revision__ = "src/engine/SCons/Tool/386asm.py bee7caf9defd6e108fc2998a2520ddb36a967691 2019-12-17 02:07:09 bdeegan" from SCons.Tool.PharLapCommon import addPharLapPaths import SCons.Util diff -Nru scons-3.1.1/engine/SCons/Tool/aixcc.py scons-3.1.2/engine/SCons/Tool/aixcc.py --- scons-3.1.1/engine/SCons/Tool/aixcc.py 2019-08-08 14:50:08.000000000 +0000 +++ scons-3.1.2/engine/SCons/Tool/aixcc.py 2019-12-17 02:07:12.000000000 +0000 @@ -30,7 +30,7 @@ # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. # -__revision__ = "src/engine/SCons/Tool/aixcc.py 72ae09dc35ac2626f8ff711d8c4b30b6138e08e3 2019-08-08 14:50:06 bdeegan" +__revision__ = "src/engine/SCons/Tool/aixcc.py bee7caf9defd6e108fc2998a2520ddb36a967691 2019-12-17 02:07:09 bdeegan" import os.path diff -Nru scons-3.1.1/engine/SCons/Tool/aixc++.py scons-3.1.2/engine/SCons/Tool/aixc++.py --- scons-3.1.1/engine/SCons/Tool/aixc++.py 2019-08-08 14:50:08.000000000 +0000 +++ scons-3.1.2/engine/SCons/Tool/aixc++.py 2019-12-17 02:07:12.000000000 +0000 @@ -31,7 +31,7 @@ # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. # -__revision__ = "src/engine/SCons/Tool/aixc++.py 72ae09dc35ac2626f8ff711d8c4b30b6138e08e3 2019-08-08 14:50:06 bdeegan" +__revision__ = "src/engine/SCons/Tool/aixc++.py bee7caf9defd6e108fc2998a2520ddb36a967691 2019-12-17 02:07:09 bdeegan" #forward proxy to the preffered cxx version from SCons.Tool.aixcxx import * diff -Nru scons-3.1.1/engine/SCons/Tool/aixcxx.py scons-3.1.2/engine/SCons/Tool/aixcxx.py --- scons-3.1.1/engine/SCons/Tool/aixcxx.py 2019-08-08 14:50:08.000000000 +0000 +++ scons-3.1.2/engine/SCons/Tool/aixcxx.py 2019-12-17 02:07:12.000000000 +0000 @@ -31,7 +31,7 @@ # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. # -__revision__ = "src/engine/SCons/Tool/aixcxx.py 72ae09dc35ac2626f8ff711d8c4b30b6138e08e3 2019-08-08 14:50:06 bdeegan" +__revision__ = "src/engine/SCons/Tool/aixcxx.py bee7caf9defd6e108fc2998a2520ddb36a967691 2019-12-17 02:07:09 bdeegan" import os.path diff -Nru scons-3.1.1/engine/SCons/Tool/aixf77.py scons-3.1.2/engine/SCons/Tool/aixf77.py --- scons-3.1.1/engine/SCons/Tool/aixf77.py 2019-08-08 14:50:08.000000000 +0000 +++ scons-3.1.2/engine/SCons/Tool/aixf77.py 2019-12-17 02:07:12.000000000 +0000 @@ -30,7 +30,7 @@ # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. # -__revision__ = "src/engine/SCons/Tool/aixf77.py 72ae09dc35ac2626f8ff711d8c4b30b6138e08e3 2019-08-08 14:50:06 bdeegan" +__revision__ = "src/engine/SCons/Tool/aixf77.py bee7caf9defd6e108fc2998a2520ddb36a967691 2019-12-17 02:07:09 bdeegan" import os.path diff -Nru scons-3.1.1/engine/SCons/Tool/aixlink.py scons-3.1.2/engine/SCons/Tool/aixlink.py --- scons-3.1.1/engine/SCons/Tool/aixlink.py 2019-08-08 14:50:08.000000000 +0000 +++ scons-3.1.2/engine/SCons/Tool/aixlink.py 2019-12-17 02:07:12.000000000 +0000 @@ -30,7 +30,7 @@ # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. # -__revision__ = "src/engine/SCons/Tool/aixlink.py 72ae09dc35ac2626f8ff711d8c4b30b6138e08e3 2019-08-08 14:50:06 bdeegan" +__revision__ = "src/engine/SCons/Tool/aixlink.py bee7caf9defd6e108fc2998a2520ddb36a967691 2019-12-17 02:07:09 bdeegan" import os import os.path diff -Nru scons-3.1.1/engine/SCons/Tool/applelink.py scons-3.1.2/engine/SCons/Tool/applelink.py --- scons-3.1.1/engine/SCons/Tool/applelink.py 2019-08-08 14:50:08.000000000 +0000 +++ scons-3.1.2/engine/SCons/Tool/applelink.py 2019-12-17 02:07:12.000000000 +0000 @@ -31,7 +31,7 @@ # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. # -__revision__ = "src/engine/SCons/Tool/applelink.py 72ae09dc35ac2626f8ff711d8c4b30b6138e08e3 2019-08-08 14:50:06 bdeegan" +__revision__ = "src/engine/SCons/Tool/applelink.py bee7caf9defd6e108fc2998a2520ddb36a967691 2019-12-17 02:07:09 bdeegan" import SCons.Util diff -Nru scons-3.1.1/engine/SCons/Tool/ar.py scons-3.1.2/engine/SCons/Tool/ar.py --- scons-3.1.1/engine/SCons/Tool/ar.py 2019-08-08 14:50:08.000000000 +0000 +++ scons-3.1.2/engine/SCons/Tool/ar.py 2019-12-17 02:07:12.000000000 +0000 @@ -31,7 +31,7 @@ # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. # -__revision__ = "src/engine/SCons/Tool/ar.py 72ae09dc35ac2626f8ff711d8c4b30b6138e08e3 2019-08-08 14:50:06 bdeegan" +__revision__ = "src/engine/SCons/Tool/ar.py bee7caf9defd6e108fc2998a2520ddb36a967691 2019-12-17 02:07:09 bdeegan" import SCons.Defaults import SCons.Tool diff -Nru scons-3.1.1/engine/SCons/Tool/as.py scons-3.1.2/engine/SCons/Tool/as.py --- scons-3.1.1/engine/SCons/Tool/as.py 2019-08-08 14:50:08.000000000 +0000 +++ scons-3.1.2/engine/SCons/Tool/as.py 2019-12-17 02:07:12.000000000 +0000 @@ -31,7 +31,7 @@ # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. # -__revision__ = "src/engine/SCons/Tool/as.py 72ae09dc35ac2626f8ff711d8c4b30b6138e08e3 2019-08-08 14:50:06 bdeegan" +__revision__ = "src/engine/SCons/Tool/as.py bee7caf9defd6e108fc2998a2520ddb36a967691 2019-12-17 02:07:09 bdeegan" import SCons.Defaults import SCons.Tool diff -Nru scons-3.1.1/engine/SCons/Tool/bcc32.py scons-3.1.2/engine/SCons/Tool/bcc32.py --- scons-3.1.1/engine/SCons/Tool/bcc32.py 2019-08-08 14:50:08.000000000 +0000 +++ scons-3.1.2/engine/SCons/Tool/bcc32.py 2019-12-17 02:07:12.000000000 +0000 @@ -27,7 +27,7 @@ # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. # -__revision__ = "src/engine/SCons/Tool/bcc32.py 72ae09dc35ac2626f8ff711d8c4b30b6138e08e3 2019-08-08 14:50:06 bdeegan" +__revision__ = "src/engine/SCons/Tool/bcc32.py bee7caf9defd6e108fc2998a2520ddb36a967691 2019-12-17 02:07:09 bdeegan" import os import os.path diff -Nru scons-3.1.1/engine/SCons/Tool/cc.py scons-3.1.2/engine/SCons/Tool/cc.py --- scons-3.1.1/engine/SCons/Tool/cc.py 2019-08-08 14:50:08.000000000 +0000 +++ scons-3.1.2/engine/SCons/Tool/cc.py 2019-12-17 02:07:12.000000000 +0000 @@ -30,7 +30,7 @@ # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. # -__revision__ = "src/engine/SCons/Tool/cc.py 72ae09dc35ac2626f8ff711d8c4b30b6138e08e3 2019-08-08 14:50:06 bdeegan" +__revision__ = "src/engine/SCons/Tool/cc.py bee7caf9defd6e108fc2998a2520ddb36a967691 2019-12-17 02:07:09 bdeegan" import SCons.Tool import SCons.Defaults diff -Nru scons-3.1.1/engine/SCons/Tool/clang.py scons-3.1.2/engine/SCons/Tool/clang.py --- scons-3.1.1/engine/SCons/Tool/clang.py 2019-08-08 14:50:08.000000000 +0000 +++ scons-3.1.2/engine/SCons/Tool/clang.py 2019-12-17 02:07:12.000000000 +0000 @@ -33,7 +33,7 @@ # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. # -# __revision__ = "src/engine/SCons/Tool/clang.py 72ae09dc35ac2626f8ff711d8c4b30b6138e08e3 2019-08-08 14:50:06 bdeegan" +# __revision__ = "src/engine/SCons/Tool/clang.py bee7caf9defd6e108fc2998a2520ddb36a967691 2019-12-17 02:07:09 bdeegan" # Based on SCons/Tool/gcc.py by Paweł Tomulik 2014 as a separate tool. # Brought into the SCons mainline by Russel Winder 2017. diff -Nru scons-3.1.1/engine/SCons/Tool/clangxx.py scons-3.1.2/engine/SCons/Tool/clangxx.py --- scons-3.1.1/engine/SCons/Tool/clangxx.py 2019-08-08 14:50:08.000000000 +0000 +++ scons-3.1.2/engine/SCons/Tool/clangxx.py 2019-12-17 02:07:12.000000000 +0000 @@ -33,7 +33,7 @@ # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. # -# __revision__ = "src/engine/SCons/Tool/clangxx.py 72ae09dc35ac2626f8ff711d8c4b30b6138e08e3 2019-08-08 14:50:06 bdeegan" +# __revision__ = "src/engine/SCons/Tool/clangxx.py bee7caf9defd6e108fc2998a2520ddb36a967691 2019-12-17 02:07:09 bdeegan" # Based on SCons/Tool/g++.py by Paweł Tomulik 2014 as a separate tool. # Brought into the SCons mainline by Russel Winder 2017. diff -Nru scons-3.1.1/engine/SCons/Tool/c++.py scons-3.1.2/engine/SCons/Tool/c++.py --- scons-3.1.1/engine/SCons/Tool/c++.py 2019-08-08 14:50:08.000000000 +0000 +++ scons-3.1.2/engine/SCons/Tool/c++.py 2019-12-17 02:07:12.000000000 +0000 @@ -30,7 +30,7 @@ # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. # -__revision__ = "src/engine/SCons/Tool/c++.py 72ae09dc35ac2626f8ff711d8c4b30b6138e08e3 2019-08-08 14:50:06 bdeegan" +__revision__ = "src/engine/SCons/Tool/c++.py bee7caf9defd6e108fc2998a2520ddb36a967691 2019-12-17 02:07:09 bdeegan" #forward proxy to the preffered cxx version diff -Nru scons-3.1.1/engine/SCons/Tool/cvf.py scons-3.1.2/engine/SCons/Tool/cvf.py --- scons-3.1.1/engine/SCons/Tool/cvf.py 2019-08-08 14:50:08.000000000 +0000 +++ scons-3.1.2/engine/SCons/Tool/cvf.py 2019-12-17 02:07:12.000000000 +0000 @@ -27,7 +27,7 @@ # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. # -__revision__ = "src/engine/SCons/Tool/cvf.py 72ae09dc35ac2626f8ff711d8c4b30b6138e08e3 2019-08-08 14:50:06 bdeegan" +__revision__ = "src/engine/SCons/Tool/cvf.py bee7caf9defd6e108fc2998a2520ddb36a967691 2019-12-17 02:07:09 bdeegan" from . import fortran diff -Nru scons-3.1.1/engine/SCons/Tool/cxx.py scons-3.1.2/engine/SCons/Tool/cxx.py --- scons-3.1.1/engine/SCons/Tool/cxx.py 2019-08-08 14:50:08.000000000 +0000 +++ scons-3.1.2/engine/SCons/Tool/cxx.py 2019-12-17 02:07:12.000000000 +0000 @@ -30,7 +30,7 @@ # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. # -__revision__ = "src/engine/SCons/Tool/cxx.py 72ae09dc35ac2626f8ff711d8c4b30b6138e08e3 2019-08-08 14:50:06 bdeegan" +__revision__ = "src/engine/SCons/Tool/cxx.py bee7caf9defd6e108fc2998a2520ddb36a967691 2019-12-17 02:07:09 bdeegan" import os.path diff -Nru scons-3.1.1/engine/SCons/Tool/DCommon.py scons-3.1.2/engine/SCons/Tool/DCommon.py --- scons-3.1.1/engine/SCons/Tool/DCommon.py 2019-08-08 14:50:08.000000000 +0000 +++ scons-3.1.2/engine/SCons/Tool/DCommon.py 2019-12-17 02:07:12.000000000 +0000 @@ -31,7 +31,7 @@ # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. # -__revision__ = "src/engine/SCons/Tool/DCommon.py 72ae09dc35ac2626f8ff711d8c4b30b6138e08e3 2019-08-08 14:50:06 bdeegan" +__revision__ = "src/engine/SCons/Tool/DCommon.py bee7caf9defd6e108fc2998a2520ddb36a967691 2019-12-17 02:07:09 bdeegan" import os.path diff -Nru scons-3.1.1/engine/SCons/Tool/default.py scons-3.1.2/engine/SCons/Tool/default.py --- scons-3.1.1/engine/SCons/Tool/default.py 2019-08-08 14:50:08.000000000 +0000 +++ scons-3.1.2/engine/SCons/Tool/default.py 2019-12-17 02:07:12.000000000 +0000 @@ -31,7 +31,7 @@ # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. # -__revision__ = "src/engine/SCons/Tool/default.py 72ae09dc35ac2626f8ff711d8c4b30b6138e08e3 2019-08-08 14:50:06 bdeegan" +__revision__ = "src/engine/SCons/Tool/default.py bee7caf9defd6e108fc2998a2520ddb36a967691 2019-12-17 02:07:09 bdeegan" import SCons.Tool diff -Nru scons-3.1.1/engine/SCons/Tool/dmd.py scons-3.1.2/engine/SCons/Tool/dmd.py --- scons-3.1.1/engine/SCons/Tool/dmd.py 2019-08-08 14:50:08.000000000 +0000 +++ scons-3.1.2/engine/SCons/Tool/dmd.py 2019-12-17 02:07:12.000000000 +0000 @@ -53,7 +53,7 @@ # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. # -__revision__ = "src/engine/SCons/Tool/dmd.py 72ae09dc35ac2626f8ff711d8c4b30b6138e08e3 2019-08-08 14:50:06 bdeegan" +__revision__ = "src/engine/SCons/Tool/dmd.py bee7caf9defd6e108fc2998a2520ddb36a967691 2019-12-17 02:07:09 bdeegan" import os import subprocess diff -Nru scons-3.1.1/engine/SCons/Tool/dvipdf.py scons-3.1.2/engine/SCons/Tool/dvipdf.py --- scons-3.1.1/engine/SCons/Tool/dvipdf.py 2019-08-08 14:50:08.000000000 +0000 +++ scons-3.1.2/engine/SCons/Tool/dvipdf.py 2019-12-17 02:07:12.000000000 +0000 @@ -30,7 +30,7 @@ # 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__ = "src/engine/SCons/Tool/dvipdf.py 72ae09dc35ac2626f8ff711d8c4b30b6138e08e3 2019-08-08 14:50:06 bdeegan" +__revision__ = "src/engine/SCons/Tool/dvipdf.py bee7caf9defd6e108fc2998a2520ddb36a967691 2019-12-17 02:07:09 bdeegan" import SCons.Action import SCons.Defaults diff -Nru scons-3.1.1/engine/SCons/Tool/dvips.py scons-3.1.2/engine/SCons/Tool/dvips.py --- scons-3.1.1/engine/SCons/Tool/dvips.py 2019-08-08 14:50:08.000000000 +0000 +++ scons-3.1.2/engine/SCons/Tool/dvips.py 2019-12-17 02:07:12.000000000 +0000 @@ -31,7 +31,7 @@ # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. # -__revision__ = "src/engine/SCons/Tool/dvips.py 72ae09dc35ac2626f8ff711d8c4b30b6138e08e3 2019-08-08 14:50:06 bdeegan" +__revision__ = "src/engine/SCons/Tool/dvips.py bee7caf9defd6e108fc2998a2520ddb36a967691 2019-12-17 02:07:09 bdeegan" import SCons.Action import SCons.Builder diff -Nru scons-3.1.1/engine/SCons/Tool/dvi.py scons-3.1.2/engine/SCons/Tool/dvi.py --- scons-3.1.1/engine/SCons/Tool/dvi.py 2019-08-08 14:50:08.000000000 +0000 +++ scons-3.1.2/engine/SCons/Tool/dvi.py 2019-12-17 02:07:12.000000000 +0000 @@ -27,7 +27,7 @@ # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. # -__revision__ = "src/engine/SCons/Tool/dvi.py 72ae09dc35ac2626f8ff711d8c4b30b6138e08e3 2019-08-08 14:50:06 bdeegan" +__revision__ = "src/engine/SCons/Tool/dvi.py bee7caf9defd6e108fc2998a2520ddb36a967691 2019-12-17 02:07:09 bdeegan" import SCons.Builder import SCons.Tool diff -Nru scons-3.1.1/engine/SCons/Tool/f03.py scons-3.1.2/engine/SCons/Tool/f03.py --- scons-3.1.1/engine/SCons/Tool/f03.py 2019-08-08 14:50:08.000000000 +0000 +++ scons-3.1.2/engine/SCons/Tool/f03.py 2019-12-17 02:07:12.000000000 +0000 @@ -31,7 +31,7 @@ # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. # -__revision__ = "src/engine/SCons/Tool/f03.py 72ae09dc35ac2626f8ff711d8c4b30b6138e08e3 2019-08-08 14:50:06 bdeegan" +__revision__ = "src/engine/SCons/Tool/f03.py bee7caf9defd6e108fc2998a2520ddb36a967691 2019-12-17 02:07:09 bdeegan" import SCons.Defaults import SCons.Tool diff -Nru scons-3.1.1/engine/SCons/Tool/f08.py scons-3.1.2/engine/SCons/Tool/f08.py --- scons-3.1.1/engine/SCons/Tool/f08.py 2019-08-08 14:50:08.000000000 +0000 +++ scons-3.1.2/engine/SCons/Tool/f08.py 2019-12-17 02:07:12.000000000 +0000 @@ -33,7 +33,7 @@ # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. # -__revision__ = "src/engine/SCons/Tool/f08.py 72ae09dc35ac2626f8ff711d8c4b30b6138e08e3 2019-08-08 14:50:06 bdeegan" +__revision__ = "src/engine/SCons/Tool/f08.py bee7caf9defd6e108fc2998a2520ddb36a967691 2019-12-17 02:07:09 bdeegan" import SCons.Defaults import SCons.Tool diff -Nru scons-3.1.1/engine/SCons/Tool/f77.py scons-3.1.2/engine/SCons/Tool/f77.py --- scons-3.1.1/engine/SCons/Tool/f77.py 2019-08-08 14:50:08.000000000 +0000 +++ scons-3.1.2/engine/SCons/Tool/f77.py 2019-12-17 02:07:12.000000000 +0000 @@ -31,7 +31,7 @@ # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. # -__revision__ = "src/engine/SCons/Tool/f77.py 72ae09dc35ac2626f8ff711d8c4b30b6138e08e3 2019-08-08 14:50:06 bdeegan" +__revision__ = "src/engine/SCons/Tool/f77.py bee7caf9defd6e108fc2998a2520ddb36a967691 2019-12-17 02:07:09 bdeegan" import SCons.Defaults import SCons.Scanner.Fortran diff -Nru scons-3.1.1/engine/SCons/Tool/f90.py scons-3.1.2/engine/SCons/Tool/f90.py --- scons-3.1.1/engine/SCons/Tool/f90.py 2019-08-08 14:50:08.000000000 +0000 +++ scons-3.1.2/engine/SCons/Tool/f90.py 2019-12-17 02:07:12.000000000 +0000 @@ -31,7 +31,7 @@ # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. # -__revision__ = "src/engine/SCons/Tool/f90.py 72ae09dc35ac2626f8ff711d8c4b30b6138e08e3 2019-08-08 14:50:06 bdeegan" +__revision__ = "src/engine/SCons/Tool/f90.py bee7caf9defd6e108fc2998a2520ddb36a967691 2019-12-17 02:07:09 bdeegan" import SCons.Defaults import SCons.Scanner.Fortran diff -Nru scons-3.1.1/engine/SCons/Tool/f95.py scons-3.1.2/engine/SCons/Tool/f95.py --- scons-3.1.1/engine/SCons/Tool/f95.py 2019-08-08 14:50:08.000000000 +0000 +++ scons-3.1.2/engine/SCons/Tool/f95.py 2019-12-17 02:07:12.000000000 +0000 @@ -31,7 +31,7 @@ # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. # -__revision__ = "src/engine/SCons/Tool/f95.py 72ae09dc35ac2626f8ff711d8c4b30b6138e08e3 2019-08-08 14:50:06 bdeegan" +__revision__ = "src/engine/SCons/Tool/f95.py bee7caf9defd6e108fc2998a2520ddb36a967691 2019-12-17 02:07:09 bdeegan" import SCons.Defaults import SCons.Tool diff -Nru scons-3.1.1/engine/SCons/Tool/filesystem.py scons-3.1.2/engine/SCons/Tool/filesystem.py --- scons-3.1.1/engine/SCons/Tool/filesystem.py 2019-08-08 14:50:08.000000000 +0000 +++ scons-3.1.2/engine/SCons/Tool/filesystem.py 2019-12-17 02:07:12.000000000 +0000 @@ -30,7 +30,7 @@ # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. # -__revision__ = "src/engine/SCons/Tool/filesystem.py 72ae09dc35ac2626f8ff711d8c4b30b6138e08e3 2019-08-08 14:50:06 bdeegan" +__revision__ = "src/engine/SCons/Tool/filesystem.py bee7caf9defd6e108fc2998a2520ddb36a967691 2019-12-17 02:07:09 bdeegan" import SCons from SCons.Tool.install import copyFunc diff -Nru scons-3.1.1/engine/SCons/Tool/FortranCommon.py scons-3.1.2/engine/SCons/Tool/FortranCommon.py --- scons-3.1.1/engine/SCons/Tool/FortranCommon.py 2019-08-08 14:50:08.000000000 +0000 +++ scons-3.1.2/engine/SCons/Tool/FortranCommon.py 2019-12-17 02:07:12.000000000 +0000 @@ -28,7 +28,7 @@ # from __future__ import print_function -__revision__ = "src/engine/SCons/Tool/FortranCommon.py 72ae09dc35ac2626f8ff711d8c4b30b6138e08e3 2019-08-08 14:50:06 bdeegan" +__revision__ = "src/engine/SCons/Tool/FortranCommon.py bee7caf9defd6e108fc2998a2520ddb36a967691 2019-12-17 02:07:09 bdeegan" import re import os.path diff -Nru scons-3.1.1/engine/SCons/Tool/fortran.py scons-3.1.2/engine/SCons/Tool/fortran.py --- scons-3.1.1/engine/SCons/Tool/fortran.py 2019-08-08 14:50:08.000000000 +0000 +++ scons-3.1.2/engine/SCons/Tool/fortran.py 2019-12-17 02:07:12.000000000 +0000 @@ -31,7 +31,7 @@ # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. # -__revision__ = "src/engine/SCons/Tool/fortran.py 72ae09dc35ac2626f8ff711d8c4b30b6138e08e3 2019-08-08 14:50:06 bdeegan" +__revision__ = "src/engine/SCons/Tool/fortran.py bee7caf9defd6e108fc2998a2520ddb36a967691 2019-12-17 02:07:09 bdeegan" import re diff -Nru scons-3.1.1/engine/SCons/Tool/g77.py scons-3.1.2/engine/SCons/Tool/g77.py --- scons-3.1.1/engine/SCons/Tool/g77.py 2019-08-08 14:50:08.000000000 +0000 +++ scons-3.1.2/engine/SCons/Tool/g77.py 2019-12-17 02:07:12.000000000 +0000 @@ -31,7 +31,7 @@ # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. # -__revision__ = "src/engine/SCons/Tool/g77.py 72ae09dc35ac2626f8ff711d8c4b30b6138e08e3 2019-08-08 14:50:06 bdeegan" +__revision__ = "src/engine/SCons/Tool/g77.py bee7caf9defd6e108fc2998a2520ddb36a967691 2019-12-17 02:07:09 bdeegan" import SCons.Util from SCons.Tool.FortranCommon import add_all_to_env, add_f77_to_env diff -Nru scons-3.1.1/engine/SCons/Tool/gas.py scons-3.1.2/engine/SCons/Tool/gas.py --- scons-3.1.1/engine/SCons/Tool/gas.py 2019-08-08 14:50:08.000000000 +0000 +++ scons-3.1.2/engine/SCons/Tool/gas.py 2019-12-17 02:07:12.000000000 +0000 @@ -31,7 +31,7 @@ # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. # -__revision__ = "src/engine/SCons/Tool/gas.py 72ae09dc35ac2626f8ff711d8c4b30b6138e08e3 2019-08-08 14:50:06 bdeegan" +__revision__ = "src/engine/SCons/Tool/gas.py bee7caf9defd6e108fc2998a2520ddb36a967691 2019-12-17 02:07:09 bdeegan" try: as_module = __import__('as', globals(), locals(), []) diff -Nru scons-3.1.1/engine/SCons/Tool/gcc.py scons-3.1.2/engine/SCons/Tool/gcc.py --- scons-3.1.1/engine/SCons/Tool/gcc.py 2019-08-08 14:50:08.000000000 +0000 +++ scons-3.1.2/engine/SCons/Tool/gcc.py 2019-12-17 02:07:12.000000000 +0000 @@ -31,7 +31,7 @@ # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. # -__revision__ = "src/engine/SCons/Tool/gcc.py 72ae09dc35ac2626f8ff711d8c4b30b6138e08e3 2019-08-08 14:50:06 bdeegan" +__revision__ = "src/engine/SCons/Tool/gcc.py bee7caf9defd6e108fc2998a2520ddb36a967691 2019-12-17 02:07:09 bdeegan" from . import cc import os diff -Nru scons-3.1.1/engine/SCons/Tool/gdc.py scons-3.1.2/engine/SCons/Tool/gdc.py --- scons-3.1.1/engine/SCons/Tool/gdc.py 2019-08-08 14:50:08.000000000 +0000 +++ scons-3.1.2/engine/SCons/Tool/gdc.py 2019-12-17 02:07:12.000000000 +0000 @@ -48,7 +48,7 @@ # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. # -__revision__ = "src/engine/SCons/Tool/gdc.py 72ae09dc35ac2626f8ff711d8c4b30b6138e08e3 2019-08-08 14:50:06 bdeegan" +__revision__ = "src/engine/SCons/Tool/gdc.py bee7caf9defd6e108fc2998a2520ddb36a967691 2019-12-17 02:07:09 bdeegan" import SCons.Action import SCons.Defaults diff -Nru scons-3.1.1/engine/SCons/Tool/GettextCommon.py scons-3.1.2/engine/SCons/Tool/GettextCommon.py --- scons-3.1.1/engine/SCons/Tool/GettextCommon.py 2019-08-08 14:50:08.000000000 +0000 +++ scons-3.1.2/engine/SCons/Tool/GettextCommon.py 2019-12-17 02:07:12.000000000 +0000 @@ -24,7 +24,7 @@ # 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__ = "src/engine/SCons/Tool/GettextCommon.py 72ae09dc35ac2626f8ff711d8c4b30b6138e08e3 2019-08-08 14:50:06 bdeegan" +__revision__ = "src/engine/SCons/Tool/GettextCommon.py bee7caf9defd6e108fc2998a2520ddb36a967691 2019-12-17 02:07:09 bdeegan" import SCons.Warnings import re diff -Nru scons-3.1.1/engine/SCons/Tool/gettext_tool.py scons-3.1.2/engine/SCons/Tool/gettext_tool.py --- scons-3.1.1/engine/SCons/Tool/gettext_tool.py 2019-08-08 14:50:09.000000000 +0000 +++ scons-3.1.2/engine/SCons/Tool/gettext_tool.py 2019-12-17 02:07:12.000000000 +0000 @@ -23,7 +23,7 @@ # 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__ = "src/engine/SCons/Tool/gettext_tool.py 72ae09dc35ac2626f8ff711d8c4b30b6138e08e3 2019-08-08 14:50:06 bdeegan" +__revision__ = "src/engine/SCons/Tool/gettext_tool.py bee7caf9defd6e108fc2998a2520ddb36a967691 2019-12-17 02:07:09 bdeegan" ############################################################################# def generate(env,**kw): diff -Nru scons-3.1.1/engine/SCons/Tool/gfortran.py scons-3.1.2/engine/SCons/Tool/gfortran.py --- scons-3.1.1/engine/SCons/Tool/gfortran.py 2019-08-08 14:50:08.000000000 +0000 +++ scons-3.1.2/engine/SCons/Tool/gfortran.py 2019-12-17 02:07:12.000000000 +0000 @@ -32,7 +32,7 @@ # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. # -__revision__ = "src/engine/SCons/Tool/gfortran.py 72ae09dc35ac2626f8ff711d8c4b30b6138e08e3 2019-08-08 14:50:06 bdeegan" +__revision__ = "src/engine/SCons/Tool/gfortran.py bee7caf9defd6e108fc2998a2520ddb36a967691 2019-12-17 02:07:09 bdeegan" import SCons.Util diff -Nru scons-3.1.1/engine/SCons/Tool/gnulink.py scons-3.1.2/engine/SCons/Tool/gnulink.py --- scons-3.1.1/engine/SCons/Tool/gnulink.py 2019-08-08 14:50:08.000000000 +0000 +++ scons-3.1.2/engine/SCons/Tool/gnulink.py 2019-12-17 02:07:12.000000000 +0000 @@ -31,7 +31,7 @@ # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. # -__revision__ = "src/engine/SCons/Tool/gnulink.py 72ae09dc35ac2626f8ff711d8c4b30b6138e08e3 2019-08-08 14:50:06 bdeegan" +__revision__ = "src/engine/SCons/Tool/gnulink.py bee7caf9defd6e108fc2998a2520ddb36a967691 2019-12-17 02:07:09 bdeegan" import SCons.Util import SCons.Tool diff -Nru scons-3.1.1/engine/SCons/Tool/g++.py scons-3.1.2/engine/SCons/Tool/g++.py --- scons-3.1.1/engine/SCons/Tool/g++.py 2019-08-08 14:50:08.000000000 +0000 +++ scons-3.1.2/engine/SCons/Tool/g++.py 2019-12-17 02:07:12.000000000 +0000 @@ -31,7 +31,7 @@ # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. # -__revision__ = "src/engine/SCons/Tool/g++.py 72ae09dc35ac2626f8ff711d8c4b30b6138e08e3 2019-08-08 14:50:06 bdeegan" +__revision__ = "src/engine/SCons/Tool/g++.py bee7caf9defd6e108fc2998a2520ddb36a967691 2019-12-17 02:07:09 bdeegan" #forward proxy to the preffered cxx version diff -Nru scons-3.1.1/engine/SCons/Tool/gs.py scons-3.1.2/engine/SCons/Tool/gs.py --- scons-3.1.1/engine/SCons/Tool/gs.py 2019-08-08 14:50:08.000000000 +0000 +++ scons-3.1.2/engine/SCons/Tool/gs.py 2019-12-17 02:07:12.000000000 +0000 @@ -31,7 +31,7 @@ # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. # -__revision__ = "src/engine/SCons/Tool/gs.py 72ae09dc35ac2626f8ff711d8c4b30b6138e08e3 2019-08-08 14:50:06 bdeegan" +__revision__ = "src/engine/SCons/Tool/gs.py bee7caf9defd6e108fc2998a2520ddb36a967691 2019-12-17 02:07:09 bdeegan" import SCons.Action import SCons.Builder diff -Nru scons-3.1.1/engine/SCons/Tool/gxx.py scons-3.1.2/engine/SCons/Tool/gxx.py --- scons-3.1.1/engine/SCons/Tool/gxx.py 2019-08-08 14:50:08.000000000 +0000 +++ scons-3.1.2/engine/SCons/Tool/gxx.py 2019-12-17 02:07:12.000000000 +0000 @@ -31,7 +31,7 @@ # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. # -__revision__ = "src/engine/SCons/Tool/gxx.py 72ae09dc35ac2626f8ff711d8c4b30b6138e08e3 2019-08-08 14:50:06 bdeegan" +__revision__ = "src/engine/SCons/Tool/gxx.py bee7caf9defd6e108fc2998a2520ddb36a967691 2019-12-17 02:07:09 bdeegan" import os.path import re diff -Nru scons-3.1.1/engine/SCons/Tool/hpcc.py scons-3.1.2/engine/SCons/Tool/hpcc.py --- scons-3.1.1/engine/SCons/Tool/hpcc.py 2019-08-08 14:50:08.000000000 +0000 +++ scons-3.1.2/engine/SCons/Tool/hpcc.py 2019-12-17 02:07:12.000000000 +0000 @@ -30,7 +30,7 @@ # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. # -__revision__ = "src/engine/SCons/Tool/hpcc.py 72ae09dc35ac2626f8ff711d8c4b30b6138e08e3 2019-08-08 14:50:06 bdeegan" +__revision__ = "src/engine/SCons/Tool/hpcc.py bee7caf9defd6e108fc2998a2520ddb36a967691 2019-12-17 02:07:09 bdeegan" import SCons.Util diff -Nru scons-3.1.1/engine/SCons/Tool/hpc++.py scons-3.1.2/engine/SCons/Tool/hpc++.py --- scons-3.1.1/engine/SCons/Tool/hpc++.py 2019-08-08 14:50:08.000000000 +0000 +++ scons-3.1.2/engine/SCons/Tool/hpc++.py 2019-12-17 02:07:12.000000000 +0000 @@ -31,7 +31,7 @@ # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. # -__revision__ = "src/engine/SCons/Tool/hpc++.py 72ae09dc35ac2626f8ff711d8c4b30b6138e08e3 2019-08-08 14:50:06 bdeegan" +__revision__ = "src/engine/SCons/Tool/hpc++.py bee7caf9defd6e108fc2998a2520ddb36a967691 2019-12-17 02:07:09 bdeegan" #forward proxy to the preffered cxx version diff -Nru scons-3.1.1/engine/SCons/Tool/hpcxx.py scons-3.1.2/engine/SCons/Tool/hpcxx.py --- scons-3.1.1/engine/SCons/Tool/hpcxx.py 2019-08-08 14:50:08.000000000 +0000 +++ scons-3.1.2/engine/SCons/Tool/hpcxx.py 2019-12-17 02:07:12.000000000 +0000 @@ -31,7 +31,7 @@ # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. # -__revision__ = "src/engine/SCons/Tool/hpcxx.py 72ae09dc35ac2626f8ff711d8c4b30b6138e08e3 2019-08-08 14:50:06 bdeegan" +__revision__ = "src/engine/SCons/Tool/hpcxx.py bee7caf9defd6e108fc2998a2520ddb36a967691 2019-12-17 02:07:09 bdeegan" import os.path diff -Nru scons-3.1.1/engine/SCons/Tool/hplink.py scons-3.1.2/engine/SCons/Tool/hplink.py --- scons-3.1.1/engine/SCons/Tool/hplink.py 2019-08-08 14:50:08.000000000 +0000 +++ scons-3.1.2/engine/SCons/Tool/hplink.py 2019-12-17 02:07:12.000000000 +0000 @@ -30,7 +30,7 @@ # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. # -__revision__ = "src/engine/SCons/Tool/hplink.py 72ae09dc35ac2626f8ff711d8c4b30b6138e08e3 2019-08-08 14:50:06 bdeegan" +__revision__ = "src/engine/SCons/Tool/hplink.py bee7caf9defd6e108fc2998a2520ddb36a967691 2019-12-17 02:07:09 bdeegan" import os import os.path diff -Nru scons-3.1.1/engine/SCons/Tool/icc.py scons-3.1.2/engine/SCons/Tool/icc.py --- scons-3.1.1/engine/SCons/Tool/icc.py 2019-08-08 14:50:08.000000000 +0000 +++ scons-3.1.2/engine/SCons/Tool/icc.py 2019-12-17 02:07:12.000000000 +0000 @@ -31,7 +31,7 @@ # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. # -__revision__ = "src/engine/SCons/Tool/icc.py 72ae09dc35ac2626f8ff711d8c4b30b6138e08e3 2019-08-08 14:50:06 bdeegan" +__revision__ = "src/engine/SCons/Tool/icc.py bee7caf9defd6e108fc2998a2520ddb36a967691 2019-12-17 02:07:09 bdeegan" from . import cc diff -Nru scons-3.1.1/engine/SCons/Tool/icl.py scons-3.1.2/engine/SCons/Tool/icl.py --- scons-3.1.1/engine/SCons/Tool/icl.py 2019-08-08 14:50:08.000000000 +0000 +++ scons-3.1.2/engine/SCons/Tool/icl.py 2019-12-17 02:07:12.000000000 +0000 @@ -31,7 +31,7 @@ # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. # -__revision__ = "src/engine/SCons/Tool/icl.py 72ae09dc35ac2626f8ff711d8c4b30b6138e08e3 2019-08-08 14:50:06 bdeegan" +__revision__ = "src/engine/SCons/Tool/icl.py bee7caf9defd6e108fc2998a2520ddb36a967691 2019-12-17 02:07:09 bdeegan" import SCons.Tool.intelc diff -Nru scons-3.1.1/engine/SCons/Tool/ifl.py scons-3.1.2/engine/SCons/Tool/ifl.py --- scons-3.1.1/engine/SCons/Tool/ifl.py 2019-08-08 14:50:08.000000000 +0000 +++ scons-3.1.2/engine/SCons/Tool/ifl.py 2019-12-17 02:07:12.000000000 +0000 @@ -31,7 +31,7 @@ # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. # -__revision__ = "src/engine/SCons/Tool/ifl.py 72ae09dc35ac2626f8ff711d8c4b30b6138e08e3 2019-08-08 14:50:06 bdeegan" +__revision__ = "src/engine/SCons/Tool/ifl.py bee7caf9defd6e108fc2998a2520ddb36a967691 2019-12-17 02:07:09 bdeegan" import SCons.Defaults from SCons.Scanner.Fortran import FortranScan diff -Nru scons-3.1.1/engine/SCons/Tool/ifort.py scons-3.1.2/engine/SCons/Tool/ifort.py --- scons-3.1.1/engine/SCons/Tool/ifort.py 2019-08-08 14:50:08.000000000 +0000 +++ scons-3.1.2/engine/SCons/Tool/ifort.py 2019-12-17 02:07:12.000000000 +0000 @@ -32,7 +32,7 @@ # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. # -__revision__ = "src/engine/SCons/Tool/ifort.py 72ae09dc35ac2626f8ff711d8c4b30b6138e08e3 2019-08-08 14:50:06 bdeegan" +__revision__ = "src/engine/SCons/Tool/ifort.py bee7caf9defd6e108fc2998a2520ddb36a967691 2019-12-17 02:07:09 bdeegan" import SCons.Defaults from SCons.Scanner.Fortran import FortranScan diff -Nru scons-3.1.1/engine/SCons/Tool/ilink32.py scons-3.1.2/engine/SCons/Tool/ilink32.py --- scons-3.1.1/engine/SCons/Tool/ilink32.py 2019-08-08 14:50:08.000000000 +0000 +++ scons-3.1.2/engine/SCons/Tool/ilink32.py 2019-12-17 02:07:12.000000000 +0000 @@ -27,7 +27,7 @@ # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. # -__revision__ = "src/engine/SCons/Tool/ilink32.py 72ae09dc35ac2626f8ff711d8c4b30b6138e08e3 2019-08-08 14:50:06 bdeegan" +__revision__ = "src/engine/SCons/Tool/ilink32.py bee7caf9defd6e108fc2998a2520ddb36a967691 2019-12-17 02:07:09 bdeegan" import SCons.Tool import SCons.Tool.bcc32 diff -Nru scons-3.1.1/engine/SCons/Tool/ilink.py scons-3.1.2/engine/SCons/Tool/ilink.py --- scons-3.1.1/engine/SCons/Tool/ilink.py 2019-08-08 14:50:08.000000000 +0000 +++ scons-3.1.2/engine/SCons/Tool/ilink.py 2019-12-17 02:07:12.000000000 +0000 @@ -31,7 +31,7 @@ # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. # -__revision__ = "src/engine/SCons/Tool/ilink.py 72ae09dc35ac2626f8ff711d8c4b30b6138e08e3 2019-08-08 14:50:06 bdeegan" +__revision__ = "src/engine/SCons/Tool/ilink.py bee7caf9defd6e108fc2998a2520ddb36a967691 2019-12-17 02:07:09 bdeegan" import SCons.Defaults import SCons.Tool diff -Nru scons-3.1.1/engine/SCons/Tool/__init__.py scons-3.1.2/engine/SCons/Tool/__init__.py --- scons-3.1.1/engine/SCons/Tool/__init__.py 2019-08-08 14:50:08.000000000 +0000 +++ scons-3.1.2/engine/SCons/Tool/__init__.py 2019-12-17 02:07:12.000000000 +0000 @@ -35,7 +35,7 @@ # 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__ = "src/engine/SCons/Tool/__init__.py 72ae09dc35ac2626f8ff711d8c4b30b6138e08e3 2019-08-08 14:50:06 bdeegan" +__revision__ = "src/engine/SCons/Tool/__init__.py bee7caf9defd6e108fc2998a2520ddb36a967691 2019-12-17 02:07:09 bdeegan" import sys import re @@ -99,7 +99,7 @@ SourceFileScanner.add_scanner(suffix, LaTeXScanner) SourceFileScanner.add_scanner(suffix, PDFLaTeXScanner) -# Tool aliases are needed for those tools whos module names also +# Tool aliases are needed for those tools whose module names also # occur in the python standard library. This causes module shadowing and # can break using python library functions under python3 TOOL_ALIASES = { diff -Nru scons-3.1.1/engine/SCons/Tool/install.py scons-3.1.2/engine/SCons/Tool/install.py --- scons-3.1.1/engine/SCons/Tool/install.py 2019-08-08 14:50:08.000000000 +0000 +++ scons-3.1.2/engine/SCons/Tool/install.py 2019-12-17 02:07:12.000000000 +0000 @@ -31,7 +31,7 @@ # from __future__ import print_function -__revision__ = "src/engine/SCons/Tool/install.py 72ae09dc35ac2626f8ff711d8c4b30b6138e08e3 2019-08-08 14:50:06 bdeegan" +__revision__ = "src/engine/SCons/Tool/install.py bee7caf9defd6e108fc2998a2520ddb36a967691 2019-12-17 02:07:09 bdeegan" import os import re diff -Nru scons-3.1.1/engine/SCons/Tool/intelc.py scons-3.1.2/engine/SCons/Tool/intelc.py --- scons-3.1.1/engine/SCons/Tool/intelc.py 2019-08-08 14:50:08.000000000 +0000 +++ scons-3.1.2/engine/SCons/Tool/intelc.py 2019-12-17 02:07:12.000000000 +0000 @@ -32,7 +32,7 @@ # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. from __future__ import division, print_function -__revision__ = "src/engine/SCons/Tool/intelc.py 72ae09dc35ac2626f8ff711d8c4b30b6138e08e3 2019-08-08 14:50:06 bdeegan" +__revision__ = "src/engine/SCons/Tool/intelc.py bee7caf9defd6e108fc2998a2520ddb36a967691 2019-12-17 02:07:09 bdeegan" import math, sys, os.path, glob, string, re @@ -387,7 +387,7 @@ def generate(env, version=None, abi=None, topdir=None, verbose=0): - """Add Builders and construction variables for Intel C/C++ compiler + r"""Add Builders and construction variables for Intel C/C++ compiler to an Environment. args: version: (string) compiler version to use, like "80" @@ -551,7 +551,7 @@ # Look for license file dir # in system environment, registry, and default location. envlicdir = os.environ.get("INTEL_LICENSE_FILE", '') - K = ('SOFTWARE\Intel\Licenses') + K = r'SOFTWARE\Intel\Licenses' try: k = SCons.Util.RegOpenKeyEx(SCons.Util.HKEY_LOCAL_MACHINE, K) reglicdir = SCons.Util.RegQueryValueEx(k, "w_cpp")[0] diff -Nru scons-3.1.1/engine/SCons/Tool/ipkg.py scons-3.1.2/engine/SCons/Tool/ipkg.py --- scons-3.1.1/engine/SCons/Tool/ipkg.py 2019-08-08 14:50:08.000000000 +0000 +++ scons-3.1.2/engine/SCons/Tool/ipkg.py 2019-12-17 02:07:12.000000000 +0000 @@ -33,7 +33,7 @@ # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. # -__revision__ = "src/engine/SCons/Tool/ipkg.py 72ae09dc35ac2626f8ff711d8c4b30b6138e08e3 2019-08-08 14:50:06 bdeegan" +__revision__ = "src/engine/SCons/Tool/ipkg.py bee7caf9defd6e108fc2998a2520ddb36a967691 2019-12-17 02:07:09 bdeegan" import os diff -Nru scons-3.1.1/engine/SCons/Tool/jar.py scons-3.1.2/engine/SCons/Tool/jar.py --- scons-3.1.1/engine/SCons/Tool/jar.py 2019-08-08 14:50:08.000000000 +0000 +++ scons-3.1.2/engine/SCons/Tool/jar.py 2019-12-17 02:07:12.000000000 +0000 @@ -31,7 +31,7 @@ # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. # -__revision__ = "src/engine/SCons/Tool/jar.py 72ae09dc35ac2626f8ff711d8c4b30b6138e08e3 2019-08-08 14:50:06 bdeegan" +__revision__ = "src/engine/SCons/Tool/jar.py bee7caf9defd6e108fc2998a2520ddb36a967691 2019-12-17 02:07:09 bdeegan" import os import SCons.Subst diff -Nru scons-3.1.1/engine/SCons/Tool/JavaCommon.py scons-3.1.2/engine/SCons/Tool/JavaCommon.py --- scons-3.1.1/engine/SCons/Tool/JavaCommon.py 2019-08-08 14:50:08.000000000 +0000 +++ scons-3.1.2/engine/SCons/Tool/JavaCommon.py 2019-12-17 02:07:12.000000000 +0000 @@ -27,7 +27,7 @@ # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. # -__revision__ = "src/engine/SCons/Tool/JavaCommon.py 72ae09dc35ac2626f8ff711d8c4b30b6138e08e3 2019-08-08 14:50:06 bdeegan" +__revision__ = "src/engine/SCons/Tool/JavaCommon.py bee7caf9defd6e108fc2998a2520ddb36a967691 2019-12-17 02:07:09 bdeegan" import os import os.path diff -Nru scons-3.1.1/engine/SCons/Tool/javac.py scons-3.1.2/engine/SCons/Tool/javac.py --- scons-3.1.1/engine/SCons/Tool/javac.py 2019-08-08 14:50:08.000000000 +0000 +++ scons-3.1.2/engine/SCons/Tool/javac.py 2019-12-17 02:07:12.000000000 +0000 @@ -30,7 +30,7 @@ # 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__ = "src/engine/SCons/Tool/javac.py 72ae09dc35ac2626f8ff711d8c4b30b6138e08e3 2019-08-08 14:50:06 bdeegan" +__revision__ = "src/engine/SCons/Tool/javac.py bee7caf9defd6e108fc2998a2520ddb36a967691 2019-12-17 02:07:09 bdeegan" import os import os.path diff -Nru scons-3.1.1/engine/SCons/Tool/javah.py scons-3.1.2/engine/SCons/Tool/javah.py --- scons-3.1.1/engine/SCons/Tool/javah.py 2019-08-08 14:50:08.000000000 +0000 +++ scons-3.1.2/engine/SCons/Tool/javah.py 2019-12-17 02:07:12.000000000 +0000 @@ -31,7 +31,7 @@ # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. # -__revision__ = "src/engine/SCons/Tool/javah.py 72ae09dc35ac2626f8ff711d8c4b30b6138e08e3 2019-08-08 14:50:06 bdeegan" +__revision__ = "src/engine/SCons/Tool/javah.py bee7caf9defd6e108fc2998a2520ddb36a967691 2019-12-17 02:07:09 bdeegan" import os.path diff -Nru scons-3.1.1/engine/SCons/Tool/latex.py scons-3.1.2/engine/SCons/Tool/latex.py --- scons-3.1.1/engine/SCons/Tool/latex.py 2019-08-08 14:50:08.000000000 +0000 +++ scons-3.1.2/engine/SCons/Tool/latex.py 2019-12-17 02:07:12.000000000 +0000 @@ -32,7 +32,7 @@ # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. # -__revision__ = "src/engine/SCons/Tool/latex.py 72ae09dc35ac2626f8ff711d8c4b30b6138e08e3 2019-08-08 14:50:06 bdeegan" +__revision__ = "src/engine/SCons/Tool/latex.py bee7caf9defd6e108fc2998a2520ddb36a967691 2019-12-17 02:07:09 bdeegan" import SCons.Action import SCons.Defaults diff -Nru scons-3.1.1/engine/SCons/Tool/ldc.py scons-3.1.2/engine/SCons/Tool/ldc.py --- scons-3.1.1/engine/SCons/Tool/ldc.py 2019-08-08 14:50:08.000000000 +0000 +++ scons-3.1.2/engine/SCons/Tool/ldc.py 2019-12-17 02:07:12.000000000 +0000 @@ -48,7 +48,7 @@ # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. # -__revision__ = "src/engine/SCons/Tool/ldc.py 72ae09dc35ac2626f8ff711d8c4b30b6138e08e3 2019-08-08 14:50:06 bdeegan" +__revision__ = "src/engine/SCons/Tool/ldc.py bee7caf9defd6e108fc2998a2520ddb36a967691 2019-12-17 02:07:09 bdeegan" import os import subprocess diff -Nru scons-3.1.1/engine/SCons/Tool/lex.py scons-3.1.2/engine/SCons/Tool/lex.py --- scons-3.1.1/engine/SCons/Tool/lex.py 2019-08-08 14:50:08.000000000 +0000 +++ scons-3.1.2/engine/SCons/Tool/lex.py 2019-12-17 02:07:12.000000000 +0000 @@ -31,7 +31,7 @@ # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. # -__revision__ = "src/engine/SCons/Tool/lex.py 72ae09dc35ac2626f8ff711d8c4b30b6138e08e3 2019-08-08 14:50:06 bdeegan" +__revision__ = "src/engine/SCons/Tool/lex.py bee7caf9defd6e108fc2998a2520ddb36a967691 2019-12-17 02:07:09 bdeegan" import os.path import sys diff -Nru scons-3.1.1/engine/SCons/Tool/linkloc.py scons-3.1.2/engine/SCons/Tool/linkloc.py --- scons-3.1.1/engine/SCons/Tool/linkloc.py 2019-08-08 14:50:08.000000000 +0000 +++ scons-3.1.2/engine/SCons/Tool/linkloc.py 2019-12-17 02:07:12.000000000 +0000 @@ -32,7 +32,7 @@ # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. # -__revision__ = "src/engine/SCons/Tool/linkloc.py 72ae09dc35ac2626f8ff711d8c4b30b6138e08e3 2019-08-08 14:50:06 bdeegan" +__revision__ = "src/engine/SCons/Tool/linkloc.py bee7caf9defd6e108fc2998a2520ddb36a967691 2019-12-17 02:07:09 bdeegan" import os.path import re diff -Nru scons-3.1.1/engine/SCons/Tool/link.py scons-3.1.2/engine/SCons/Tool/link.py --- scons-3.1.1/engine/SCons/Tool/link.py 2019-08-08 14:50:08.000000000 +0000 +++ scons-3.1.2/engine/SCons/Tool/link.py 2019-12-17 02:07:12.000000000 +0000 @@ -32,7 +32,7 @@ # from __future__ import print_function -__revision__ = "src/engine/SCons/Tool/link.py 72ae09dc35ac2626f8ff711d8c4b30b6138e08e3 2019-08-08 14:50:06 bdeegan" +__revision__ = "src/engine/SCons/Tool/link.py bee7caf9defd6e108fc2998a2520ddb36a967691 2019-12-17 02:07:09 bdeegan" import sys import re diff -Nru scons-3.1.1/engine/SCons/Tool/m4.py scons-3.1.2/engine/SCons/Tool/m4.py --- scons-3.1.1/engine/SCons/Tool/m4.py 2019-08-08 14:50:08.000000000 +0000 +++ scons-3.1.2/engine/SCons/Tool/m4.py 2019-12-17 02:07:12.000000000 +0000 @@ -31,7 +31,7 @@ # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. # -__revision__ = "src/engine/SCons/Tool/m4.py 72ae09dc35ac2626f8ff711d8c4b30b6138e08e3 2019-08-08 14:50:06 bdeegan" +__revision__ = "src/engine/SCons/Tool/m4.py bee7caf9defd6e108fc2998a2520ddb36a967691 2019-12-17 02:07:09 bdeegan" import SCons.Action import SCons.Builder diff -Nru scons-3.1.1/engine/SCons/Tool/masm.py scons-3.1.2/engine/SCons/Tool/masm.py --- scons-3.1.1/engine/SCons/Tool/masm.py 2019-08-08 14:50:08.000000000 +0000 +++ scons-3.1.2/engine/SCons/Tool/masm.py 2019-12-17 02:07:12.000000000 +0000 @@ -31,7 +31,7 @@ # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. # -__revision__ = "src/engine/SCons/Tool/masm.py 72ae09dc35ac2626f8ff711d8c4b30b6138e08e3 2019-08-08 14:50:06 bdeegan" +__revision__ = "src/engine/SCons/Tool/masm.py bee7caf9defd6e108fc2998a2520ddb36a967691 2019-12-17 02:07:09 bdeegan" import SCons.Defaults import SCons.Tool diff -Nru scons-3.1.1/engine/SCons/Tool/midl.py scons-3.1.2/engine/SCons/Tool/midl.py --- scons-3.1.1/engine/SCons/Tool/midl.py 2019-08-08 14:50:08.000000000 +0000 +++ scons-3.1.2/engine/SCons/Tool/midl.py 2019-12-17 02:07:12.000000000 +0000 @@ -31,7 +31,7 @@ # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. # -__revision__ = "src/engine/SCons/Tool/midl.py 72ae09dc35ac2626f8ff711d8c4b30b6138e08e3 2019-08-08 14:50:06 bdeegan" +__revision__ = "src/engine/SCons/Tool/midl.py bee7caf9defd6e108fc2998a2520ddb36a967691 2019-12-17 02:07:09 bdeegan" import SCons.Action import SCons.Builder diff -Nru scons-3.1.1/engine/SCons/Tool/mingw.py scons-3.1.2/engine/SCons/Tool/mingw.py --- scons-3.1.1/engine/SCons/Tool/mingw.py 2019-08-08 14:50:08.000000000 +0000 +++ scons-3.1.2/engine/SCons/Tool/mingw.py 2019-12-17 02:07:12.000000000 +0000 @@ -31,7 +31,7 @@ # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. # -__revision__ = "src/engine/SCons/Tool/mingw.py 72ae09dc35ac2626f8ff711d8c4b30b6138e08e3 2019-08-08 14:50:06 bdeegan" +__revision__ = "src/engine/SCons/Tool/mingw.py bee7caf9defd6e108fc2998a2520ddb36a967691 2019-12-17 02:07:09 bdeegan" import os import os.path diff -Nru scons-3.1.1/engine/SCons/Tool/MSCommon/arch.py scons-3.1.2/engine/SCons/Tool/MSCommon/arch.py --- scons-3.1.1/engine/SCons/Tool/MSCommon/arch.py 2019-08-08 14:50:08.000000000 +0000 +++ scons-3.1.2/engine/SCons/Tool/MSCommon/arch.py 2019-12-17 02:07:12.000000000 +0000 @@ -21,7 +21,7 @@ # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. # -__revision__ = "src/engine/SCons/Tool/MSCommon/arch.py 72ae09dc35ac2626f8ff711d8c4b30b6138e08e3 2019-08-08 14:50:06 bdeegan" +__revision__ = "src/engine/SCons/Tool/MSCommon/arch.py bee7caf9defd6e108fc2998a2520ddb36a967691 2019-12-17 02:07:09 bdeegan" __doc__ = """Module to define supported Windows chip architectures. """ diff -Nru scons-3.1.1/engine/SCons/Tool/MSCommon/common.py scons-3.1.2/engine/SCons/Tool/MSCommon/common.py --- scons-3.1.1/engine/SCons/Tool/MSCommon/common.py 2019-08-08 14:50:08.000000000 +0000 +++ scons-3.1.2/engine/SCons/Tool/MSCommon/common.py 2019-12-17 02:07:12.000000000 +0000 @@ -25,31 +25,67 @@ # from __future__ import print_function -__revision__ = "src/engine/SCons/Tool/MSCommon/common.py 72ae09dc35ac2626f8ff711d8c4b30b6138e08e3 2019-08-08 14:50:06 bdeegan" +__revision__ = "src/engine/SCons/Tool/MSCommon/common.py bee7caf9defd6e108fc2998a2520ddb36a967691 2019-12-17 02:07:09 bdeegan" import copy +import json import os -import subprocess import re +import subprocess +import sys import SCons.Util +# SCONS_MSCOMMON_DEBUG is internal-use so undocumented: +# set to '-' to print to console, else set to filename to log to LOGFILE = os.environ.get('SCONS_MSCOMMON_DEBUG') if LOGFILE == '-': def debug(message): print(message) elif LOGFILE: - try: - import logging - except ImportError: - debug = lambda message: open(LOGFILE, 'a').write(message + '\n') - else: - logging.basicConfig(filename=LOGFILE, level=logging.DEBUG) - debug = logging.getLogger(name=__name__).debug + import logging + logging.basicConfig( + format='%(relativeCreated)05dms:pid%(process)05d:MSCommon/%(filename)s:%(message)s', + filename=LOGFILE, + level=logging.DEBUG) + debug = logging.getLogger(name=__name__).debug else: debug = lambda x: None +# SCONS_CACHE_MSVC_CONFIG is public, and is documented. +CONFIG_CACHE = os.environ.get('SCONS_CACHE_MSVC_CONFIG') +if CONFIG_CACHE in ('1', 'true', 'True'): + CONFIG_CACHE = os.path.join(os.path.expanduser('~'), '.scons_msvc_cache') + +def read_script_env_cache(): + """ fetch cached msvc env vars if requested, else return empty dict """ + envcache = {} + if CONFIG_CACHE: + try: + with open(CONFIG_CACHE, 'r') as f: + envcache = json.load(f) + #TODO can use more specific FileNotFoundError when py2 dropped + except IOError: + # don't fail if no cache file, just proceed without it + pass + return envcache + + +def write_script_env_cache(cache): + """ write out cache of msvc env vars if requested """ + if CONFIG_CACHE: + try: + with open(CONFIG_CACHE, 'w') as f: + json.dump(cache, f, indent=2) + except TypeError: + # data can't serialize to json, don't leave partial file + os.remove(CONFIG_CACHE) + except IOError: + # can't write the file, just skip + pass + + _is_win64 = None def is_win64(): @@ -199,7 +235,6 @@ if stderr: # TODO: find something better to do with stderr; # this at least prevents errors from getting swallowed. - import sys sys.stderr.write(stderr) if popen.wait() != 0: raise IOError(stderr.decode("mbcs")) @@ -207,14 +242,15 @@ output = stdout.decode("mbcs") return output -def parse_output(output, keep=("INCLUDE", "LIB", "LIBPATH", "PATH", 'VSCMD_ARG_app_plat')): +KEEPLIST = ("INCLUDE", "LIB", "LIBPATH", "PATH", 'VSCMD_ARG_app_plat') +def parse_output(output, keep=KEEPLIST): """ Parse output from running visual c++/studios vcvarsall.bat and running set To capture the values listed in keep """ # dkeep is a dict associating key: path_list, where key is one item from - # keep, and pat_list the associated list of paths + # keep, and path_list the associated list of paths dkeep = dict([(i, []) for i in keep]) # rdk will keep the regex to match the .bat file output line starts diff -Nru scons-3.1.1/engine/SCons/Tool/MSCommon/__init__.py scons-3.1.2/engine/SCons/Tool/MSCommon/__init__.py --- scons-3.1.1/engine/SCons/Tool/MSCommon/__init__.py 2019-08-08 14:50:08.000000000 +0000 +++ scons-3.1.2/engine/SCons/Tool/MSCommon/__init__.py 2019-12-17 02:07:12.000000000 +0000 @@ -21,7 +21,7 @@ # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. # -__revision__ = "src/engine/SCons/Tool/MSCommon/__init__.py 72ae09dc35ac2626f8ff711d8c4b30b6138e08e3 2019-08-08 14:50:06 bdeegan" +__revision__ = "src/engine/SCons/Tool/MSCommon/__init__.py bee7caf9defd6e108fc2998a2520ddb36a967691 2019-12-17 02:07:09 bdeegan" __doc__ = """ Common functions for Microsoft Visual Studio and Visual C/C++. diff -Nru scons-3.1.1/engine/SCons/Tool/MSCommon/netframework.py scons-3.1.2/engine/SCons/Tool/MSCommon/netframework.py --- scons-3.1.1/engine/SCons/Tool/MSCommon/netframework.py 2019-08-08 14:50:08.000000000 +0000 +++ scons-3.1.2/engine/SCons/Tool/MSCommon/netframework.py 2019-12-17 02:07:12.000000000 +0000 @@ -20,7 +20,7 @@ # 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__ = "src/engine/SCons/Tool/MSCommon/netframework.py 72ae09dc35ac2626f8ff711d8c4b30b6138e08e3 2019-08-08 14:50:06 bdeegan" +__revision__ = "src/engine/SCons/Tool/MSCommon/netframework.py bee7caf9defd6e108fc2998a2520ddb36a967691 2019-12-17 02:07:09 bdeegan" __doc__ = """ """ diff -Nru scons-3.1.1/engine/SCons/Tool/MSCommon/sdk.py scons-3.1.2/engine/SCons/Tool/MSCommon/sdk.py --- scons-3.1.1/engine/SCons/Tool/MSCommon/sdk.py 2019-08-08 14:50:08.000000000 +0000 +++ scons-3.1.2/engine/SCons/Tool/MSCommon/sdk.py 2019-12-17 02:07:12.000000000 +0000 @@ -21,7 +21,7 @@ # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -__revision__ = "src/engine/SCons/Tool/MSCommon/sdk.py 72ae09dc35ac2626f8ff711d8c4b30b6138e08e3 2019-08-08 14:50:06 bdeegan" +__revision__ = "src/engine/SCons/Tool/MSCommon/sdk.py bee7caf9defd6e108fc2998a2520ddb36a967691 2019-12-17 02:07:09 bdeegan" __doc__ = """Module to detect the Platform/Windows SDK @@ -118,11 +118,11 @@ if (host_arch != target_arch): arch_string='%s_%s'%(host_arch,target_arch) - debug("sdk.py: get_sdk_vc_script():arch_string:%s host_arch:%s target_arch:%s"%(arch_string, + debug("get_sdk_vc_script():arch_string:%s host_arch:%s target_arch:%s"%(arch_string, host_arch, target_arch)) file=self.vc_setup_scripts.get(arch_string,None) - debug("sdk.py: get_sdk_vc_script():file:%s"%file) + debug("get_sdk_vc_script():file:%s"%file) return file class WindowsSDK(SDKDefinition): @@ -286,14 +286,14 @@ def get_installed_sdks(): global InstalledSDKList global InstalledSDKMap - debug('sdk.py:get_installed_sdks()') + debug('get_installed_sdks()') if InstalledSDKList is None: InstalledSDKList = [] InstalledSDKMap = {} for sdk in SupportedSDKList: - debug('MSCommon/sdk.py: trying to find SDK %s' % sdk.version) + debug('trying to find SDK %s' % sdk.version) if sdk.get_sdk_dir(): - debug('MSCommon/sdk.py:found SDK %s' % sdk.version) + debug('found SDK %s' % sdk.version) InstalledSDKList.append(sdk) InstalledSDKMap[sdk.version] = sdk return InstalledSDKList @@ -346,13 +346,13 @@ return InstalledSDKList[0] def mssdk_setup_env(env): - debug('sdk.py:mssdk_setup_env()') + debug('mssdk_setup_env()') if 'MSSDK_DIR' in env: sdk_dir = env['MSSDK_DIR'] if sdk_dir is None: return sdk_dir = env.subst(sdk_dir) - debug('sdk.py:mssdk_setup_env: Using MSSDK_DIR:{}'.format(sdk_dir)) + debug('mssdk_setup_env: Using MSSDK_DIR:{}'.format(sdk_dir)) elif 'MSSDK_VERSION' in env: sdk_version = env['MSSDK_VERSION'] if sdk_version is None: @@ -364,22 +364,22 @@ msg = "SDK version %s is not installed" % sdk_version raise SCons.Errors.UserError(msg) sdk_dir = mssdk.get_sdk_dir() - debug('sdk.py:mssdk_setup_env: Using MSSDK_VERSION:%s'%sdk_dir) + debug('mssdk_setup_env: Using MSSDK_VERSION:%s'%sdk_dir) elif 'MSVS_VERSION' in env: msvs_version = env['MSVS_VERSION'] - debug('sdk.py:mssdk_setup_env:Getting MSVS_VERSION from env:%s'%msvs_version) + debug('mssdk_setup_env:Getting MSVS_VERSION from env:%s'%msvs_version) if msvs_version is None: - debug('sdk.py:mssdk_setup_env thinks msvs_version is None') + debug('mssdk_setup_env thinks msvs_version is None') return msvs_version = env.subst(msvs_version) from . import vs msvs = vs.get_vs_by_version(msvs_version) - debug('sdk.py:mssdk_setup_env:msvs is :%s'%msvs) + debug('mssdk_setup_env:msvs is :%s'%msvs) if not msvs: - debug('sdk.py:mssdk_setup_env: no VS version detected, bailingout:%s'%msvs) + debug('mssdk_setup_env: no VS version detected, bailingout:%s'%msvs) return sdk_version = msvs.sdk_version - debug('sdk.py:msvs.sdk_version is %s'%sdk_version) + debug('msvs.sdk_version is %s'%sdk_version) if not sdk_version: return mssdk = get_sdk_by_version(sdk_version) @@ -388,13 +388,13 @@ if not mssdk: return sdk_dir = mssdk.get_sdk_dir() - debug('sdk.py:mssdk_setup_env: Using MSVS_VERSION:%s'%sdk_dir) + debug('mssdk_setup_env: Using MSVS_VERSION:%s'%sdk_dir) else: mssdk = get_default_sdk() if not mssdk: return sdk_dir = mssdk.get_sdk_dir() - debug('sdk.py:mssdk_setup_env: not using any env values. sdk_dir:%s'%sdk_dir) + debug('mssdk_setup_env: not using any env values. sdk_dir:%s'%sdk_dir) set_sdk_by_directory(env, sdk_dir) diff -Nru scons-3.1.1/engine/SCons/Tool/MSCommon/vc.py scons-3.1.2/engine/SCons/Tool/MSCommon/vc.py --- scons-3.1.1/engine/SCons/Tool/MSCommon/vc.py 2019-08-08 14:50:08.000000000 +0000 +++ scons-3.1.2/engine/SCons/Tool/MSCommon/vc.py 2019-12-17 02:07:12.000000000 +0000 @@ -30,7 +30,7 @@ # * test on 64 bits XP + VS 2005 (and VS 6 if possible) # * SDK # * Assembly -__revision__ = "src/engine/SCons/Tool/MSCommon/vc.py 72ae09dc35ac2626f8ff711d8c4b30b6138e08e3 2019-08-08 14:50:06 bdeegan" +__revision__ = "src/engine/SCons/Tool/MSCommon/vc.py bee7caf9defd6e108fc2998a2520ddb36a967691 2019-12-17 02:07:09 bdeegan" __doc__ = """Module for Visual C/C++ detection and configuration. """ @@ -40,7 +40,10 @@ import subprocess import os import platform +import sys from string import digits as string_digits +if sys.version_info[0] == 2: + import collections import SCons.Warnings from SCons.Tool import find_program_path @@ -152,22 +155,24 @@ return ''.join([x for x in msvc_version if x in string_digits + '.']) def get_host_target(env): - debug('vc.py:get_host_target()') + debug('get_host_target()') host_platform = env.get('HOST_ARCH') if not host_platform: host_platform = platform.machine() - # TODO(2.5): the native Python platform.machine() function returns - # '' on all Python versions before 2.6, after which it also uses - # PROCESSOR_ARCHITECTURE. - if not host_platform: - host_platform = os.environ.get('PROCESSOR_ARCHITECTURE', '') + + # Solaris returns i86pc for both 32 and 64 bit architectures + if host_platform == "i86pc": + if platform.architecture()[0] == "64bit": + host_platform = "amd64" + else: + host_platform = "x86" # Retain user requested TARGET_ARCH req_target_platform = env.get('TARGET_ARCH') - debug('vc.py:get_host_target() req_target_platform:%s'%req_target_platform) + debug('get_host_target() req_target_platform:%s'%req_target_platform) - if req_target_platform: + if req_target_platform: # If user requested a specific platform then only try that one. target_platform = req_target_platform else: @@ -403,7 +408,7 @@ if pdir is None: raise NoVersionFound("No version of Visual Studio found") - debug('vc.py: find_batch_file() in {}'.format(pdir)) + debug('find_batch_file() in {}'.format(pdir)) # filter out e.g. "Exp" from the version name msvc_ver_numeric = get_msvc_version_numeric(msvc_version) @@ -423,17 +428,17 @@ debug("Not found: %s" % batfilename) batfilename = None - installed_sdks=get_installed_sdks() + installed_sdks = get_installed_sdks() for _sdk in installed_sdks: sdk_bat_file = _sdk.get_sdk_vc_script(host_arch,target_arch) if not sdk_bat_file: - debug("vc.py:find_batch_file() not found:%s"%_sdk) + debug("find_batch_file() not found:%s"%_sdk) else: sdk_bat_file_path = os.path.join(pdir,sdk_bat_file) if os.path.exists(sdk_bat_file_path): - debug('vc.py:find_batch_file() sdk_bat_file_path:%s'%sdk_bat_file_path) - return (batfilename,sdk_bat_file_path) - return (batfilename,None) + debug('find_batch_file() sdk_bat_file_path:%s'%sdk_bat_file_path) + return (batfilename, sdk_bat_file_path) + return (batfilename, None) __INSTALLED_VCS_RUN = None @@ -592,21 +597,57 @@ # env2 = Environment(tools='msvs') # we can greatly improve the speed of the second and subsequent Environment # (or Clone) calls by memoizing the environment variables set by vcvars*.bat. -script_env_stdout_cache = {} +# +# Updated: by 2018, vcvarsall.bat had gotten so expensive (vs2017 era) +# it was breaking CI builds because the test suite starts scons so many +# times and the existing memo logic only helped with repeated calls +# within the same scons run. Windows builds on the CI system were split +# into chunks to get around single-build time limits. +# With VS2019 it got even slower and an optional persistent cache file +# was introduced. The cache now also stores only the parsed vars, +# not the entire output of running the batch file - saves a bit +# of time not parsing every time. + +script_env_cache = None + def script_env(script, args=None): - cache_key = (script, args) - stdout = script_env_stdout_cache.get(cache_key, None) - if stdout is None: + global script_env_cache + + if script_env_cache is None: + script_env_cache = common.read_script_env_cache() + cache_key = "{}--{}".format(script, args) + cache_data = script_env_cache.get(cache_key, None) + if cache_data is None: stdout = common.get_output(script, args) - script_env_stdout_cache[cache_key] = stdout - # Stupid batch files do not set return code: we take a look at the - # beginning of the output for an error message instead - olines = stdout.splitlines() - if olines[0].startswith("The specified configuration type is missing"): - raise BatchFileExecutionError("\n".join(olines[:2])) + # Stupid batch files do not set return code: we take a look at the + # beginning of the output for an error message instead + olines = stdout.splitlines() + if olines[0].startswith("The specified configuration type is missing"): + raise BatchFileExecutionError("\n".join(olines[:2])) + + cache_data = common.parse_output(stdout) + script_env_cache[cache_key] = cache_data + # once we updated cache, give a chance to write out if user wanted + common.write_script_env_cache(script_env_cache) + else: + #TODO: Python 2 cleanup + # If we "hit" data from the json file, we have a Py2 problem: + # keys & values will be unicode. don't detect, just convert. + if sys.version_info[0] == 2: + def convert(data): + if isinstance(data, basestring): + return str(data) + elif isinstance(data, collections.Mapping): + return dict(map(convert, data.iteritems())) + elif isinstance(data, collections.Iterable): + return type(data)(map(convert, data)) + else: + return data - return common.parse_output(stdout) + cache_data = convert(cache_data) + + return cache_data def get_default_version(env): debug('get_default_version()') @@ -635,12 +676,12 @@ debug('installed_vcs:%s' % installed_vcs) if not installed_vcs: #msg = 'No installed VCs' - #debug('msv %s\n' % repr(msg)) + #debug('msv %s' % repr(msg)) #SCons.Warnings.warn(SCons.Warnings.VisualCMissingWarning, msg) debug('msvc_setup_env: No installed VCs') return None msvc_version = installed_vcs[0] - debug('msvc_setup_env: using default installed MSVC version %s\n' % repr(msvc_version)) + debug('msvc_setup_env: using default installed MSVC version %s' % repr(msvc_version)) return msvc_version @@ -654,12 +695,12 @@ msvc_setup_env(env) env["MSVC_SETUP_RUN"] = True -def msvc_find_valid_batch_script(env,version): - debug('vc.py:msvc_find_valid_batch_script()') +def msvc_find_valid_batch_script(env, version): + debug('msvc_find_valid_batch_script()') # Find the host platform, target platform, and if present the requested # target platform platforms = get_host_target(env) - debug("vc.py: msvs_find_valid_batch_script(): host_platform %s, target_platform %s req_target_platform:%s" % platforms) + debug(" msvs_find_valid_batch_script(): host_platform %s, target_platform %s req_target_platform:%s" % platforms) host_platform, target_platform, req_target_platform = platforms try_target_archs = [target_platform] @@ -683,7 +724,7 @@ # Set to current arch. env['TARGET_ARCH']=tp - debug("vc.py:msvc_find_valid_batch_script() trying target_platform:%s"%tp) + debug("msvc_find_valid_batch_script() trying target_platform:%s"%tp) host_target = (host_platform, tp) if not is_host_target_supported(host_target, version): warn_msg = "host, target = %s not supported for MSVC version %s" % \ @@ -701,8 +742,8 @@ # Try to locate a batch file for this host/target platform combo try: - (vc_script,sdk_script) = find_batch_file(env,version,host_platform,tp) - debug('vc.py:msvc_find_valid_batch_script() vc_script:%s sdk_script:%s'%(vc_script,sdk_script)) + (vc_script, sdk_script) = find_batch_file(env, version, host_platform, tp) + debug('msvc_find_valid_batch_script() vc_script:%s sdk_script:%s'%(vc_script,sdk_script)) except VisualCException as e: msg = str(e) debug('Caught exception while looking for batch file (%s)' % msg) @@ -714,29 +755,29 @@ continue # Try to use the located batch file for this host/target platform combo - debug('vc.py:msvc_find_valid_batch_script() use_script 2 %s, args:%s\n' % (repr(vc_script), arg)) + debug('msvc_find_valid_batch_script() use_script 2 %s, args:%s' % (repr(vc_script), arg)) found = None if vc_script: try: d = script_env(vc_script, args=arg) found = vc_script except BatchFileExecutionError as e: - debug('vc.py:msvc_find_valid_batch_script() use_script 3: failed running VC script %s: %s: Error:%s'%(repr(vc_script),arg,e)) + debug('msvc_find_valid_batch_script() use_script 3: failed running VC script %s: %s: Error:%s'%(repr(vc_script),arg,e)) vc_script=None continue if not vc_script and sdk_script: - debug('vc.py:msvc_find_valid_batch_script() use_script 4: trying sdk script: %s'%(sdk_script)) + debug('msvc_find_valid_batch_script() use_script 4: trying sdk script: %s'%(sdk_script)) try: d = script_env(sdk_script) found = sdk_script except BatchFileExecutionError as e: - debug('vc.py:msvc_find_valid_batch_script() use_script 5: failed running SDK script %s: Error:%s'%(repr(sdk_script),e)) + debug('msvc_find_valid_batch_script() use_script 5: failed running SDK script %s: Error:%s'%(repr(sdk_script),e)) continue elif not vc_script and not sdk_script: - debug('vc.py:msvc_find_valid_batch_script() use_script 6: Neither VC script nor SDK script found') + debug('msvc_find_valid_batch_script() use_script 6: Neither VC script nor SDK script found') continue - debug("vc.py:msvc_find_valid_batch_script() Found a working script/target: %s/%s"%(repr(found),arg)) + debug("msvc_find_valid_batch_script() Found a working script/target: %s/%s"%(repr(found),arg)) break # We've found a working target_platform, so stop looking # If we cannot find a viable installed compiler, reset the TARGET_ARCH @@ -756,7 +797,7 @@ "compilers most likely not set correctly" SCons.Warnings.warn(SCons.Warnings.VisualCMissingWarning, warn_msg) return None - debug('msvc_setup_env: using specified MSVC version %s\n' % repr(version)) + debug('msvc_setup_env: using specified MSVC version %s' % repr(version)) # XXX: we set-up both MSVS version for backward # compatibility with the msvs tool @@ -767,11 +808,11 @@ use_script = env.get('MSVC_USE_SCRIPT', True) if SCons.Util.is_String(use_script): - debug('vc.py:msvc_setup_env() use_script 1 %s\n' % repr(use_script)) + debug('msvc_setup_env() use_script 1 %s' % repr(use_script)) d = script_env(use_script) elif use_script: d = msvc_find_valid_batch_script(env,version) - debug('vc.py:msvc_setup_env() use_script 2 %s\n' % d) + debug('msvc_setup_env() use_script 2 %s' % d) if not d: return d else: @@ -782,7 +823,7 @@ return None for k, v in d.items(): - debug('vc.py:msvc_setup_env() env:%s -> %s'%(k,v)) + debug('msvc_setup_env() env:%s -> %s'%(k,v)) env.PrependENVPath(k, v, delete_existing=True) # final check to issue a warning if the compiler is not present diff -Nru scons-3.1.1/engine/SCons/Tool/MSCommon/vs.py scons-3.1.2/engine/SCons/Tool/MSCommon/vs.py --- scons-3.1.1/engine/SCons/Tool/MSCommon/vs.py 2019-08-08 14:50:08.000000000 +0000 +++ scons-3.1.2/engine/SCons/Tool/MSCommon/vs.py 2019-12-17 02:07:12.000000000 +0000 @@ -21,7 +21,7 @@ # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. # -__revision__ = "src/engine/SCons/Tool/MSCommon/vs.py 72ae09dc35ac2626f8ff711d8c4b30b6138e08e3 2019-08-08 14:50:06 bdeegan" +__revision__ = "src/engine/SCons/Tool/MSCommon/vs.py bee7caf9defd6e108fc2998a2520ddb36a967691 2019-12-17 02:07:09 bdeegan" __doc__ = """Module to detect Visual Studio and/or Visual C/C++ """ @@ -465,14 +465,14 @@ global InstalledVSMap global SupportedVSMap - debug('vs.py:get_vs_by_version()') + debug('get_vs_by_version()') if msvs not in SupportedVSMap: msg = "Visual Studio version %s is not supported" % repr(msvs) raise SCons.Errors.UserError(msg) get_installed_visual_studios() vs = InstalledVSMap.get(msvs) debug('InstalledVSMap:%s'%InstalledVSMap) - debug('vs.py:get_vs_by_version: found vs:%s'%vs) + debug('get_vs_by_version: found vs:%s'%vs) # Some check like this would let us provide a useful error message # if they try to set a Visual Studio version that's not installed. # However, we also want to be able to run tests (like the unit diff -Nru scons-3.1.1/engine/SCons/Tool/msgfmt.py scons-3.1.2/engine/SCons/Tool/msgfmt.py --- scons-3.1.1/engine/SCons/Tool/msgfmt.py 2019-08-08 14:50:09.000000000 +0000 +++ scons-3.1.2/engine/SCons/Tool/msgfmt.py 2019-12-17 02:07:12.000000000 +0000 @@ -21,7 +21,7 @@ # 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__ = "src/engine/SCons/Tool/msgfmt.py 72ae09dc35ac2626f8ff711d8c4b30b6138e08e3 2019-08-08 14:50:06 bdeegan" +__revision__ = "src/engine/SCons/Tool/msgfmt.py bee7caf9defd6e108fc2998a2520ddb36a967691 2019-12-17 02:07:09 bdeegan" from SCons.Builder import BuilderBase ############################################################################# diff -Nru scons-3.1.1/engine/SCons/Tool/msginit.py scons-3.1.2/engine/SCons/Tool/msginit.py --- scons-3.1.1/engine/SCons/Tool/msginit.py 2019-08-08 14:50:09.000000000 +0000 +++ scons-3.1.2/engine/SCons/Tool/msginit.py 2019-12-17 02:07:12.000000000 +0000 @@ -24,7 +24,7 @@ # 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__ = "src/engine/SCons/Tool/msginit.py 72ae09dc35ac2626f8ff711d8c4b30b6138e08e3 2019-08-08 14:50:06 bdeegan" +__revision__ = "src/engine/SCons/Tool/msginit.py bee7caf9defd6e108fc2998a2520ddb36a967691 2019-12-17 02:07:09 bdeegan" import SCons.Warnings import SCons.Builder diff -Nru scons-3.1.1/engine/SCons/Tool/msgmerge.py scons-3.1.2/engine/SCons/Tool/msgmerge.py --- scons-3.1.1/engine/SCons/Tool/msgmerge.py 2019-08-08 14:50:09.000000000 +0000 +++ scons-3.1.2/engine/SCons/Tool/msgmerge.py 2019-12-17 02:07:12.000000000 +0000 @@ -24,7 +24,7 @@ # 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__ = "src/engine/SCons/Tool/msgmerge.py 72ae09dc35ac2626f8ff711d8c4b30b6138e08e3 2019-08-08 14:50:06 bdeegan" +__revision__ = "src/engine/SCons/Tool/msgmerge.py bee7caf9defd6e108fc2998a2520ddb36a967691 2019-12-17 02:07:09 bdeegan" ############################################################################# def _update_or_init_po_files(target, source, env): diff -Nru scons-3.1.1/engine/SCons/Tool/mslib.py scons-3.1.2/engine/SCons/Tool/mslib.py --- scons-3.1.1/engine/SCons/Tool/mslib.py 2019-08-08 14:50:08.000000000 +0000 +++ scons-3.1.2/engine/SCons/Tool/mslib.py 2019-12-17 02:07:12.000000000 +0000 @@ -31,7 +31,7 @@ # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. # -__revision__ = "src/engine/SCons/Tool/mslib.py 72ae09dc35ac2626f8ff711d8c4b30b6138e08e3 2019-08-08 14:50:06 bdeegan" +__revision__ = "src/engine/SCons/Tool/mslib.py bee7caf9defd6e108fc2998a2520ddb36a967691 2019-12-17 02:07:09 bdeegan" import os diff -Nru scons-3.1.1/engine/SCons/Tool/mslink.py scons-3.1.2/engine/SCons/Tool/mslink.py --- scons-3.1.1/engine/SCons/Tool/mslink.py 2019-08-08 14:50:08.000000000 +0000 +++ scons-3.1.2/engine/SCons/Tool/mslink.py 2019-12-17 02:07:12.000000000 +0000 @@ -32,7 +32,7 @@ # from __future__ import print_function -__revision__ = "src/engine/SCons/Tool/mslink.py 72ae09dc35ac2626f8ff711d8c4b30b6138e08e3 2019-08-08 14:50:06 bdeegan" +__revision__ = "src/engine/SCons/Tool/mslink.py bee7caf9defd6e108fc2998a2520ddb36a967691 2019-12-17 02:07:09 bdeegan" import os import os.path diff -Nru scons-3.1.1/engine/SCons/Tool/mssdk.py scons-3.1.2/engine/SCons/Tool/mssdk.py --- scons-3.1.1/engine/SCons/Tool/mssdk.py 2019-08-08 14:50:08.000000000 +0000 +++ scons-3.1.2/engine/SCons/Tool/mssdk.py 2019-12-17 02:07:12.000000000 +0000 @@ -21,7 +21,7 @@ # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. # -__revision__ = "src/engine/SCons/Tool/mssdk.py 72ae09dc35ac2626f8ff711d8c4b30b6138e08e3 2019-08-08 14:50:06 bdeegan" +__revision__ = "src/engine/SCons/Tool/mssdk.py bee7caf9defd6e108fc2998a2520ddb36a967691 2019-12-17 02:07:09 bdeegan" """engine.SCons.Tool.mssdk diff -Nru scons-3.1.1/engine/SCons/Tool/msvc.py scons-3.1.2/engine/SCons/Tool/msvc.py --- scons-3.1.1/engine/SCons/Tool/msvc.py 2019-08-08 14:50:08.000000000 +0000 +++ scons-3.1.2/engine/SCons/Tool/msvc.py 2019-12-17 02:07:12.000000000 +0000 @@ -31,7 +31,7 @@ # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. # -__revision__ = "src/engine/SCons/Tool/msvc.py 72ae09dc35ac2626f8ff711d8c4b30b6138e08e3 2019-08-08 14:50:06 bdeegan" +__revision__ = "src/engine/SCons/Tool/msvc.py bee7caf9defd6e108fc2998a2520ddb36a967691 2019-12-17 02:07:09 bdeegan" import os.path import os diff -Nru scons-3.1.1/engine/SCons/Tool/msvs.py scons-3.1.2/engine/SCons/Tool/msvs.py --- scons-3.1.1/engine/SCons/Tool/msvs.py 2019-08-08 14:50:08.000000000 +0000 +++ scons-3.1.2/engine/SCons/Tool/msvs.py 2019-12-17 02:07:12.000000000 +0000 @@ -32,7 +32,7 @@ from __future__ import print_function -__revision__ = "src/engine/SCons/Tool/msvs.py 72ae09dc35ac2626f8ff711d8c4b30b6138e08e3 2019-08-08 14:50:06 bdeegan" +__revision__ = "src/engine/SCons/Tool/msvs.py bee7caf9defd6e108fc2998a2520ddb36a967691 2019-12-17 02:07:09 bdeegan" import SCons.compat @@ -652,7 +652,7 @@ for base in ("BASE ",""): self.file.write('# PROP %sUse_MFC 0\n' '# PROP %sUse_Debug_Libraries ' % (base, base)) - if kind.lower().find('debug') < 0: + if 'debug' not in kind.lower(): self.file.write('0\n') else: self.file.write('1\n') @@ -731,7 +731,7 @@ line = dspfile.readline() # skip until marker while line: - if line.find("# End Project") > -1: + if "# End Project" in line: break line = dspfile.readline() @@ -1049,7 +1049,7 @@ line = dspfile.readline() # skip until marker while line: - if line.find('