diff options
| author | Jörg Frings-Fürst <debian@jff-webhosting.net> | 2019-12-29 15:50:38 +0100 | 
|---|---|---|
| committer | Jörg Frings-Fürst <debian@jff-webhosting.net> | 2019-12-29 15:50:38 +0100 | 
| commit | c7ed3af5765539e212ecd5f93bd7ea5f9785bc25 (patch) | |
| tree | 586ea369a93cb817c45c47dc2609ab58648f94ab /src | |
| parent | c7665433b2004d2b404d6fb9d6fd064998486f63 (diff) | |
| parent | e2cfc8f485631bfd5f61d4af1921c7346a062875 (diff) | |
Merge branch 'release/debian/3.1.2+repack-1'debian/3.1.2+repack-1
Diffstat (limited to 'src')
360 files changed, 1731 insertions, 2221 deletions
diff --git a/src/Announce.txt b/src/Announce.txt index 2ceb8bc..321496d 100755 --- a/src/Announce.txt +++ b/src/Announce.txt @@ -18,12 +18,43 @@ So that everyone using SCons can help each other learn how to use it more  effectively, please go to http://scons.org/lists.html#users to sign up for  the scons-users mailing list. -RELEASE 3.1.0 - Mon, 20 Jul 2019 16:59:23 -0700 +RELEASE 3.1.2 - Mon, 17 Dec 2019 02:06:27 +0000    Please consult the RELEASE.txt file for a summary of changes since the last    release and consult the CHANGES.txt file for complete a list of changes    since last release.  This announcement highlights only the important    changes. + +  NOTE: The 4.0.0 Release of SCons will drop Python 2.7 Support + +  Please note the following important changes since release 3.1.1: +      - Added debug option "action_timestamps" which outputs to stdout the absolute start and end time for each target. +      - Update Command() function to accept target_scanner, source_factory, and target_factory arguments. +        This makes Command act more like a one-off builder. +      - Added support for "-imacros" to ParseFlags	 +      - 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. +      - 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. +      - 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 +      Please note the following important changes since release 3.0.4:        - Change the default for AppendENVPath to delete_existing=0, so path          order will not be changed, unless explicitly set (Issue #3276) diff --git a/src/CHANGES.txt b/src/CHANGES.txt index a23140c..745bcba 100755 --- a/src/CHANGES.txt +++ b/src/CHANGES.txt @@ -4,6 +4,92 @@                              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: +    - Remove obsoleted references to DeciderNeedsNode which could cause crash when using --debug=explain + +  From Jason Kenny +    - Add Fix and test for crash in 3.1.0 when using Decider('MD5-timestamp') and --debug=explain + +  From Ben Reed: +    - Added -fmerge-all-constants to flags that get included in both CCFLAGS and LINKFLAGS. + +  From Mathew Robinson: +    - Fix issue #3415 - Update remaining usages of EnvironmentError to SConsEnvironmentError +      this patch fixes issues introduced in 3.1.0 where any of the +      following would cause SCons to error and exit: +        - CacheDir not write-able +        - JSON encoding errors for CacheDir config +        - JSON decoding errors for CacheDir config + +  RELEASE 3.1.0 - Mon, 20 Jul 2019 16:59:23 -0700    From Joseph Brill: @@ -13,7 +99,7 @@ RELEASE 3.1.0 - Mon, 20 Jul 2019 16:59:23 -0700    From William Deegan:      - Enhanced --debug=explain output. Now the separate components of the dependency list are split up        as follows: -       +        scons: rebuilding `file3' because:             the dependency order changed:             ->Sources @@ -84,7 +170,7 @@ RELEASE 3.1.0 - Mon, 20 Jul 2019 16:59:23 -0700      - More fixes for newer Java versions (since 9): handle new jdk directory        naming (jdk-X.Y instead of jdkX.Y) on Windows; handle two-digit major        version. Docstrings improved. -    - Fixups for pylint: exception types, redefined functions,  +    - Fixups for pylint: exception types, redefined functions,        globals, etc.  Some old code removed to resolve issues (hashlib is        always present on modern Pythons; no longer need the code for        2.5-and-earlier optparse). cmp is not a builtin function in Py3, @@ -94,7 +180,7 @@ RELEASE 3.1.0 - Mon, 20 Jul 2019 16:59:23 -0700      - Add a PY3-only function for setting up the cachedir that should be less        prone to races. Add a hack to the PY2 version (from Issue #3351) to        be less prone to a race in the check for old-style cache. -    - Fix coding error in docbook tool only exercised when using python lxml  +    - Fix coding error in docbook tool only exercised when using python lxml      - Recognize two additional GNU compiler header directory options in        ParseFlags: -iquote and -idirafter.      - Fix more re patterns that contain \ but not specified as raw strings @@ -141,7 +227,7 @@ From Daniel Moody:    From Bernhard M. Wiedemann:      - Do not store build host+user name if reproducible builds are wanted -     +  RELEASE 3.0.4 - Mon, 20 Jan 2019 22:49:27 +0000 @@ -209,9 +295,9 @@ RELEASE 3.0.2 - Mon, 31 Dec 2018 16:00:12 -0700      - Fix GH Issue #2580 - # in FRAMEWORKPATH doesn't get properly expanded. The # is left in the        command line.      - Fix issue #2980 with credit to Piotr Bartosik (and William Blevins).  This is an issue where using -      TimeStamp-MD5 Decider and CacheDir can yield incorrect md5's being written into the .sconsign.   -      The difference between Piotr Bartosik's patch and the current code is that the more complicated  -      creation of file to csig map is only done when the count of children for the current node doesn't  +      TimeStamp-MD5 Decider and CacheDir can yield incorrect md5's being written into the .sconsign. +      The difference between Piotr Bartosik's patch and the current code is that the more complicated +      creation of file to csig map is only done when the count of children for the current node doesn't        match the previous count which is loaded from the sconsign.      - Fix issue # 3106 MSVC if using MSVC_BATCH and target dir had a space would fail due to quirk in        MSVC's handling of escaped targetdirs when batch compiling. @@ -247,7 +333,7 @@ RELEASE 3.0.2 - Mon, 31 Dec 2018 16:00:12 -0700      - Removed unused --warn options from the man page and source code.    From Arda Fu -    - Fix cpp scanner regex logic to treat ifndef for py3.5+. Previously it was  +    - Fix cpp scanner regex logic to treat ifndef for py3.5+. Previously it was        not properly differentiating between if, ifdef, and ifndef.    From Philipp Maierhöfer @@ -258,7 +344,7 @@ RELEASE 3.0.2 - Mon, 31 Dec 2018 16:00:12 -0700    From Matthew Marinets:      - Fixed an issue that caused the Java emitter to incorrectly parse arguments to constructors that        implemented a class. -       +    From Fredrik Medley:      - Fix exception when printing of EnviromentError messages.        Specifically, this fixes error reporting of the race condition when @@ -379,7 +465,7 @@ RELEASE 3.0.2 - Mon, 31 Dec 2018 16:00:12 -0700        filter type -> list in ipk    From Bernhard M. Wiedemann: -    - Update SCons' internal scons build logic to allow overriding build date  +    - Update SCons' internal scons build logic to allow overriding build date        with SOURCE_DATE_EPOCH for SCons itself.      - Change the datestamps in SCons' docs and embedded in code use ISO 8601 format and UTC diff --git a/src/LICENSE.txt b/src/LICENSE.txt index 6b6cd6c..67e0e2f 100644 --- a/src/LICENSE.txt +++ b/src/LICENSE.txt @@ -1,3 +1,5 @@ +MIT License +  Copyright (c) 2001 - 2019 The SCons Foundation  Permission is hereby granted, free of charge, to any person obtaining diff --git a/src/RELEASE.txt b/src/RELEASE.txt index 9d0e092..5f84c9e 100755 --- a/src/RELEASE.txt +++ b/src/RELEASE.txt @@ -1,77 +1,90 @@ -  A new SCons checkpoint release, 3.1.0, is now available +  A new SCons checkpoint release, 3.1.2, is now available    on the SCons download page:            https://scons.org/pages/download.html -  Here is a summary of the changes since 3.0.5: +  Here is a summary of the changes since 3.1.1: + +  NOTE: The 4.0.0 Release of SCons will drop Python 2.7 Support    NEW FUNCTIONALITY +    - Added debug option "action_timestamps" which outputs to stdout the absolute start and end time for each target. -    - Added variable TEMPFILEARGJOIN to specify how to join arguments written -      to temp files used when command lines exceed MAXLINELENGTH when the -      command uses $TEMPFILE{...} -    - Support for MSVC 2019 -    - Upgraded and improved Visual Studio solution/project generation code using the MSVSProject builder. -      - Added support for Visual Studio 2017 and 2019. -      - Added support for the following per-variant parameters to the builder: -        - cpppaths: Provides per-variant include paths. -        - cppdefines: Provides per-variant preprocessor definitions. +  REMOVED FUNCTIONALITY +    - Turn previously deprecated debug options into failures: +      --debug=tree, --debug=dtree, --debug=stree, --debug=nomemoizer. +    - Remove deprecated SourceSignatures, TargetSignatures +    - Remove deprecated Builder keywords: overrides and scanner +    - Remove deprecated env.Copy +    - Remove deprecated BuildDir plus SConscript keyword build_dir    CHANGED/ENHANCED EXISTING FUNCTIONALITY - -      - Fix performance degradation for MD5-timestamp decider.  NOTE: This changes the Decider() function arguments. -      From: -          def my_decider(dependency, target, prev_ni): -      To: -          def my_decider(dependency, target, prev_ni, repo_node): -      Where repo_node is the repository (or other) node to use to check if the node is out of date instead of dependency. - -    - Enhanced --debug=explain output. Now the separate components of the dependency list are split up -      as follows: - -      scons: rebuilding `file3' because: -           the dependency order changed: -           ->Sources -           Old:xxx	New:zzz -           Old:yyy	New:yyy -           Old:zzz	New:xxx -           ->Depends -           ->Implicit -           Old:/usr/bin/python	New:/usr/bin/python - -    - Changed: Pseudo-builders now inherit OverrideEnvironments. For -      example when calling a pseudo-builder from another -      pseudo-builder the override variables passed to the first -      pseudo-builder call had to be explicitly passed on to the -      internal pseudo-builder call. Now the second pseudo-builder call -      will automatically inherit these override values. +    - Update Command() function to accept target_scanner, source_factory, and target_factory arguments. +      This makes Command act more like a one-off builder. +    - Added support for "-imacros" to ParseFlags +    - 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.    FIXES -    - Fix Issue #3350 - SCons Exception EnvironmentError is conflicting with Python's EnvironmentError. -    - Fix spurious rebuilds on second build for cases where builder has > 1 target and the source file -      is generated. This was causing the > 1th target to not have it's implicit list cleared when the source -      file was actually built, leaving an implicit list similar to follows for 2nd and higher target -              ['/usr/bin/python', 'xxx', 'yyy', 'zzz'] -      This was getting persisted to SConsign and on rebuild it would be corrected to be similar to this -              ['zzz', 'yyy', 'xxx', '/usr/bin/python'] -      Which would trigger a rebuild because the order changed. -      The fix involved added logic to mark all shared targets as peers and then ensure they're implicit -      list is all cleared together. -    - Fix Issue #3349 - SCons Exception EnvironmentError is conflicting with Python's EnvironmentError. -      Renamed to SConsEnvironmentError -    - Fix Issue #3350 - mslink failing when too many objects.  This is resolved by adding TEMPFILEARGJOIN variable -      which specifies what character to join all the argements output into the tempfile. The default remains a space -      when mslink, msvc, or mslib tools are loaded they change the TEMPFILEARGJOIN to be a line separator (\r\n on win32) -    - Additional fix to issue #3135 - Also handle 'pure' and 'elemental' type bound procedures - -    - Fix handling of Visual Studio Compilers to properly reject any unknown HOST_PLATFORM or TARGET_PLATFORM -    - Enable LaTeX scanner to find more than one include per line -     -      under which they would be observed), or major code cleanups - -  Thanks to CURLY, LARRY, and MOE for their contributions to this release. -  Contributors are listed alphabetically by their last name. +    - 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. +    - 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. +    - Fix CheckFunc detection code for Visual 2019. Some functions +      (e.g. memmove) were incorrectly recognized as not available. +    - Fix stacktrace when using SCons with Python 3.5+ and SunOS/Solaris related tools. +    - Latex: 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. +    - CmdStringHolder fix from issue #3428 + +  IMPROVEMENTS +    - 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. + + +  PACKAGING + +     - N/A + +  DOCUMENTATION + +    -  N/A + +  DEVELOPMENT + +    - N/A + + +Thanks to the following developers for their contributions to this release. +git shortlog --no-merges -ns 3.1.1..HEAD +    59  Mats Wichmann +    21  William Deegan +     8  Edoardo Bezzeccheri +     5  Adam Gross +     5  maiphi +     4  Ivan Kravets +     4  Mathew Robinson +     2  Jakub Kulík +     2  Jacek Kuczera +     2  Rob Boehne +     2  Jason Kenny +     2  Tim Gates +     1  Jakub Kulik +     1  Theogen Ratkin +     1  jw0k +  Copyright (c) 2001 - 2019 The SCons Foundation -src/RELEASE.txt e724ae812eb96f4858a132f5b8c769724744faf6 2019-07-21 00:04:47 bdeegan +src/RELEASE.txt bee7caf9defd6e108fc2998a2520ddb36a967691 2019-12-17 02:07:09 bdeegan diff --git a/src/engine/SCons/Action.py b/src/engine/SCons/Action.py index b541256..b4310f6 100644 --- a/src/engine/SCons/Action.py +++ b/src/engine/SCons/Action.py @@ -98,7 +98,7 @@ way for wrapping up the functions.  # 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 e724ae812eb96f4858a132f5b8c769724744faf6 2019-07-21 00:04:47 bdeegan" +__revision__ = "src/engine/SCons/Action.py bee7caf9defd6e108fc2998a2520ddb36a967691 2019-12-17 02:07:09 bdeegan"  import os  import pickle diff --git a/src/engine/SCons/Action.xml b/src/engine/SCons/Action.xml index 9cb186c..f4adc72 100644 --- a/src/engine/SCons/Action.xml +++ b/src/engine/SCons/Action.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="UTF-8"?> +<?xml version="1.0"?>  <!--  Copyright (c) 2001 - 2019 The SCons Foundation diff --git a/src/engine/SCons/ActionTests.py b/src/engine/SCons/ActionTests.py index 9372240..b9e0663 100644 --- a/src/engine/SCons/ActionTests.py +++ b/src/engine/SCons/ActionTests.py @@ -21,7 +21,7 @@  # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.  # -__revision__ = "src/engine/SCons/ActionTests.py e724ae812eb96f4858a132f5b8c769724744faf6 2019-07-21 00:04:47 bdeegan" +__revision__ = "src/engine/SCons/ActionTests.py bee7caf9defd6e108fc2998a2520ddb36a967691 2019-12-17 02:07:09 bdeegan"  # Define a null function and a null class for use as builder actions. @@ -1208,10 +1208,6 @@ class CommandActionTestCase(unittest.TestCase):              # Newer cygwin seems to return 126 for following              expect_nonexecutable_file = 126              expect_nonexecutable_dir = 127 -        elif sys.platform.find('sunos') != -1: -            expect_nonexistent = 1 -            expect_nonexecutable_file = 1 -            expect_nonexecutable_dir = 1          else:              expect_nonexistent = 127              expect_nonexecutable_file = 126 diff --git a/src/engine/SCons/Builder.py b/src/engine/SCons/Builder.py index 7777436..e4e5215 100644 --- a/src/engine/SCons/Builder.py +++ b/src/engine/SCons/Builder.py @@ -98,7 +98,7 @@ There are the following methods for internal use within this module:  # 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 e724ae812eb96f4858a132f5b8c769724744faf6 2019-07-21 00:04:47 bdeegan" +__revision__ = "src/engine/SCons/Builder.py bee7caf9defd6e108fc2998a2520ddb36a967691 2019-12-17 02:07:09 bdeegan"  import collections @@ -396,16 +396,13 @@ class BuilderBase(object):          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 --git a/src/engine/SCons/BuilderTests.py b/src/engine/SCons/BuilderTests.py index dd9a917..d0713b2 100644 --- a/src/engine/SCons/BuilderTests.py +++ b/src/engine/SCons/BuilderTests.py @@ -22,7 +22,7 @@  #  from __future__ import print_function -__revision__ = "src/engine/SCons/BuilderTests.py e724ae812eb96f4858a132f5b8c769724744faf6 2019-07-21 00:04:47 bdeegan" +__revision__ = "src/engine/SCons/BuilderTests.py bee7caf9defd6e108fc2998a2520ddb36a967691 2019-12-17 02:07:09 bdeegan"  import SCons.compat diff --git a/src/engine/SCons/CacheDir.py b/src/engine/SCons/CacheDir.py index c9e8ea7..20a7df4 100644 --- a/src/engine/SCons/CacheDir.py +++ b/src/engine/SCons/CacheDir.py @@ -21,7 +21,7 @@  # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.  # -__revision__ = "src/engine/SCons/CacheDir.py e724ae812eb96f4858a132f5b8c769724744faf6 2019-07-21 00:04:47 bdeegan" +__revision__ = "src/engine/SCons/CacheDir.py bee7caf9defd6e108fc2998a2520ddb36a967691 2019-12-17 02:07:09 bdeegan"  __doc__ = """  CacheDir support @@ -33,6 +33,7 @@ import os  import stat  import sys +import SCons  import SCons.Action  import SCons.Warnings  from SCons.Util import PY3 @@ -185,7 +186,7 @@ class CacheDir(object):              pass          except OSError:              msg = "Failed to create cache directory " + path -            raise SCons.Errors.EnvironmentError(msg) +            raise SCons.Errors.SConsEnvironmentError(msg)          try:              with open(config_file, 'x') as config: @@ -194,14 +195,14 @@ class CacheDir(object):                      json.dump(self.config, config)                  except Exception:                      msg = "Failed to write cache configuration for " + path -                    raise SCons.Errors.EnvironmentError(msg) +                    raise SCons.Errors.SConsEnvironmentError(msg)          except FileExistsError:              try:                  with open(config_file) as config:                      self.config = json.load(config)              except ValueError:                  msg = "Failed to read cache configuration for " + path -                raise SCons.Errors.EnvironmentError(msg) +                raise SCons.Errors.SConsEnvironmentError(msg)      def _readconfig2(self, path): diff --git a/src/engine/SCons/CacheDirTests.py b/src/engine/SCons/CacheDirTests.py index f96dab5..f1a9936 100644 --- a/src/engine/SCons/CacheDirTests.py +++ b/src/engine/SCons/CacheDirTests.py @@ -21,16 +21,19 @@  # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.  # -__revision__ = "src/engine/SCons/CacheDirTests.py e724ae812eb96f4858a132f5b8c769724744faf6 2019-07-21 00:04:47 bdeegan" +__revision__ = "src/engine/SCons/CacheDirTests.py bee7caf9defd6e108fc2998a2520ddb36a967691 2019-12-17 02:07:09 bdeegan"  import os.path  import shutil  import sys  import unittest +import tempfile +import stat  from TestCmd import TestCmd  import SCons.CacheDir +from SCons.Util import PY3  built_it = None @@ -112,6 +115,84 @@ class CacheDirTestCase(BaseTestCase):          finally:              SCons.Util.MD5collect = save_collect +class ExceptionTestCase(unittest.TestCase): +    """Test that the correct exceptions are thrown by CacheDir.""" + +    # Don't inherit from BaseTestCase, we're by definition trying to +    # break things so we really want a clean slate for each test. +    def setUp(self): +        self.tmpdir = tempfile.mkdtemp() +        self._CacheDir = SCons.CacheDir.CacheDir(self.tmpdir) + +    def tearDown(self): +        shutil.rmtree(self.tmpdir) + +    @unittest.skipIf(sys.platform.startswith("win"), "This fixture will not trigger an OSError on Windows") +    def test_throws_correct_on_OSError(self): +        """Test that the correct error is thrown when cache directory cannot be created.""" +        privileged_dir = os.path.join(os.getcwd(), "privileged") +        try: +            os.mkdir(privileged_dir) +            os.chmod(privileged_dir, stat.S_IREAD) +            cd = SCons.CacheDir.CacheDir(os.path.join(privileged_dir, "cache")) +            assert False, "Should have raised exception and did not" +        except SCons.Errors.SConsEnvironmentError as e: +            assert str(e) == "Failed to create cache directory {}".format(os.path.join(privileged_dir, "cache")) +        finally: +            os.chmod(privileged_dir, stat.S_IWRITE | stat.S_IEXEC | stat.S_IREAD) +            shutil.rmtree(privileged_dir) + + +    def test_throws_correct_when_failed_to_write_configfile(self): +        class Unserializable: +            """A class which the JSON should not be able to serialize""" + +            def __init__(self, oldconfig): +                self.something = 1 # Make the object unserializable +                # Pretend to be the old config just enough +                self.__dict__["prefix_len"] = oldconfig["prefix_len"] + +            def __getitem__(self, name, default=None): +                if name == "prefix_len": +                    return self.__dict__["prefix_len"] +                else: +                    return None + +            def __setitem__(self, name, value): +                self.__dict__[name] = value + +        oldconfig = self._CacheDir.config +        self._CacheDir.config = Unserializable(oldconfig) +        # Remove the config file that got created on object creation +        # so that _readconfig* will try to rewrite it +        old_config = os.path.join(self._CacheDir.path, "config") +        os.remove(old_config) +         +        try: +            if PY3: +                self._CacheDir._readconfig3(self._CacheDir.path) +            else: +                self._CacheDir._readconfig2(self._CacheDir.path) +            assert False, "Should have raised exception and did not" +        except SCons.Errors.SConsEnvironmentError as e: +            assert str(e) == "Failed to write cache configuration for {}".format(self._CacheDir.path) + +    def test_raise_environment_error_on_invalid_json(self): +        config_file = os.path.join(self._CacheDir.path, "config") +        with open(config_file, "r") as cfg: +            content = cfg.read() +        # This will make JSON load raise a ValueError +        content += "{}" +        with open(config_file, "w") as cfg: +            cfg.write(content) + +        try: +            # Construct a new cache dir that will try to read the invalid config +            new_cache_dir = SCons.CacheDir.CacheDir(self._CacheDir.path) +            assert False, "Should have raised exception and did not" +        except SCons.Errors.SConsEnvironmentError as e: +            assert str(e) == "Failed to read cache configuration for {}".format(self._CacheDir.path) +  class FileTestCase(BaseTestCase):      """      Test calling CacheDir code through Node.FS.File interfaces. diff --git a/src/engine/SCons/Conftest.py b/src/engine/SCons/Conftest.py index 1163aa3..c24adf8 100644 --- a/src/engine/SCons/Conftest.py +++ b/src/engine/SCons/Conftest.py @@ -290,6 +290,10 @@ char %s();""" % function_name  #include <assert.h>  %(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 --git a/src/engine/SCons/Debug.py b/src/engine/SCons/Debug.py index c19862a..ef7dfff 100644 --- a/src/engine/SCons/Debug.py +++ b/src/engine/SCons/Debug.py @@ -31,7 +31,7 @@ caller_trace()  # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.  # -__revision__ = "src/engine/SCons/Debug.py e724ae812eb96f4858a132f5b8c769724744faf6 2019-07-21 00:04:47 bdeegan" +__revision__ = "src/engine/SCons/Debug.py bee7caf9defd6e108fc2998a2520ddb36a967691 2019-12-17 02:07:09 bdeegan"  import os  import sys diff --git a/src/engine/SCons/Defaults.py b/src/engine/SCons/Defaults.py index 30c0052..c39c417 100644 --- a/src/engine/SCons/Defaults.py +++ b/src/engine/SCons/Defaults.py @@ -33,7 +33,7 @@ from distutils.msvccompiler.  #  from __future__ import division -__revision__ = "src/engine/SCons/Defaults.py e724ae812eb96f4858a132f5b8c769724744faf6 2019-07-21 00:04:47 bdeegan" +__revision__ = "src/engine/SCons/Defaults.py bee7caf9defd6e108fc2998a2520ddb36a967691 2019-12-17 02:07:09 bdeegan"  import os diff --git a/src/engine/SCons/Defaults.xml b/src/engine/SCons/Defaults.xml index e568c92..8f87c6e 100644 --- a/src/engine/SCons/Defaults.xml +++ b/src/engine/SCons/Defaults.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="UTF-8"?> +<?xml version="1.0"?>  <!--  Copyright (c) 2001 - 2019 The SCons Foundation @@ -572,15 +572,21 @@ searching the repositories.  <scons_function name="DefaultEnvironment">  <arguments signature="global"> -([args]) +([**kwargs])  </arguments>  <summary>  <para> -Creates and returns a default construction environment object. -This construction environment is used internally by SCons -in order to execute many of the global functions in this list, -and to fetch source files transparently +Creates and returns the default &consenv; object. +The default &consenv; is used internally by SCons +in order to execute many of the global functions in this list +(i.e. those not called as methods of a specific +&consenv;), and to fetch source files transparently  from source code management systems. +The default environment is a singleton, so the keyword +arguments affect it only on the first call, on subsequent +calls the already-constructed object is returned. +The default environment can be modified in the same way +as any &consenv;.  </para>  </summary>  </scons_function> diff --git a/src/engine/SCons/DefaultsTests.py b/src/engine/SCons/DefaultsTests.py index 4e0328a..ebb78d5 100644 --- a/src/engine/SCons/DefaultsTests.py +++ b/src/engine/SCons/DefaultsTests.py @@ -21,7 +21,7 @@  # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.  # -__revision__ = "src/engine/SCons/DefaultsTests.py e724ae812eb96f4858a132f5b8c769724744faf6 2019-07-21 00:04:47 bdeegan" +__revision__ = "src/engine/SCons/DefaultsTests.py bee7caf9defd6e108fc2998a2520ddb36a967691 2019-12-17 02:07:09 bdeegan"  import SCons.compat diff --git a/src/engine/SCons/Environment.py b/src/engine/SCons/Environment.py index 31a4721..c51df40 100644 --- a/src/engine/SCons/Environment.py +++ b/src/engine/SCons/Environment.py @@ -31,7 +31,7 @@ Environment  # 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 e724ae812eb96f4858a132f5b8c769724744faf6 2019-07-21 00:04:47 bdeegan" +__revision__ = "src/engine/SCons/Environment.py bee7caf9defd6e108fc2998a2520ddb36a967691 2019-12-17 02:07:09 bdeegan"  import copy @@ -46,7 +46,7 @@ import SCons.Builder  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 @@ CalculatorArgs = {}  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 @@ def _set_BUILDERS(env, key, value):          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 @@ class SubstitutionEnvironment(object):              # 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 @@ class SubstitutionEnvironment(object):              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': @@ -783,13 +781,14 @@ class SubstitutionEnvironment(object):                  elif arg in ['-mno-cygwin',                               '-pthread',                               '-openmp', +                             '-fmerge-all-constants',                               '-fopenmp']:                      dict['CCFLAGS'].append(arg)                      dict['LINKFLAGS'].append(arg)                  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' @@ -797,7 +796,7 @@ class SubstitutionEnvironment(object):                  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) @@ -1429,14 +1428,6 @@ class Base(SubstitutionEnvironment):          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 @@ -1492,8 +1483,14 @@ class Base(SubstitutionEnvironment):          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 ] @@ -1502,7 +1499,17 @@ class Base(SubstitutionEnvironment):              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] @@ -1510,23 +1517,28 @@ class Base(SubstitutionEnvironment):              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):          """ @@ -1599,7 +1611,7 @@ class Base(SubstitutionEnvironment):              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: @@ -1917,14 +1929,6 @@ class Base(SubstitutionEnvironment):              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) @@ -1963,13 +1967,42 @@ class Base(SubstitutionEnvironment):          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) @@ -2038,7 +2071,7 @@ class Base(SubstitutionEnvironment):          """          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 @@ -2158,7 +2191,7 @@ class Base(SubstitutionEnvironment):          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) @@ -2176,24 +2209,6 @@ class Base(SubstitutionEnvironment):              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 @@ -2215,28 +2230,6 @@ class Base(SubstitutionEnvironment):          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):          """          """ @@ -2321,7 +2314,7 @@ class OverrideEnvironment(Base):              return attr.clone(self)          else:              return attr -         +      def __setattr__(self, name, value):          setattr(self.__dict__['__subject'], name, value) @@ -2333,7 +2326,7 @@ class OverrideEnvironment(Base):              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 --git a/src/engine/SCons/Environment.xml b/src/engine/SCons/Environment.xml index 9b392d5..344bc2e 100644 --- a/src/engine/SCons/Environment.xml +++ b/src/engine/SCons/Environment.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="UTF-8"?> +<?xml version="1.0"?>  <!--  Copyright (c) 2001 - 2019 The SCons Foundation @@ -148,9 +148,9 @@ appending to this list,  although the more flexible approach  is to associate scanners  with a specific Builder. -See the sections "Builder Objects" -and "Scanner Objects," -below, for more information. +See the manpage sections "Builder Objects" +and "Scanner Objects" +for more information.  </para>  </summary>  </cvar> @@ -160,7 +160,8 @@ below, for more information.  <para>  A reserved variable name  that may not be set or used in a construction environment. -(See "Variable Substitution," below.) +(See the manpage section "Variable Substitution" +for more information).  </para>  </summary>  </cvar> @@ -170,7 +171,8 @@ that may not be set or used in a construction environment.  <para>  A reserved variable name  that may not be set or used in a construction environment. -(See "Variable Substitution," below.) +(See the manpage section "Variable Substitution" +for more information).  </para>  </summary>  </cvar> @@ -180,7 +182,8 @@ that may not be set or used in a construction environment.  <para>  A reserved variable name  that may not be set or used in a construction environment. -(See "Variable Substitution," below.) +(See the manpage section "Variable Substitution" +for more information).  </para>  </summary>  </cvar> @@ -190,7 +193,8 @@ that may not be set or used in a construction environment.  <para>  A reserved variable name  that may not be set or used in a construction environment. -(See "Variable Substitution," below.) +(See the manpage section "Variable Substitution" +for more information).  </para>  </summary>  </cvar> @@ -200,7 +204,8 @@ that may not be set or used in a construction environment.  <para>  A reserved variable name  that may not be set or used in a construction environment. -(See "Variable Substitution," below.) +(See the manpage section "Variable Substitution" +for more information).  </para>  </summary>  </cvar> @@ -210,7 +215,8 @@ that may not be set or used in a construction environment.  <para>  A reserved variable name  that may not be set or used in a construction environment. -(See "Variable Substitution," below.) +(See the manpage section "Variable Substitution" +for more information).  </para>  </summary>  </cvar> @@ -220,7 +226,8 @@ that may not be set or used in a construction environment.  <para>  A reserved variable name  that may not be set or used in a construction environment. -(See "Variable Substitution," below.) +(See the manpage section "Variable Substitution" +for more information).  </para>  </summary>  </cvar> @@ -230,7 +237,8 @@ that may not be set or used in a construction environment.  <para>  A reserved variable name  that may not be set or used in a construction environment. -(See "Variable Substitution," below.) +(See the manpage section "Variable Substitution" +for more information).  </para>  </summary>  </cvar> @@ -255,8 +263,8 @@ that are part of this construction environment.  Creates an Action object for  the specified  <varname>action</varname>. -See the section "Action Objects," -below, for a complete explanation of the arguments and behavior. +See the manpage section "Action Objects" +for a complete explanation of the arguments and behavior.  </para>  <para> @@ -359,7 +367,8 @@ has been built.  The specified action(s) may be  an Action object, or anything that  can be converted into an Action object -(see below). +See the manpage section "Action Objects" +for a complete explanation.  </para>  <para> @@ -386,7 +395,8 @@ is built.  The specified action(s) may be  an Action object, or anything that  can be converted into an Action object -(see below). +See the manpage section "Action Objects" +for a complete explanation.  </para>  <para> @@ -512,7 +522,7 @@ Otherwise, the construction variable  and the value of the keyword argument  are both coerced to lists,  and the lists are added together. -(See also the Prepend method, below.) +(See also the &Prepend; method).  </para>  <para> @@ -603,28 +613,6 @@ env.AppendUnique(CCFLAGS = '-g', FOO = ['foo.yyy'])  </summary>  </scons_function> -<scons_function name="BuildDir"> -<arguments> -(build_dir, src_dir, [duplicate]) -</arguments> -<summary> -<para> -Deprecated synonyms for -&f-VariantDir; -and -<function>env.VariantDir</function>(). -The -<varname>build_dir</varname> -argument becomes the -<varname>variant_dir</varname> -argument of -&f-VariantDir; -or -<function>env.VariantDir</function>(). -</para> -</summary> -</scons_function> -  <scons_function name="Builder">  <arguments>  (action, [arguments]) @@ -634,8 +622,8 @@ or  Creates a Builder object for  the specified  <varname>action</varname>. -See the section "Builder Objects," -below, for a complete explanation of the arguments and behavior. +See the manpage section "Builder Objects" +for a complete explanation of the arguments and behavior.  </para>  <para> @@ -898,11 +886,15 @@ wx_env = env.Clone(parse_flags='!wx-config --cflags --cxxflags')  <builder name="Command">  <summary>  <para> -The &b-Command; "Builder" is actually implemented -as a function that looks like a Builder, -but actually takes an additional argument of the action -from which the Builder should be made. -See the &f-link-Command; function description +The &b-Command; "Builder" is actually +a function that looks like a Builder, +but takes a required third argument, which is the +action to take to construct the target +from the source, used for "one-off" builds +where a full builder is not needed. +Thus it does not follow the builder +calling rules described at the start of this section. +See instead the &f-link-Command; function description  for the calling syntax and details.  </para>  </summary> @@ -923,19 +915,29 @@ for a single special-case build.  </para>  <para> -As a special case, the -<varname>source_scanner</varname> -keyword argument can +&b-Command; builder accepts +<varname>source_scanner</varname>, +<varname>target_scanner</varname>, +<varname>source_factory</varname>, and +<varname>target_factory</varname> +keyword arguments. The *_scanner args can  be used to specify  a Scanner object -that will be used to scan the sources. -(The global +that will be used to apply a custom +scanner for a source or target. +For example, the global  <literal>DirScanner</literal>  object can be used  if any of the sources will be directories  that must be scanned on-disk for  changes to files that aren't -already specified in other Builder of function calls.) +already specified in other Builder of function calls. +The *_factory args take a factory function that the +Command will use to turn any sources or targets +specified as strings into SCons Nodes. +See the sections "Builder Objects" +below, for more information about how these +args work in a Builder.  </para>  <para> @@ -947,7 +949,7 @@ same-named existing construction variables.  An action can be an external command,  specified as a string,  or a callable Python object; -see "Action Objects," below, +see the manpage section "Action Objects"  for more complete information.  Also note that a string specifying an external command  may be preceded by an @@ -971,7 +973,7 @@ env.Command('foo.out', 'foo.in',  env.Command('bar.out', 'bar.in',              ["rm -f $TARGET",               "$BAR_BUILD < $SOURCES > $TARGET"], -            ENV = {'PATH' : '/usr/local/bin/'}) +            ENV={'PATH': '/usr/local/bin/'})  def rename(env, target, source):      import os @@ -979,7 +981,7 @@ def rename(env, target, source):  env.Command('baz.out', 'baz.in',              ["$BAZ_BUILD < $SOURCES > .tmp", -	     rename ]) +	     rename])  </example_commands>  <para> @@ -988,14 +990,14 @@ Note that the  function will usually assume, by default,  that the specified targets and/or sources are Files,  if no other part of the configuration -identifies what type of entry it is. +identifies what type of entries they are.  If necessary, you can explicitly specify  that targets or source nodes should -be treated as directoriese +be treated as directories  by using the  &f-link-Dir;  or -<function>env.Dir</function>() +<function>env.Dir</function>  functions.  </para> @@ -1011,9 +1013,9 @@ env.Command(env.Dir('$DISTDIR')), None, make_distdir)  </example_commands>  <para> -(Also note that SCons will usually +Also note that SCons will usually  automatically create any directory necessary to hold a target file, -so you normally don't need to create directories by hand.) +so you normally don't need to create directories by hand.  </para>  </summary>  </scons_function> @@ -1029,8 +1031,8 @@ so you normally don't need to create directories by hand.)  <para>  Creates a Configure object for integrated  functionality similar to GNU autoconf. -See the section "Configure Contexts," -below, for a complete explanation of the arguments and behavior. +See the manpage section "Configure Contexts" +for a complete explanation of the arguments and behavior.  </para>  </summary>  </scons_function> @@ -1325,11 +1327,11 @@ env.Depends(bar, installed_lib)  <summary>  <para>  Returns a dictionary object -containing copies of all of the -construction variables in the environment. -If there are any variable names specified, -only the specified construction -variables are returned in the dictionary. +containing the &consvars; in the &consenv;. +If there are any arguments specified, +the values of the specified &consvars; +are returned as a string (if one +argument) or as a list of strings.  </para>  <para> @@ -1337,8 +1339,8 @@ Example:  </para>  <example_commands> -dict = env.Dictionary() -cc_dict = env.Dictionary('CC', 'CCFLAGS', 'CCCOM') +cvars = env.Dictionary() +cc_values = env.Dictionary('CC', 'CCFLAGS', 'CCCOM')  </example_commands>  </summary>  </scons_function> @@ -1375,7 +1377,8 @@ would supply a string as a directory name  to a Builder method or function.  Directory Nodes have attributes and methods  that are useful in many situations; -see "File and Directory Nodes," below. +see manpage section "File and Directory Nodes" +for more information.  </para>  </summary>  </scons_function> @@ -1399,7 +1402,7 @@ This SConstruct:  <example_commands>  env=Environment() -print env.Dump('CCCOM') +print(env.Dump('CCCOM'))  </example_commands>  <para> @@ -1416,7 +1419,7 @@ While this SConstruct:  <example_commands>  env=Environment() -print env.Dump() +print(env.Dump())  </example_commands>  <para> @@ -1458,8 +1461,8 @@ Executes an Action object.  The specified  <varname>action</varname>  may be an Action object -(see the section "Action Objects," -below, for a complete explanation of the arguments and behavior), +(see manpage section "Action Objects" +for a complete explanation of the arguments and behavior),  or it may be a command-line string,  list of commands,  or executable Python function, @@ -1532,7 +1535,8 @@ would supply a string as a file name  to a Builder method or function.  File Nodes have attributes and methods  that are useful in many situations; -see "File and Directory Nodes," below. +see manpage section "File and Directory Nodes" +for more information.  </para>  </summary>  </scons_function> @@ -2190,7 +2194,7 @@ and the construction variables they affect  are as specified for the  &f-link-env-ParseFlags;  method (which this method calls). -See that method's description, below, +See that method's description  for a table of options and construction variables.  </para>  </summary> @@ -2301,30 +2305,34 @@ and added to the following construction variables:  </para>  <example_commands> --arch               CCFLAGS, LINKFLAGS --D                  CPPDEFINES --framework          FRAMEWORKS --frameworkdir=      FRAMEWORKPATH --include            CCFLAGS --isysroot           CCFLAGS, LINKFLAGS --isystem            CCFLAGS --iquote             CCFLAGS --idirafter          CCFLAGS --I                  CPPPATH --l                  LIBS --L                  LIBPATH --mno-cygwin         CCFLAGS, LINKFLAGS --mwindows           LINKFLAGS --pthread            CCFLAGS, LINKFLAGS --std=               CFLAGS --Wa,                ASFLAGS, CCFLAGS --Wl,-rpath=         RPATH --Wl,-R,             RPATH --Wl,-R              RPATH --Wl,                LINKFLAGS --Wp,                CPPFLAGS --                   CCFLAGS -+                   CCFLAGS, LINKFLAGS +-arch                   CCFLAGS, LINKFLAGS +-D                      CPPDEFINES +-framework              FRAMEWORKS +-frameworkdir=          FRAMEWORKPATH +-fmerge-all-constants   CCFLAGS, LINKFLAGS +-fopenmp                CCFLAGS, LINKFLAGS +-include                CCFLAGS +-imacros                CCFLAGS +-isysroot               CCFLAGS, LINKFLAGS +-isystem                CCFLAGS +-iquote                 CCFLAGS +-idirafter              CCFLAGS +-I                      CPPPATH +-l                      LIBS +-L                      LIBPATH +-mno-cygwin             CCFLAGS, LINKFLAGS +-mwindows               LINKFLAGS +-openmp                 CCFLAGS, LINKFLAGS +-pthread                CCFLAGS, LINKFLAGS +-std=                   CFLAGS +-Wa,                    ASFLAGS, CCFLAGS +-Wl,-rpath=             RPATH +-Wl,-R,                 RPATH +-Wl,-R                  RPATH +-Wl,                    LINKFLAGS +-Wp,                    CPPFLAGS +-                       CCFLAGS ++                       CCFLAGS, LINKFLAGS  </example_commands>  <para> @@ -2655,8 +2663,8 @@ env.Requires('foo', 'file-that-must-be-built-before-foo')  Creates a Scanner object for  the specified  <varname>function</varname>. -See the section "Scanner Objects," -below, for a complete explanation of the arguments and behavior. +See manpage section "Scanner Objects" +for a complete explanation of the arguments and behavior.  </para>  </summary>  </scons_function> @@ -2968,105 +2976,6 @@ env.SourceCode('no_source.c', None)  </summary>  </scons_function> -<scons_function name="SourceSignatures"> -<arguments> -(type) -</arguments> -<summary> -<para> -Note:  Although it is not yet officially deprecated, -use of this function is discouraged. -See the -&f-link-Decider; -function for a more flexible and straightforward way -to configure SCons' decision-making. -</para> - -<para> -The -&f-SourceSignatures; -function tells -&scons; -how to decide if a source file -(a file that is not built from any other files) -has changed since the last time it -was used to build a particular target file. -Legal values are -<literal>MD5</literal> -or -<literal>timestamp</literal>. -</para> - -<para> -If the environment method is used, -the specified type of source signature -is only used when deciding whether targets -built with that environment are up-to-date or must be rebuilt. -If the global function is used, -the specified type of source signature becomes the default -used for all decisions -about whether targets are up-to-date. -</para> - -<para> -<literal>MD5</literal> -means -&scons; -decides that a source file has changed -if the MD5 checksum of its contents has changed since -the last time it was used to rebuild a particular target file. -</para> - -<para> -<literal>timestamp</literal> -means -&scons; -decides that a source file has changed -if its timestamp (modification time) has changed since -the last time it was used to rebuild a particular target file. -(Note that although this is similar to the behavior of Make, -by default it will also rebuild if the dependency is -<emphasis>older</emphasis> -than the last time it was used to rebuild the target file.) -</para> - -<para> -There is no different between the two behaviors -for Python -&f-Value; -node objects. -</para> - -<para> -<literal>MD5</literal> -signatures take longer to compute, -but are more accurate than -<literal>timestamp</literal> -signatures. -The default value is -<literal>MD5</literal>. -</para> - -<para> -Note that the default -&f-link-TargetSignatures; -setting (see below) -is to use this -&f-SourceSignatures; -setting for any target files that are used -to build other target files. -Consequently, changing the value of -&f-SourceSignatures; -will, by default, -affect the up-to-date decision for all files in the build -(or all files built with a specific construction environment -when -&f-env-SourceSignatures; -is used). -</para> -</summary> -</scons_function> -  <scons_function name="Split">  <arguments>  (arg) @@ -3197,7 +3106,7 @@ Example:  </para>  <example_commands> -print env.subst("The C compiler is: $CC") +print(env.subst("The C compiler is: $CC"))  def compile(target, source, env):      sourceDir = env.subst("${SOURCE.srcdir}", @@ -3210,159 +3119,6 @@ source_nodes = env.subst('$EXPAND_TO_NODELIST',  </summary>  </scons_function> -<scons_function name="TargetSignatures"> -<arguments> -(type) -</arguments> -<summary> -<para> -Note:  Although it is not yet officially deprecated, -use of this function is discouraged. -See the -&f-link-Decider; -function for a more flexible and straightforward way -to configure SCons' decision-making. -</para> - -<para> -The -&f-TargetSignatures; -function tells -&scons; -how to decide if a target file -(a file that -<emphasis>is</emphasis> -built from any other files) -has changed since the last time it -was used to build some other target file. -Legal values are -<literal>"build"</literal>; -<literal>"content"</literal> -(or its synonym -<literal>"MD5"</literal>); -<literal>"timestamp"</literal>; -or -<literal>"source"</literal>. -</para> - -<para> -If the environment method is used, -the specified type of target signature is only used -for targets built with that environment. -If the global function is used, -the specified type of signature becomes the default -used for all target files that -don't have an explicit target signature type -specified for their environments. -</para> - -<para> -<literal>"content"</literal> -(or its synonym -<literal>"MD5"</literal>) -means -&scons; -decides that a target file has changed -if the MD5 checksum of its contents has changed since -the last time it was used to rebuild some other target file. -This means -&scons; -will open up -MD5 sum the contents -of target files after they're built, -and may decide that it does not need to rebuild -"downstream" target files if a file was -rebuilt with exactly the same contents as the last time. -</para> - -<para> -<literal>"timestamp"</literal> -means -&scons; -decides that a target file has changed -if its timestamp (modification time) has changed since -the last time it was used to rebuild some other target file. -(Note that although this is similar to the behavior of Make, -by default it will also rebuild if the dependency is -<emphasis>older</emphasis> -than the last time it was used to rebuild the target file.) -</para> - -<para> -<literal>"source"</literal> -means -&scons; -decides that a target file has changed -as specified by the corresponding -&f-SourceSignatures; -setting -(<literal>"MD5"</literal> -or -<literal>"timestamp"</literal>). -This means that -&scons; -will treat all input files to a target the same way, -regardless of whether they are source files -or have been built from other files. -</para> - -<para> -<literal>"build"</literal> -means -&scons; -decides that a target file has changed -if it has been rebuilt in this invocation -or if its content or timestamp have changed -as specified by the corresponding -&f-SourceSignatures; -setting. -This "propagates" the status of a rebuilt file -so that other "downstream" target files -will always be rebuilt, -even if the contents or the timestamp -have not changed. -</para> - -<para> -<literal>"build"</literal> -signatures are fastest because -<literal>"content"</literal> -(or -<literal>"MD5"</literal>) -signatures take longer to compute, -but are more accurate than -<literal>"timestamp"</literal> -signatures, -and can prevent unnecessary "downstream" rebuilds -when a target file is rebuilt to the exact same contents -as the previous build. -The -<literal>"source"</literal> -setting provides the most consistent behavior -when other target files may be rebuilt from -both source and target input files. -The default value is -<literal>"source"</literal>. -</para> - -<para> -Because the default setting is -<literal>"source"</literal>, -using -&f-SourceSignatures; -is generally preferable to -&f-TargetSignatures;, -so that the up-to-date decision -will be consistent for all files -(or all files built with a specific construction environment). -Use of -&f-TargetSignatures; -provides specific control for how built target files -affect their "downstream" dependencies. -</para> -</summary> -</scons_function> -  <scons_function name="Tool">  <arguments>  (string, [toolpath, **kw]) @@ -3647,30 +3403,51 @@ SConscript(dirs='doc', variant_dir='build/doc', duplicate=0)  Searches for the specified executable  <varname>program</varname>,  returning the full path name to the program -if it is found, -and returning None if not. -Searches the specified -<varname>path</varname>, -the value of the calling environment's PATH -(<literal>env['ENV']['PATH']</literal>), -or the user's current external PATH -(<literal>os.environ['PATH']</literal>) -by default. +if it is found, else <literal>None</literal>. +Searches the value of the +<varname>path</varname> keyword argument, +or if <literal>None</literal> (the default) +the value of the calling environment's <envar>PATH</envar> +(<literal>env['ENV']['PATH']</literal>). +If <varname>path</varname> is <literal>None</literal> and +the <literal>env['ENV']['PATH']</literal> key does not exist, +the user's current external <envar>PATH</envar> +(<literal>os.environ['PATH']</literal>) is used as fallback. +</para> +<para>  On Windows systems, searches for executable -programs with any of the file extensions -listed in the specified -<varname>pathext</varname>, -the calling environment's PATHEXT -(<literal>env['ENV']['PATHEXT']</literal>) -or the user's current PATHEXT +programs with any of the file extensions listed in the +<varname>pathext</varname> keyword argument, +or if <literal>None</literal> (the default) +the calling environment's <envar>PATHEXT</envar> +(<literal>env['ENV']['PATHEXT']</literal>). +The user's current external <envar>PATHEXT</envar>  (<literal>os.environ['PATHEXT']</literal>) -by default. +is used as a fallback if <varname>pathext</varname> is +<literal>None</literal> +and the key <literal>env['ENV']['PATHEXT']</literal> +does not exist. +</para> +<para>  Will not select any  path name or names  in the specified  <varname>reject</varname>  list, if any.  </para> +<note> +<para> +If you would prefer to search +the user's current external <envar>PATH</envar> +(<literal>os.environ['PATH']</literal>) +by default, +consider using the function <literal>SCons.Util.WhereIs</literal> instead. +Note that <literal>SCons.Util.WhereIs</literal> +does not expand environment variables automatically +(no implicit <literal>env.subst</literal> for its arguments). +</para> +</note> +  </summary>  </scons_function> diff --git a/src/engine/SCons/EnvironmentTests.py b/src/engine/SCons/EnvironmentTests.py index 1ce1007..139bef7 100644 --- a/src/engine/SCons/EnvironmentTests.py +++ b/src/engine/SCons/EnvironmentTests.py @@ -23,7 +23,7 @@  from __future__ import print_function -__revision__ = "src/engine/SCons/EnvironmentTests.py e724ae812eb96f4858a132f5b8c769724744faf6 2019-07-21 00:04:47 bdeegan" +__revision__ = "src/engine/SCons/EnvironmentTests.py bee7caf9defd6e108fc2998a2520ddb36a967691 2019-12-17 02:07:09 bdeegan"  import SCons.compat @@ -797,12 +797,14 @@ sys.exit(0)              "-F fwd3 " + \              "-dylib_file foo-dylib " + \              "-pthread " + \ +            "-fmerge-all-constants " +\              "-fopenmp " + \              "-mno-cygwin -mwindows " + \              "-arch i386 -isysroot /tmp " + \              "-iquote /usr/include/foo1 " + \              "-isystem /usr/include/foo2 " + \              "-idirafter /usr/include/foo3 " + \ +            "-imacros /usr/include/foo4 " + \              "+DD64 " + \              "-DFOO -DBAR=value -D BAZ " @@ -811,11 +813,13 @@ sys.exit(0)          assert d['ASFLAGS'] == ['-as'], d['ASFLAGS']          assert d['CFLAGS']  == ['-std=c99']          assert d['CCFLAGS'] == ['-X', '-Wa,-as', -                                '-pthread', '-fopenmp', '-mno-cygwin', +                                '-pthread', '-fmerge-all-constants', +                                '-fopenmp', '-mno-cygwin',                                  ('-arch', 'i386'), ('-isysroot', '/tmp'),                                  ('-iquote', '/usr/include/foo1'),                                  ('-isystem', '/usr/include/foo2'),                                  ('-idirafter', '/usr/include/foo3'), +                                ('-imacros', env.fs.File('/usr/include/foo4')),                                  '+DD64'], repr(d['CCFLAGS'])          assert d['CXXFLAGS'] == ['-std=c++0x'], repr(d['CXXFLAGS'])          assert d['CPPDEFINES'] == ['FOO', ['BAR', 'value'], 'BAZ'], d['CPPDEFINES'] @@ -832,7 +836,7 @@ sys.exit(0)          assert LIBS == ['xxx', 'yyy', 'ascend'], (d['LIBS'], LIBS)          assert d['LINKFLAGS'] == ['-Wl,-link',                                    '-dylib_file', 'foo-dylib', -                                  '-pthread', '-fopenmp', +                                  '-pthread', '-fmerge-all-constants', '-fopenmp',                                    '-mno-cygwin', '-mwindows',                                    ('-arch', 'i386'),                                    ('-isysroot', '/tmp'), @@ -1872,18 +1876,6 @@ def generate(env):          assert ('BUILDERS' in env) is False          env2 = env.Clone() -    def test_Copy(self): -        """Test copying using the old env.Copy() method""" -        env1 = self.TestEnvironment(XXX = 'x', YYY = 'y') -        env2 = env1.Copy() -        env1copy = env1.Copy() -        assert env1copy == env1copy -        assert env2 == env2 -        env2.Replace(YYY = 'yyy') -        assert env2 == env2 -        assert env1 != env2 -        assert env1 == env1copy -      def test_Detect(self):          """Test Detect()ing tools"""          test = TestCmd.TestCmd(workdir = '') @@ -2024,6 +2016,7 @@ def generate(env):                                   "-Ffwd2 " + \                                   "-F fwd3 " + \                                   "-pthread " + \ +                                 "-fmerge-all-constants " + \                                   "-mno-cygwin -mwindows " + \                                   "-arch i386 -isysroot /tmp " + \                                   "-iquote /usr/include/foo1 " + \ @@ -2035,7 +2028,7 @@ def generate(env):              assert save_command == ['fake command'], save_command              assert env['ASFLAGS'] == ['assembler', '-as'], env['ASFLAGS']              assert env['CCFLAGS'] == ['', '-X', '-Wa,-as', -                                      '-pthread', '-mno-cygwin', +                                      '-pthread', '-fmerge-all-constants', '-mno-cygwin',                                        ('-arch', 'i386'), ('-isysroot', '/tmp'),                                        ('-iquote', '/usr/include/foo1'),                                        ('-isystem', '/usr/include/foo2'), @@ -2049,6 +2042,7 @@ def generate(env):              assert env['LIBPATH'] == ['list', '/usr/fax', 'foo'], env['LIBPATH']              assert env['LIBS'] == ['xxx', 'yyy', env.File('abc')], env['LIBS']              assert env['LINKFLAGS'] == ['', '-Wl,-link', '-pthread', +                                        '-fmerge-all-constants',                                          '-mno-cygwin', '-mwindows',                                          ('-arch', 'i386'),                                          ('-isysroot', '/tmp'), @@ -3280,44 +3274,6 @@ def generate(env):          s = e.src_builder()          assert s is None, s -    def test_SourceSignatures(self): -        """Test the SourceSignatures() method""" -        import SCons.Errors - -        env = self.TestEnvironment(M = 'MD5', T = 'timestamp') - -        exc_caught = None -        try: -            env.SourceSignatures('invalid_type') -        except SCons.Errors.UserError: -            exc_caught = 1 -        assert exc_caught, "did not catch expected UserError" - -        env.SourceSignatures('MD5') -        assert env.src_sig_type == 'MD5', env.src_sig_type - -        env.SourceSignatures('$M') -        assert env.src_sig_type == 'MD5', env.src_sig_type - -        env.SourceSignatures('timestamp') -        assert env.src_sig_type == 'timestamp', env.src_sig_type - -        env.SourceSignatures('$T') -        assert env.src_sig_type == 'timestamp', env.src_sig_type - -        try: -            import SCons.Util -            save_md5 = SCons.Util.md5 -            SCons.Util.md5 = None -            try: -                env.SourceSignatures('MD5') -            except SCons.Errors.UserError: -                pass -            else: -                self.fail('Did not catch expected UserError') -        finally: -            SCons.Util.md5 = save_md5 -      def test_Split(self):          """Test the Split() method"""          env = self.TestEnvironment(FOO = 'fff', BAR = 'bbb') @@ -3334,56 +3290,6 @@ def generate(env):          s = env.Split("$FOO$BAR")          assert s == ["fffbbb"], s -    def test_TargetSignatures(self): -        """Test the TargetSignatures() method""" -        import SCons.Errors - -        env = self.TestEnvironment(B='build', C='content') - -        exc_caught = None -        try: -            env.TargetSignatures('invalid_type') -        except SCons.Errors.UserError: -            exc_caught = 1 -        assert exc_caught, "did not catch expected UserError" -        assert not hasattr(env, '_build_signature') - -        env.TargetSignatures('build') -        assert env.tgt_sig_type == 'build', env.tgt_sig_type - -        env.TargetSignatures('$B') -        assert env.tgt_sig_type == 'build', env.tgt_sig_type - -        env.TargetSignatures('content') -        assert env.tgt_sig_type == 'content', env.tgt_sig_type - -        env.TargetSignatures('$C') -        assert env.tgt_sig_type == 'content', env.tgt_sig_type - -        env.TargetSignatures('MD5') -        assert env.tgt_sig_type == 'MD5', env.tgt_sig_type - -        env.TargetSignatures('timestamp') -        assert env.tgt_sig_type == 'timestamp', env.tgt_sig_type - -        try: -            import SCons.Util -            save_md5 = SCons.Util.md5 -            SCons.Util.md5 = None -            try: -                env.TargetSignatures('MD5') -            except SCons.Errors.UserError: -                pass -            else: -                self.fail('Did not catch expected UserError') -            try: -                env.TargetSignatures('content') -            except SCons.Errors.UserError: -                pass -            else: -                self.fail('Did not catch expected UserError') -        finally: -            SCons.Util.md5 = save_md5      def test_Value(self):          """Test creating a Value() object @@ -3404,7 +3310,6 @@ def generate(env):          assert v3.value == 'c', v3.value -      def test_Environment_global_variable(self):          """Test setting Environment variable to an Environment.Base subclass"""          class MyEnv(SCons.Environment.Base): @@ -3746,8 +3651,6 @@ class OverrideEnvironmentTestCase(unittest.TestCase,TestEnvironmentFixture):      # Environment()      # FindFile()      # Scanner() -    # SourceSignatures() -    # TargetSignatures()      # It's unlikely Clone() will ever be called this way, so let the      # other methods test that handling overridden values works. diff --git a/src/engine/SCons/Errors.py b/src/engine/SCons/Errors.py index 28f58be..0bad46d 100644 --- a/src/engine/SCons/Errors.py +++ b/src/engine/SCons/Errors.py @@ -28,7 +28,7 @@ and user errors in SCons.  """ -__revision__ = "src/engine/SCons/Errors.py e724ae812eb96f4858a132f5b8c769724744faf6 2019-07-21 00:04:47 bdeegan" +__revision__ = "src/engine/SCons/Errors.py bee7caf9defd6e108fc2998a2520ddb36a967691 2019-12-17 02:07:09 bdeegan"  import shutil  import SCons.Util diff --git a/src/engine/SCons/ErrorsTests.py b/src/engine/SCons/ErrorsTests.py index a1bc048..a0a9cb5 100644 --- a/src/engine/SCons/ErrorsTests.py +++ b/src/engine/SCons/ErrorsTests.py @@ -21,7 +21,7 @@  # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.  # -__revision__ = "src/engine/SCons/ErrorsTests.py e724ae812eb96f4858a132f5b8c769724744faf6 2019-07-21 00:04:47 bdeegan" +__revision__ = "src/engine/SCons/ErrorsTests.py bee7caf9defd6e108fc2998a2520ddb36a967691 2019-12-17 02:07:09 bdeegan"  import errno  import os diff --git a/src/engine/SCons/Executor.py b/src/engine/SCons/Executor.py index c6ffe81..5c95e95 100644 --- a/src/engine/SCons/Executor.py +++ b/src/engine/SCons/Executor.py @@ -28,7 +28,7 @@ Nodes.  # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.  from __future__ import print_function -__revision__ = "src/engine/SCons/Executor.py e724ae812eb96f4858a132f5b8c769724744faf6 2019-07-21 00:04:47 bdeegan" +__revision__ = "src/engine/SCons/Executor.py bee7caf9defd6e108fc2998a2520ddb36a967691 2019-12-17 02:07:09 bdeegan"  import collections diff --git a/src/engine/SCons/ExecutorTests.py b/src/engine/SCons/ExecutorTests.py index 353e6f2..88417a8 100644 --- a/src/engine/SCons/ExecutorTests.py +++ b/src/engine/SCons/ExecutorTests.py @@ -21,7 +21,7 @@  # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.  # -__revision__ = "src/engine/SCons/ExecutorTests.py e724ae812eb96f4858a132f5b8c769724744faf6 2019-07-21 00:04:47 bdeegan" +__revision__ = "src/engine/SCons/ExecutorTests.py bee7caf9defd6e108fc2998a2520ddb36a967691 2019-12-17 02:07:09 bdeegan"  import sys  import unittest diff --git a/src/engine/SCons/Job.py b/src/engine/SCons/Job.py index 12ba19f..214a0c9 100644 --- a/src/engine/SCons/Job.py +++ b/src/engine/SCons/Job.py @@ -29,7 +29,7 @@ stop, and wait on jobs.  # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.  # -__revision__ = "src/engine/SCons/Job.py e724ae812eb96f4858a132f5b8c769724744faf6 2019-07-21 00:04:47 bdeegan" +__revision__ = "src/engine/SCons/Job.py bee7caf9defd6e108fc2998a2520ddb36a967691 2019-12-17 02:07:09 bdeegan"  import SCons.compat diff --git a/src/engine/SCons/JobTests.py b/src/engine/SCons/JobTests.py index d46ab30..32e9355 100644 --- a/src/engine/SCons/JobTests.py +++ b/src/engine/SCons/JobTests.py @@ -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/JobTests.py e724ae812eb96f4858a132f5b8c769724744faf6 2019-07-21 00:04:47 bdeegan" +__revision__ = "src/engine/SCons/JobTests.py bee7caf9defd6e108fc2998a2520ddb36a967691 2019-12-17 02:07:09 bdeegan"  import unittest  import random diff --git a/src/engine/SCons/Memoize.py b/src/engine/SCons/Memoize.py index f7b45bf..8f33a1b 100644 --- a/src/engine/SCons/Memoize.py +++ b/src/engine/SCons/Memoize.py @@ -22,7 +22,7 @@  #  from __future__ import print_function -__revision__ = "src/engine/SCons/Memoize.py e724ae812eb96f4858a132f5b8c769724744faf6 2019-07-21 00:04:47 bdeegan" +__revision__ = "src/engine/SCons/Memoize.py bee7caf9defd6e108fc2998a2520ddb36a967691 2019-12-17 02:07:09 bdeegan"  __doc__ = """Memoizer diff --git a/src/engine/SCons/MemoizeTests.py b/src/engine/SCons/MemoizeTests.py index f3b5329..e83aa95 100644 --- a/src/engine/SCons/MemoizeTests.py +++ b/src/engine/SCons/MemoizeTests.py @@ -21,7 +21,7 @@  # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.  # -__revision__ = "src/engine/SCons/MemoizeTests.py e724ae812eb96f4858a132f5b8c769724744faf6 2019-07-21 00:04:47 bdeegan" +__revision__ = "src/engine/SCons/MemoizeTests.py bee7caf9defd6e108fc2998a2520ddb36a967691 2019-12-17 02:07:09 bdeegan"  import sys  import unittest diff --git a/src/engine/SCons/Node/Alias.py b/src/engine/SCons/Node/Alias.py index a9defb6..5c62677 100644 --- a/src/engine/SCons/Node/Alias.py +++ b/src/engine/SCons/Node/Alias.py @@ -30,7 +30,7 @@ This creates a hash of global Aliases (dummy targets).  # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.  # -__revision__ = "src/engine/SCons/Node/Alias.py e724ae812eb96f4858a132f5b8c769724744faf6 2019-07-21 00:04:47 bdeegan" +__revision__ = "src/engine/SCons/Node/Alias.py bee7caf9defd6e108fc2998a2520ddb36a967691 2019-12-17 02:07:09 bdeegan"  import collections diff --git a/src/engine/SCons/Node/AliasTests.py b/src/engine/SCons/Node/AliasTests.py index 764ac67..40f3ff3 100644 --- a/src/engine/SCons/Node/AliasTests.py +++ b/src/engine/SCons/Node/AliasTests.py @@ -21,7 +21,7 @@  # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.  # -__revision__ = "src/engine/SCons/Node/AliasTests.py e724ae812eb96f4858a132f5b8c769724744faf6 2019-07-21 00:04:47 bdeegan" +__revision__ = "src/engine/SCons/Node/AliasTests.py bee7caf9defd6e108fc2998a2520ddb36a967691 2019-12-17 02:07:09 bdeegan"  import sys  import unittest diff --git a/src/engine/SCons/Node/FS.py b/src/engine/SCons/Node/FS.py index 21ccecc..65d1ac1 100644 --- a/src/engine/SCons/Node/FS.py +++ b/src/engine/SCons/Node/FS.py @@ -33,7 +33,7 @@ that can be used by scripts or modules looking for the canonical default.  # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.  from __future__ import print_function -__revision__ = "src/engine/SCons/Node/FS.py e724ae812eb96f4858a132f5b8c769724744faf6 2019-07-21 00:04:47 bdeegan" +__revision__ = "src/engine/SCons/Node/FS.py bee7caf9defd6e108fc2998a2520ddb36a967691 2019-12-17 02:07:09 bdeegan"  import fnmatch  import os @@ -963,14 +963,14 @@ class Entry(Base):      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. @@ -3436,6 +3436,8 @@ class File(Base):              Boolean - Indicates if node(File) has changed.          """ +        if node is None: +            node = self          # Now get sconsign name -> csig map and then get proper prev_ni if possible          bi = node.get_stored_info().binfo          rebuilt = False diff --git a/src/engine/SCons/Node/FSTests.py b/src/engine/SCons/Node/FSTests.py index 2366a4d..3b4d78b 100644 --- a/src/engine/SCons/Node/FSTests.py +++ b/src/engine/SCons/Node/FSTests.py @@ -22,7 +22,7 @@  #  from __future__ import division, print_function -__revision__ = "src/engine/SCons/Node/FSTests.py e724ae812eb96f4858a132f5b8c769724744faf6 2019-07-21 00:04:47 bdeegan" +__revision__ = "src/engine/SCons/Node/FSTests.py bee7caf9defd6e108fc2998a2520ddb36a967691 2019-12-17 02:07:09 bdeegan"  import SCons.compat @@ -2545,11 +2545,10 @@ class FileTestCase(_tempdirTestCase):              def get_ninfo(self):                  """ mocked to ensure csig will equal the filename""" -                try: -                    return self.ninfo -                except AttributeError: -                    self.ninfo = FakeNodeInfo(self.name, self.timestamp) +                if self.ninfo is not None:                      return self.ninfo +                self.ninfo = FakeNodeInfo(self.name, self.timestamp) +                return self.ninfo              def get_csig(self):                  ninfo = self.get_ninfo() diff --git a/src/engine/SCons/Node/NodeTests.py b/src/engine/SCons/Node/NodeTests.py index ce44b7d..3e186de 100644 --- a/src/engine/SCons/Node/NodeTests.py +++ b/src/engine/SCons/Node/NodeTests.py @@ -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/Node/NodeTests.py e724ae812eb96f4858a132f5b8c769724744faf6 2019-07-21 00:04:47 bdeegan" +__revision__ = "src/engine/SCons/Node/NodeTests.py bee7caf9defd6e108fc2998a2520ddb36a967691 2019-12-17 02:07:09 bdeegan"  import SCons.compat diff --git a/src/engine/SCons/Node/Python.py b/src/engine/SCons/Node/Python.py index d338051..ec23b3f 100644 --- a/src/engine/SCons/Node/Python.py +++ b/src/engine/SCons/Node/Python.py @@ -27,7 +27,7 @@ Python nodes.  # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.  # -__revision__ = "src/engine/SCons/Node/Python.py e724ae812eb96f4858a132f5b8c769724744faf6 2019-07-21 00:04:47 bdeegan" +__revision__ = "src/engine/SCons/Node/Python.py bee7caf9defd6e108fc2998a2520ddb36a967691 2019-12-17 02:07:09 bdeegan"  import SCons.Node diff --git a/src/engine/SCons/Node/PythonTests.py b/src/engine/SCons/Node/PythonTests.py index 98137c7..94501d2 100644 --- a/src/engine/SCons/Node/PythonTests.py +++ b/src/engine/SCons/Node/PythonTests.py @@ -21,7 +21,7 @@  # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.  # -__revision__ = "src/engine/SCons/Node/PythonTests.py e724ae812eb96f4858a132f5b8c769724744faf6 2019-07-21 00:04:47 bdeegan" +__revision__ = "src/engine/SCons/Node/PythonTests.py bee7caf9defd6e108fc2998a2520ddb36a967691 2019-12-17 02:07:09 bdeegan"  import sys  import unittest diff --git a/src/engine/SCons/Node/__init__.py b/src/engine/SCons/Node/__init__.py index 5455bd6..32f4bba 100644 --- a/src/engine/SCons/Node/__init__.py +++ b/src/engine/SCons/Node/__init__.py @@ -43,7 +43,7 @@ from __future__ import print_function  # 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 e724ae812eb96f4858a132f5b8c769724744faf6 2019-07-21 00:04:47 bdeegan" +__revision__ = "src/engine/SCons/Node/__init__.py bee7caf9defd6e108fc2998a2520ddb36a967691 2019-12-17 02:07:09 bdeegan"  import os  import collections @@ -614,6 +614,7 @@ class Node(object, with_metaclass(NoSlotsPyPy)):          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 @@ class Node(object, with_metaclass(NoSlotsPyPy)):          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() @@ -1661,10 +1661,7 @@ class Node(object, with_metaclass(NoSlotsPyPy)):              if k not in old_bkids:                  lines.append("`%s' is a new dependency\n" % stringify(k))              else: -                try: -                    changed = _decider_map[k.changed_since_last_build](k, self, osig[k]) -                except DeciderNeedsNode as e: -                    changed = e.decider(self, osig[k], node=self) +                changed = _decider_map[k.changed_since_last_build](k, self, osig[k])                  if changed:                      lines.append("`%s' changed\n" % stringify(k)) diff --git a/src/engine/SCons/PathList.py b/src/engine/SCons/PathList.py index d6a01e7..ad02936 100644 --- a/src/engine/SCons/PathList.py +++ b/src/engine/SCons/PathList.py @@ -21,7 +21,7 @@  # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.  # -__revision__ = "src/engine/SCons/PathList.py e724ae812eb96f4858a132f5b8c769724744faf6 2019-07-21 00:04:47 bdeegan" +__revision__ = "src/engine/SCons/PathList.py bee7caf9defd6e108fc2998a2520ddb36a967691 2019-12-17 02:07:09 bdeegan"  __doc__ = """SCons.PathList diff --git a/src/engine/SCons/PathListTests.py b/src/engine/SCons/PathListTests.py index 0a18fbe..0cf1457 100644 --- a/src/engine/SCons/PathListTests.py +++ b/src/engine/SCons/PathListTests.py @@ -21,7 +21,7 @@  # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.  # -__revision__ = "src/engine/SCons/PathListTests.py e724ae812eb96f4858a132f5b8c769724744faf6 2019-07-21 00:04:47 bdeegan" +__revision__ = "src/engine/SCons/PathListTests.py bee7caf9defd6e108fc2998a2520ddb36a967691 2019-12-17 02:07:09 bdeegan"  import sys  import unittest diff --git a/src/engine/SCons/Platform/PlatformTests.py b/src/engine/SCons/Platform/PlatformTests.py index 7941625..1d1d6a7 100644 --- a/src/engine/SCons/Platform/PlatformTests.py +++ b/src/engine/SCons/Platform/PlatformTests.py @@ -21,7 +21,7 @@  # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.  # -__revision__ = "src/engine/SCons/Platform/PlatformTests.py e724ae812eb96f4858a132f5b8c769724744faf6 2019-07-21 00:04:47 bdeegan" +__revision__ = "src/engine/SCons/Platform/PlatformTests.py bee7caf9defd6e108fc2998a2520ddb36a967691 2019-12-17 02:07:09 bdeegan"  import SCons.compat diff --git a/src/engine/SCons/Platform/__init__.py b/src/engine/SCons/Platform/__init__.py index 8da1e9d..2e3d6cd 100644 --- a/src/engine/SCons/Platform/__init__.py +++ b/src/engine/SCons/Platform/__init__.py @@ -43,7 +43,7 @@ their own platform definition.  #  from __future__ import print_function -__revision__ = "src/engine/SCons/Platform/__init__.py e724ae812eb96f4858a132f5b8c769724744faf6 2019-07-21 00:04:47 bdeegan" +__revision__ = "src/engine/SCons/Platform/__init__.py bee7caf9defd6e108fc2998a2520ddb36a967691 2019-12-17 02:07:09 bdeegan"  import SCons.compat diff --git a/src/engine/SCons/Platform/__init__.xml b/src/engine/SCons/Platform/__init__.xml index d4c2a21..43a4497 100644 --- a/src/engine/SCons/Platform/__init__.xml +++ b/src/engine/SCons/Platform/__init__.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="UTF-8"?> +<?xml version="1.0"?>  <!--  Copyright (c) 2001 - 2019 The SCons Foundation diff --git a/src/engine/SCons/Platform/aix.py b/src/engine/SCons/Platform/aix.py index 70fbb35..c5964b6 100644 --- a/src/engine/SCons/Platform/aix.py +++ b/src/engine/SCons/Platform/aix.py @@ -30,7 +30,7 @@ selection method.  # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.  # -__revision__ = "src/engine/SCons/Platform/aix.py e724ae812eb96f4858a132f5b8c769724744faf6 2019-07-21 00:04:47 bdeegan" +__revision__ = "src/engine/SCons/Platform/aix.py bee7caf9defd6e108fc2998a2520ddb36a967691 2019-12-17 02:07:09 bdeegan"  import os  import subprocess diff --git a/src/engine/SCons/Platform/cygwin.py b/src/engine/SCons/Platform/cygwin.py index 70b6443..fe71ea9 100644 --- a/src/engine/SCons/Platform/cygwin.py +++ b/src/engine/SCons/Platform/cygwin.py @@ -30,7 +30,7 @@ selection method.  # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.  # -__revision__ = "src/engine/SCons/Platform/cygwin.py e724ae812eb96f4858a132f5b8c769724744faf6 2019-07-21 00:04:47 bdeegan" +__revision__ = "src/engine/SCons/Platform/cygwin.py bee7caf9defd6e108fc2998a2520ddb36a967691 2019-12-17 02:07:09 bdeegan"  import sys diff --git a/src/engine/SCons/Platform/darwin.py b/src/engine/SCons/Platform/darwin.py index d5861d9..ff0d50d 100644 --- a/src/engine/SCons/Platform/darwin.py +++ b/src/engine/SCons/Platform/darwin.py @@ -30,7 +30,7 @@ selection method.  # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.  # -__revision__ = "src/engine/SCons/Platform/darwin.py e724ae812eb96f4858a132f5b8c769724744faf6 2019-07-21 00:04:47 bdeegan" +__revision__ = "src/engine/SCons/Platform/darwin.py bee7caf9defd6e108fc2998a2520ddb36a967691 2019-12-17 02:07:09 bdeegan"  from . import posix  import os diff --git a/src/engine/SCons/Platform/hpux.py b/src/engine/SCons/Platform/hpux.py index 6867212..3158438 100644 --- a/src/engine/SCons/Platform/hpux.py +++ b/src/engine/SCons/Platform/hpux.py @@ -30,7 +30,7 @@ selection method.  # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.  # -__revision__ = "src/engine/SCons/Platform/hpux.py e724ae812eb96f4858a132f5b8c769724744faf6 2019-07-21 00:04:47 bdeegan" +__revision__ = "src/engine/SCons/Platform/hpux.py bee7caf9defd6e108fc2998a2520ddb36a967691 2019-12-17 02:07:09 bdeegan"  from . import posix diff --git a/src/engine/SCons/Platform/irix.py b/src/engine/SCons/Platform/irix.py index a382e71..8643b14 100644 --- a/src/engine/SCons/Platform/irix.py +++ b/src/engine/SCons/Platform/irix.py @@ -30,7 +30,7 @@ selection method.  # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.  # -__revision__ = "src/engine/SCons/Platform/irix.py e724ae812eb96f4858a132f5b8c769724744faf6 2019-07-21 00:04:47 bdeegan" +__revision__ = "src/engine/SCons/Platform/irix.py bee7caf9defd6e108fc2998a2520ddb36a967691 2019-12-17 02:07:09 bdeegan"  from . import posix diff --git a/src/engine/SCons/Platform/mingw.py b/src/engine/SCons/Platform/mingw.py index c03c9c8..1961606 100644 --- a/src/engine/SCons/Platform/mingw.py +++ b/src/engine/SCons/Platform/mingw.py @@ -27,7 +27,7 @@ Platform-specific initialization for the MinGW system.  # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.  # -__revision__ = "src/engine/SCons/Platform/mingw.py e724ae812eb96f4858a132f5b8c769724744faf6 2019-07-21 00:04:47 bdeegan" +__revision__ = "src/engine/SCons/Platform/mingw.py bee7caf9defd6e108fc2998a2520ddb36a967691 2019-12-17 02:07:09 bdeegan"  import sys diff --git a/src/engine/SCons/Platform/os2.py b/src/engine/SCons/Platform/os2.py index ebabe3d..eb2c679 100644 --- a/src/engine/SCons/Platform/os2.py +++ b/src/engine/SCons/Platform/os2.py @@ -30,7 +30,7 @@ selection method.  # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.  # -__revision__ = "src/engine/SCons/Platform/os2.py e724ae812eb96f4858a132f5b8c769724744faf6 2019-07-21 00:04:47 bdeegan" +__revision__ = "src/engine/SCons/Platform/os2.py bee7caf9defd6e108fc2998a2520ddb36a967691 2019-12-17 02:07:09 bdeegan"  from . import win32  def generate(env): diff --git a/src/engine/SCons/Platform/posix.py b/src/engine/SCons/Platform/posix.py index 780c764..c9f9a2d 100644 --- a/src/engine/SCons/Platform/posix.py +++ b/src/engine/SCons/Platform/posix.py @@ -30,7 +30,7 @@ selection method.  # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.  # -__revision__ = "src/engine/SCons/Platform/posix.py e724ae812eb96f4858a132f5b8c769724744faf6 2019-07-21 00:04:47 bdeegan" +__revision__ = "src/engine/SCons/Platform/posix.py bee7caf9defd6e108fc2998a2520ddb36a967691 2019-12-17 02:07:09 bdeegan"  import errno  import os diff --git a/src/engine/SCons/Platform/posix.xml b/src/engine/SCons/Platform/posix.xml index a710230..44cca43 100644 --- a/src/engine/SCons/Platform/posix.xml +++ b/src/engine/SCons/Platform/posix.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="UTF-8"?> +<?xml version="1.0"?>  <!--  Copyright (c) 2001 - 2019 The SCons Foundation diff --git a/src/engine/SCons/Platform/sunos.py b/src/engine/SCons/Platform/sunos.py index 6aa54aa..90418d5 100644 --- a/src/engine/SCons/Platform/sunos.py +++ b/src/engine/SCons/Platform/sunos.py @@ -30,7 +30,7 @@ selection method.  # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.  # -__revision__ = "src/engine/SCons/Platform/sunos.py e724ae812eb96f4858a132f5b8c769724744faf6 2019-07-21 00:04:47 bdeegan" +__revision__ = "src/engine/SCons/Platform/sunos.py bee7caf9defd6e108fc2998a2520ddb36a967691 2019-12-17 02:07:09 bdeegan"  from . import posix diff --git a/src/engine/SCons/Platform/sunos.xml b/src/engine/SCons/Platform/sunos.xml index abab196..4b6bda2 100644 --- a/src/engine/SCons/Platform/sunos.xml +++ b/src/engine/SCons/Platform/sunos.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="UTF-8"?> +<?xml version="1.0"?>  <!--  Copyright (c) 2001 - 2019 The SCons Foundation diff --git a/src/engine/SCons/Platform/virtualenv.py b/src/engine/SCons/Platform/virtualenv.py index 9fb3e45..3416b41 100644 --- a/src/engine/SCons/Platform/virtualenv.py +++ b/src/engine/SCons/Platform/virtualenv.py @@ -26,7 +26,7 @@ Support for virtualenv.  # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.  # -__revision__ = "src/engine/SCons/Platform/virtualenv.py e724ae812eb96f4858a132f5b8c769724744faf6 2019-07-21 00:04:47 bdeegan" +__revision__ = "src/engine/SCons/Platform/virtualenv.py bee7caf9defd6e108fc2998a2520ddb36a967691 2019-12-17 02:07:09 bdeegan"  import os  import sys diff --git a/src/engine/SCons/Platform/virtualenvTests.py b/src/engine/SCons/Platform/virtualenvTests.py index 891fdb3..4fec748 100644 --- a/src/engine/SCons/Platform/virtualenvTests.py +++ b/src/engine/SCons/Platform/virtualenvTests.py @@ -21,7 +21,7 @@  # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.  # -__revision__ = "src/engine/SCons/Platform/virtualenvTests.py e724ae812eb96f4858a132f5b8c769724744faf6 2019-07-21 00:04:47 bdeegan" +__revision__ = "src/engine/SCons/Platform/virtualenvTests.py bee7caf9defd6e108fc2998a2520ddb36a967691 2019-12-17 02:07:09 bdeegan"  import SCons.compat diff --git a/src/engine/SCons/Platform/win32.py b/src/engine/SCons/Platform/win32.py index ea567a2..b386afa 100644 --- a/src/engine/SCons/Platform/win32.py +++ b/src/engine/SCons/Platform/win32.py @@ -30,7 +30,7 @@ selection method.  # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.  # -__revision__ = "src/engine/SCons/Platform/win32.py e724ae812eb96f4858a132f5b8c769724744faf6 2019-07-21 00:04:47 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 @@ try:      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 @@ except AttributeError:  else:      parallel_msg = None -    _builtin_open = open +    if sys.version_info.major == 2: +        import __builtin__ + +        _builtin_file = __builtin__.file +        _builtin_open = __builtin__.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 -    def _scons_open(*args, **kw): -        fp = _builtin_open(*args, **kw) -        win32api.SetHandleInformation(msvcrt.get_osfhandle(fp.fileno()), -                                      win32con.HANDLE_FLAG_INHERIT, -                                      0) -        return fp +        class _scons_file(_builtin_file): +            def __init__(self, name, mode=None, *args, **kwargs): +                _builtin_file.__init__(self, name, _scons_fixup_mode(mode), +                                       *args, **kwargs) -    open = _scons_open +        def _scons_open(name, mode=None, *args, **kwargs): +            return _builtin_open(name, _scons_fixup_mode(mode), +                                 *args, **kwargs) -    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 +        __builtin__.file = _scons_file +        __builtin__.open = _scons_open diff --git a/src/engine/SCons/Platform/win32.xml b/src/engine/SCons/Platform/win32.xml index cc87470..c15b23b 100644 --- a/src/engine/SCons/Platform/win32.xml +++ b/src/engine/SCons/Platform/win32.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="UTF-8"?> +<?xml version="1.0"?>  <!--  Copyright (c) 2001 - 2019 The SCons Foundation diff --git a/src/engine/SCons/SConf.py b/src/engine/SCons/SConf.py index 7409c50..e714636 100644 --- a/src/engine/SCons/SConf.py +++ b/src/engine/SCons/SConf.py @@ -35,7 +35,7 @@ libraries are installed, if some command line options are supported etc.  #  from __future__ import print_function -__revision__ = "src/engine/SCons/SConf.py e724ae812eb96f4858a132f5b8c769724744faf6 2019-07-21 00:04:47 bdeegan" +__revision__ = "src/engine/SCons/SConf.py bee7caf9defd6e108fc2998a2520ddb36a967691 2019-12-17 02:07:09 bdeegan"  import SCons.compat diff --git a/src/engine/SCons/SConfTests.py b/src/engine/SCons/SConfTests.py index bfa4871..a05eec4 100644 --- a/src/engine/SCons/SConfTests.py +++ b/src/engine/SCons/SConfTests.py @@ -21,7 +21,7 @@  # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.  # -__revision__ = "src/engine/SCons/SConfTests.py e724ae812eb96f4858a132f5b8c769724744faf6 2019-07-21 00:04:47 bdeegan" +__revision__ = "src/engine/SCons/SConfTests.py bee7caf9defd6e108fc2998a2520ddb36a967691 2019-12-17 02:07:09 bdeegan"  import SCons.compat @@ -56,6 +56,18 @@ class SConfTestCase(unittest.TestCase):          os.chdir(self.save_cwd)      def _resetSConfState(self): +        if sys.platform in ['cygwin', 'win32'] and sys.version_info.major == 2: +            # On Windows with Python2, SCons.Platform.win32 redefines the +            # built-in file() and open() functions to disable handle +            # inheritance. Because we are unloading all SCons modules other +            # than SCons.Compat, SCons.Platform.win32 will lose the variables +            # it needs. As a result, we should reset the file() and open() +            # functions to their original built-in versions. +            import __builtin__ +            import SCons.Platform.win32 +            __builtin__.file = SCons.Platform.win32._builtin_file +            __builtin__.open = SCons.Platform.win32._builtin_open +          # Ok, this is tricky, and i do not know, if everything is sane.          # We try to reset scons' state (including all global variables)          import SCons.SConsign @@ -90,22 +102,6 @@ class SConfTestCase(unittest.TestCase):              global existing_lib              existing_lib = 'm' -        if sys.platform in ['cygwin', 'win32']: -             # On Windows, SCons.Platform.win32 redefines the builtin -             # file() and open() functions to close the file handles. -             # This interferes with the unittest.py infrastructure in -             # some way.  Just sidestep the issue by restoring the -             # original builtin functions whenever we have to reset -             # all of our global state. - -             import SCons.Platform.win32 - -             try: -                file = SCons.Platform.win32._builtin_file -                open = SCons.Platform.win32._builtin_open -             except AttributeError: -                 pass -      def _baseTryXXX(self, TryFunc):          # TryCompile and TryLink are much the same, so we can test them          # in one method, we pass the function as a string ('TryCompile', diff --git a/src/engine/SCons/SConsign.py b/src/engine/SCons/SConsign.py index e003933..24bfd21 100644 --- a/src/engine/SCons/SConsign.py +++ b/src/engine/SCons/SConsign.py @@ -29,7 +29,7 @@ Writing and reading information to the .sconsign file or files.  from __future__ import print_function -__revision__ = "src/engine/SCons/SConsign.py e724ae812eb96f4858a132f5b8c769724744faf6 2019-07-21 00:04:47 bdeegan" +__revision__ = "src/engine/SCons/SConsign.py bee7caf9defd6e108fc2998a2520ddb36a967691 2019-12-17 02:07:09 bdeegan"  import SCons.compat diff --git a/src/engine/SCons/SConsignTests.py b/src/engine/SCons/SConsignTests.py index 1ae1f47..fbac8a4 100644 --- a/src/engine/SCons/SConsignTests.py +++ b/src/engine/SCons/SConsignTests.py @@ -21,7 +21,7 @@  # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.  # -__revision__ = "src/engine/SCons/SConsignTests.py e724ae812eb96f4858a132f5b8c769724744faf6 2019-07-21 00:04:47 bdeegan" +__revision__ = "src/engine/SCons/SConsignTests.py bee7caf9defd6e108fc2998a2520ddb36a967691 2019-12-17 02:07:09 bdeegan"  import os  import sys diff --git a/src/engine/SCons/Scanner/C.py b/src/engine/SCons/Scanner/C.py index 206de5f..32e0499 100644 --- a/src/engine/SCons/Scanner/C.py +++ b/src/engine/SCons/Scanner/C.py @@ -27,7 +27,7 @@ This module implements the dependency scanner for C/C++ code.  # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.  # -__revision__ = "src/engine/SCons/Scanner/C.py e724ae812eb96f4858a132f5b8c769724744faf6 2019-07-21 00:04:47 bdeegan" +__revision__ = "src/engine/SCons/Scanner/C.py bee7caf9defd6e108fc2998a2520ddb36a967691 2019-12-17 02:07:09 bdeegan"  import SCons.Node.FS  import SCons.Scanner diff --git a/src/engine/SCons/Scanner/CTests.py b/src/engine/SCons/Scanner/CTests.py index 8e1e3b3..ff27e22 100644 --- a/src/engine/SCons/Scanner/CTests.py +++ b/src/engine/SCons/Scanner/CTests.py @@ -21,7 +21,7 @@  # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.  # -__revision__ = "src/engine/SCons/Scanner/CTests.py e724ae812eb96f4858a132f5b8c769724744faf6 2019-07-21 00:04:47 bdeegan" +__revision__ = "src/engine/SCons/Scanner/CTests.py bee7caf9defd6e108fc2998a2520ddb36a967691 2019-12-17 02:07:09 bdeegan"  import SCons.compat diff --git a/src/engine/SCons/Scanner/D.py b/src/engine/SCons/Scanner/D.py index 1ad9e89..427c596 100644 --- a/src/engine/SCons/Scanner/D.py +++ b/src/engine/SCons/Scanner/D.py @@ -30,7 +30,7 @@ Coded by Andy Friesen  # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.  # -__revision__ = "src/engine/SCons/Scanner/D.py e724ae812eb96f4858a132f5b8c769724744faf6 2019-07-21 00:04:47 bdeegan" +__revision__ = "src/engine/SCons/Scanner/D.py bee7caf9defd6e108fc2998a2520ddb36a967691 2019-12-17 02:07:09 bdeegan"  import SCons.Scanner diff --git a/src/engine/SCons/Scanner/DTests.py b/src/engine/SCons/Scanner/DTests.py index f115eb0..8f79920 100644 --- a/src/engine/SCons/Scanner/DTests.py +++ b/src/engine/SCons/Scanner/DTests.py @@ -21,7 +21,7 @@  # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.  # -__revision__ = "src/engine/SCons/Scanner/DTests.py e724ae812eb96f4858a132f5b8c769724744faf6 2019-07-21 00:04:47 bdeegan" +__revision__ = "src/engine/SCons/Scanner/DTests.py bee7caf9defd6e108fc2998a2520ddb36a967691 2019-12-17 02:07:09 bdeegan"  import unittest diff --git a/src/engine/SCons/Scanner/Dir.py b/src/engine/SCons/Scanner/Dir.py index be8ae6c..c3e825c 100644 --- a/src/engine/SCons/Scanner/Dir.py +++ b/src/engine/SCons/Scanner/Dir.py @@ -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 e724ae812eb96f4858a132f5b8c769724744faf6 2019-07-21 00:04:47 bdeegan" +__revision__ = "src/engine/SCons/Scanner/Dir.py bee7caf9defd6e108fc2998a2520ddb36a967691 2019-12-17 02:07:09 bdeegan"  import SCons.Node.FS  import SCons.Scanner diff --git a/src/engine/SCons/Scanner/DirTests.py b/src/engine/SCons/Scanner/DirTests.py index 71e527f..49f2518 100644 --- a/src/engine/SCons/Scanner/DirTests.py +++ b/src/engine/SCons/Scanner/DirTests.py @@ -21,7 +21,7 @@  # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.  # -__revision__ = "src/engine/SCons/Scanner/DirTests.py e724ae812eb96f4858a132f5b8c769724744faf6 2019-07-21 00:04:47 bdeegan" +__revision__ = "src/engine/SCons/Scanner/DirTests.py bee7caf9defd6e108fc2998a2520ddb36a967691 2019-12-17 02:07:09 bdeegan"  import os.path  import sys diff --git a/src/engine/SCons/Scanner/Fortran.py b/src/engine/SCons/Scanner/Fortran.py index d315bc9..93be76c 100644 --- a/src/engine/SCons/Scanner/Fortran.py +++ b/src/engine/SCons/Scanner/Fortran.py @@ -26,7 +26,7 @@ This module implements the dependency scanner for Fortran code.  # 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 e724ae812eb96f4858a132f5b8c769724744faf6 2019-07-21 00:04:47 bdeegan" +__revision__ = "src/engine/SCons/Scanner/Fortran.py bee7caf9defd6e108fc2998a2520ddb36a967691 2019-12-17 02:07:09 bdeegan"  import re diff --git a/src/engine/SCons/Scanner/FortranTests.py b/src/engine/SCons/Scanner/FortranTests.py index 5bf4be6..42c399b 100644 --- a/src/engine/SCons/Scanner/FortranTests.py +++ b/src/engine/SCons/Scanner/FortranTests.py @@ -21,7 +21,7 @@  # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.  # -__revision__ = "src/engine/SCons/Scanner/FortranTests.py e724ae812eb96f4858a132f5b8c769724744faf6 2019-07-21 00:04:47 bdeegan" +__revision__ = "src/engine/SCons/Scanner/FortranTests.py bee7caf9defd6e108fc2998a2520ddb36a967691 2019-12-17 02:07:09 bdeegan"  import os  import os.path diff --git a/src/engine/SCons/Scanner/IDL.py b/src/engine/SCons/Scanner/IDL.py index 88226e6..6569c1f 100644 --- a/src/engine/SCons/Scanner/IDL.py +++ b/src/engine/SCons/Scanner/IDL.py @@ -28,7 +28,7 @@ Definition Language) files.  # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.  # -__revision__ = "src/engine/SCons/Scanner/IDL.py e724ae812eb96f4858a132f5b8c769724744faf6 2019-07-21 00:04:47 bdeegan" +__revision__ = "src/engine/SCons/Scanner/IDL.py bee7caf9defd6e108fc2998a2520ddb36a967691 2019-12-17 02:07:09 bdeegan"  import SCons.Node.FS  import SCons.Scanner diff --git a/src/engine/SCons/Scanner/IDLTests.py b/src/engine/SCons/Scanner/IDLTests.py index 9bc4e5a..68a29c6 100644 --- a/src/engine/SCons/Scanner/IDLTests.py +++ b/src/engine/SCons/Scanner/IDLTests.py @@ -21,7 +21,7 @@  # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.  # -__revision__ = "src/engine/SCons/Scanner/IDLTests.py e724ae812eb96f4858a132f5b8c769724744faf6 2019-07-21 00:04:47 bdeegan" +__revision__ = "src/engine/SCons/Scanner/IDLTests.py bee7caf9defd6e108fc2998a2520ddb36a967691 2019-12-17 02:07:09 bdeegan"  import unittest  import sys diff --git a/src/engine/SCons/Scanner/LaTeX.py b/src/engine/SCons/Scanner/LaTeX.py index 8afe5b0..4e43eaa 100644 --- a/src/engine/SCons/Scanner/LaTeX.py +++ b/src/engine/SCons/Scanner/LaTeX.py @@ -27,7 +27,7 @@ This module implements the dependency scanner for LaTeX code.  # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.  # -__revision__ = "src/engine/SCons/Scanner/LaTeX.py e724ae812eb96f4858a132f5b8c769724744faf6 2019-07-21 00:04:47 bdeegan" +__revision__ = "src/engine/SCons/Scanner/LaTeX.py bee7caf9defd6e108fc2998a2520ddb36a967691 2019-12-17 02:07:09 bdeegan"  import os.path  import re diff --git a/src/engine/SCons/Scanner/LaTeXTests.py b/src/engine/SCons/Scanner/LaTeXTests.py index 8750000..9c2bfbb 100644 --- a/src/engine/SCons/Scanner/LaTeXTests.py +++ b/src/engine/SCons/Scanner/LaTeXTests.py @@ -21,7 +21,7 @@  # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.  # -__revision__ = "src/engine/SCons/Scanner/LaTeXTests.py e724ae812eb96f4858a132f5b8c769724744faf6 2019-07-21 00:04:47 bdeegan" +__revision__ = "src/engine/SCons/Scanner/LaTeXTests.py bee7caf9defd6e108fc2998a2520ddb36a967691 2019-12-17 02:07:09 bdeegan"  import SCons.compat diff --git a/src/engine/SCons/Scanner/Prog.py b/src/engine/SCons/Scanner/Prog.py index 2ae3c68..5f9015d 100644 --- a/src/engine/SCons/Scanner/Prog.py +++ b/src/engine/SCons/Scanner/Prog.py @@ -21,7 +21,7 @@  # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.  # -__revision__ = "src/engine/SCons/Scanner/Prog.py e724ae812eb96f4858a132f5b8c769724744faf6 2019-07-21 00:04:47 bdeegan" +__revision__ = "src/engine/SCons/Scanner/Prog.py bee7caf9defd6e108fc2998a2520ddb36a967691 2019-12-17 02:07:09 bdeegan"  import SCons.Node  import SCons.Node.FS diff --git a/src/engine/SCons/Scanner/ProgTests.py b/src/engine/SCons/Scanner/ProgTests.py index 7dae37c..fc6b1ff 100644 --- a/src/engine/SCons/Scanner/ProgTests.py +++ b/src/engine/SCons/Scanner/ProgTests.py @@ -21,7 +21,7 @@  # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.  # -__revision__ = "src/engine/SCons/Scanner/ProgTests.py e724ae812eb96f4858a132f5b8c769724744faf6 2019-07-21 00:04:47 bdeegan" +__revision__ = "src/engine/SCons/Scanner/ProgTests.py bee7caf9defd6e108fc2998a2520ddb36a967691 2019-12-17 02:07:09 bdeegan"  import os.path  import sys diff --git a/src/engine/SCons/Scanner/RC.py b/src/engine/SCons/Scanner/RC.py index 4f0cee2..47c6ca2 100644 --- a/src/engine/SCons/Scanner/RC.py +++ b/src/engine/SCons/Scanner/RC.py @@ -28,7 +28,7 @@ Definition Language) files.  # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.  # -__revision__ = "src/engine/SCons/Scanner/RC.py e724ae812eb96f4858a132f5b8c769724744faf6 2019-07-21 00:04:47 bdeegan" +__revision__ = "src/engine/SCons/Scanner/RC.py bee7caf9defd6e108fc2998a2520ddb36a967691 2019-12-17 02:07:09 bdeegan"  import re diff --git a/src/engine/SCons/Scanner/RCTests.py b/src/engine/SCons/Scanner/RCTests.py index 2915985..f2c74a3 100644 --- a/src/engine/SCons/Scanner/RCTests.py +++ b/src/engine/SCons/Scanner/RCTests.py @@ -21,7 +21,7 @@  # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.  # -__revision__ = "src/engine/SCons/Scanner/RCTests.py e724ae812eb96f4858a132f5b8c769724744faf6 2019-07-21 00:04:47 bdeegan" +__revision__ = "src/engine/SCons/Scanner/RCTests.py bee7caf9defd6e108fc2998a2520ddb36a967691 2019-12-17 02:07:09 bdeegan"  import unittest  import sys diff --git a/src/engine/SCons/Scanner/SWIG.py b/src/engine/SCons/Scanner/SWIG.py index 5f2a3e3..7ff78a6 100644 --- a/src/engine/SCons/Scanner/SWIG.py +++ b/src/engine/SCons/Scanner/SWIG.py @@ -27,7 +27,7 @@ This module implements the dependency scanner for SWIG code.  # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.  # -__revision__ = "src/engine/SCons/Scanner/SWIG.py e724ae812eb96f4858a132f5b8c769724744faf6 2019-07-21 00:04:47 bdeegan" +__revision__ = "src/engine/SCons/Scanner/SWIG.py bee7caf9defd6e108fc2998a2520ddb36a967691 2019-12-17 02:07:09 bdeegan"  import SCons.Scanner diff --git a/src/engine/SCons/Scanner/ScannerTests.py b/src/engine/SCons/Scanner/ScannerTests.py index 64842d4..3649120 100644 --- a/src/engine/SCons/Scanner/ScannerTests.py +++ b/src/engine/SCons/Scanner/ScannerTests.py @@ -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/ScannerTests.py e724ae812eb96f4858a132f5b8c769724744faf6 2019-07-21 00:04:47 bdeegan" +__revision__ = "src/engine/SCons/Scanner/ScannerTests.py bee7caf9defd6e108fc2998a2520ddb36a967691 2019-12-17 02:07:09 bdeegan"  import SCons.compat diff --git a/src/engine/SCons/Scanner/__init__.py b/src/engine/SCons/Scanner/__init__.py index feff12a..9884533 100644 --- a/src/engine/SCons/Scanner/__init__.py +++ b/src/engine/SCons/Scanner/__init__.py @@ -27,7 +27,7 @@ The Scanner package for the SCons software construction utility.  # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.  # -__revision__ = "src/engine/SCons/Scanner/__init__.py e724ae812eb96f4858a132f5b8c769724744faf6 2019-07-21 00:04:47 bdeegan" +__revision__ = "src/engine/SCons/Scanner/__init__.py bee7caf9defd6e108fc2998a2520ddb36a967691 2019-12-17 02:07:09 bdeegan"  import re diff --git a/src/engine/SCons/Scanner/__init__.xml b/src/engine/SCons/Scanner/__init__.xml index 436d806..1043234 100644 --- a/src/engine/SCons/Scanner/__init__.xml +++ b/src/engine/SCons/Scanner/__init__.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="UTF-8"?> +<?xml version="1.0"?>  <!--  Copyright (c) 2001 - 2019 The SCons Foundation diff --git a/src/engine/SCons/Script/Interactive.py b/src/engine/SCons/Script/Interactive.py index 3d70728..b2c134c 100644 --- a/src/engine/SCons/Script/Interactive.py +++ b/src/engine/SCons/Script/Interactive.py @@ -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 e724ae812eb96f4858a132f5b8c769724744faf6 2019-07-21 00:04:47 bdeegan" +__revision__ = "src/engine/SCons/Script/Interactive.py bee7caf9defd6e108fc2998a2520ddb36a967691 2019-12-17 02:07:09 bdeegan"  __doc__ = """  SCons interactive mode diff --git a/src/engine/SCons/Script/Main.py b/src/engine/SCons/Script/Main.py index 878f824..5b7406c 100644 --- a/src/engine/SCons/Script/Main.py +++ b/src/engine/SCons/Script/Main.py @@ -38,7 +38,7 @@ deprecated_python_version = (2, 7, 0)  # 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 e724ae812eb96f4858a132f5b8c769724744faf6 2019-07-21 00:04:47 bdeegan" +__revision__ = "src/engine/SCons/Script/Main.py bee7caf9defd6e108fc2998a2520ddb36a967691 2019-12-17 02:07:09 bdeegan"  import SCons.compat @@ -75,6 +75,7 @@ print_objects = 0  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 @@ class BuildTask(SCons.Taskmaster.OutOfDateTask):              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 @@ def _SConstruct_exists(dirname='', repositories=[], filelist=None):      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 @@ def _set_debug_values(options):          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 --git a/src/engine/SCons/Script/Main.xml b/src/engine/SCons/Script/Main.xml index c1c4bde..9966244 100644 --- a/src/engine/SCons/Script/Main.xml +++ b/src/engine/SCons/Script/Main.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="UTF-8"?> +<?xml version="1.0"?>  <!--  Copyright (c) 2001 - 2019 The SCons Foundation @@ -33,11 +33,11 @@ See its __doc__ string for a discussion of the format.  This function adds a new command-line option to be recognized.  The specified  <varname>arguments</varname> -are the same as supported by the standard Python -<function>optparse.add_option</function>() -method (with a few additional capabilities noted below); +are the same as supported by the <function>add_option</function> +method in the standard Python library module <emphasis>optparse</emphasis>, +with a few additional capabilities noted below;  see the documentation for -<literal>optparse</literal> +<emphasis>optparse</emphasis>  for a thorough discussion of its option-processing capabities.  </para> @@ -78,12 +78,22 @@ the option will have a default value of  </para>  <para> +Unlike regular <emphasis>optparse</emphasis>, option names +added via <function>AddOption</function> must be matched +exactly, the automatic matching of abbreviations on the +command line for long options is not supported. +To allow specific abbreviations, +include them in the &f-AddOption; call. +</para> + +<para>  Once a new command-line option has been added with  &f-AddOption;,  the option value may be accessed using  &f-GetOption;  or  <function>env.GetOption</function>(). +<!--  The value may also be set, using  &f-SetOption;  or @@ -95,6 +105,9 @@ Note, however, that a  value specified on the command line will  <emphasis>always</emphasis>  override a value set by any SConscript file. +--> +&f-SetOption; is not currently supported for +options added with &f-AddOption;.  </para>  <para> @@ -133,6 +146,22 @@ AddOption('--prefix',            help='installation prefix')  env = Environment(PREFIX = GetOption('prefix'))  </example_commands> + +<note> +<para> +While &AddOption; behaves like +<function>add_option</function>, +from the <emphasis>optparse</emphasis> module, +the behavior of options added by &AddOption; +which take arguments is underfined in +<command>scons</command> if whitespace +(rather than an <literal>=</literal> sign) is used as +the separator on the command line when +the option is invoked. +Such usage should be avoided. +</para> +</note> +  </summary>  </scons_function> diff --git a/src/engine/SCons/Script/MainTests.py b/src/engine/SCons/Script/MainTests.py index 752ea0a..188700a 100644 --- a/src/engine/SCons/Script/MainTests.py +++ b/src/engine/SCons/Script/MainTests.py @@ -21,7 +21,7 @@  # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.  # -__revision__ = "src/engine/SCons/Script/MainTests.py e724ae812eb96f4858a132f5b8c769724744faf6 2019-07-21 00:04:47 bdeegan" +__revision__ = "src/engine/SCons/Script/MainTests.py bee7caf9defd6e108fc2998a2520ddb36a967691 2019-12-17 02:07:09 bdeegan"  import unittest diff --git a/src/engine/SCons/Script/SConsOptions.py b/src/engine/SCons/Script/SConsOptions.py index 5651c96..e7a3fc1 100644 --- a/src/engine/SCons/Script/SConsOptions.py +++ b/src/engine/SCons/Script/SConsOptions.py @@ -21,7 +21,7 @@  # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.  # -__revision__ = "src/engine/SCons/Script/SConsOptions.py e724ae812eb96f4858a132f5b8c769724744faf6 2019-07-21 00:04:47 bdeegan" +__revision__ = "src/engine/SCons/Script/SConsOptions.py bee7caf9defd6e108fc2998a2520ddb36a967691 2019-12-17 02:07:09 bdeegan"  import optparse  import re @@ -584,9 +584,15 @@ def Parser(version):                    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 @@ def Parser(version):                    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 @@ def Parser(version):      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 @@ def Parser(version):                  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 --git a/src/engine/SCons/Script/SConscript.py b/src/engine/SCons/Script/SConscript.py index 9687c29..97073ba 100644 --- a/src/engine/SCons/Script/SConscript.py +++ b/src/engine/SCons/Script/SConscript.py @@ -27,7 +27,7 @@ files.  # 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 e724ae812eb96f4858a132f5b8c769724744faf6 2019-07-21 00:04:47 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.Platform  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 @@ def compute_exports(exports):      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 @@ call_stack = []  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 @@ class SConsEnvironment(SCons.Environment.Base):              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 @@ class SConsEnvironment(SCons.Environment.Base):              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 @@ class SConsEnvironment(SCons.Environment.Base):              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 @@ class SConsEnvironment(SCons.Environment.Base):          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 --git a/src/engine/SCons/Script/SConscript.xml b/src/engine/SCons/Script/SConscript.xml index 2d77aa3..5b5e482 100644 --- a/src/engine/SCons/Script/SConscript.xml +++ b/src/engine/SCons/Script/SConscript.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="UTF-8"?> +<?xml version="1.0"?>  <!--  Copyright (c) 2001 - 2019 The SCons Foundation diff --git a/src/engine/SCons/Script/SConscriptTests.py b/src/engine/SCons/Script/SConscriptTests.py index c1232e8..8b17ed4 100644 --- a/src/engine/SCons/Script/SConscriptTests.py +++ b/src/engine/SCons/Script/SConscriptTests.py @@ -21,7 +21,7 @@  # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.  # -__revision__ = "src/engine/SCons/Script/SConscriptTests.py e724ae812eb96f4858a132f5b8c769724744faf6 2019-07-21 00:04:47 bdeegan" +__revision__ = "src/engine/SCons/Script/SConscriptTests.py bee7caf9defd6e108fc2998a2520ddb36a967691 2019-12-17 02:07:09 bdeegan"  import SCons.Script.SConscript diff --git a/src/engine/SCons/Script/__init__.py b/src/engine/SCons/Script/__init__.py index cf2e472..5292c10 100644 --- a/src/engine/SCons/Script/__init__.py +++ b/src/engine/SCons/Script/__init__.py @@ -34,7 +34,7 @@ it goes here.  # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.  # -__revision__ = "src/engine/SCons/Script/__init__.py e724ae812eb96f4858a132f5b8c769724744faf6 2019-07-21 00:04:47 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 @@ GlobalDefaultEnvironmentFunctions = [      'AddPreAction',      'Alias',      'AlwaysBuild', -    'BuildDir',      'CacheDir',      'Clean',      #The Command() method is handled separately, below. @@ -346,10 +345,8 @@ GlobalDefaultEnvironmentFunctions = [      'SConsignFile',      'SideEffect',      'SourceCode', -    'SourceSignatures',      'Split',      'Tag', -    'TargetSignatures',      'Value',      'VariantDir',  ] diff --git a/src/engine/SCons/Subst.py b/src/engine/SCons/Subst.py index 1e0d423..23030f4 100644 --- a/src/engine/SCons/Subst.py +++ b/src/engine/SCons/Subst.py @@ -26,7 +26,7 @@ SCons string substitution.  # 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 e724ae812eb96f4858a132f5b8c769724744faf6 2019-07-21 00:04:47 bdeegan" +__revision__ = "src/engine/SCons/Subst.py bee7caf9defd6e108fc2998a2520ddb36a967691 2019-12-17 02:07:09 bdeegan"  import collections  import re @@ -409,7 +409,7 @@ def scons_subst(strSubst, env, mode=SUBST_RAW, target=None, source=None, gvars={      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 --git a/src/engine/SCons/Subst.xml b/src/engine/SCons/Subst.xml index 858ff40..d69ea38 100644 --- a/src/engine/SCons/Subst.xml +++ b/src/engine/SCons/Subst.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="UTF-8"?> +<?xml version="1.0"?>  <!--  Copyright (c) 2001 - 2019 The SCons Foundation diff --git a/src/engine/SCons/SubstTests.py b/src/engine/SCons/SubstTests.py index 49a9a2f..5dcdea4 100644 --- a/src/engine/SCons/SubstTests.py +++ b/src/engine/SCons/SubstTests.py @@ -22,7 +22,7 @@  #  from __future__ import print_function -__revision__ = "src/engine/SCons/SubstTests.py e724ae812eb96f4858a132f5b8c769724744faf6 2019-07-21 00:04:47 bdeegan" +__revision__ = "src/engine/SCons/SubstTests.py bee7caf9defd6e108fc2998a2520ddb36a967691 2019-12-17 02:07:09 bdeegan"  import SCons.compat diff --git a/src/engine/SCons/Taskmaster.py b/src/engine/SCons/Taskmaster.py index 29e48ac..60d2ac3 100644 --- a/src/engine/SCons/Taskmaster.py +++ b/src/engine/SCons/Taskmaster.py @@ -54,7 +54,7 @@ __doc__ = """          target(s) that it decides need to be evaluated and/or built.  """ -__revision__ = "src/engine/SCons/Taskmaster.py e724ae812eb96f4858a132f5b8c769724744faf6 2019-07-21 00:04:47 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 @@ class Taskmaster(object):              # 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 --git a/src/engine/SCons/TaskmasterTests.py b/src/engine/SCons/TaskmasterTests.py index 218870e..fc6e5fc 100644 --- a/src/engine/SCons/TaskmasterTests.py +++ b/src/engine/SCons/TaskmasterTests.py @@ -22,7 +22,7 @@  #  from __future__ import division -__revision__ = "src/engine/SCons/TaskmasterTests.py e724ae812eb96f4858a132f5b8c769724744faf6 2019-07-21 00:04:47 bdeegan" +__revision__ = "src/engine/SCons/TaskmasterTests.py bee7caf9defd6e108fc2998a2520ddb36a967691 2019-12-17 02:07:09 bdeegan"  import SCons.compat diff --git a/src/engine/SCons/Tool/386asm.py b/src/engine/SCons/Tool/386asm.py index 1121c3d..d398f07 100644 --- a/src/engine/SCons/Tool/386asm.py +++ b/src/engine/SCons/Tool/386asm.py @@ -32,7 +32,7 @@ selection method.  # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.  # -__revision__ = "src/engine/SCons/Tool/386asm.py e724ae812eb96f4858a132f5b8c769724744faf6 2019-07-21 00:04:47 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 --git a/src/engine/SCons/Tool/386asm.xml b/src/engine/SCons/Tool/386asm.xml index fe819d2..8ad9fa9 100644 --- a/src/engine/SCons/Tool/386asm.xml +++ b/src/engine/SCons/Tool/386asm.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="UTF-8"?> +<?xml version="1.0"?>  <!--  Copyright (c) 2001 - 2019 The SCons Foundation diff --git a/src/engine/SCons/Tool/DCommon.py b/src/engine/SCons/Tool/DCommon.py index f6b6000..0e0cf09 100644 --- a/src/engine/SCons/Tool/DCommon.py +++ b/src/engine/SCons/Tool/DCommon.py @@ -31,7 +31,7 @@ Coded by Russel Winder (russel@winder.org.uk)  # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.  # -__revision__ = "src/engine/SCons/Tool/DCommon.py e724ae812eb96f4858a132f5b8c769724744faf6 2019-07-21 00:04:47 bdeegan" +__revision__ = "src/engine/SCons/Tool/DCommon.py bee7caf9defd6e108fc2998a2520ddb36a967691 2019-12-17 02:07:09 bdeegan"  import os.path diff --git a/src/engine/SCons/Tool/DCommon.xml b/src/engine/SCons/Tool/DCommon.xml index 5103ca1..63e6c45 100644 --- a/src/engine/SCons/Tool/DCommon.xml +++ b/src/engine/SCons/Tool/DCommon.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="UTF-8"?> +<?xml version="1.0"?>  <!--  Copyright (c) 2001 - 2019 The SCons Foundation @@ -23,49 +23,339 @@ See its __doc__ string for a discussion of the format.            xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"            xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd"> +<cvar name="DC"> +<summary> +<para> +The D compiler to use. +</para> +</summary> +</cvar> +<cvar name="DCOM"> +<summary> +<para> +The command line used to compile a D file to an object file. +Any options specified in the &cv-link-DFLAGS; construction variable +is included on this command line. +</para> +</summary> +</cvar> +<cvar name="DDEBUG"> +<summary> +<para> +List of debug tags to enable when compiling. +</para> +</summary> +</cvar> +<cvar name="DDEBUGPREFIX"> +<summary> +<para> +DDEBUGPREFIX. +</para> +</summary> +</cvar> -    <cvar name="DRPATHPREFIX"> -        <summary> -            <para> -                DRPATHPREFIX. -            </para> -        </summary> -    </cvar> - -    <cvar name="DRPATHSUFFIX"> -        <summary> -            <para> -                DRPATHSUFFIX. -            </para> -        </summary> -    </cvar> - - -    <cvar name="DShLibSonameGenerator"> -        <summary> -            <para> -                DShLibSonameGenerator. -            </para> -        </summary> -    </cvar> - -    <cvar name="SHDLIBVERSION"> -        <summary> -            <para> -                SHDLIBVERSION. -            </para> -        </summary> -    </cvar> -    <cvar name="SHDLIBVERSIONFLAGS"> -        <summary> -            <para> -                SHDLIBVERSIONFLAGS. -            </para> -        </summary> -    </cvar> +<cvar name="DDEBUGSUFFIX"> +<summary> +<para> +DDEBUGSUFFIX. +</para> +</summary> +</cvar> +<cvar name="DFILESUFFIX"> +<summary> +<para> +DFILESUFFIX. +</para> +</summary> +</cvar> + +<cvar name="DFLAGPREFIX"> +<summary> +<para> +DFLAGPREFIX. +</para> +</summary> +</cvar> + +<cvar name="DFLAGS"> +<summary> +<para> +General options that are passed to the D compiler. +</para> +</summary> +</cvar> + +<cvar name="DFLAGSUFFIX"> +<summary> +<para> +DFLAGSUFFIX. +</para> +</summary> +</cvar> + +<cvar name="DINCSUFFIX"> +<summary> +<para> +DLIBFLAGSUFFIX. +</para> +</summary> +</cvar> + +<cvar name="DINCPREFIX"> +<summary> +<para> +DINCPREFIX. +</para> +</summary> +</cvar> + +<cvar name="DLIB"> +<summary> +<para> +Name of the lib tool to use for D codes. +</para> +</summary> +</cvar> + +<cvar name="DLIBCOM"> +<summary> +<para> +The command line to use when creating libraries. +</para> +</summary> +</cvar> + +<cvar name="DLIBDIRPREFIX"> +<summary> +<para> +DLIBLINKPREFIX. +</para> +</summary> +</cvar> + +<cvar name="DLIBDIRSUFFIX"> +<summary> +<para> +DLIBLINKSUFFIX. +</para> +</summary> +</cvar> + +<cvar name="DLIBFLAGSUFFIX"> +<summary> +<para> +DLIBFLAGSUFFIX. +</para> +</summary> +</cvar> + +<cvar name="DLIBFLAGPREFIX"> +<summary> +<para> +DLIBFLAGPREFIX. +</para> +</summary> +</cvar> + +<cvar name="DLIBLINKPREFIX"> +<summary> +<para> +DLIBLINKPREFIX. +</para> +</summary> +</cvar> + +<cvar name="DLIBLINKSUFFIX"> +<summary> +<para> +DLIBLINKSUFFIX. +</para> +</summary> +</cvar> + +<cvar name="DLINK"> +<summary> +<para> +Name of the linker to use for linking systems including D sources. +</para> +</summary> +</cvar> + +<cvar name="DLINKCOM"> +<summary> +<para> +The command line to use when linking systems including D sources. +</para> +</summary> +</cvar> + +<cvar name="DLINKFLAGS"> +<summary> +<para> +List of linker flags. +</para> +</summary> +</cvar> + +<cvar name="DLINKFLAGSUFFIX"> +<summary> +<para> +DLINKFLAGSUFFIX. +</para> +</summary> +</cvar> + +<cvar name="DLINKFLAGPREFIX"> +<summary> +<para> +DLINKFLAGPREFIX. +</para> +</summary> +</cvar> + +<cvar name="DPATH"> +<summary> +<para> +  List of paths to search for import modules. +</para> +</summary> +</cvar> + +<cvar name="DRPATHPREFIX"> +<summary> +<para> +DRPATHPREFIX. +</para> +</summary> +</cvar> + +<cvar name="DRPATHSUFFIX"> +<summary> +<para> +DRPATHSUFFIX. +</para> +</summary> +</cvar> + +<cvar name="DShLibSonameGenerator"> +<summary> +<para> +DShLibSonameGenerator. +</para> +</summary> +</cvar> + +<cvar name="DVERPREFIX"> +<summary> +<para> +DVERPREFIX. +</para> +</summary> +</cvar> + +<cvar name="DVERSIONS"> +<summary> +<para> +List of version tags to enable when compiling. +</para> +</summary> +</cvar> + +<cvar name="DVERSUFFIX"> +<summary> +<para> +DVERSUFFIX. +</para> +</summary> +</cvar> + +<cvar name="SHDC"> +<summary> +<para> +The name of the compiler to use when compiling D source +destined to be in a shared objects. +</para> +</summary> +</cvar> + +<cvar name="SHDCOM"> +<summary> +<para> +The command line to use when compiling code to be part of shared objects. +</para> +</summary> +</cvar> + +<cvar name="SHDLIBVERSION"> +<summary> +<para> +SHDLIBVERSION. +</para> +</summary> +</cvar> + +<cvar name="SHDLIBVERSIONFLAGS"> +<summary> +<para> +SHDLIBVERSIONFLAGS. +</para> +</summary> +</cvar> + +<cvar name="SHDLINK"> +<summary> +<para> +The linker to use when creating shared objects for code bases +include D sources. +</para> +</summary> +</cvar> + +<cvar name="SHDLINKCOM"> +<summary> +<para> +The command line to use when generating shared objects. +</para> +</summary> +</cvar> + +<cvar name="SHDLINKFLAGS"> +<summary> +<para> +The list of flags to use when generating a shared object. +</para> +</summary> +</cvar> + + +<builder name="ProgramAllAtOnce"> +<summary> +  <para> +    Builds an executable from D sources without first creating individual +    objects for each file. +  </para> +  <para> +    D sources can be compiled file-by-file as C and C++ source are, and +    D is integrated into the &scons; Object and Program builders for +    this model of build. D codes can though do whole source +    meta-programming (some of the testing frameworks do this). For this +    it is imperative that all sources are compiled and linked in a single +    call to the D compiler. This builder serves that purpose. +  </para> +  <example_commands> +    env.ProgramAllAtOnce('executable', ['mod_a.d, mod_b.d', 'mod_c.d']) +  </example_commands> +  <para> +    This command will compile the modules mod_a, mod_b, and mod_c in a +    single compilation process without first creating object files for +    the modules. Some of the D compilers will create executable.o others +    will not. +  </para> +</summary> +</builder>  </sconsdoc> diff --git a/src/engine/SCons/Tool/FortranCommon.py b/src/engine/SCons/Tool/FortranCommon.py index 11f1eb7..af573fa 100644 --- a/src/engine/SCons/Tool/FortranCommon.py +++ b/src/engine/SCons/Tool/FortranCommon.py @@ -28,7 +28,7 @@ Stuff for processing Fortran, common to all fortran dialects.  #  from __future__ import print_function -__revision__ = "src/engine/SCons/Tool/FortranCommon.py e724ae812eb96f4858a132f5b8c769724744faf6 2019-07-21 00:04:47 bdeegan" +__revision__ = "src/engine/SCons/Tool/FortranCommon.py bee7caf9defd6e108fc2998a2520ddb36a967691 2019-12-17 02:07:09 bdeegan"  import re  import os.path diff --git a/src/engine/SCons/Tool/FortranCommonTests.py b/src/engine/SCons/Tool/FortranCommonTests.py index 9cca9b0..726b4bf 100644 --- a/src/engine/SCons/Tool/FortranCommonTests.py +++ b/src/engine/SCons/Tool/FortranCommonTests.py @@ -22,7 +22,7 @@  #  # from typing import Dict, Any -__revision__ = "src/engine/SCons/Tool/FortranCommonTests.py e724ae812eb96f4858a132f5b8c769724744faf6 2019-07-21 00:04:47 bdeegan" +__revision__ = "src/engine/SCons/Tool/FortranCommonTests.py bee7caf9defd6e108fc2998a2520ddb36a967691 2019-12-17 02:07:09 bdeegan"  import os  import os.path diff --git a/src/engine/SCons/Tool/GettextCommon.py b/src/engine/SCons/Tool/GettextCommon.py index 79912b6..f03c256 100644 --- a/src/engine/SCons/Tool/GettextCommon.py +++ b/src/engine/SCons/Tool/GettextCommon.py @@ -24,7 +24,7 @@ Used by several tools of `gettext` toolset.  # 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 e724ae812eb96f4858a132f5b8c769724744faf6 2019-07-21 00:04:47 bdeegan" +__revision__ = "src/engine/SCons/Tool/GettextCommon.py bee7caf9defd6e108fc2998a2520ddb36a967691 2019-12-17 02:07:09 bdeegan"  import SCons.Warnings  import re diff --git a/src/engine/SCons/Tool/JavaCommon.py b/src/engine/SCons/Tool/JavaCommon.py index 1e58af6..f9e3684 100644 --- a/src/engine/SCons/Tool/JavaCommon.py +++ b/src/engine/SCons/Tool/JavaCommon.py @@ -27,7 +27,7 @@ Stuff for processing Java.  # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.  # -__revision__ = "src/engine/SCons/Tool/JavaCommon.py e724ae812eb96f4858a132f5b8c769724744faf6 2019-07-21 00:04:47 bdeegan" +__revision__ = "src/engine/SCons/Tool/JavaCommon.py bee7caf9defd6e108fc2998a2520ddb36a967691 2019-12-17 02:07:09 bdeegan"  import os  import os.path diff --git a/src/engine/SCons/Tool/JavaCommonTests.py b/src/engine/SCons/Tool/JavaCommonTests.py index 45a8a0b..ec5bb74 100644 --- a/src/engine/SCons/Tool/JavaCommonTests.py +++ b/src/engine/SCons/Tool/JavaCommonTests.py @@ -21,7 +21,7 @@  # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.  # -__revision__ = "src/engine/SCons/Tool/JavaCommonTests.py e724ae812eb96f4858a132f5b8c769724744faf6 2019-07-21 00:04:47 bdeegan" +__revision__ = "src/engine/SCons/Tool/JavaCommonTests.py bee7caf9defd6e108fc2998a2520ddb36a967691 2019-12-17 02:07:09 bdeegan"  import os.path  import sys diff --git a/src/engine/SCons/Tool/MSCommon/__init__.py b/src/engine/SCons/Tool/MSCommon/__init__.py index e3c4471..c184aad 100644 --- a/src/engine/SCons/Tool/MSCommon/__init__.py +++ b/src/engine/SCons/Tool/MSCommon/__init__.py @@ -21,7 +21,7 @@  # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.  # -__revision__ = "src/engine/SCons/Tool/MSCommon/__init__.py e724ae812eb96f4858a132f5b8c769724744faf6 2019-07-21 00:04:47 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 --git a/src/engine/SCons/Tool/MSCommon/arch.py b/src/engine/SCons/Tool/MSCommon/arch.py index 6312541..75e7264 100644 --- a/src/engine/SCons/Tool/MSCommon/arch.py +++ b/src/engine/SCons/Tool/MSCommon/arch.py @@ -21,7 +21,7 @@  # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.  # -__revision__ = "src/engine/SCons/Tool/MSCommon/arch.py e724ae812eb96f4858a132f5b8c769724744faf6 2019-07-21 00:04:47 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 --git a/src/engine/SCons/Tool/MSCommon/common.py b/src/engine/SCons/Tool/MSCommon/common.py index 8353944..6f979e6 100644 --- a/src/engine/SCons/Tool/MSCommon/common.py +++ b/src/engine/SCons/Tool/MSCommon/common.py @@ -25,31 +25,67 @@ Common helper functions for working with the Microsoft tool chain.  #  from __future__ import print_function -__revision__ = "src/engine/SCons/Tool/MSCommon/common.py e724ae812eb96f4858a132f5b8c769724744faf6 2019-07-21 00:04:47 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 @@ def get_output(vcbat, args = None, env = None):      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 @@ def get_output(vcbat, args = None, env = None):      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 --git a/src/engine/SCons/Tool/MSCommon/netframework.py b/src/engine/SCons/Tool/MSCommon/netframework.py index edd9fd9..c2d5d7c 100644 --- a/src/engine/SCons/Tool/MSCommon/netframework.py +++ b/src/engine/SCons/Tool/MSCommon/netframework.py @@ -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 e724ae812eb96f4858a132f5b8c769724744faf6 2019-07-21 00:04:47 bdeegan" +__revision__ = "src/engine/SCons/Tool/MSCommon/netframework.py bee7caf9defd6e108fc2998a2520ddb36a967691 2019-12-17 02:07:09 bdeegan"  __doc__ = """  """ diff --git a/src/engine/SCons/Tool/MSCommon/sdk.py b/src/engine/SCons/Tool/MSCommon/sdk.py index e664a30..811ee24 100644 --- a/src/engine/SCons/Tool/MSCommon/sdk.py +++ b/src/engine/SCons/Tool/MSCommon/sdk.py @@ -21,7 +21,7 @@  # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -__revision__ = "src/engine/SCons/Tool/MSCommon/sdk.py e724ae812eb96f4858a132f5b8c769724744faf6 2019-07-21 00:04:47 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 @@ class SDKDefinition(object):          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 @@ InstalledSDKMap = None  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 @@ def get_default_sdk():      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 @@ def mssdk_setup_env(env):              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 @@ def mssdk_setup_env(env):              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 --git a/src/engine/SCons/Tool/MSCommon/vc.py b/src/engine/SCons/Tool/MSCommon/vc.py index fa7be96..6d0a7ec 100644 --- a/src/engine/SCons/Tool/MSCommon/vc.py +++ b/src/engine/SCons/Tool/MSCommon/vc.py @@ -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 e724ae812eb96f4858a132f5b8c769724744faf6 2019-07-21 00:04:47 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 SCons.Util  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 @@ def get_msvc_version_numeric(msvc_version):      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 @@ def find_batch_file(env,msvc_version,host_arch,target_arch):      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 @@ def find_batch_file(env,msvc_version,host_arch,target_arch):          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 @@ def reset_installed_vcs():  #    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 @@ def get_default_version(env):          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 @@ def msvc_setup_env_once(env):          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 @@ def msvc_find_valid_batch_script(env,version):          # 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 @@ def msvc_find_valid_batch_script(env,version):          # 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 @@ def msvc_find_valid_batch_script(env,version):              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 @@ def msvc_setup_env(env):                     "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 @@ def msvc_setup_env(env):      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 @@ def msvc_setup_env(env):          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 --git a/src/engine/SCons/Tool/MSCommon/vcTests.py b/src/engine/SCons/Tool/MSCommon/vcTests.py index 25537f3..336bffc 100644 --- a/src/engine/SCons/Tool/MSCommon/vcTests.py +++ b/src/engine/SCons/Tool/MSCommon/vcTests.py @@ -22,7 +22,7 @@  #  # from typing import Dict, Any -__revision__ = "src/engine/SCons/Tool/MSCommon/vcTests.py e724ae812eb96f4858a132f5b8c769724744faf6 2019-07-21 00:04:47 bdeegan" +__revision__ = "src/engine/SCons/Tool/MSCommon/vcTests.py bee7caf9defd6e108fc2998a2520ddb36a967691 2019-12-17 02:07:09 bdeegan"  import os  import os.path diff --git a/src/engine/SCons/Tool/MSCommon/vs.py b/src/engine/SCons/Tool/MSCommon/vs.py index 731f328..972c4f8 100644 --- a/src/engine/SCons/Tool/MSCommon/vs.py +++ b/src/engine/SCons/Tool/MSCommon/vs.py @@ -21,7 +21,7 @@  # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.  # -__revision__ = "src/engine/SCons/Tool/MSCommon/vs.py e724ae812eb96f4858a132f5b8c769724744faf6 2019-07-21 00:04:47 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 @@ def get_vs_by_version(msvs):      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 --git a/src/engine/SCons/Tool/PharLapCommon.py b/src/engine/SCons/Tool/PharLapCommon.py index 623f2a8..09751d1 100644 --- a/src/engine/SCons/Tool/PharLapCommon.py +++ b/src/engine/SCons/Tool/PharLapCommon.py @@ -29,7 +29,7 @@ Phar Lap ETS tool chain.  Right now, this is linkloc and  # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.  # -__revision__ = "src/engine/SCons/Tool/PharLapCommon.py e724ae812eb96f4858a132f5b8c769724744faf6 2019-07-21 00:04:47 bdeegan" +__revision__ = "src/engine/SCons/Tool/PharLapCommon.py bee7caf9defd6e108fc2998a2520ddb36a967691 2019-12-17 02:07:09 bdeegan"  import os  import os.path diff --git a/src/engine/SCons/Tool/ToolTests.py b/src/engine/SCons/Tool/ToolTests.py index 25e9b2d..10cb346 100644 --- a/src/engine/SCons/Tool/ToolTests.py +++ b/src/engine/SCons/Tool/ToolTests.py @@ -21,7 +21,7 @@  # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.  # -__revision__ = "src/engine/SCons/Tool/ToolTests.py e724ae812eb96f4858a132f5b8c769724744faf6 2019-07-21 00:04:47 bdeegan" +__revision__ = "src/engine/SCons/Tool/ToolTests.py bee7caf9defd6e108fc2998a2520ddb36a967691 2019-12-17 02:07:09 bdeegan"  import os  import sys diff --git a/src/engine/SCons/Tool/__init__.py b/src/engine/SCons/Tool/__init__.py index 271f214..a75693f 100644 --- a/src/engine/SCons/Tool/__init__.py +++ b/src/engine/SCons/Tool/__init__.py @@ -35,7 +35,7 @@ tool definition.  # 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 e724ae812eb96f4858a132f5b8c769724744faf6 2019-07-21 00:04:47 bdeegan" +__revision__ = "src/engine/SCons/Tool/__init__.py bee7caf9defd6e108fc2998a2520ddb36a967691 2019-12-17 02:07:09 bdeegan"  import sys  import re @@ -99,7 +99,7 @@ for suffix in LaTeXSuffixes:      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 --git a/src/engine/SCons/Tool/__init__.xml b/src/engine/SCons/Tool/__init__.xml index 80fd2f6..848ffb1 100644 --- a/src/engine/SCons/Tool/__init__.xml +++ b/src/engine/SCons/Tool/__init__.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="UTF-8"?> +<?xml version="1.0"?>  <!--  Copyright (c) 2001 - 2019 The SCons Foundation @@ -468,7 +468,7 @@ as C++ files.  Used to override &cv-link-SHLIBVERSION;/&cv-link-LDMODULEVERSION; when  generating versioned import library for a shared library/loadable module. If  undefined, the &cv-link-SHLIBVERSION;/&cv-link-LDMODULEVERSION; is used to -determine the version of versioned import library.  +determine the version of versioned import library.  </para>  </summary>  </cvar> @@ -476,7 +476,10 @@ determine the version of versioned import library.  <cvar name="LIBEMITTER">  <summary>  <para> -TODO +Contains the emitter specification for the +&b-link-StaticLibrary; builder. +The manpage section "Builder Objects" contains +general information on specifying emitters.  </para>  </summary>  </cvar> @@ -494,10 +497,24 @@ format as &cv-link-SHLIBVERSION;.  </summary>  </cvar> +<cvar name="LDMODULEEMITTER"> +<summary> +<para> +Contains the emitter specification for the +&b-link-LoadableModule; builder. +The manpage section "Builder Objects" contains +general information on specifying emitters. +</para> +</summary> +</cvar> +  <cvar name="SHLIBEMITTER">  <summary>  <para> -TODO +Contains the emitter specification for the +&b-link-SharedLibrary; builder. +The manpage section "Builder Objects" contains +general information on specifying emitters.  </para>  </summary>  </cvar> @@ -505,7 +522,10 @@ TODO  <cvar name="PROGEMITTER">  <summary>  <para> -TODO +Contains the emitter specification for the +&b-link-Program; builder. +The manpage section "Builder Objects" contains +general information on specifying emitters.  </para>  </summary>  </cvar> @@ -514,7 +534,7 @@ TODO  <summary>  <para>  When this construction variable is defined, a versioned shared library -is created by &b-link-SharedLibrary; builder. This activates the +is created by the &b-link-SharedLibrary; builder. This activates the  &cv-link-_SHLIBVERSIONFLAGS; and thus modifies the &cv-link-SHLINKCOM; as  required, adds the version number to the library name, and creates the symlinks  that are needed.  &cv-link-SHLIBVERSION; versions should exist as alpha-numeric, diff --git a/src/engine/SCons/Tool/aixc++.py b/src/engine/SCons/Tool/aixc++.py index bafaea4..4a78eda 100644 --- a/src/engine/SCons/Tool/aixc++.py +++ b/src/engine/SCons/Tool/aixc++.py @@ -31,7 +31,7 @@ selection method.  # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.  # -__revision__ = "src/engine/SCons/Tool/aixc++.py e724ae812eb96f4858a132f5b8c769724744faf6 2019-07-21 00:04:47 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 --git a/src/engine/SCons/Tool/aixc++.xml b/src/engine/SCons/Tool/aixc++.xml index 0d50ae9..549675c 100644 --- a/src/engine/SCons/Tool/aixc++.xml +++ b/src/engine/SCons/Tool/aixc++.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="UTF-8"?> +<?xml version="1.0"?>  <!--  Copyright (c) 2001 - 2019 The SCons Foundation diff --git a/src/engine/SCons/Tool/aixcc.py b/src/engine/SCons/Tool/aixcc.py index 349a40a..e7bc1ca 100644 --- a/src/engine/SCons/Tool/aixcc.py +++ b/src/engine/SCons/Tool/aixcc.py @@ -30,7 +30,7 @@ selection method.  # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.  # -__revision__ = "src/engine/SCons/Tool/aixcc.py e724ae812eb96f4858a132f5b8c769724744faf6 2019-07-21 00:04:47 bdeegan" +__revision__ = "src/engine/SCons/Tool/aixcc.py bee7caf9defd6e108fc2998a2520ddb36a967691 2019-12-17 02:07:09 bdeegan"  import os.path diff --git a/src/engine/SCons/Tool/aixcc.xml b/src/engine/SCons/Tool/aixcc.xml index aa0e604..254ca68 100644 --- a/src/engine/SCons/Tool/aixcc.xml +++ b/src/engine/SCons/Tool/aixcc.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="UTF-8"?> +<?xml version="1.0"?>  <!--  Copyright (c) 2001 - 2019 The SCons Foundation diff --git a/src/engine/SCons/Tool/aixcxx.py b/src/engine/SCons/Tool/aixcxx.py index 0830e33..f4ee5fe 100644 --- a/src/engine/SCons/Tool/aixcxx.py +++ b/src/engine/SCons/Tool/aixcxx.py @@ -31,7 +31,7 @@ selection method.  # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.  # -__revision__ = "src/engine/SCons/Tool/aixcxx.py e724ae812eb96f4858a132f5b8c769724744faf6 2019-07-21 00:04:47 bdeegan" +__revision__ = "src/engine/SCons/Tool/aixcxx.py bee7caf9defd6e108fc2998a2520ddb36a967691 2019-12-17 02:07:09 bdeegan"  import os.path diff --git a/src/engine/SCons/Tool/aixf77.py b/src/engine/SCons/Tool/aixf77.py index d2c619a..908e8ad 100644 --- a/src/engine/SCons/Tool/aixf77.py +++ b/src/engine/SCons/Tool/aixf77.py @@ -30,7 +30,7 @@ selection method.  # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.  # -__revision__ = "src/engine/SCons/Tool/aixf77.py e724ae812eb96f4858a132f5b8c769724744faf6 2019-07-21 00:04:47 bdeegan" +__revision__ = "src/engine/SCons/Tool/aixf77.py bee7caf9defd6e108fc2998a2520ddb36a967691 2019-12-17 02:07:09 bdeegan"  import os.path diff --git a/src/engine/SCons/Tool/aixf77.xml b/src/engine/SCons/Tool/aixf77.xml index ee4d232..55d82d5 100644 --- a/src/engine/SCons/Tool/aixf77.xml +++ b/src/engine/SCons/Tool/aixf77.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="UTF-8"?> +<?xml version="1.0"?>  <!--  Copyright (c) 2001 - 2019 The SCons Foundation diff --git a/src/engine/SCons/Tool/aixlink.py b/src/engine/SCons/Tool/aixlink.py index ea2949f..67d65e8 100644 --- a/src/engine/SCons/Tool/aixlink.py +++ b/src/engine/SCons/Tool/aixlink.py @@ -30,7 +30,7 @@ selection method.  # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.  # -__revision__ = "src/engine/SCons/Tool/aixlink.py e724ae812eb96f4858a132f5b8c769724744faf6 2019-07-21 00:04:47 bdeegan" +__revision__ = "src/engine/SCons/Tool/aixlink.py bee7caf9defd6e108fc2998a2520ddb36a967691 2019-12-17 02:07:09 bdeegan"  import os  import os.path diff --git a/src/engine/SCons/Tool/aixlink.xml b/src/engine/SCons/Tool/aixlink.xml index 0f7fc62..95d93ae 100644 --- a/src/engine/SCons/Tool/aixlink.xml +++ b/src/engine/SCons/Tool/aixlink.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="UTF-8"?> +<?xml version="1.0"?>  <!--  Copyright (c) 2001 - 2019 The SCons Foundation diff --git a/src/engine/SCons/Tool/applelink.py b/src/engine/SCons/Tool/applelink.py index 011b29d..f432d61 100644 --- a/src/engine/SCons/Tool/applelink.py +++ b/src/engine/SCons/Tool/applelink.py @@ -31,7 +31,7 @@ selection method.  # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.  # -__revision__ = "src/engine/SCons/Tool/applelink.py e724ae812eb96f4858a132f5b8c769724744faf6 2019-07-21 00:04:47 bdeegan" +__revision__ = "src/engine/SCons/Tool/applelink.py bee7caf9defd6e108fc2998a2520ddb36a967691 2019-12-17 02:07:09 bdeegan"  import SCons.Util diff --git a/src/engine/SCons/Tool/applelink.xml b/src/engine/SCons/Tool/applelink.xml index c7209fa..f0e467a 100644 --- a/src/engine/SCons/Tool/applelink.xml +++ b/src/engine/SCons/Tool/applelink.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="UTF-8"?> +<?xml version="1.0"?>  <!--  Copyright (c) 2001 - 2019 The SCons Foundation diff --git a/src/engine/SCons/Tool/ar.py b/src/engine/SCons/Tool/ar.py index 459fb55..3d8cc8a 100644 --- a/src/engine/SCons/Tool/ar.py +++ b/src/engine/SCons/Tool/ar.py @@ -31,7 +31,7 @@ selection method.  # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.  # -__revision__ = "src/engine/SCons/Tool/ar.py e724ae812eb96f4858a132f5b8c769724744faf6 2019-07-21 00:04:47 bdeegan" +__revision__ = "src/engine/SCons/Tool/ar.py bee7caf9defd6e108fc2998a2520ddb36a967691 2019-12-17 02:07:09 bdeegan"  import SCons.Defaults  import SCons.Tool diff --git a/src/engine/SCons/Tool/ar.xml b/src/engine/SCons/Tool/ar.xml index 573c80b..02549a6 100644 --- a/src/engine/SCons/Tool/ar.xml +++ b/src/engine/SCons/Tool/ar.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="UTF-8"?> +<?xml version="1.0"?>  <!--  Copyright (c) 2001 - 2019 The SCons Foundation diff --git a/src/engine/SCons/Tool/as.py b/src/engine/SCons/Tool/as.py index 02139c5..3986a44 100644 --- a/src/engine/SCons/Tool/as.py +++ b/src/engine/SCons/Tool/as.py @@ -31,7 +31,7 @@ selection method.  # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.  # -__revision__ = "src/engine/SCons/Tool/as.py e724ae812eb96f4858a132f5b8c769724744faf6 2019-07-21 00:04:47 bdeegan" +__revision__ = "src/engine/SCons/Tool/as.py bee7caf9defd6e108fc2998a2520ddb36a967691 2019-12-17 02:07:09 bdeegan"  import SCons.Defaults  import SCons.Tool diff --git a/src/engine/SCons/Tool/as.xml b/src/engine/SCons/Tool/as.xml index c2d1814..49894c4 100644 --- a/src/engine/SCons/Tool/as.xml +++ b/src/engine/SCons/Tool/as.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="UTF-8"?> +<?xml version="1.0"?>  <!--  Copyright (c) 2001 - 2019 The SCons Foundation diff --git a/src/engine/SCons/Tool/bcc32.py b/src/engine/SCons/Tool/bcc32.py index e8ffbbf..7e0b47f 100644 --- a/src/engine/SCons/Tool/bcc32.py +++ b/src/engine/SCons/Tool/bcc32.py @@ -27,7 +27,7 @@ XXX  # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.  # -__revision__ = "src/engine/SCons/Tool/bcc32.py e724ae812eb96f4858a132f5b8c769724744faf6 2019-07-21 00:04:47 bdeegan" +__revision__ = "src/engine/SCons/Tool/bcc32.py bee7caf9defd6e108fc2998a2520ddb36a967691 2019-12-17 02:07:09 bdeegan"  import os  import os.path diff --git a/src/engine/SCons/Tool/bcc32.xml b/src/engine/SCons/Tool/bcc32.xml index b2d8394..25ea147 100644 --- a/src/engine/SCons/Tool/bcc32.xml +++ b/src/engine/SCons/Tool/bcc32.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="UTF-8"?> +<?xml version="1.0"?>  <!--  Copyright (c) 2001 - 2019 The SCons Foundation diff --git a/src/engine/SCons/Tool/c++.py b/src/engine/SCons/Tool/c++.py index 8819f82..00aee5d 100644 --- a/src/engine/SCons/Tool/c++.py +++ b/src/engine/SCons/Tool/c++.py @@ -30,7 +30,7 @@ selection method.  # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.  # -__revision__ = "src/engine/SCons/Tool/c++.py e724ae812eb96f4858a132f5b8c769724744faf6 2019-07-21 00:04:47 bdeegan" +__revision__ = "src/engine/SCons/Tool/c++.py bee7caf9defd6e108fc2998a2520ddb36a967691 2019-12-17 02:07:09 bdeegan"  #forward proxy to the preffered cxx version diff --git a/src/engine/SCons/Tool/c++.xml b/src/engine/SCons/Tool/c++.xml index c10438a..a550f6a 100644 --- a/src/engine/SCons/Tool/c++.xml +++ b/src/engine/SCons/Tool/c++.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="UTF-8"?> +<?xml version="1.0"?>  <!--  Copyright (c) 2001 - 2019 The SCons Foundation diff --git a/src/engine/SCons/Tool/cc.py b/src/engine/SCons/Tool/cc.py index 698d725..ffcb6e8 100644 --- a/src/engine/SCons/Tool/cc.py +++ b/src/engine/SCons/Tool/cc.py @@ -30,7 +30,7 @@ selection method.  # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.  # -__revision__ = "src/engine/SCons/Tool/cc.py e724ae812eb96f4858a132f5b8c769724744faf6 2019-07-21 00:04:47 bdeegan" +__revision__ = "src/engine/SCons/Tool/cc.py bee7caf9defd6e108fc2998a2520ddb36a967691 2019-12-17 02:07:09 bdeegan"  import SCons.Tool  import SCons.Defaults diff --git a/src/engine/SCons/Tool/cc.xml b/src/engine/SCons/Tool/cc.xml index 735f700..90adbcf 100644 --- a/src/engine/SCons/Tool/cc.xml +++ b/src/engine/SCons/Tool/cc.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="UTF-8"?> +<?xml version="1.0"?>  <!--  Copyright (c) 2001 - 2019 The SCons Foundation @@ -26,7 +26,7 @@ See its __doc__ string for a discussion of the format.  <tool name="cc">  <summary>  <para> -Sets construction variables for generic POSIX C copmilers. +Sets construction variables for generic POSIX C compilers.  </para>  </summary>  <sets> diff --git a/src/engine/SCons/Tool/clang.py b/src/engine/SCons/Tool/clang.py index f48afbf..35347b4 100644 --- a/src/engine/SCons/Tool/clang.py +++ b/src/engine/SCons/Tool/clang.py @@ -33,7 +33,7 @@ selection method.  # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.  # -# __revision__ = "src/engine/SCons/Tool/clang.py e724ae812eb96f4858a132f5b8c769724744faf6 2019-07-21 00:04:47 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 --git a/src/engine/SCons/Tool/clang.xml b/src/engine/SCons/Tool/clang.xml index a546946..ece6aa1 100644 --- a/src/engine/SCons/Tool/clang.xml +++ b/src/engine/SCons/Tool/clang.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="UTF-8"?> +<?xml version="1.0"?>  <!--  Copyright (c) 2001 - 2019 The SCons Foundation diff --git a/src/engine/SCons/Tool/clangxx.py b/src/engine/SCons/Tool/clangxx.py index d88874e..9292c21 100644 --- a/src/engine/SCons/Tool/clangxx.py +++ b/src/engine/SCons/Tool/clangxx.py @@ -33,7 +33,7 @@ selection method.  # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.  # -# __revision__ = "src/engine/SCons/Tool/clangxx.py e724ae812eb96f4858a132f5b8c769724744faf6 2019-07-21 00:04:47 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 --git a/src/engine/SCons/Tool/clangxx.xml b/src/engine/SCons/Tool/clangxx.xml index 7372389..5359484 100644 --- a/src/engine/SCons/Tool/clangxx.xml +++ b/src/engine/SCons/Tool/clangxx.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="UTF-8"?> +<?xml version="1.0"?>  <!--  Copyright (c) 2001 - 2019 The SCons Foundation diff --git a/src/engine/SCons/Tool/cvf.py b/src/engine/SCons/Tool/cvf.py index aa24d69..60d5a3d 100644 --- a/src/engine/SCons/Tool/cvf.py +++ b/src/engine/SCons/Tool/cvf.py @@ -27,7 +27,7 @@ Tool-specific initialization for the Compaq Visual Fortran compiler.  # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.  # -__revision__ = "src/engine/SCons/Tool/cvf.py e724ae812eb96f4858a132f5b8c769724744faf6 2019-07-21 00:04:47 bdeegan" +__revision__ = "src/engine/SCons/Tool/cvf.py bee7caf9defd6e108fc2998a2520ddb36a967691 2019-12-17 02:07:09 bdeegan"  from . import fortran diff --git a/src/engine/SCons/Tool/cvf.xml b/src/engine/SCons/Tool/cvf.xml index b56c23c..2dad3d2 100644 --- a/src/engine/SCons/Tool/cvf.xml +++ b/src/engine/SCons/Tool/cvf.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="UTF-8"?> +<?xml version="1.0"?>  <!--  Copyright (c) 2001 - 2019 The SCons Foundation diff --git a/src/engine/SCons/Tool/cxx.py b/src/engine/SCons/Tool/cxx.py index 2ac278e..aced177 100644 --- a/src/engine/SCons/Tool/cxx.py +++ b/src/engine/SCons/Tool/cxx.py @@ -30,7 +30,7 @@ selection method.  # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.  # -__revision__ = "src/engine/SCons/Tool/cxx.py e724ae812eb96f4858a132f5b8c769724744faf6 2019-07-21 00:04:47 bdeegan" +__revision__ = "src/engine/SCons/Tool/cxx.py bee7caf9defd6e108fc2998a2520ddb36a967691 2019-12-17 02:07:09 bdeegan"  import os.path diff --git a/src/engine/SCons/Tool/cyglink.xml b/src/engine/SCons/Tool/cyglink.xml index a0aefac..7b9676f 100644 --- a/src/engine/SCons/Tool/cyglink.xml +++ b/src/engine/SCons/Tool/cyglink.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="UTF-8"?> +<?xml version="1.0"?>  <!--  Copyright (c) 2001 - 2019 The SCons Foundation diff --git a/src/engine/SCons/Tool/default.py b/src/engine/SCons/Tool/default.py index 866b823..355538f 100644 --- a/src/engine/SCons/Tool/default.py +++ b/src/engine/SCons/Tool/default.py @@ -31,7 +31,7 @@ selection method.  # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.  # -__revision__ = "src/engine/SCons/Tool/default.py e724ae812eb96f4858a132f5b8c769724744faf6 2019-07-21 00:04:47 bdeegan" +__revision__ = "src/engine/SCons/Tool/default.py bee7caf9defd6e108fc2998a2520ddb36a967691 2019-12-17 02:07:09 bdeegan"  import SCons.Tool diff --git a/src/engine/SCons/Tool/default.xml b/src/engine/SCons/Tool/default.xml index 8e1ed21..0d8f460 100644 --- a/src/engine/SCons/Tool/default.xml +++ b/src/engine/SCons/Tool/default.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="UTF-8"?> +<?xml version="1.0"?>  <!--  Copyright (c) 2001 - 2019 The SCons Foundation @@ -26,10 +26,91 @@ See its __doc__ string for a discussion of the format.  <tool name="default">  <summary>  <para> -Sets variables by calling a default list of Tool modules -for the platform on which SCons is running. +Sets &consvars; for a default list of Tool modules. +Use <emphasis role="bold">default</emphasis> +in the tools list to retain the original defaults, +since the <parameter>tools</parameter> parameter +is treated as a literal statement of the tools +to be made available in that &consenv;, not an addition.  </para> + +<para> +The list of tools selected by default is not static, +but is dependent both on +the platform and on the software installed on the platform. +Some tools will not initialize if an underlying command is +not found, and some tools are selected from a list of choices +on a first-found basis. The finished tool list can be +examined by inspecting the <envar>TOOLS</envar> &consvar; +in the &consenv;. +</para> + +<para> +On all platforms, all tools from the following list +are selected whose respective conditions are met: +filesystem, wix, lex, yacc, rpcgen, swig, +jar, javac, javah, rmic, dvipdf, dvips, gs, +tex, latex, pdflatex, pdftex, tar, zip, textfile. +</para> + +<para> +On Linux systems, the default tools list selects +(first-found): a C compiler from +gcc, intelc, icc, cc; +a C++ compiler from +g++, intelc, icc, cxx; +an assembler from +gas, nasm, masm; +a linker from +gnulink, ilink; +a Fortran compiler from +gfortran, g77, ifort, ifl, f95, f90, f77; +and a static archiver 'ar'. +It also selects all found from the list +m4, rpm. +</para> + +<para> +On Windows systems, the default tools list selects +(first-found): a C compiler from +msvc, mingw, gcc, intelc, icl, icc, cc, bcc32; +a C++ compiler from +msvc, intelc, icc, g++, cxx, bcc32; +an assembler from +masm, nasm, gas, 386asm; +a linker from +mslink, gnulink, ilink, linkloc, ilink32; +a Fortran compiler from +gfortran, g77, ifl, cvf, f95, f90, fortran; +and a static archiver from +mslib, ar, tlib; +It also selects all found from the list +msvs, midl. +</para> + +<para> +On MacOS systems, the default tools list selects +(first-found): a C compiler from +gcc, cc; +a C++ compiler from +g++, cxx; +an assembler 'as'; +a linker from +applelink, gnulink; +a Fortran compiler from +gfortran, f95, f90, g77; +and a static archiver ar. +It also selects all found from the list +m4, rpm. +</para> + +<para> +Default lists for other platforms can be found by +examining the &scons; +source code (see +<filename>SCons/Tool/__init__.py</filename>). +</para> +  </summary>  </tool> -  </sconsdoc> diff --git a/src/engine/SCons/Tool/dmd.py b/src/engine/SCons/Tool/dmd.py index befcd22..74c8673 100644 --- a/src/engine/SCons/Tool/dmd.py +++ b/src/engine/SCons/Tool/dmd.py @@ -53,7 +53,7 @@ Lib tool variables:  # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.  # -__revision__ = "src/engine/SCons/Tool/dmd.py e724ae812eb96f4858a132f5b8c769724744faf6 2019-07-21 00:04:47 bdeegan" +__revision__ = "src/engine/SCons/Tool/dmd.py bee7caf9defd6e108fc2998a2520ddb36a967691 2019-12-17 02:07:09 bdeegan"  import os  import subprocess diff --git a/src/engine/SCons/Tool/dmd.xml b/src/engine/SCons/Tool/dmd.xml index 5149503..f7cc69d 100644 --- a/src/engine/SCons/Tool/dmd.xml +++ b/src/engine/SCons/Tool/dmd.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="UTF-8"?> +<?xml version="1.0"?>  <!--  Copyright (c) 2001 - 2019 The SCons Foundation @@ -73,299 +73,4 @@ Sets construction variables for D language compiler DMD.  </uses>  </tool> -<cvar name="DC"> -<summary> -<para> -The D compiler to use. -</para> -</summary> -</cvar> - -<cvar name="DCOM"> -<summary> -<para> -  The command line used to compile a D file to an object file. -  Any options specified in the &cv-link-DFLAGS; construction variable -  is included on this command line. -</para> -</summary> -</cvar> - -<cvar name="DDEBUG"> -<summary> -<para> -  List of debug tags to enable when compiling. -</para> -</summary> -</cvar> - -<cvar name="DFLAGS"> -<summary> -<para> -  General options that are passed to the D compiler. -</para> -</summary> -</cvar> - -<cvar name="DLIB"> -<summary> -<para> -  Name of the lib tool to use for D codes. -</para> -</summary> -</cvar> - -<cvar name="DLIBCOM"> -<summary> -<para> -  The command line to use when creating libraries. -</para> -</summary> -</cvar> - -<cvar name="DLINK"> -<summary> -<para> -  Name of the linker to use for linking systems including D sources. -</para> -</summary> -</cvar> - -<cvar name="DLINKCOM"> -<summary> -<para> -  The command line to use when linking systems including D sources. -</para> -</summary> -</cvar> - -<cvar name="DLINKFLAGS"> -<summary> -<para> -List of linker flags. -</para> -</summary> -</cvar> - -<cvar name="DPATH"> -<summary> -<para> -  List of paths to search for import modules. -</para> -</summary> -</cvar> - -<cvar name="DVERSIONS"> -<summary> -<para> -  List of version tags to enable when compiling. -</para> -</summary> -</cvar> - -<cvar name="SHDC"> -<summary> -<para> -  The name of the compiler to use when compiling D source -  destined to be in a shared objects. -</para> -</summary> -</cvar> - -<cvar name="SHDCOM"> -<summary> -<para> -  The command line to use when compiling code to be part of shared objects. -</para> -</summary> -</cvar> - -<cvar name="SHDLINK"> -<summary> -<para> -  The linker to use when creating shared objects for code bases -  include D sources. -</para> -</summary> -</cvar> - -<cvar name="SHDLINKCOM"> -<summary> -<para> -  The command line to use when generating shared objects. -</para> -</summary> -</cvar> - -<cvar name="SHDLINKFLAGS"> -<summary> -<para> -  The list of flags to use when generating a shared object. -</para> -</summary> -</cvar> - -<cvar name="DVERSUFFIX"> -  <summary> -    <para> -      DVERSUFFIX. -    </para> - </summary> -</cvar> - -<cvar name="DVERPREFIX"> -  <summary> -    <para> -      DVERPREFIX. -    </para> - </summary> -</cvar> - -<cvar name="DLINKFLAGSUFFIX"> -  <summary> -    <para> -      DLINKFLAGSUFFIX. -    </para> - </summary> -</cvar> - -<cvar name="DLINKFLAGPREFIX"> -  <summary> -    <para> -      DLINKFLAGPREFIX. -    </para> - </summary> -</cvar> - -<cvar name="DLIBLINKSUFFIX"> -  <summary> -    <para> -      DLIBLINKSUFFIX. -    </para> - </summary> -</cvar> - -<cvar name="DLIBLINKPREFIX"> -  <summary> -    <para> -      DLIBLINKPREFIX. -    </para> - </summary> -</cvar> - -<cvar name="DLIBFLAGSUFFIX"> -  <summary> -    <para> -      DLIBFLAGSUFFIX. -    </para> - </summary> -</cvar> - -<cvar name="DLIBFLAGPREFIX"> -  <summary> -    <para> -      DLIBFLAGPREFIX. -    </para> - </summary> -</cvar> - -<cvar name="DLIBDIRSUFFIX"> -  <summary> -    <para> -      DLIBLINKSUFFIX. -    </para> - </summary> -</cvar> - -<cvar name="DLIBDIRPREFIX"> -  <summary> -    <para> -      DLIBLINKPREFIX. -    </para> - </summary> -</cvar> - -<cvar name="DINCSUFFIX"> -  <summary> -    <para> -      DLIBFLAGSUFFIX. -    </para> - </summary> -</cvar> - - -<cvar name="DINCPREFIX"> -  <summary> -    <para> -      DINCPREFIX. -    </para> - </summary> -</cvar> - -<cvar name="DFLAGSUFFIX"> -  <summary> -    <para> -      DFLAGSUFFIX. -    </para> - </summary> -</cvar> - -<cvar name="DFLAGPREFIX"> -  <summary> -    <para> -      DFLAGPREFIX. -    </para> - </summary> -</cvar> - -<cvar name="DFILESUFFIX"> -  <summary> -    <para> -      DFILESUFFIX. -    </para> - </summary> -</cvar> - -<cvar name="DDEBUGPREFIX"> -  <summary> -    <para> -      DDEBUGPREFIX. -    </para> - </summary> -</cvar> - -<cvar name="DDEBUGSUFFIX"> -  <summary> -    <para> -      DDEBUGSUFFIX. -    </para> - </summary> -</cvar> - -<builder name="ProgramAllAtOnce"> -  <summary> -    <para> -      Builds an executable from D sources without first creating individual -      objects for each file. -    </para> -    <para> -      D sources can be compiled file-by-file as C and C++ source are, and -      D is integrated into the &scons; Object and Program builders for -      this model of build. D codes can though do whole source -      meta-programming (some of the testing frameworks do this). For this -      it is imperative that all sources are compiled and linked in a single call of -      the D compiler. This builder serves that purpose. -    </para> -    <example_commands> -      env.ProgramAllAtOnce('executable', ['mod_a.d, mod_b.d', 'mod_c.d']) -    </example_commands> -    <para> -      This command will compile the modules mod_a, mod_b, and mod_c in a -      single compilation process without first creating object files for -      the modules. Some of the D compilers will create executable.o others -      will not. -    </para> -  </summary> -</builder> -  </sconsdoc> diff --git a/src/engine/SCons/Tool/docbook/__init__.xml b/src/engine/SCons/Tool/docbook/__init__.xml index 3110649..cbac169 100644 --- a/src/engine/SCons/Tool/docbook/__init__.xml +++ b/src/engine/SCons/Tool/docbook/__init__.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="UTF-8"?> +<?xml version="1.0"?>  <!--  Copyright (c) 2001 - 2019 The SCons Foundation diff --git a/src/engine/SCons/Tool/dvi.py b/src/engine/SCons/Tool/dvi.py index 5cd85ed..1a7f7af 100644 --- a/src/engine/SCons/Tool/dvi.py +++ b/src/engine/SCons/Tool/dvi.py @@ -27,7 +27,7 @@ Common DVI Builder definition for various other Tool modules that use it.  # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.  # -__revision__ = "src/engine/SCons/Tool/dvi.py e724ae812eb96f4858a132f5b8c769724744faf6 2019-07-21 00:04:47 bdeegan" +__revision__ = "src/engine/SCons/Tool/dvi.py bee7caf9defd6e108fc2998a2520ddb36a967691 2019-12-17 02:07:09 bdeegan"  import SCons.Builder  import SCons.Tool diff --git a/src/engine/SCons/Tool/dvi.xml b/src/engine/SCons/Tool/dvi.xml index 82ff01b..b5bfac9 100644 --- a/src/engine/SCons/Tool/dvi.xml +++ b/src/engine/SCons/Tool/dvi.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="UTF-8"?> +<?xml version="1.0"?>  <!--  Copyright (c) 2001 - 2019 The SCons Foundation diff --git a/src/engine/SCons/Tool/dvipdf.py b/src/engine/SCons/Tool/dvipdf.py index 32f57e6..6012e5b 100644 --- a/src/engine/SCons/Tool/dvipdf.py +++ b/src/engine/SCons/Tool/dvipdf.py @@ -30,7 +30,7 @@ selection method.  # 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 e724ae812eb96f4858a132f5b8c769724744faf6 2019-07-21 00:04:47 bdeegan" +__revision__ = "src/engine/SCons/Tool/dvipdf.py bee7caf9defd6e108fc2998a2520ddb36a967691 2019-12-17 02:07:09 bdeegan"  import SCons.Action  import SCons.Defaults diff --git a/src/engine/SCons/Tool/dvipdf.xml b/src/engine/SCons/Tool/dvipdf.xml index 683ca72..f43af93 100644 --- a/src/engine/SCons/Tool/dvipdf.xml +++ b/src/engine/SCons/Tool/dvipdf.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="UTF-8"?> +<?xml version="1.0"?>  <!--  Copyright (c) 2001 - 2019 The SCons Foundation diff --git a/src/engine/SCons/Tool/dvips.py b/src/engine/SCons/Tool/dvips.py index 988ecd3..9fce42c 100644 --- a/src/engine/SCons/Tool/dvips.py +++ b/src/engine/SCons/Tool/dvips.py @@ -31,7 +31,7 @@ selection method.  # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.  # -__revision__ = "src/engine/SCons/Tool/dvips.py e724ae812eb96f4858a132f5b8c769724744faf6 2019-07-21 00:04:47 bdeegan" +__revision__ = "src/engine/SCons/Tool/dvips.py bee7caf9defd6e108fc2998a2520ddb36a967691 2019-12-17 02:07:09 bdeegan"  import SCons.Action  import SCons.Builder diff --git a/src/engine/SCons/Tool/dvips.xml b/src/engine/SCons/Tool/dvips.xml index 9838db1..2dc91ba 100644 --- a/src/engine/SCons/Tool/dvips.xml +++ b/src/engine/SCons/Tool/dvips.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="UTF-8"?> +<?xml version="1.0"?>  <!--  Copyright (c) 2001 - 2019 The SCons Foundation diff --git a/src/engine/SCons/Tool/f03.py b/src/engine/SCons/Tool/f03.py index 541ec88..77a37b9 100644 --- a/src/engine/SCons/Tool/f03.py +++ b/src/engine/SCons/Tool/f03.py @@ -31,7 +31,7 @@ selection method.  # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.  # -__revision__ = "src/engine/SCons/Tool/f03.py e724ae812eb96f4858a132f5b8c769724744faf6 2019-07-21 00:04:47 bdeegan" +__revision__ = "src/engine/SCons/Tool/f03.py bee7caf9defd6e108fc2998a2520ddb36a967691 2019-12-17 02:07:09 bdeegan"  import SCons.Defaults  import SCons.Tool diff --git a/src/engine/SCons/Tool/f03.xml b/src/engine/SCons/Tool/f03.xml index af9da30..aed1584 100644 --- a/src/engine/SCons/Tool/f03.xml +++ b/src/engine/SCons/Tool/f03.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="UTF-8"?> +<?xml version="1.0"?>  <!--  Copyright (c) 2001 - 2019 The SCons Foundation diff --git a/src/engine/SCons/Tool/f08.py b/src/engine/SCons/Tool/f08.py index 5dc49da..e7318b9 100644 --- a/src/engine/SCons/Tool/f08.py +++ b/src/engine/SCons/Tool/f08.py @@ -33,7 +33,7 @@ from __future__ import absolute_import  # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.  # -__revision__ = "src/engine/SCons/Tool/f08.py e724ae812eb96f4858a132f5b8c769724744faf6 2019-07-21 00:04:47 bdeegan" +__revision__ = "src/engine/SCons/Tool/f08.py bee7caf9defd6e108fc2998a2520ddb36a967691 2019-12-17 02:07:09 bdeegan"  import SCons.Defaults  import SCons.Tool diff --git a/src/engine/SCons/Tool/f08.xml b/src/engine/SCons/Tool/f08.xml index 4c07890..00b8c11 100644 --- a/src/engine/SCons/Tool/f08.xml +++ b/src/engine/SCons/Tool/f08.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="UTF-8"?> +<?xml version="1.0"?>  <!--  Copyright (c) 2001 - 2019 The SCons Foundation diff --git a/src/engine/SCons/Tool/f77.py b/src/engine/SCons/Tool/f77.py index 6d60edf..0777822 100644 --- a/src/engine/SCons/Tool/f77.py +++ b/src/engine/SCons/Tool/f77.py @@ -31,7 +31,7 @@ selection method.  # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.  # -__revision__ = "src/engine/SCons/Tool/f77.py e724ae812eb96f4858a132f5b8c769724744faf6 2019-07-21 00:04:47 bdeegan" +__revision__ = "src/engine/SCons/Tool/f77.py bee7caf9defd6e108fc2998a2520ddb36a967691 2019-12-17 02:07:09 bdeegan"  import SCons.Defaults  import SCons.Scanner.Fortran diff --git a/src/engine/SCons/Tool/f77.xml b/src/engine/SCons/Tool/f77.xml index 7ce1159..4b76d02 100644 --- a/src/engine/SCons/Tool/f77.xml +++ b/src/engine/SCons/Tool/f77.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="UTF-8"?> +<?xml version="1.0"?>  <!--  Copyright (c) 2001 - 2019 The SCons Foundation diff --git a/src/engine/SCons/Tool/f90.py b/src/engine/SCons/Tool/f90.py index e0b5fae..6a370bd 100644 --- a/src/engine/SCons/Tool/f90.py +++ b/src/engine/SCons/Tool/f90.py @@ -31,7 +31,7 @@ selection method.  # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.  # -__revision__ = "src/engine/SCons/Tool/f90.py e724ae812eb96f4858a132f5b8c769724744faf6 2019-07-21 00:04:47 bdeegan" +__revision__ = "src/engine/SCons/Tool/f90.py bee7caf9defd6e108fc2998a2520ddb36a967691 2019-12-17 02:07:09 bdeegan"  import SCons.Defaults  import SCons.Scanner.Fortran diff --git a/src/engine/SCons/Tool/f90.xml b/src/engine/SCons/Tool/f90.xml index f8c1854..0de4b7d 100644 --- a/src/engine/SCons/Tool/f90.xml +++ b/src/engine/SCons/Tool/f90.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="UTF-8"?> +<?xml version="1.0"?>  <!--  Copyright (c) 2001 - 2019 The SCons Foundation diff --git a/src/engine/SCons/Tool/f95.py b/src/engine/SCons/Tool/f95.py index 9a1afdf..fca7d62 100644 --- a/src/engine/SCons/Tool/f95.py +++ b/src/engine/SCons/Tool/f95.py @@ -31,7 +31,7 @@ selection method.  # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.  # -__revision__ = "src/engine/SCons/Tool/f95.py e724ae812eb96f4858a132f5b8c769724744faf6 2019-07-21 00:04:47 bdeegan" +__revision__ = "src/engine/SCons/Tool/f95.py bee7caf9defd6e108fc2998a2520ddb36a967691 2019-12-17 02:07:09 bdeegan"  import SCons.Defaults  import SCons.Tool diff --git a/src/engine/SCons/Tool/f95.xml b/src/engine/SCons/Tool/f95.xml index a575ad0..186da78 100644 --- a/src/engine/SCons/Tool/f95.xml +++ b/src/engine/SCons/Tool/f95.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="UTF-8"?> +<?xml version="1.0"?>  <!--  Copyright (c) 2001 - 2019 The SCons Foundation diff --git a/src/engine/SCons/Tool/filesystem.py b/src/engine/SCons/Tool/filesystem.py index a625714..ea16abf 100644 --- a/src/engine/SCons/Tool/filesystem.py +++ b/src/engine/SCons/Tool/filesystem.py @@ -30,7 +30,7 @@ selection method.  # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.  # -__revision__ = "src/engine/SCons/Tool/filesystem.py e724ae812eb96f4858a132f5b8c769724744faf6 2019-07-21 00:04:47 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 --git a/src/engine/SCons/Tool/fortran.py b/src/engine/SCons/Tool/fortran.py index 1b09880..7b332c9 100644 --- a/src/engine/SCons/Tool/fortran.py +++ b/src/engine/SCons/Tool/fortran.py @@ -31,7 +31,7 @@ selection method.  # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.  # -__revision__ = "src/engine/SCons/Tool/fortran.py e724ae812eb96f4858a132f5b8c769724744faf6 2019-07-21 00:04:47 bdeegan" +__revision__ = "src/engine/SCons/Tool/fortran.py bee7caf9defd6e108fc2998a2520ddb36a967691 2019-12-17 02:07:09 bdeegan"  import re diff --git a/src/engine/SCons/Tool/fortran.xml b/src/engine/SCons/Tool/fortran.xml index 0fde8f1..1390bc5 100644 --- a/src/engine/SCons/Tool/fortran.xml +++ b/src/engine/SCons/Tool/fortran.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="UTF-8"?> +<?xml version="1.0"?>  <!--  Copyright (c) 2001 - 2019 The SCons Foundation diff --git a/src/engine/SCons/Tool/g++.py b/src/engine/SCons/Tool/g++.py index 8cf881f..eace13c 100644 --- a/src/engine/SCons/Tool/g++.py +++ b/src/engine/SCons/Tool/g++.py @@ -31,7 +31,7 @@ selection method.  # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.  # -__revision__ = "src/engine/SCons/Tool/g++.py e724ae812eb96f4858a132f5b8c769724744faf6 2019-07-21 00:04:47 bdeegan" +__revision__ = "src/engine/SCons/Tool/g++.py bee7caf9defd6e108fc2998a2520ddb36a967691 2019-12-17 02:07:09 bdeegan"  #forward proxy to the preffered cxx version diff --git a/src/engine/SCons/Tool/g++.xml b/src/engine/SCons/Tool/g++.xml index f997540..787ee86 100644 --- a/src/engine/SCons/Tool/g++.xml +++ b/src/engine/SCons/Tool/g++.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="UTF-8"?> +<?xml version="1.0"?>  <!--  Copyright (c) 2001 - 2019 The SCons Foundation diff --git a/src/engine/SCons/Tool/g77.py b/src/engine/SCons/Tool/g77.py index fc0bcba..f3f935d 100644 --- a/src/engine/SCons/Tool/g77.py +++ b/src/engine/SCons/Tool/g77.py @@ -31,7 +31,7 @@ selection method.  # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.  # -__revision__ = "src/engine/SCons/Tool/g77.py e724ae812eb96f4858a132f5b8c769724744faf6 2019-07-21 00:04:47 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 --git a/src/engine/SCons/Tool/g77.xml b/src/engine/SCons/Tool/g77.xml index 519dfaf..f639ed2 100644 --- a/src/engine/SCons/Tool/g77.xml +++ b/src/engine/SCons/Tool/g77.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="UTF-8"?> +<?xml version="1.0"?>  <!--  Copyright (c) 2001 - 2019 The SCons Foundation diff --git a/src/engine/SCons/Tool/gas.py b/src/engine/SCons/Tool/gas.py index c104e34..9b60201 100644 --- a/src/engine/SCons/Tool/gas.py +++ b/src/engine/SCons/Tool/gas.py @@ -31,7 +31,7 @@ selection method.  # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.  # -__revision__ = "src/engine/SCons/Tool/gas.py e724ae812eb96f4858a132f5b8c769724744faf6 2019-07-21 00:04:47 bdeegan" +__revision__ = "src/engine/SCons/Tool/gas.py bee7caf9defd6e108fc2998a2520ddb36a967691 2019-12-17 02:07:09 bdeegan"  try:      as_module = __import__('as', globals(), locals(), []) diff --git a/src/engine/SCons/Tool/gas.xml b/src/engine/SCons/Tool/gas.xml index 9cfe0de..e017e1c 100644 --- a/src/engine/SCons/Tool/gas.xml +++ b/src/engine/SCons/Tool/gas.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="UTF-8"?> +<?xml version="1.0"?>  <!--  Copyright (c) 2001 - 2019 The SCons Foundation diff --git a/src/engine/SCons/Tool/gcc.py b/src/engine/SCons/Tool/gcc.py index 2532427..65b9f57 100644 --- a/src/engine/SCons/Tool/gcc.py +++ b/src/engine/SCons/Tool/gcc.py @@ -31,7 +31,7 @@ selection method.  # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.  # -__revision__ = "src/engine/SCons/Tool/gcc.py e724ae812eb96f4858a132f5b8c769724744faf6 2019-07-21 00:04:47 bdeegan" +__revision__ = "src/engine/SCons/Tool/gcc.py bee7caf9defd6e108fc2998a2520ddb36a967691 2019-12-17 02:07:09 bdeegan"  from . import cc  import os diff --git a/src/engine/SCons/Tool/gcc.xml b/src/engine/SCons/Tool/gcc.xml index 8c29e9d..882bfdc 100644 --- a/src/engine/SCons/Tool/gcc.xml +++ b/src/engine/SCons/Tool/gcc.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="UTF-8"?> +<?xml version="1.0"?>  <!--  Copyright (c) 2001 - 2019 The SCons Foundation diff --git a/src/engine/SCons/Tool/gdc.py b/src/engine/SCons/Tool/gdc.py index 46a910c..4c392e8 100644 --- a/src/engine/SCons/Tool/gdc.py +++ b/src/engine/SCons/Tool/gdc.py @@ -48,7 +48,7 @@ Lib tool variables:  # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.  # -__revision__ = "src/engine/SCons/Tool/gdc.py e724ae812eb96f4858a132f5b8c769724744faf6 2019-07-21 00:04:47 bdeegan" +__revision__ = "src/engine/SCons/Tool/gdc.py bee7caf9defd6e108fc2998a2520ddb36a967691 2019-12-17 02:07:09 bdeegan"  import SCons.Action  import SCons.Defaults diff --git a/src/engine/SCons/Tool/gdc.xml b/src/engine/SCons/Tool/gdc.xml index ea31215..1c18fdb 100644 --- a/src/engine/SCons/Tool/gdc.xml +++ b/src/engine/SCons/Tool/gdc.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="UTF-8"?> +<?xml version="1.0"?>  <!--  Copyright (c) 2001 - 2019 The SCons Foundation @@ -73,299 +73,4 @@ Sets construction variables for the D language compiler GDC.  </uses>  </tool> -<cvar name="DC"> -<summary> -<para> -The D compiler to use. -</para> -</summary> -</cvar> - -<cvar name="DCOM"> -<summary> -<para> -  The command line used to compile a D file to an object file. -  Any options specified in the &cv-link-DFLAGS; construction variable -  is included on this command line. -</para> -</summary> -</cvar> - -<cvar name="DDEBUG"> -<summary> -<para> -  List of debug tags to enable when compiling. -</para> -</summary> -</cvar> - -<cvar name="DFLAGS"> -<summary> -<para> -  General options that are passed to the D compiler. -</para> -</summary> -</cvar> - -<cvar name="DLIB"> -<summary> -<para> -  Name of the lib tool to use for D codes. -</para> -</summary> -</cvar> - -<cvar name="DLIBCOM"> -<summary> -<para> -  The command line to use when creating libraries. -</para> -</summary> -</cvar> - -<cvar name="DLINK"> -<summary> -<para> -  Name of the linker to use for linking systems including D sources. -</para> -</summary> -</cvar> - -<cvar name="DLINKCOM"> -<summary> -<para> -  The command line to use when linking systems including D sources. -</para> -</summary> -</cvar> - -<cvar name="DLINKFLAGS"> -<summary> -<para> -List of linker flags. -</para> -</summary> -</cvar> - -<cvar name="DPATH"> -<summary> -<para> -  List of paths to search for import modules. -</para> -</summary> -</cvar> - -<cvar name="DVERSIONS"> -<summary> -<para> -  List of version tags to enable when compiling. -</para> -</summary> -</cvar> - -<cvar name="SHDC"> -<summary> -<para> -  The name of the compiler to use when compiling D source -  destined to be in a shared objects. -</para> -</summary> -</cvar> - -<cvar name="SHDCOM"> -<summary> -<para> -  The command line to use when compiling code to be part of shared objects. -</para> -</summary> -</cvar> - -<cvar name="SHDLINK"> -<summary> -<para> -  The linker to use when creating shared objects for code bases -  include D sources. -</para> -</summary> -</cvar> - -<cvar name="SHDLINKCOM"> -<summary> -<para> -  The command line to use when generating shared objects. -</para> -</summary> -</cvar> - -<cvar name="SHDLINKFLAGS"> -<summary> -<para> -  The list of flags to use when generating a shared object. -</para> -</summary> -</cvar> - -<cvar name="DVERSUFFIX"> -  <summary> -    <para> -      DVERSUFFIX. -    </para> - </summary> -</cvar> - -<cvar name="DVERPREFIX"> -  <summary> -    <para> -      DVERPREFIX. -    </para> - </summary> -</cvar> - -<cvar name="DLINKFLAGSUFFIX"> -  <summary> -    <para> -      DLINKFLAGSUFFIX. -    </para> - </summary> -</cvar> - -<cvar name="DLINKFLAGPREFIX"> -  <summary> -    <para> -      DLINKFLAGPREFIX. -    </para> - </summary> -</cvar> - -<cvar name="DLIBLINKSUFFIX"> -  <summary> -    <para> -      DLIBLINKSUFFIX. -    </para> - </summary> -</cvar> - -<cvar name="DLIBLINKPREFIX"> -  <summary> -    <para> -      DLIBLINKPREFIX. -    </para> - </summary> -</cvar> - -<cvar name="DLIBFLAGSUFFIX"> -  <summary> -    <para> -      DLIBFLAGSUFFIX. -    </para> - </summary> -</cvar> - -<cvar name="DLIBFLAGPREFIX"> -  <summary> -    <para> -      DLIBFLAGPREFIX. -    </para> - </summary> -</cvar> - -<cvar name="DLIBDIRSUFFIX"> -  <summary> -    <para> -      DLIBLINKSUFFIX. -    </para> - </summary> -</cvar> - -<cvar name="DLIBDIRPREFIX"> -  <summary> -    <para> -      DLIBLINKPREFIX. -    </para> - </summary> -</cvar> - -<cvar name="DINCSUFFIX"> -  <summary> -    <para> -      DLIBFLAGSUFFIX. -    </para> - </summary> -</cvar> - - -<cvar name="DINCPREFIX"> -  <summary> -    <para> -      DINCPREFIX. -    </para> - </summary> -</cvar> - -<cvar name="DFLAGSUFFIX"> -  <summary> -    <para> -      DFLAGSUFFIX. -    </para> - </summary> -</cvar> - -<cvar name="DFLAGPREFIX"> -  <summary> -    <para> -      DFLAGPREFIX. -    </para> - </summary> -</cvar> - -<cvar name="DFILESUFFIX"> -  <summary> -    <para> -      DFILESUFFIX. -    </para> - </summary> -</cvar> - -<cvar name="DDEBUGPREFIX"> -  <summary> -    <para> -      DDEBUGPREFIX. -    </para> - </summary> -</cvar> - -<cvar name="DDEBUGSUFFIX"> -  <summary> -    <para> -      DDEBUGSUFFIX. -    </para> - </summary> -</cvar> - -<builder name="ProgramAllAtOnce"> -  <summary> -    <para> -      Builds an executable from D sources without first creating individual -      objects for each file. -    </para> -    <para> -      D sources can be compiled file-by-file as C and C++ source are, and -      D is integrated into the &scons; Object and Program builders for -      this model of build. D codes can though do whole source -      meta-programming (some of the testing frameworks do this). For this -      it is imperative that all sources are compiled and linked in a single call of -      the D compiler. This builder serves that purpose. -    </para> -    <example_commands> -      env.ProgramAllAtOnce('executable', ['mod_a.d, mod_b.d', 'mod_c.d']) -    </example_commands> -    <para> -      This command will compile the modules mod_a, mod_b, and mod_c in a -      single compilation process without first creating object files for -      the modules. Some of the D compilers will create executable.o others -      will not. -    </para> -  </summary> -</builder> -  </sconsdoc> diff --git a/src/engine/SCons/Tool/gettext.xml b/src/engine/SCons/Tool/gettext.xml index fc3af69..c79fe4d 100644 --- a/src/engine/SCons/Tool/gettext.xml +++ b/src/engine/SCons/Tool/gettext.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="UTF-8"?> +<?xml version="1.0"?>  <!--  Copyright (c) 2001 - 2019 The SCons Foundation diff --git a/src/engine/SCons/Tool/gettext_tool.py b/src/engine/SCons/Tool/gettext_tool.py index 5fc0158..5891e40 100644 --- a/src/engine/SCons/Tool/gettext_tool.py +++ b/src/engine/SCons/Tool/gettext_tool.py @@ -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 e724ae812eb96f4858a132f5b8c769724744faf6 2019-07-21 00:04:47 bdeegan" +__revision__ = "src/engine/SCons/Tool/gettext_tool.py bee7caf9defd6e108fc2998a2520ddb36a967691 2019-12-17 02:07:09 bdeegan"  #############################################################################  def generate(env,**kw): diff --git a/src/engine/SCons/Tool/gfortran.py b/src/engine/SCons/Tool/gfortran.py index 8d02daa..986ebc6 100644 --- a/src/engine/SCons/Tool/gfortran.py +++ b/src/engine/SCons/Tool/gfortran.py @@ -32,7 +32,7 @@ selection method.  # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.  # -__revision__ = "src/engine/SCons/Tool/gfortran.py e724ae812eb96f4858a132f5b8c769724744faf6 2019-07-21 00:04:47 bdeegan" +__revision__ = "src/engine/SCons/Tool/gfortran.py bee7caf9defd6e108fc2998a2520ddb36a967691 2019-12-17 02:07:09 bdeegan"  import SCons.Util diff --git a/src/engine/SCons/Tool/gfortran.xml b/src/engine/SCons/Tool/gfortran.xml index 4e78495..20a6bb8 100644 --- a/src/engine/SCons/Tool/gfortran.xml +++ b/src/engine/SCons/Tool/gfortran.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="UTF-8"?> +<?xml version="1.0"?>  <!--  Copyright (c) 2001 - 2019 The SCons Foundation diff --git a/src/engine/SCons/Tool/gnulink.py b/src/engine/SCons/Tool/gnulink.py index 53f5081..0715ffc 100644 --- a/src/engine/SCons/Tool/gnulink.py +++ b/src/engine/SCons/Tool/gnulink.py @@ -31,7 +31,7 @@ selection method.  # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.  # -__revision__ = "src/engine/SCons/Tool/gnulink.py e724ae812eb96f4858a132f5b8c769724744faf6 2019-07-21 00:04:47 bdeegan" +__revision__ = "src/engine/SCons/Tool/gnulink.py bee7caf9defd6e108fc2998a2520ddb36a967691 2019-12-17 02:07:09 bdeegan"  import SCons.Util  import SCons.Tool diff --git a/src/engine/SCons/Tool/gnulink.xml b/src/engine/SCons/Tool/gnulink.xml index 5ef80eb..669ca34 100644 --- a/src/engine/SCons/Tool/gnulink.xml +++ b/src/engine/SCons/Tool/gnulink.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="UTF-8"?> +<?xml version="1.0"?>  <!--  Copyright (c) 2001 - 2019 The SCons Foundation diff --git a/src/engine/SCons/Tool/gs.py b/src/engine/SCons/Tool/gs.py index 371b810..3e9543f 100644 --- a/src/engine/SCons/Tool/gs.py +++ b/src/engine/SCons/Tool/gs.py @@ -31,7 +31,7 @@ selection method.  # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.  # -__revision__ = "src/engine/SCons/Tool/gs.py e724ae812eb96f4858a132f5b8c769724744faf6 2019-07-21 00:04:47 bdeegan" +__revision__ = "src/engine/SCons/Tool/gs.py bee7caf9defd6e108fc2998a2520ddb36a967691 2019-12-17 02:07:09 bdeegan"  import SCons.Action  import SCons.Builder diff --git a/src/engine/SCons/Tool/gs.xml b/src/engine/SCons/Tool/gs.xml index 185f1b4..ffaa16c 100644 --- a/src/engine/SCons/Tool/gs.xml +++ b/src/engine/SCons/Tool/gs.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="UTF-8"?> +<?xml version="1.0"?>  <!--  Copyright (c) 2001 - 2019 The SCons Foundation diff --git a/src/engine/SCons/Tool/gxx.py b/src/engine/SCons/Tool/gxx.py index d956c9f..2eb678d 100644 --- a/src/engine/SCons/Tool/gxx.py +++ b/src/engine/SCons/Tool/gxx.py @@ -31,7 +31,7 @@ selection method.  # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.  # -__revision__ = "src/engine/SCons/Tool/gxx.py e724ae812eb96f4858a132f5b8c769724744faf6 2019-07-21 00:04:47 bdeegan" +__revision__ = "src/engine/SCons/Tool/gxx.py bee7caf9defd6e108fc2998a2520ddb36a967691 2019-12-17 02:07:09 bdeegan"  import os.path  import re diff --git a/src/engine/SCons/Tool/hpc++.py b/src/engine/SCons/Tool/hpc++.py index 4ec2fe3..ee94e22 100644 --- a/src/engine/SCons/Tool/hpc++.py +++ b/src/engine/SCons/Tool/hpc++.py @@ -31,7 +31,7 @@ selection method.  # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.  # -__revision__ = "src/engine/SCons/Tool/hpc++.py e724ae812eb96f4858a132f5b8c769724744faf6 2019-07-21 00:04:47 bdeegan" +__revision__ = "src/engine/SCons/Tool/hpc++.py bee7caf9defd6e108fc2998a2520ddb36a967691 2019-12-17 02:07:09 bdeegan"  #forward proxy to the preffered cxx version diff --git a/src/engine/SCons/Tool/hpc++.xml b/src/engine/SCons/Tool/hpc++.xml index 8bb4a65..7bd251b 100644 --- a/src/engine/SCons/Tool/hpc++.xml +++ b/src/engine/SCons/Tool/hpc++.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="UTF-8"?> +<?xml version="1.0"?>  <!--  Copyright (c) 2001 - 2019 The SCons Foundation diff --git a/src/engine/SCons/Tool/hpcc.py b/src/engine/SCons/Tool/hpcc.py index 6a564b9..f118cf3 100644 --- a/src/engine/SCons/Tool/hpcc.py +++ b/src/engine/SCons/Tool/hpcc.py @@ -30,7 +30,7 @@ selection method.  # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.  # -__revision__ = "src/engine/SCons/Tool/hpcc.py e724ae812eb96f4858a132f5b8c769724744faf6 2019-07-21 00:04:47 bdeegan" +__revision__ = "src/engine/SCons/Tool/hpcc.py bee7caf9defd6e108fc2998a2520ddb36a967691 2019-12-17 02:07:09 bdeegan"  import SCons.Util diff --git a/src/engine/SCons/Tool/hpcc.xml b/src/engine/SCons/Tool/hpcc.xml index f8bece8..9e58484 100644 --- a/src/engine/SCons/Tool/hpcc.xml +++ b/src/engine/SCons/Tool/hpcc.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="UTF-8"?> +<?xml version="1.0"?>  <!--  Copyright (c) 2001 - 2019 The SCons Foundation diff --git a/src/engine/SCons/Tool/hpcxx.py b/src/engine/SCons/Tool/hpcxx.py index 8ee888f..e4dcb97 100644 --- a/src/engine/SCons/Tool/hpcxx.py +++ b/src/engine/SCons/Tool/hpcxx.py @@ -31,7 +31,7 @@ selection method.  # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.  # -__revision__ = "src/engine/SCons/Tool/hpcxx.py e724ae812eb96f4858a132f5b8c769724744faf6 2019-07-21 00:04:47 bdeegan" +__revision__ = "src/engine/SCons/Tool/hpcxx.py bee7caf9defd6e108fc2998a2520ddb36a967691 2019-12-17 02:07:09 bdeegan"  import os.path diff --git a/src/engine/SCons/Tool/hplink.py b/src/engine/SCons/Tool/hplink.py index 1afa95e..9f90071 100644 --- a/src/engine/SCons/Tool/hplink.py +++ b/src/engine/SCons/Tool/hplink.py @@ -30,7 +30,7 @@ selection method.  # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.  # -__revision__ = "src/engine/SCons/Tool/hplink.py e724ae812eb96f4858a132f5b8c769724744faf6 2019-07-21 00:04:47 bdeegan" +__revision__ = "src/engine/SCons/Tool/hplink.py bee7caf9defd6e108fc2998a2520ddb36a967691 2019-12-17 02:07:09 bdeegan"  import os  import os.path diff --git a/src/engine/SCons/Tool/hplink.xml b/src/engine/SCons/Tool/hplink.xml index f2b923b..bfdc3bb 100644 --- a/src/engine/SCons/Tool/hplink.xml +++ b/src/engine/SCons/Tool/hplink.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="UTF-8"?> +<?xml version="1.0"?>  <!--  Copyright (c) 2001 - 2019 The SCons Foundation diff --git a/src/engine/SCons/Tool/icc.py b/src/engine/SCons/Tool/icc.py index 8110a60..877a212 100644 --- a/src/engine/SCons/Tool/icc.py +++ b/src/engine/SCons/Tool/icc.py @@ -31,7 +31,7 @@ selection method.  # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.  # -__revision__ = "src/engine/SCons/Tool/icc.py e724ae812eb96f4858a132f5b8c769724744faf6 2019-07-21 00:04:47 bdeegan" +__revision__ = "src/engine/SCons/Tool/icc.py bee7caf9defd6e108fc2998a2520ddb36a967691 2019-12-17 02:07:09 bdeegan"  from . import cc diff --git a/src/engine/SCons/Tool/icc.xml b/src/engine/SCons/Tool/icc.xml index 8492fce..6f88ca8 100644 --- a/src/engine/SCons/Tool/icc.xml +++ b/src/engine/SCons/Tool/icc.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="UTF-8"?> +<?xml version="1.0"?>  <!--  Copyright (c) 2001 - 2019 The SCons Foundation diff --git a/src/engine/SCons/Tool/icl.py b/src/engine/SCons/Tool/icl.py index 29d5862..be67bdc 100644 --- a/src/engine/SCons/Tool/icl.py +++ b/src/engine/SCons/Tool/icl.py @@ -31,7 +31,7 @@ selection method.  # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.  # -__revision__ = "src/engine/SCons/Tool/icl.py e724ae812eb96f4858a132f5b8c769724744faf6 2019-07-21 00:04:47 bdeegan" +__revision__ = "src/engine/SCons/Tool/icl.py bee7caf9defd6e108fc2998a2520ddb36a967691 2019-12-17 02:07:09 bdeegan"  import SCons.Tool.intelc diff --git a/src/engine/SCons/Tool/icl.xml b/src/engine/SCons/Tool/icl.xml index 31e0bcc..c6d4c61 100644 --- a/src/engine/SCons/Tool/icl.xml +++ b/src/engine/SCons/Tool/icl.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="UTF-8"?> +<?xml version="1.0"?>  <!--  Copyright (c) 2001 - 2019 The SCons Foundation diff --git a/src/engine/SCons/Tool/ifl.py b/src/engine/SCons/Tool/ifl.py index 0eb7cda..2139b9f 100644 --- a/src/engine/SCons/Tool/ifl.py +++ b/src/engine/SCons/Tool/ifl.py @@ -31,7 +31,7 @@ selection method.  # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.  # -__revision__ = "src/engine/SCons/Tool/ifl.py e724ae812eb96f4858a132f5b8c769724744faf6 2019-07-21 00:04:47 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 --git a/src/engine/SCons/Tool/ifl.xml b/src/engine/SCons/Tool/ifl.xml index f78c9fd..260a74d 100644 --- a/src/engine/SCons/Tool/ifl.xml +++ b/src/engine/SCons/Tool/ifl.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="UTF-8"?> +<?xml version="1.0"?>  <!--  Copyright (c) 2001 - 2019 The SCons Foundation diff --git a/src/engine/SCons/Tool/ifort.py b/src/engine/SCons/Tool/ifort.py index 730e778..a248b3e 100644 --- a/src/engine/SCons/Tool/ifort.py +++ b/src/engine/SCons/Tool/ifort.py @@ -32,7 +32,7 @@ selection method.  # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.  # -__revision__ = "src/engine/SCons/Tool/ifort.py e724ae812eb96f4858a132f5b8c769724744faf6 2019-07-21 00:04:47 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 --git a/src/engine/SCons/Tool/ifort.xml b/src/engine/SCons/Tool/ifort.xml index 47a55e3..bb20c2a 100644 --- a/src/engine/SCons/Tool/ifort.xml +++ b/src/engine/SCons/Tool/ifort.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="UTF-8"?> +<?xml version="1.0"?>  <!--  Copyright (c) 2001 - 2019 The SCons Foundation diff --git a/src/engine/SCons/Tool/ilink.py b/src/engine/SCons/Tool/ilink.py index 7c69e72..289235c 100644 --- a/src/engine/SCons/Tool/ilink.py +++ b/src/engine/SCons/Tool/ilink.py @@ -31,7 +31,7 @@ selection method.  # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.  # -__revision__ = "src/engine/SCons/Tool/ilink.py e724ae812eb96f4858a132f5b8c769724744faf6 2019-07-21 00:04:47 bdeegan" +__revision__ = "src/engine/SCons/Tool/ilink.py bee7caf9defd6e108fc2998a2520ddb36a967691 2019-12-17 02:07:09 bdeegan"  import SCons.Defaults  import SCons.Tool diff --git a/src/engine/SCons/Tool/ilink.xml b/src/engine/SCons/Tool/ilink.xml index 731bdfb..213988c 100644 --- a/src/engine/SCons/Tool/ilink.xml +++ b/src/engine/SCons/Tool/ilink.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="UTF-8"?> +<?xml version="1.0"?>  <!--  Copyright (c) 2001 - 2019 The SCons Foundation diff --git a/src/engine/SCons/Tool/ilink32.py b/src/engine/SCons/Tool/ilink32.py index a1e12a6..33df790 100644 --- a/src/engine/SCons/Tool/ilink32.py +++ b/src/engine/SCons/Tool/ilink32.py @@ -27,7 +27,7 @@ XXX  # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.  # -__revision__ = "src/engine/SCons/Tool/ilink32.py e724ae812eb96f4858a132f5b8c769724744faf6 2019-07-21 00:04:47 bdeegan" +__revision__ = "src/engine/SCons/Tool/ilink32.py bee7caf9defd6e108fc2998a2520ddb36a967691 2019-12-17 02:07:09 bdeegan"  import SCons.Tool  import SCons.Tool.bcc32 diff --git a/src/engine/SCons/Tool/ilink32.xml b/src/engine/SCons/Tool/ilink32.xml index 3f273a8..cfcdec3 100644 --- a/src/engine/SCons/Tool/ilink32.xml +++ b/src/engine/SCons/Tool/ilink32.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="UTF-8"?> +<?xml version="1.0"?>  <!--  Copyright (c) 2001 - 2019 The SCons Foundation diff --git a/src/engine/SCons/Tool/install.py b/src/engine/SCons/Tool/install.py index c0a8917..f998baa 100644 --- a/src/engine/SCons/Tool/install.py +++ b/src/engine/SCons/Tool/install.py @@ -31,7 +31,7 @@ selection method.  #  from __future__ import print_function -__revision__ = "src/engine/SCons/Tool/install.py e724ae812eb96f4858a132f5b8c769724744faf6 2019-07-21 00:04:47 bdeegan" +__revision__ = "src/engine/SCons/Tool/install.py bee7caf9defd6e108fc2998a2520ddb36a967691 2019-12-17 02:07:09 bdeegan"  import os  import re diff --git a/src/engine/SCons/Tool/install.xml b/src/engine/SCons/Tool/install.xml index da2d4a0..e126c75 100644 --- a/src/engine/SCons/Tool/install.xml +++ b/src/engine/SCons/Tool/install.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="UTF-8"?> +<?xml version="1.0"?>  <!--  Copyright (c) 2001 - 2019 The SCons Foundation @@ -52,6 +52,22 @@ a builder.  <example_commands>  env.Install('/usr/local/bin', source = ['foo', 'bar'])  </example_commands> + +<para> +If the <option>--install-sandbox</option> command line +option is given, the target directory will be prefixed +by the directory path specified. +This is useful to test installs without installing to +a "live" location in the system. +</para> + +<para> +See also &FindInstalledFiles;. +For more thoughts on installation, see the User Guide +(particularly the section on Command-Line Targets +and the chapters on Installing Files and on Alias Targets). +</para> +  </summary>  </builder> diff --git a/src/engine/SCons/Tool/intelc.py b/src/engine/SCons/Tool/intelc.py index fdd9730..c45c71a 100644 --- a/src/engine/SCons/Tool/intelc.py +++ b/src/engine/SCons/Tool/intelc.py @@ -32,7 +32,7 @@ selection method.  # 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 e724ae812eb96f4858a132f5b8c769724744faf6 2019-07-21 00:04:47 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 get_intel_compiler_top(version, abi):  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 @@ def generate(env, version=None, abi=None, topdir=None, verbose=0):          # 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 --git a/src/engine/SCons/Tool/intelc.xml b/src/engine/SCons/Tool/intelc.xml index af77186..96a21ca 100644 --- a/src/engine/SCons/Tool/intelc.xml +++ b/src/engine/SCons/Tool/intelc.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="UTF-8"?> +<?xml version="1.0"?>  <!--  Copyright (c) 2001 - 2019 The SCons Foundation diff --git a/src/engine/SCons/Tool/ipkg.py b/src/engine/SCons/Tool/ipkg.py index 664c3a6..e1fad35 100644 --- a/src/engine/SCons/Tool/ipkg.py +++ b/src/engine/SCons/Tool/ipkg.py @@ -33,7 +33,7 @@ packages fake_root.  # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.  # -__revision__ = "src/engine/SCons/Tool/ipkg.py e724ae812eb96f4858a132f5b8c769724744faf6 2019-07-21 00:04:47 bdeegan" +__revision__ = "src/engine/SCons/Tool/ipkg.py bee7caf9defd6e108fc2998a2520ddb36a967691 2019-12-17 02:07:09 bdeegan"  import os diff --git a/src/engine/SCons/Tool/jar.py b/src/engine/SCons/Tool/jar.py index 98be08f..f2a328b 100644 --- a/src/engine/SCons/Tool/jar.py +++ b/src/engine/SCons/Tool/jar.py @@ -31,7 +31,7 @@ selection method.  # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.  # -__revision__ = "src/engine/SCons/Tool/jar.py e724ae812eb96f4858a132f5b8c769724744faf6 2019-07-21 00:04:47 bdeegan" +__revision__ = "src/engine/SCons/Tool/jar.py bee7caf9defd6e108fc2998a2520ddb36a967691 2019-12-17 02:07:09 bdeegan"  import os  import SCons.Subst diff --git a/src/engine/SCons/Tool/jar.xml b/src/engine/SCons/Tool/jar.xml index 73f6bcb..6961841 100644 --- a/src/engine/SCons/Tool/jar.xml +++ b/src/engine/SCons/Tool/jar.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="UTF-8"?> +<?xml version="1.0"?>  <!--  Copyright (c) 2001 - 2019 The SCons Foundation diff --git a/src/engine/SCons/Tool/javac.py b/src/engine/SCons/Tool/javac.py index 387afdb..aeb52ce 100644 --- a/src/engine/SCons/Tool/javac.py +++ b/src/engine/SCons/Tool/javac.py @@ -30,7 +30,7 @@ selection method.  # 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 e724ae812eb96f4858a132f5b8c769724744faf6 2019-07-21 00:04:47 bdeegan" +__revision__ = "src/engine/SCons/Tool/javac.py bee7caf9defd6e108fc2998a2520ddb36a967691 2019-12-17 02:07:09 bdeegan"  import os  import os.path diff --git a/src/engine/SCons/Tool/javac.xml b/src/engine/SCons/Tool/javac.xml index dc72f75..f504db3 100644 --- a/src/engine/SCons/Tool/javac.xml +++ b/src/engine/SCons/Tool/javac.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="UTF-8"?> +<?xml version="1.0"?>  <!--  Copyright (c) 2001 - 2019 The SCons Foundation diff --git a/src/engine/SCons/Tool/javah.py b/src/engine/SCons/Tool/javah.py index 251778d..b41c742 100644 --- a/src/engine/SCons/Tool/javah.py +++ b/src/engine/SCons/Tool/javah.py @@ -31,7 +31,7 @@ selection method.  # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.  # -__revision__ = "src/engine/SCons/Tool/javah.py e724ae812eb96f4858a132f5b8c769724744faf6 2019-07-21 00:04:47 bdeegan" +__revision__ = "src/engine/SCons/Tool/javah.py bee7caf9defd6e108fc2998a2520ddb36a967691 2019-12-17 02:07:09 bdeegan"  import os.path diff --git a/src/engine/SCons/Tool/javah.xml b/src/engine/SCons/Tool/javah.xml index f72a6cd..16f5e0a 100644 --- a/src/engine/SCons/Tool/javah.xml +++ b/src/engine/SCons/Tool/javah.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="UTF-8"?> +<?xml version="1.0"?>  <!--  Copyright (c) 2001 - 2019 The SCons Foundation diff --git a/src/engine/SCons/Tool/latex.py b/src/engine/SCons/Tool/latex.py index 3f1af08..6cfd93a 100644 --- a/src/engine/SCons/Tool/latex.py +++ b/src/engine/SCons/Tool/latex.py @@ -32,7 +32,7 @@ selection method.  # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.  # -__revision__ = "src/engine/SCons/Tool/latex.py e724ae812eb96f4858a132f5b8c769724744faf6 2019-07-21 00:04:47 bdeegan" +__revision__ = "src/engine/SCons/Tool/latex.py bee7caf9defd6e108fc2998a2520ddb36a967691 2019-12-17 02:07:09 bdeegan"  import SCons.Action  import SCons.Defaults diff --git a/src/engine/SCons/Tool/latex.xml b/src/engine/SCons/Tool/latex.xml index b4eb45a..352357a 100644 --- a/src/engine/SCons/Tool/latex.xml +++ b/src/engine/SCons/Tool/latex.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="UTF-8"?> +<?xml version="1.0"?>  <!--  Copyright (c) 2001 - 2019 The SCons Foundation diff --git a/src/engine/SCons/Tool/ldc.py b/src/engine/SCons/Tool/ldc.py index dda1a5e..639dd48 100644 --- a/src/engine/SCons/Tool/ldc.py +++ b/src/engine/SCons/Tool/ldc.py @@ -48,7 +48,7 @@ Lib tool variables:  # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.  # -__revision__ = "src/engine/SCons/Tool/ldc.py e724ae812eb96f4858a132f5b8c769724744faf6 2019-07-21 00:04:47 bdeegan" +__revision__ = "src/engine/SCons/Tool/ldc.py bee7caf9defd6e108fc2998a2520ddb36a967691 2019-12-17 02:07:09 bdeegan"  import os  import subprocess diff --git a/src/engine/SCons/Tool/ldc.xml b/src/engine/SCons/Tool/ldc.xml index 691145a..40c9714 100644 --- a/src/engine/SCons/Tool/ldc.xml +++ b/src/engine/SCons/Tool/ldc.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="UTF-8"?> +<?xml version="1.0"?>  <!--  Copyright (c) 2001 - 2019 The SCons Foundation @@ -73,299 +73,4 @@ Sets construction variables for the D language compiler LDC2.  </uses>  </tool> -<cvar name="DC"> -<summary> -<para> -The D compiler to use. -</para> -</summary> -</cvar> - -<cvar name="DCOM"> -<summary> -<para> -  The command line used to compile a D file to an object file. -  Any options specified in the &cv-link-DFLAGS; construction variable -  is included on this command line. -</para> -</summary> -</cvar> - -<cvar name="DDEBUG"> -<summary> -<para> -  List of debug tags to enable when compiling. -</para> -</summary> -</cvar> - -<cvar name="DFLAGS"> -<summary> -<para> -  General options that are passed to the D compiler. -</para> -</summary> -</cvar> - -<cvar name="DLIB"> -<summary> -<para> -  Name of the lib tool to use for D codes. -</para> -</summary> -</cvar> - -<cvar name="DLIBCOM"> -<summary> -<para> -  The command line to use when creating libraries. -</para> -</summary> -</cvar> - -<cvar name="DLINK"> -<summary> -<para> -  Name of the linker to use for linking systems including D sources. -</para> -</summary> -</cvar> - -<cvar name="DLINKCOM"> -<summary> -<para> -  The command line to use when linking systems including D sources. -</para> -</summary> -</cvar> - -<cvar name="DLINKFLAGS"> -<summary> -<para> -List of linker flags. -</para> -</summary> -</cvar> - -<cvar name="DPATH"> -<summary> -<para> -  List of paths to search for import modules. -</para> -</summary> -</cvar> - -<cvar name="DVERSIONS"> -<summary> -<para> -  List of version tags to enable when compiling. -</para> -</summary> -</cvar> - -<cvar name="SHDC"> -<summary> -<para> -  The name of the compiler to use when compiling D source -  destined to be in a shared objects. -</para> -</summary> -</cvar> - -<cvar name="SHDCOM"> -<summary> -<para> -  The command line to use when compiling code to be part of shared objects. -</para> -</summary> -</cvar> - -<cvar name="SHDLINK"> -<summary> -<para> -  The linker to use when creating shared objects for code bases -  include D sources. -</para> -</summary> -</cvar> - -<cvar name="SHDLINKCOM"> -<summary> -<para> -  The command line to use when generating shared objects. -</para> -</summary> -</cvar> - -<cvar name="SHDLINKFLAGS"> -<summary> -<para> -  The list of flags to use when generating a shared object. -</para> -</summary> -</cvar> - -<cvar name="DVERSUFFIX"> -  <summary> -    <para> -      DVERSUFFIX. -    </para> - </summary> -</cvar> - -<cvar name="DVERPREFIX"> -  <summary> -    <para> -      DVERPREFIX. -    </para> - </summary> -</cvar> - -<cvar name="DLINKFLAGSUFFIX"> -  <summary> -    <para> -      DLINKFLAGSUFFIX. -    </para> - </summary> -</cvar> - -<cvar name="DLINKFLAGPREFIX"> -  <summary> -    <para> -      DLINKFLAGPREFIX. -    </para> - </summary> -</cvar> - -<cvar name="DLIBLINKSUFFIX"> -  <summary> -    <para> -      DLIBLINKSUFFIX. -    </para> - </summary> -</cvar> - -<cvar name="DLIBLINKPREFIX"> -  <summary> -    <para> -      DLIBLINKPREFIX. -    </para> - </summary> -</cvar> - -<cvar name="DLIBFLAGSUFFIX"> -  <summary> -    <para> -      DLIBFLAGSUFFIX. -    </para> - </summary> -</cvar> - -<cvar name="DLIBFLAGPREFIX"> -  <summary> -    <para> -      DLIBFLAGPREFIX. -    </para> - </summary> -</cvar> - -<cvar name="DLIBDIRSUFFIX"> -  <summary> -    <para> -      DLIBLINKSUFFIX. -    </para> - </summary> -</cvar> - -<cvar name="DLIBDIRPREFIX"> -  <summary> -    <para> -      DLIBLINKPREFIX. -    </para> - </summary> -</cvar> - -<cvar name="DINCSUFFIX"> -  <summary> -    <para> -      DLIBFLAGSUFFIX. -    </para> - </summary> -</cvar> - - -<cvar name="DINCPREFIX"> -  <summary> -    <para> -      DINCPREFIX. -    </para> - </summary> -</cvar> - -<cvar name="DFLAGSUFFIX"> -  <summary> -    <para> -      DFLAGSUFFIX. -    </para> - </summary> -</cvar> - -<cvar name="DFLAGPREFIX"> -  <summary> -    <para> -      DFLAGPREFIX. -    </para> - </summary> -</cvar> - -<cvar name="DFILESUFFIX"> -  <summary> -    <para> -      DFILESUFFIX. -    </para> - </summary> -</cvar> - -<cvar name="DDEBUGPREFIX"> -  <summary> -    <para> -      DDEBUGPREFIX. -    </para> - </summary> -</cvar> - -<cvar name="DDEBUGSUFFIX"> -  <summary> -    <para> -      DDEBUGSUFFIX. -    </para> - </summary> -</cvar> - -<builder name="ProgramAllAtOnce"> -  <summary> -    <para> -      Builds an executable from D sources without first creating individual -      objects for each file. -    </para> -    <para> -      D sources can be compiled file-by-file as C and C++ source are, and -      D is integrated into the &scons; Object and Program builders for -      this model of build. D codes can though do whole source -      meta-programming (some of the testing frameworks do this). For this -      it is imperative that all sources are compiled and linked in a single call of -      the D compiler. This builder serves that purpose. -    </para> -    <example_commands> -      env.ProgramAllAtOnce('executable', ['mod_a.d, mod_b.d', 'mod_c.d']) -    </example_commands> -    <para> -      This command will compile the modules mod_a, mod_b, and mod_c in a -      single compilation process without first creating object files for -      the modules. Some of the D compilers will create executable.o others -      will not. -    </para> -  </summary> -</builder> -  </sconsdoc> diff --git a/src/engine/SCons/Tool/lex.py b/src/engine/SCons/Tool/lex.py index 4831776..db1ca6d 100644 --- a/src/engine/SCons/Tool/lex.py +++ b/src/engine/SCons/Tool/lex.py @@ -31,7 +31,7 @@ selection method.  # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.  # -__revision__ = "src/engine/SCons/Tool/lex.py e724ae812eb96f4858a132f5b8c769724744faf6 2019-07-21 00:04:47 bdeegan" +__revision__ = "src/engine/SCons/Tool/lex.py bee7caf9defd6e108fc2998a2520ddb36a967691 2019-12-17 02:07:09 bdeegan"  import os.path  import sys diff --git a/src/engine/SCons/Tool/lex.xml b/src/engine/SCons/Tool/lex.xml index 0d044b8..031da84 100644 --- a/src/engine/SCons/Tool/lex.xml +++ b/src/engine/SCons/Tool/lex.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="UTF-8"?> +<?xml version="1.0"?>  <!--  Copyright (c) 2001 - 2019 The SCons Foundation diff --git a/src/engine/SCons/Tool/link.py b/src/engine/SCons/Tool/link.py index dcaf91f..c712732 100644 --- a/src/engine/SCons/Tool/link.py +++ b/src/engine/SCons/Tool/link.py @@ -32,7 +32,7 @@ selection method.  #  from __future__ import print_function -__revision__ = "src/engine/SCons/Tool/link.py e724ae812eb96f4858a132f5b8c769724744faf6 2019-07-21 00:04:47 bdeegan" +__revision__ = "src/engine/SCons/Tool/link.py bee7caf9defd6e108fc2998a2520ddb36a967691 2019-12-17 02:07:09 bdeegan"  import sys  import re diff --git a/src/engine/SCons/Tool/link.xml b/src/engine/SCons/Tool/link.xml index a8b6954..1076c62 100644 --- a/src/engine/SCons/Tool/link.xml +++ b/src/engine/SCons/Tool/link.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="UTF-8"?> +<?xml version="1.0"?>  <!--  Copyright (c) 2001 - 2019 The SCons Foundation @@ -26,7 +26,9 @@ See its __doc__ string for a discussion of the format.  <tool name="link">  <summary>  <para> -Sets construction variables for generic POSIX linkers. +Sets construction variables for generic POSIX linkers. This is +a "smart" linker tool which selects a compiler to complete the linking +based on the types of source files.  </para>  </summary>  <sets> diff --git a/src/engine/SCons/Tool/linkloc.py b/src/engine/SCons/Tool/linkloc.py index 42d010d..508b09a 100644 --- a/src/engine/SCons/Tool/linkloc.py +++ b/src/engine/SCons/Tool/linkloc.py @@ -32,7 +32,7 @@ selection method.  # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.  # -__revision__ = "src/engine/SCons/Tool/linkloc.py e724ae812eb96f4858a132f5b8c769724744faf6 2019-07-21 00:04:47 bdeegan" +__revision__ = "src/engine/SCons/Tool/linkloc.py bee7caf9defd6e108fc2998a2520ddb36a967691 2019-12-17 02:07:09 bdeegan"  import os.path  import re diff --git a/src/engine/SCons/Tool/linkloc.xml b/src/engine/SCons/Tool/linkloc.xml index 567ed66..8127f1b 100644 --- a/src/engine/SCons/Tool/linkloc.xml +++ b/src/engine/SCons/Tool/linkloc.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="UTF-8"?> +<?xml version="1.0"?>  <!--  Copyright (c) 2001 - 2019 The SCons Foundation diff --git a/src/engine/SCons/Tool/m4.py b/src/engine/SCons/Tool/m4.py index 0ecc82a..b71f6be 100644 --- a/src/engine/SCons/Tool/m4.py +++ b/src/engine/SCons/Tool/m4.py @@ -31,7 +31,7 @@ selection method.  # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.  # -__revision__ = "src/engine/SCons/Tool/m4.py e724ae812eb96f4858a132f5b8c769724744faf6 2019-07-21 00:04:47 bdeegan" +__revision__ = "src/engine/SCons/Tool/m4.py bee7caf9defd6e108fc2998a2520ddb36a967691 2019-12-17 02:07:09 bdeegan"  import SCons.Action  import SCons.Builder diff --git a/src/engine/SCons/Tool/m4.xml b/src/engine/SCons/Tool/m4.xml index f7e81e5..cb0cd6d 100644 --- a/src/engine/SCons/Tool/m4.xml +++ b/src/engine/SCons/Tool/m4.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="UTF-8"?> +<?xml version="1.0"?>  <!--  Copyright (c) 2001 - 2019 The SCons Foundation diff --git a/src/engine/SCons/Tool/masm.py b/src/engine/SCons/Tool/masm.py index cf147a7..0897714 100644 --- a/src/engine/SCons/Tool/masm.py +++ b/src/engine/SCons/Tool/masm.py @@ -31,7 +31,7 @@ selection method.  # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.  # -__revision__ = "src/engine/SCons/Tool/masm.py e724ae812eb96f4858a132f5b8c769724744faf6 2019-07-21 00:04:47 bdeegan" +__revision__ = "src/engine/SCons/Tool/masm.py bee7caf9defd6e108fc2998a2520ddb36a967691 2019-12-17 02:07:09 bdeegan"  import SCons.Defaults  import SCons.Tool diff --git a/src/engine/SCons/Tool/masm.xml b/src/engine/SCons/Tool/masm.xml index 1760252..ede5422 100644 --- a/src/engine/SCons/Tool/masm.xml +++ b/src/engine/SCons/Tool/masm.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="UTF-8"?> +<?xml version="1.0"?>  <!--  Copyright (c) 2001 - 2019 The SCons Foundation diff --git a/src/engine/SCons/Tool/midl.py b/src/engine/SCons/Tool/midl.py index f75204a..5ec5974 100644 --- a/src/engine/SCons/Tool/midl.py +++ b/src/engine/SCons/Tool/midl.py @@ -31,7 +31,7 @@ selection method.  # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.  # -__revision__ = "src/engine/SCons/Tool/midl.py e724ae812eb96f4858a132f5b8c769724744faf6 2019-07-21 00:04:47 bdeegan" +__revision__ = "src/engine/SCons/Tool/midl.py bee7caf9defd6e108fc2998a2520ddb36a967691 2019-12-17 02:07:09 bdeegan"  import SCons.Action  import SCons.Builder diff --git a/src/engine/SCons/Tool/midl.xml b/src/engine/SCons/Tool/midl.xml index 717eb38..73e680a 100644 --- a/src/engine/SCons/Tool/midl.xml +++ b/src/engine/SCons/Tool/midl.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="UTF-8"?> +<?xml version="1.0"?>  <!--  Copyright (c) 2001 - 2019 The SCons Foundation @@ -86,7 +86,7 @@ The command line used to pass files to the Microsoft IDL compiler.  <summary>  <para>  The string displayed when -the Microsoft IDL copmiler is called. +the Microsoft IDL compiler is called.  If this is not set, then &cv-link-MIDLCOM; (the command line) is displayed.  </para>  </summary> diff --git a/src/engine/SCons/Tool/mingw.py b/src/engine/SCons/Tool/mingw.py index 8410d2f..3152bf2 100644 --- a/src/engine/SCons/Tool/mingw.py +++ b/src/engine/SCons/Tool/mingw.py @@ -31,7 +31,7 @@ selection method.  # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.  # -__revision__ = "src/engine/SCons/Tool/mingw.py e724ae812eb96f4858a132f5b8c769724744faf6 2019-07-21 00:04:47 bdeegan" +__revision__ = "src/engine/SCons/Tool/mingw.py bee7caf9defd6e108fc2998a2520ddb36a967691 2019-12-17 02:07:09 bdeegan"  import os  import os.path diff --git a/src/engine/SCons/Tool/mingw.xml b/src/engine/SCons/Tool/mingw.xml index b1f028d..4becde2 100644 --- a/src/engine/SCons/Tool/mingw.xml +++ b/src/engine/SCons/Tool/mingw.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="UTF-8"?> +<?xml version="1.0"?>  <!--  Copyright (c) 2001 - 2019 The SCons Foundation diff --git a/src/engine/SCons/Tool/msgfmt.py b/src/engine/SCons/Tool/msgfmt.py index c8141a0..1ee45e7 100644 --- a/src/engine/SCons/Tool/msgfmt.py +++ b/src/engine/SCons/Tool/msgfmt.py @@ -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 e724ae812eb96f4858a132f5b8c769724744faf6 2019-07-21 00:04:47 bdeegan" +__revision__ = "src/engine/SCons/Tool/msgfmt.py bee7caf9defd6e108fc2998a2520ddb36a967691 2019-12-17 02:07:09 bdeegan"  from SCons.Builder import BuilderBase  ############################################################################# diff --git a/src/engine/SCons/Tool/msgfmt.xml b/src/engine/SCons/Tool/msgfmt.xml index 67a8e0d..d185933 100644 --- a/src/engine/SCons/Tool/msgfmt.xml +++ b/src/engine/SCons/Tool/msgfmt.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="UTF-8"?> +<?xml version="1.0"?>  <!--  Copyright (c) 2001 - 2019 The SCons Foundation diff --git a/src/engine/SCons/Tool/msginit.py b/src/engine/SCons/Tool/msginit.py index 69e803a..8ce9f02 100644 --- a/src/engine/SCons/Tool/msginit.py +++ b/src/engine/SCons/Tool/msginit.py @@ -24,7 +24,7 @@ Tool specific initialization of msginit tool.  # 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 e724ae812eb96f4858a132f5b8c769724744faf6 2019-07-21 00:04:47 bdeegan" +__revision__ = "src/engine/SCons/Tool/msginit.py bee7caf9defd6e108fc2998a2520ddb36a967691 2019-12-17 02:07:09 bdeegan"  import SCons.Warnings  import SCons.Builder diff --git a/src/engine/SCons/Tool/msginit.xml b/src/engine/SCons/Tool/msginit.xml index d09dde1..9251d89 100644 --- a/src/engine/SCons/Tool/msginit.xml +++ b/src/engine/SCons/Tool/msginit.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="UTF-8"?> +<?xml version="1.0"?>  <!--  Copyright (c) 2001 - 2019 The SCons Foundation diff --git a/src/engine/SCons/Tool/msgmerge.py b/src/engine/SCons/Tool/msgmerge.py index 4254fa6..748041d 100644 --- a/src/engine/SCons/Tool/msgmerge.py +++ b/src/engine/SCons/Tool/msgmerge.py @@ -24,7 +24,7 @@ Tool specific initialization for `msgmerge` tool.  # 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 e724ae812eb96f4858a132f5b8c769724744faf6 2019-07-21 00:04:47 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 --git a/src/engine/SCons/Tool/msgmerge.xml b/src/engine/SCons/Tool/msgmerge.xml index 2944679..78fa397 100644 --- a/src/engine/SCons/Tool/msgmerge.xml +++ b/src/engine/SCons/Tool/msgmerge.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="UTF-8"?> +<?xml version="1.0"?>  <!--  Copyright (c) 2001 - 2019 The SCons Foundation diff --git a/src/engine/SCons/Tool/mslib.py b/src/engine/SCons/Tool/mslib.py index cecdbdc..88b5b1e 100644 --- a/src/engine/SCons/Tool/mslib.py +++ b/src/engine/SCons/Tool/mslib.py @@ -31,7 +31,7 @@ selection method.  # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.  # -__revision__ = "src/engine/SCons/Tool/mslib.py e724ae812eb96f4858a132f5b8c769724744faf6 2019-07-21 00:04:47 bdeegan" +__revision__ = "src/engine/SCons/Tool/mslib.py bee7caf9defd6e108fc2998a2520ddb36a967691 2019-12-17 02:07:09 bdeegan"  import os diff --git a/src/engine/SCons/Tool/mslib.xml b/src/engine/SCons/Tool/mslib.xml index a9b7cef..7ca3a00 100644 --- a/src/engine/SCons/Tool/mslib.xml +++ b/src/engine/SCons/Tool/mslib.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="UTF-8"?> +<?xml version="1.0"?>  <!--  Copyright (c) 2001 - 2019 The SCons Foundation diff --git a/src/engine/SCons/Tool/mslink.py b/src/engine/SCons/Tool/mslink.py index 9fbce4b..d995d3b 100644 --- a/src/engine/SCons/Tool/mslink.py +++ b/src/engine/SCons/Tool/mslink.py @@ -32,7 +32,7 @@ selection method.  #  from __future__ import print_function -__revision__ = "src/engine/SCons/Tool/mslink.py e724ae812eb96f4858a132f5b8c769724744faf6 2019-07-21 00:04:47 bdeegan" +__revision__ = "src/engine/SCons/Tool/mslink.py bee7caf9defd6e108fc2998a2520ddb36a967691 2019-12-17 02:07:09 bdeegan"  import os  import os.path diff --git a/src/engine/SCons/Tool/mslink.xml b/src/engine/SCons/Tool/mslink.xml index 692c1da..42dd493 100644 --- a/src/engine/SCons/Tool/mslink.xml +++ b/src/engine/SCons/Tool/mslink.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="UTF-8"?> +<?xml version="1.0"?>  <!--  Copyright (c) 2001 - 2019 The SCons Foundation diff --git a/src/engine/SCons/Tool/mssdk.py b/src/engine/SCons/Tool/mssdk.py index 7a38c6a..55cb54a 100644 --- a/src/engine/SCons/Tool/mssdk.py +++ b/src/engine/SCons/Tool/mssdk.py @@ -21,7 +21,7 @@  # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.  # -__revision__ = "src/engine/SCons/Tool/mssdk.py e724ae812eb96f4858a132f5b8c769724744faf6 2019-07-21 00:04:47 bdeegan" +__revision__ = "src/engine/SCons/Tool/mssdk.py bee7caf9defd6e108fc2998a2520ddb36a967691 2019-12-17 02:07:09 bdeegan"  """engine.SCons.Tool.mssdk diff --git a/src/engine/SCons/Tool/mssdk.xml b/src/engine/SCons/Tool/mssdk.xml index b84597e..ef17ae2 100644 --- a/src/engine/SCons/Tool/mssdk.xml +++ b/src/engine/SCons/Tool/mssdk.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="UTF-8"?> +<?xml version="1.0"?>  <!--  Copyright (c) 2001 - 2019 The SCons Foundation diff --git a/src/engine/SCons/Tool/msvc.py b/src/engine/SCons/Tool/msvc.py index 052a0b0..0013015 100644 --- a/src/engine/SCons/Tool/msvc.py +++ b/src/engine/SCons/Tool/msvc.py @@ -31,7 +31,7 @@ selection method.  # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.  # -__revision__ = "src/engine/SCons/Tool/msvc.py e724ae812eb96f4858a132f5b8c769724744faf6 2019-07-21 00:04:47 bdeegan" +__revision__ = "src/engine/SCons/Tool/msvc.py bee7caf9defd6e108fc2998a2520ddb36a967691 2019-12-17 02:07:09 bdeegan"  import os.path  import os diff --git a/src/engine/SCons/Tool/msvc.xml b/src/engine/SCons/Tool/msvc.xml index b8b4f6d..96aa172 100644 --- a/src/engine/SCons/Tool/msvc.xml +++ b/src/engine/SCons/Tool/msvc.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="UTF-8"?> +<?xml version="1.0"?>  <!--  Copyright (c) 2001 - 2019 The SCons Foundation diff --git a/src/engine/SCons/Tool/msvs.py b/src/engine/SCons/Tool/msvs.py index 38965e3..4a4b390 100644 --- a/src/engine/SCons/Tool/msvs.py +++ b/src/engine/SCons/Tool/msvs.py @@ -32,7 +32,7 @@ selection method.  from __future__ import print_function -__revision__ = "src/engine/SCons/Tool/msvs.py e724ae812eb96f4858a132f5b8c769724744faf6 2019-07-21 00:04:47 bdeegan" +__revision__ = "src/engine/SCons/Tool/msvs.py bee7caf9defd6e108fc2998a2520ddb36a967691 2019-12-17 02:07:09 bdeegan"  import SCons.compat @@ -652,7 +652,7 @@ class _GenerateV6DSP(_DSPGenerator):              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 @@ class _GenerateV6DSP(_DSPGenerator):          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 @@ class _GenerateV7DSP(_DSPGenerator, _GenerateV7User):          line = dspfile.readline()          # skip until marker          while line: -            if line.find('<!-- SCons Data:') > -1: +            if '<!-- SCons Data:' in line:                  break              line = dspfile.readline() diff --git a/src/engine/SCons/Tool/msvs.xml b/src/engine/SCons/Tool/msvs.xml index 9f2353a..26a16c4 100644 --- a/src/engine/SCons/Tool/msvs.xml +++ b/src/engine/SCons/Tool/msvs.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="UTF-8"?> +<?xml version="1.0"?>  <!--  Copyright (c) 2001 - 2019 The SCons Foundation diff --git a/src/engine/SCons/Tool/msvsTests.py b/src/engine/SCons/Tool/msvsTests.py index e0b5ced..748631c 100644 --- a/src/engine/SCons/Tool/msvsTests.py +++ b/src/engine/SCons/Tool/msvsTests.py @@ -22,7 +22,7 @@  #  from __future__ import print_function -__revision__ = "src/engine/SCons/Tool/msvsTests.py e724ae812eb96f4858a132f5b8c769724744faf6 2019-07-21 00:04:47 bdeegan" +__revision__ = "src/engine/SCons/Tool/msvsTests.py bee7caf9defd6e108fc2998a2520ddb36a967691 2019-12-17 02:07:09 bdeegan"  import os  import sys diff --git a/src/engine/SCons/Tool/mwcc.py b/src/engine/SCons/Tool/mwcc.py index b2b2f5b..341a3ef 100644 --- a/src/engine/SCons/Tool/mwcc.py +++ b/src/engine/SCons/Tool/mwcc.py @@ -30,7 +30,7 @@ selection method.  # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.  # -__revision__ = "src/engine/SCons/Tool/mwcc.py e724ae812eb96f4858a132f5b8c769724744faf6 2019-07-21 00:04:47 bdeegan" +__revision__ = "src/engine/SCons/Tool/mwcc.py bee7caf9defd6e108fc2998a2520ddb36a967691 2019-12-17 02:07:09 bdeegan"  import os  import os.path diff --git a/src/engine/SCons/Tool/mwcc.xml b/src/engine/SCons/Tool/mwcc.xml index e9f210c..51bc7ad 100644 --- a/src/engine/SCons/Tool/mwcc.xml +++ b/src/engine/SCons/Tool/mwcc.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="UTF-8"?> +<?xml version="1.0"?>  <!--  Copyright (c) 2001 - 2019 The SCons Foundation diff --git a/src/engine/SCons/Tool/mwld.py b/src/engine/SCons/Tool/mwld.py index 5049c55..5af02a6 100644 --- a/src/engine/SCons/Tool/mwld.py +++ b/src/engine/SCons/Tool/mwld.py @@ -30,7 +30,7 @@ selection method.  # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.  # -__revision__ = "src/engine/SCons/Tool/mwld.py e724ae812eb96f4858a132f5b8c769724744faf6 2019-07-21 00:04:47 bdeegan" +__revision__ = "src/engine/SCons/Tool/mwld.py bee7caf9defd6e108fc2998a2520ddb36a967691 2019-12-17 02:07:09 bdeegan"  import SCons.Tool diff --git a/src/engine/SCons/Tool/mwld.xml b/src/engine/SCons/Tool/mwld.xml index 261a039..406bc3f 100644 --- a/src/engine/SCons/Tool/mwld.xml +++ b/src/engine/SCons/Tool/mwld.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="UTF-8"?> +<?xml version="1.0"?>  <!--  Copyright (c) 2001 - 2019 The SCons Foundation diff --git a/src/engine/SCons/Tool/nasm.py b/src/engine/SCons/Tool/nasm.py index d4d0a1b..f08930e 100644 --- a/src/engine/SCons/Tool/nasm.py +++ b/src/engine/SCons/Tool/nasm.py @@ -31,7 +31,7 @@ selection method.  # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.  # -__revision__ = "src/engine/SCons/Tool/nasm.py e724ae812eb96f4858a132f5b8c769724744faf6 2019-07-21 00:04:47 bdeegan" +__revision__ = "src/engine/SCons/Tool/nasm.py bee7caf9defd6e108fc2998a2520ddb36a967691 2019-12-17 02:07:09 bdeegan"  import SCons.Defaults  import SCons.Tool diff --git a/src/engine/SCons/Tool/nasm.xml b/src/engine/SCons/Tool/nasm.xml index 6626411..7715ce9 100644 --- a/src/engine/SCons/Tool/nasm.xml +++ b/src/engine/SCons/Tool/nasm.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="UTF-8"?> +<?xml version="1.0"?>  <!--  Copyright (c) 2001 - 2019 The SCons Foundation diff --git a/src/engine/SCons/Tool/packaging.xml b/src/engine/SCons/Tool/packaging.xml index 9b46000..3469070 100644 --- a/src/engine/SCons/Tool/packaging.xml +++ b/src/engine/SCons/Tool/packaging.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="UTF-8"?> +<?xml version="1.0"?>  <!--  Copyright (c) 2001 - 2019 The SCons Foundation diff --git a/src/engine/SCons/Tool/packaging/__init__.py b/src/engine/SCons/Tool/packaging/__init__.py index 72b9eef..4b947f9 100644 --- a/src/engine/SCons/Tool/packaging/__init__.py +++ b/src/engine/SCons/Tool/packaging/__init__.py @@ -25,7 +25,7 @@ SCons Packaging Tool.  # 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/packaging/__init__.py e724ae812eb96f4858a132f5b8c769724744faf6 2019-07-21 00:04:47 bdeegan" +__revision__ = "src/engine/SCons/Tool/packaging/__init__.py bee7caf9defd6e108fc2998a2520ddb36a967691 2019-12-17 02:07:09 bdeegan"  import SCons.Defaults  import SCons.Environment diff --git a/src/engine/SCons/Tool/packaging/__init__.xml b/src/engine/SCons/Tool/packaging/__init__.xml index 1643def..662a82a 100644 --- a/src/engine/SCons/Tool/packaging/__init__.xml +++ b/src/engine/SCons/Tool/packaging/__init__.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="UTF-8"?> +<?xml version="1.0"?>  <!--  Copyright (c) 2001 - 2019 The SCons Foundation @@ -850,9 +850,9 @@ Examples:  </para>  <example_commands> -# makes sure the built library will be installed with 0644 file +# makes sure the built library will be installed with 0o644 file  # access mode -Tag( Library( 'lib.c' ), UNIX_ATTR="0644" ) +Tag( Library( 'lib.c' ), UNIX_ATTR="0o644" )  # marks file2.txt to be a documentation file  Tag( 'file2.txt', DOC ) diff --git a/src/engine/SCons/Tool/packaging/ipk.py b/src/engine/SCons/Tool/packaging/ipk.py index dbf5be8..8b4d79c 100644 --- a/src/engine/SCons/Tool/packaging/ipk.py +++ b/src/engine/SCons/Tool/packaging/ipk.py @@ -24,7 +24,7 @@  # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.  # -__revision__ = "src/engine/SCons/Tool/packaging/ipk.py e724ae812eb96f4858a132f5b8c769724744faf6 2019-07-21 00:04:47 bdeegan" +__revision__ = "src/engine/SCons/Tool/packaging/ipk.py bee7caf9defd6e108fc2998a2520ddb36a967691 2019-12-17 02:07:09 bdeegan"  import os diff --git a/src/engine/SCons/Tool/packaging/msi.py b/src/engine/SCons/Tool/packaging/msi.py index 4a48b47..1d47268 100644 --- a/src/engine/SCons/Tool/packaging/msi.py +++ b/src/engine/SCons/Tool/packaging/msi.py @@ -25,7 +25,7 @@ The msi packager.  # 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/packaging/msi.py e724ae812eb96f4858a132f5b8c769724744faf6 2019-07-21 00:04:47 bdeegan" +__revision__ = "src/engine/SCons/Tool/packaging/msi.py bee7caf9defd6e108fc2998a2520ddb36a967691 2019-12-17 02:07:09 bdeegan"  import os  import SCons @@ -224,7 +224,7 @@ def build_wxsfile(target, source, env):  # setup function  #  def create_default_directory_layout(root, NAME, VERSION, VENDOR, filename_set): -    """ Create the wix default target directory layout and return the innermost +    r""" Create the wix default target directory layout and return the innermost      directory.      We assume that the XML tree delivered in the root argument already contains diff --git a/src/engine/SCons/Tool/packaging/rpm.py b/src/engine/SCons/Tool/packaging/rpm.py index a948e29..1554d09 100644 --- a/src/engine/SCons/Tool/packaging/rpm.py +++ b/src/engine/SCons/Tool/packaging/rpm.py @@ -25,7 +25,7 @@ The rpm packager.  # 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/packaging/rpm.py e724ae812eb96f4858a132f5b8c769724744faf6 2019-07-21 00:04:47 bdeegan" +__revision__ = "src/engine/SCons/Tool/packaging/rpm.py bee7caf9defd6e108fc2998a2520ddb36a967691 2019-12-17 02:07:09 bdeegan"  import os diff --git a/src/engine/SCons/Tool/packaging/src_tarbz2.py b/src/engine/SCons/Tool/packaging/src_tarbz2.py index b628ccd..1889ec9 100644 --- a/src/engine/SCons/Tool/packaging/src_tarbz2.py +++ b/src/engine/SCons/Tool/packaging/src_tarbz2.py @@ -26,7 +26,7 @@ The tarbz2 SRC packager.  # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.  # -__revision__ = "src/engine/SCons/Tool/packaging/src_tarbz2.py e724ae812eb96f4858a132f5b8c769724744faf6 2019-07-21 00:04:47 bdeegan" +__revision__ = "src/engine/SCons/Tool/packaging/src_tarbz2.py bee7caf9defd6e108fc2998a2520ddb36a967691 2019-12-17 02:07:09 bdeegan"  from SCons.Tool.packaging import putintopackageroot diff --git a/src/engine/SCons/Tool/packaging/src_targz.py b/src/engine/SCons/Tool/packaging/src_targz.py index 4c7469c..0d3a3db 100644 --- a/src/engine/SCons/Tool/packaging/src_targz.py +++ b/src/engine/SCons/Tool/packaging/src_targz.py @@ -26,7 +26,7 @@ The targz SRC packager.  # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.  # -__revision__ = "src/engine/SCons/Tool/packaging/src_targz.py e724ae812eb96f4858a132f5b8c769724744faf6 2019-07-21 00:04:47 bdeegan" +__revision__ = "src/engine/SCons/Tool/packaging/src_targz.py bee7caf9defd6e108fc2998a2520ddb36a967691 2019-12-17 02:07:09 bdeegan"  from SCons.Tool.packaging import putintopackageroot diff --git a/src/engine/SCons/Tool/packaging/src_tarxz.py b/src/engine/SCons/Tool/packaging/src_tarxz.py index 6688c46..3042cac 100644 --- a/src/engine/SCons/Tool/packaging/src_tarxz.py +++ b/src/engine/SCons/Tool/packaging/src_tarxz.py @@ -26,7 +26,7 @@ The tarxz SRC packager.  # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.  # -__revision__ = "src/engine/SCons/Tool/packaging/src_tarxz.py e724ae812eb96f4858a132f5b8c769724744faf6 2019-07-21 00:04:47 bdeegan" +__revision__ = "src/engine/SCons/Tool/packaging/src_tarxz.py bee7caf9defd6e108fc2998a2520ddb36a967691 2019-12-17 02:07:09 bdeegan"  from SCons.Tool.packaging import putintopackageroot diff --git a/src/engine/SCons/Tool/packaging/src_zip.py b/src/engine/SCons/Tool/packaging/src_zip.py index d56f3aa..207fb1c 100644 --- a/src/engine/SCons/Tool/packaging/src_zip.py +++ b/src/engine/SCons/Tool/packaging/src_zip.py @@ -26,7 +26,7 @@ The zip SRC packager.  # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.  # -__revision__ = "src/engine/SCons/Tool/packaging/src_zip.py e724ae812eb96f4858a132f5b8c769724744faf6 2019-07-21 00:04:47 bdeegan" +__revision__ = "src/engine/SCons/Tool/packaging/src_zip.py bee7caf9defd6e108fc2998a2520ddb36a967691 2019-12-17 02:07:09 bdeegan"  from SCons.Tool.packaging import putintopackageroot diff --git a/src/engine/SCons/Tool/packaging/tarbz2.py b/src/engine/SCons/Tool/packaging/tarbz2.py index e371f1b..f34813b 100644 --- a/src/engine/SCons/Tool/packaging/tarbz2.py +++ b/src/engine/SCons/Tool/packaging/tarbz2.py @@ -26,7 +26,7 @@ The tarbz2 packager.  # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.  # -__revision__ = "src/engine/SCons/Tool/packaging/tarbz2.py e724ae812eb96f4858a132f5b8c769724744faf6 2019-07-21 00:04:47 bdeegan" +__revision__ = "src/engine/SCons/Tool/packaging/tarbz2.py bee7caf9defd6e108fc2998a2520ddb36a967691 2019-12-17 02:07:09 bdeegan"  from SCons.Tool.packaging import stripinstallbuilder, putintopackageroot diff --git a/src/engine/SCons/Tool/packaging/targz.py b/src/engine/SCons/Tool/packaging/targz.py index 121e4a4..8c694af 100644 --- a/src/engine/SCons/Tool/packaging/targz.py +++ b/src/engine/SCons/Tool/packaging/targz.py @@ -26,7 +26,7 @@ The targz packager.  # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.  # -__revision__ = "src/engine/SCons/Tool/packaging/targz.py e724ae812eb96f4858a132f5b8c769724744faf6 2019-07-21 00:04:47 bdeegan" +__revision__ = "src/engine/SCons/Tool/packaging/targz.py bee7caf9defd6e108fc2998a2520ddb36a967691 2019-12-17 02:07:09 bdeegan"  from SCons.Tool.packaging import stripinstallbuilder, putintopackageroot diff --git a/src/engine/SCons/Tool/packaging/tarxz.py b/src/engine/SCons/Tool/packaging/tarxz.py index 3ec9822..dc52aa9 100644 --- a/src/engine/SCons/Tool/packaging/tarxz.py +++ b/src/engine/SCons/Tool/packaging/tarxz.py @@ -26,7 +26,7 @@ The tarxz packager.  # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.  # -__revision__ = "src/engine/SCons/Tool/packaging/tarxz.py e724ae812eb96f4858a132f5b8c769724744faf6 2019-07-21 00:04:47 bdeegan" +__revision__ = "src/engine/SCons/Tool/packaging/tarxz.py bee7caf9defd6e108fc2998a2520ddb36a967691 2019-12-17 02:07:09 bdeegan"  from SCons.Tool.packaging import stripinstallbuilder, putintopackageroot diff --git a/src/engine/SCons/Tool/packaging/zip.py b/src/engine/SCons/Tool/packaging/zip.py index 11ab3b5..c7da7e9 100644 --- a/src/engine/SCons/Tool/packaging/zip.py +++ b/src/engine/SCons/Tool/packaging/zip.py @@ -26,7 +26,7 @@ The zip SRC packager.  # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.  # -__revision__ = "src/engine/SCons/Tool/packaging/zip.py e724ae812eb96f4858a132f5b8c769724744faf6 2019-07-21 00:04:47 bdeegan" +__revision__ = "src/engine/SCons/Tool/packaging/zip.py bee7caf9defd6e108fc2998a2520ddb36a967691 2019-12-17 02:07:09 bdeegan"  from SCons.Tool.packaging import stripinstallbuilder, putintopackageroot diff --git a/src/engine/SCons/Tool/pdf.py b/src/engine/SCons/Tool/pdf.py index 50988b6..6d6310f 100644 --- a/src/engine/SCons/Tool/pdf.py +++ b/src/engine/SCons/Tool/pdf.py @@ -28,7 +28,7 @@ Add an explicit action to run epstopdf to convert .eps files to .pdf  # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.  # -__revision__ = "src/engine/SCons/Tool/pdf.py e724ae812eb96f4858a132f5b8c769724744faf6 2019-07-21 00:04:47 bdeegan" +__revision__ = "src/engine/SCons/Tool/pdf.py bee7caf9defd6e108fc2998a2520ddb36a967691 2019-12-17 02:07:09 bdeegan"  import SCons.Builder  import SCons.Tool diff --git a/src/engine/SCons/Tool/pdf.xml b/src/engine/SCons/Tool/pdf.xml index 876de15..394da06 100644 --- a/src/engine/SCons/Tool/pdf.xml +++ b/src/engine/SCons/Tool/pdf.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="UTF-8"?> +<?xml version="1.0"?>  <!--  Copyright (c) 2001 - 2019 The SCons Foundation diff --git a/src/engine/SCons/Tool/pdflatex.py b/src/engine/SCons/Tool/pdflatex.py index 2c559f7..7550365 100644 --- a/src/engine/SCons/Tool/pdflatex.py +++ b/src/engine/SCons/Tool/pdflatex.py @@ -32,7 +32,7 @@ selection method.  # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.  # -__revision__ = "src/engine/SCons/Tool/pdflatex.py e724ae812eb96f4858a132f5b8c769724744faf6 2019-07-21 00:04:47 bdeegan" +__revision__ = "src/engine/SCons/Tool/pdflatex.py bee7caf9defd6e108fc2998a2520ddb36a967691 2019-12-17 02:07:09 bdeegan"  import SCons.Action  import SCons.Util diff --git a/src/engine/SCons/Tool/pdflatex.xml b/src/engine/SCons/Tool/pdflatex.xml index 975d5e9..fdcfd88 100644 --- a/src/engine/SCons/Tool/pdflatex.xml +++ b/src/engine/SCons/Tool/pdflatex.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="UTF-8"?> +<?xml version="1.0"?>  <!--  Copyright (c) 2001 - 2019 The SCons Foundation diff --git a/src/engine/SCons/Tool/pdftex.py b/src/engine/SCons/Tool/pdftex.py index c658aa0..b6595c1 100644 --- a/src/engine/SCons/Tool/pdftex.py +++ b/src/engine/SCons/Tool/pdftex.py @@ -32,7 +32,7 @@ selection method.  # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.  # -__revision__ = "src/engine/SCons/Tool/pdftex.py e724ae812eb96f4858a132f5b8c769724744faf6 2019-07-21 00:04:47 bdeegan" +__revision__ = "src/engine/SCons/Tool/pdftex.py bee7caf9defd6e108fc2998a2520ddb36a967691 2019-12-17 02:07:09 bdeegan"  import os  import SCons.Action diff --git a/src/engine/SCons/Tool/pdftex.xml b/src/engine/SCons/Tool/pdftex.xml index 0a265e7..a17fe2b 100644 --- a/src/engine/SCons/Tool/pdftex.xml +++ b/src/engine/SCons/Tool/pdftex.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="UTF-8"?> +<?xml version="1.0"?>  <!--  Copyright (c) 2001 - 2019 The SCons Foundation diff --git a/src/engine/SCons/Tool/qt.py b/src/engine/SCons/Tool/qt.py index a582e6f..351d487 100644 --- a/src/engine/SCons/Tool/qt.py +++ b/src/engine/SCons/Tool/qt.py @@ -33,7 +33,7 @@ selection method.  #  from __future__ import print_function -__revision__ = "src/engine/SCons/Tool/qt.py e724ae812eb96f4858a132f5b8c769724744faf6 2019-07-21 00:04:47 bdeegan" +__revision__ = "src/engine/SCons/Tool/qt.py bee7caf9defd6e108fc2998a2520ddb36a967691 2019-12-17 02:07:09 bdeegan"  import os.path  import re diff --git a/src/engine/SCons/Tool/qt.xml b/src/engine/SCons/Tool/qt.xml index 560a11d..7e7649d 100644 --- a/src/engine/SCons/Tool/qt.xml +++ b/src/engine/SCons/Tool/qt.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="UTF-8"?> +<?xml version="1.0"?>  <!--  Copyright (c) 2001 - 2019 The SCons Foundation diff --git a/src/engine/SCons/Tool/rmic.py b/src/engine/SCons/Tool/rmic.py index d6f7b2b..9ff1674 100644 --- a/src/engine/SCons/Tool/rmic.py +++ b/src/engine/SCons/Tool/rmic.py @@ -31,7 +31,7 @@ selection method.  # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.  # -__revision__ = "src/engine/SCons/Tool/rmic.py e724ae812eb96f4858a132f5b8c769724744faf6 2019-07-21 00:04:47 bdeegan" +__revision__ = "src/engine/SCons/Tool/rmic.py bee7caf9defd6e108fc2998a2520ddb36a967691 2019-12-17 02:07:09 bdeegan"  import os.path diff --git a/src/engine/SCons/Tool/rmic.xml b/src/engine/SCons/Tool/rmic.xml index 2a273d3..c382312 100644 --- a/src/engine/SCons/Tool/rmic.xml +++ b/src/engine/SCons/Tool/rmic.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="UTF-8"?> +<?xml version="1.0"?>  <!--  Copyright (c) 2001 - 2019 The SCons Foundation diff --git a/src/engine/SCons/Tool/rpcgen.py b/src/engine/SCons/Tool/rpcgen.py index b9f8ca6..1fb22f1 100644 --- a/src/engine/SCons/Tool/rpcgen.py +++ b/src/engine/SCons/Tool/rpcgen.py @@ -30,7 +30,7 @@ selection method.  # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.  # -__revision__ = "src/engine/SCons/Tool/rpcgen.py e724ae812eb96f4858a132f5b8c769724744faf6 2019-07-21 00:04:47 bdeegan" +__revision__ = "src/engine/SCons/Tool/rpcgen.py bee7caf9defd6e108fc2998a2520ddb36a967691 2019-12-17 02:07:09 bdeegan"  from SCons.Builder import Builder  import SCons.Util diff --git a/src/engine/SCons/Tool/rpcgen.xml b/src/engine/SCons/Tool/rpcgen.xml index 1ee9df9..16042cb 100644 --- a/src/engine/SCons/Tool/rpcgen.xml +++ b/src/engine/SCons/Tool/rpcgen.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="UTF-8"?> +<?xml version="1.0"?>  <!--  Copyright (c) 2001 - 2019 The SCons Foundation diff --git a/src/engine/SCons/Tool/rpm.py b/src/engine/SCons/Tool/rpm.py index 0253365..39e7b59 100644 --- a/src/engine/SCons/Tool/rpm.py +++ b/src/engine/SCons/Tool/rpm.py @@ -33,7 +33,7 @@ tar.gz consisting of the source file and a specfile.  # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.  # -__revision__ = "src/engine/SCons/Tool/rpm.py e724ae812eb96f4858a132f5b8c769724744faf6 2019-07-21 00:04:47 bdeegan" +__revision__ = "src/engine/SCons/Tool/rpm.py bee7caf9defd6e108fc2998a2520ddb36a967691 2019-12-17 02:07:09 bdeegan"  import os  import re diff --git a/src/engine/SCons/Tool/rpmutils.py b/src/engine/SCons/Tool/rpmutils.py index a2400ff..4d8b9be 100644 --- a/src/engine/SCons/Tool/rpmutils.py +++ b/src/engine/SCons/Tool/rpmutils.py @@ -36,7 +36,7 @@ exact syntax.  # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.  from __future__ import print_function -__revision__ = "src/engine/SCons/Tool/rpmutils.py e724ae812eb96f4858a132f5b8c769724744faf6 2019-07-21 00:04:47 bdeegan" +__revision__ = "src/engine/SCons/Tool/rpmutils.py bee7caf9defd6e108fc2998a2520ddb36a967691 2019-12-17 02:07:09 bdeegan"  import platform diff --git a/src/engine/SCons/Tool/sgiar.py b/src/engine/SCons/Tool/sgiar.py index d82ec89..c249815 100644 --- a/src/engine/SCons/Tool/sgiar.py +++ b/src/engine/SCons/Tool/sgiar.py @@ -33,7 +33,7 @@ selection method.  # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.  # -__revision__ = "src/engine/SCons/Tool/sgiar.py e724ae812eb96f4858a132f5b8c769724744faf6 2019-07-21 00:04:47 bdeegan" +__revision__ = "src/engine/SCons/Tool/sgiar.py bee7caf9defd6e108fc2998a2520ddb36a967691 2019-12-17 02:07:09 bdeegan"  import SCons.Defaults  import SCons.Tool diff --git a/src/engine/SCons/Tool/sgiar.xml b/src/engine/SCons/Tool/sgiar.xml index 6d28475..9a7769c 100644 --- a/src/engine/SCons/Tool/sgiar.xml +++ b/src/engine/SCons/Tool/sgiar.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="UTF-8"?> +<?xml version="1.0"?>  <!--  Copyright (c) 2001 - 2019 The SCons Foundation diff --git a/src/engine/SCons/Tool/sgic++.py b/src/engine/SCons/Tool/sgic++.py index 84d775a..0cb7a4a 100644 --- a/src/engine/SCons/Tool/sgic++.py +++ b/src/engine/SCons/Tool/sgic++.py @@ -31,7 +31,7 @@ selection method.  # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.  # -__revision__ = "src/engine/SCons/Tool/sgic++.py e724ae812eb96f4858a132f5b8c769724744faf6 2019-07-21 00:04:47 bdeegan" +__revision__ = "src/engine/SCons/Tool/sgic++.py bee7caf9defd6e108fc2998a2520ddb36a967691 2019-12-17 02:07:09 bdeegan"  #forward proxy to the preffered cxx version  from SCons.Tool.sgicxx import * diff --git a/src/engine/SCons/Tool/sgic++.xml b/src/engine/SCons/Tool/sgic++.xml index bab0392..4440081 100644 --- a/src/engine/SCons/Tool/sgic++.xml +++ b/src/engine/SCons/Tool/sgic++.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="UTF-8"?> +<?xml version="1.0"?>  <!--  Copyright (c) 2001 - 2019 The SCons Foundation diff --git a/src/engine/SCons/Tool/sgicc.py b/src/engine/SCons/Tool/sgicc.py index 537f1a3..b602be8 100644 --- a/src/engine/SCons/Tool/sgicc.py +++ b/src/engine/SCons/Tool/sgicc.py @@ -31,7 +31,7 @@ selection method.  # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.  # -__revision__ = "src/engine/SCons/Tool/sgicc.py e724ae812eb96f4858a132f5b8c769724744faf6 2019-07-21 00:04:47 bdeegan" +__revision__ = "src/engine/SCons/Tool/sgicc.py bee7caf9defd6e108fc2998a2520ddb36a967691 2019-12-17 02:07:09 bdeegan"  from . import cc diff --git a/src/engine/SCons/Tool/sgicc.xml b/src/engine/SCons/Tool/sgicc.xml index f26944b..7235f89 100644 --- a/src/engine/SCons/Tool/sgicc.xml +++ b/src/engine/SCons/Tool/sgicc.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="UTF-8"?> +<?xml version="1.0"?>  <!--  Copyright (c) 2001 - 2019 The SCons Foundation diff --git a/src/engine/SCons/Tool/sgicxx.py b/src/engine/SCons/Tool/sgicxx.py index d44ec26..8fe0441 100644 --- a/src/engine/SCons/Tool/sgicxx.py +++ b/src/engine/SCons/Tool/sgicxx.py @@ -31,7 +31,7 @@ selection method.  # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.  # -__revision__ = "src/engine/SCons/Tool/sgicxx.py e724ae812eb96f4858a132f5b8c769724744faf6 2019-07-21 00:04:47 bdeegan" +__revision__ = "src/engine/SCons/Tool/sgicxx.py bee7caf9defd6e108fc2998a2520ddb36a967691 2019-12-17 02:07:09 bdeegan"  import SCons.Util diff --git a/src/engine/SCons/Tool/sgilink.py b/src/engine/SCons/Tool/sgilink.py index ca9e69c..d5d6556 100644 --- a/src/engine/SCons/Tool/sgilink.py +++ b/src/engine/SCons/Tool/sgilink.py @@ -31,7 +31,7 @@ selection method.  # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.  # -__revision__ = "src/engine/SCons/Tool/sgilink.py e724ae812eb96f4858a132f5b8c769724744faf6 2019-07-21 00:04:47 bdeegan" +__revision__ = "src/engine/SCons/Tool/sgilink.py bee7caf9defd6e108fc2998a2520ddb36a967691 2019-12-17 02:07:09 bdeegan"  import SCons.Util diff --git a/src/engine/SCons/Tool/sgilink.xml b/src/engine/SCons/Tool/sgilink.xml index 7cc9818..d01f7e7 100644 --- a/src/engine/SCons/Tool/sgilink.xml +++ b/src/engine/SCons/Tool/sgilink.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="UTF-8"?> +<?xml version="1.0"?>  <!--  Copyright (c) 2001 - 2019 The SCons Foundation diff --git a/src/engine/SCons/Tool/sunar.py b/src/engine/SCons/Tool/sunar.py index 07d45b2..af3d685 100644 --- a/src/engine/SCons/Tool/sunar.py +++ b/src/engine/SCons/Tool/sunar.py @@ -32,7 +32,7 @@ selection method.  # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.  # -__revision__ = "src/engine/SCons/Tool/sunar.py e724ae812eb96f4858a132f5b8c769724744faf6 2019-07-21 00:04:47 bdeegan" +__revision__ = "src/engine/SCons/Tool/sunar.py bee7caf9defd6e108fc2998a2520ddb36a967691 2019-12-17 02:07:09 bdeegan"  import SCons.Defaults  import SCons.Tool diff --git a/src/engine/SCons/Tool/sunar.xml b/src/engine/SCons/Tool/sunar.xml index 97d1a05..e30584a 100644 --- a/src/engine/SCons/Tool/sunar.xml +++ b/src/engine/SCons/Tool/sunar.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="UTF-8"?> +<?xml version="1.0"?>  <!--  Copyright (c) 2001 - 2019 The SCons Foundation diff --git a/src/engine/SCons/Tool/sunc++.py b/src/engine/SCons/Tool/sunc++.py index 1611fe9..5f09d94 100644 --- a/src/engine/SCons/Tool/sunc++.py +++ b/src/engine/SCons/Tool/sunc++.py @@ -31,7 +31,7 @@ selection method.  # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.  # -__revision__ = "src/engine/SCons/Tool/sunc++.py e724ae812eb96f4858a132f5b8c769724744faf6 2019-07-21 00:04:47 bdeegan" +__revision__ = "src/engine/SCons/Tool/sunc++.py bee7caf9defd6e108fc2998a2520ddb36a967691 2019-12-17 02:07:09 bdeegan"  #forward proxy to the preffered cxx version diff --git a/src/engine/SCons/Tool/sunc++.xml b/src/engine/SCons/Tool/sunc++.xml index d1d0160..afc2ab0 100644 --- a/src/engine/SCons/Tool/sunc++.xml +++ b/src/engine/SCons/Tool/sunc++.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="UTF-8"?> +<?xml version="1.0"?>  <!--  Copyright (c) 2001 - 2019 The SCons Foundation diff --git a/src/engine/SCons/Tool/suncc.py b/src/engine/SCons/Tool/suncc.py index da6ca6e..f40b6d3 100644 --- a/src/engine/SCons/Tool/suncc.py +++ b/src/engine/SCons/Tool/suncc.py @@ -30,7 +30,7 @@ selection method.  # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.  # -__revision__ = "src/engine/SCons/Tool/suncc.py e724ae812eb96f4858a132f5b8c769724744faf6 2019-07-21 00:04:47 bdeegan" +__revision__ = "src/engine/SCons/Tool/suncc.py bee7caf9defd6e108fc2998a2520ddb36a967691 2019-12-17 02:07:09 bdeegan"  import SCons.Util diff --git a/src/engine/SCons/Tool/suncc.xml b/src/engine/SCons/Tool/suncc.xml index f191eda..31bfa63 100644 --- a/src/engine/SCons/Tool/suncc.xml +++ b/src/engine/SCons/Tool/suncc.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="UTF-8"?> +<?xml version="1.0"?>  <!--  Copyright (c) 2001 - 2019 The SCons Foundation diff --git a/src/engine/SCons/Tool/suncxx.py b/src/engine/SCons/Tool/suncxx.py index 1ee1c6a..0c70b68 100644 --- a/src/engine/SCons/Tool/suncxx.py +++ b/src/engine/SCons/Tool/suncxx.py @@ -31,7 +31,7 @@ selection method.  # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.  # -__revision__ = "src/engine/SCons/Tool/suncxx.py e724ae812eb96f4858a132f5b8c769724744faf6 2019-07-21 00:04:47 bdeegan" +__revision__ = "src/engine/SCons/Tool/suncxx.py bee7caf9defd6e108fc2998a2520ddb36a967691 2019-12-17 02:07:09 bdeegan"  import SCons @@ -39,12 +39,14 @@ import os  import re  import subprocess +from SCons.Util import PY3  import SCons.Tool.cxx  cplusplus = SCons.Tool.cxx -#cplusplus = __import__('c++', globals(), locals(), []) +# cplusplus = __import__('c++', globals(), locals(), [])  package_info = {} +  def get_package_info(package_name, pkginfo, pkgchk):      try:          return package_info[package_name] @@ -52,7 +54,7 @@ def get_package_info(package_name, pkginfo, pkgchk):          version = None          pathname = None          try: -            from subprocess import DEVNULL # py3k +            from subprocess import DEVNULL  # py3k          except ImportError:              DEVNULL = open(os.devnull, 'wb') @@ -68,13 +70,18 @@ def get_package_info(package_name, pkginfo, pkgchk):                  pathname = os.path.dirname(sadm_match.group(1))          try: +            popen_args = {'stdout': subprocess.PIPE, +                          'stderr': DEVNULL} +            if PY3: +                popen_args['universal_newlines'] = True              p = subprocess.Popen([pkginfo, '-l', package_name], -                                 stdout=subprocess.PIPE, -                                 stderr=DEVNULL) +                                 **popen_args)          except EnvironmentError:              pass          else:              pkginfo_contents = p.communicate()[0] +            if not PY3: +                pkginfo_contents.decode()              version_re = re.compile(r'^ *VERSION:\s*(.*)$', re.M)              version_match = version_re.search(pkginfo_contents)              if version_match: @@ -82,13 +89,18 @@ def get_package_info(package_name, pkginfo, pkgchk):          if pathname is None:              try: +                popen_args = {'stdout': subprocess.PIPE, +                              'stderr': DEVNULL} +                if PY3: +                    popen_args['universal_newlines'] = True                  p = subprocess.Popen([pkgchk, '-l', package_name], -                                     stdout=subprocess.PIPE, -                                     stderr=DEVNULL) +                                     **popen_args)              except EnvironmentError:                  pass              else:                  pkgchk_contents = p.communicate()[0] +                if not PY3: +                    pkgchk_contents.decode()                  pathname_re = re.compile(r'^Pathname:\s*(.*/bin/CC)$', re.M)                  pathname_match = pathname_re.search(pkgchk_contents)                  if pathname_match: @@ -97,7 +109,8 @@ def get_package_info(package_name, pkginfo, pkgchk):          package_info[package_name] = (pathname, version)          return package_info[package_name] -# use the package installer tool lslpp to figure out where cppc and what + +# use the package installer tool "pkg" to figure out where cppc and what  # version of it is installed  def get_cppc(env):      cxx = env.subst('$CXX') @@ -119,6 +132,7 @@ def get_cppc(env):      return (cppcPath, 'CC', 'CC', cppcVersion) +  def generate(env):      """Add Builders and construction variables for SunPRO C++."""      path, cxx, shcxx, version = get_cppc(env) @@ -131,10 +145,11 @@ def generate(env):      env['CXX'] = cxx      env['SHCXX'] = shcxx      env['CXXVERSION'] = version -    env['SHCXXFLAGS']   = SCons.Util.CLVar('$CXXFLAGS -KPIC') -    env['SHOBJPREFIX']  = 'so_' -    env['SHOBJSUFFIX']  = '.o' -     +    env['SHCXXFLAGS'] = SCons.Util.CLVar('$CXXFLAGS -KPIC') +    env['SHOBJPREFIX'] = 'so_' +    env['SHOBJSUFFIX'] = '.o' + +  def exists(env):      path, cxx, shcxx, version = get_cppc(env)      if path and cxx: diff --git a/src/engine/SCons/Tool/sunf77.py b/src/engine/SCons/Tool/sunf77.py index c1c216f..2ea5447 100644 --- a/src/engine/SCons/Tool/sunf77.py +++ b/src/engine/SCons/Tool/sunf77.py @@ -31,7 +31,7 @@ selection method.  # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.  # -__revision__ = "src/engine/SCons/Tool/sunf77.py e724ae812eb96f4858a132f5b8c769724744faf6 2019-07-21 00:04:47 bdeegan" +__revision__ = "src/engine/SCons/Tool/sunf77.py bee7caf9defd6e108fc2998a2520ddb36a967691 2019-12-17 02:07:09 bdeegan"  import SCons.Util diff --git a/src/engine/SCons/Tool/sunf77.xml b/src/engine/SCons/Tool/sunf77.xml index fafcb8d..cdb3061 100644 --- a/src/engine/SCons/Tool/sunf77.xml +++ b/src/engine/SCons/Tool/sunf77.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="UTF-8"?> +<?xml version="1.0"?>  <!--  Copyright (c) 2001 - 2019 The SCons Foundation diff --git a/src/engine/SCons/Tool/sunf90.py b/src/engine/SCons/Tool/sunf90.py index 4cabee8..d69f8d1 100644 --- a/src/engine/SCons/Tool/sunf90.py +++ b/src/engine/SCons/Tool/sunf90.py @@ -31,7 +31,7 @@ selection method.  # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.  # -__revision__ = "src/engine/SCons/Tool/sunf90.py e724ae812eb96f4858a132f5b8c769724744faf6 2019-07-21 00:04:47 bdeegan" +__revision__ = "src/engine/SCons/Tool/sunf90.py bee7caf9defd6e108fc2998a2520ddb36a967691 2019-12-17 02:07:09 bdeegan"  import SCons.Util diff --git a/src/engine/SCons/Tool/sunf90.xml b/src/engine/SCons/Tool/sunf90.xml index f979e15..f8fc24f 100644 --- a/src/engine/SCons/Tool/sunf90.xml +++ b/src/engine/SCons/Tool/sunf90.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="UTF-8"?> +<?xml version="1.0"?>  <!--  Copyright (c) 2001 - 2019 The SCons Foundation diff --git a/src/engine/SCons/Tool/sunf95.py b/src/engine/SCons/Tool/sunf95.py index 077b1bc..f03c43f 100644 --- a/src/engine/SCons/Tool/sunf95.py +++ b/src/engine/SCons/Tool/sunf95.py @@ -31,7 +31,7 @@ selection method.  # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.  # -__revision__ = "src/engine/SCons/Tool/sunf95.py e724ae812eb96f4858a132f5b8c769724744faf6 2019-07-21 00:04:47 bdeegan" +__revision__ = "src/engine/SCons/Tool/sunf95.py bee7caf9defd6e108fc2998a2520ddb36a967691 2019-12-17 02:07:09 bdeegan"  import SCons.Util diff --git a/src/engine/SCons/Tool/sunf95.xml b/src/engine/SCons/Tool/sunf95.xml index 4072d36..64bf0f8 100644 --- a/src/engine/SCons/Tool/sunf95.xml +++ b/src/engine/SCons/Tool/sunf95.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="UTF-8"?> +<?xml version="1.0"?>  <!--  Copyright (c) 2001 - 2019 The SCons Foundation diff --git a/src/engine/SCons/Tool/sunlink.py b/src/engine/SCons/Tool/sunlink.py index 8d965fa..25ab4d4 100644 --- a/src/engine/SCons/Tool/sunlink.py +++ b/src/engine/SCons/Tool/sunlink.py @@ -30,7 +30,7 @@ selection method.  # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.  # -__revision__ = "src/engine/SCons/Tool/sunlink.py e724ae812eb96f4858a132f5b8c769724744faf6 2019-07-21 00:04:47 bdeegan" +__revision__ = "src/engine/SCons/Tool/sunlink.py bee7caf9defd6e108fc2998a2520ddb36a967691 2019-12-17 02:07:09 bdeegan"  import os  import os.path diff --git a/src/engine/SCons/Tool/sunlink.xml b/src/engine/SCons/Tool/sunlink.xml index 68eee54..2bb456e 100644 --- a/src/engine/SCons/Tool/sunlink.xml +++ b/src/engine/SCons/Tool/sunlink.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="UTF-8"?> +<?xml version="1.0"?>  <!--  Copyright (c) 2001 - 2019 The SCons Foundation diff --git a/src/engine/SCons/Tool/swig.py b/src/engine/SCons/Tool/swig.py index 2e61b91..d724500 100644 --- a/src/engine/SCons/Tool/swig.py +++ b/src/engine/SCons/Tool/swig.py @@ -32,7 +32,7 @@ from __future__ import print_function  # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.  # -__revision__ = "src/engine/SCons/Tool/swig.py e724ae812eb96f4858a132f5b8c769724744faf6 2019-07-21 00:04:47 bdeegan" +__revision__ = "src/engine/SCons/Tool/swig.py bee7caf9defd6e108fc2998a2520ddb36a967691 2019-12-17 02:07:09 bdeegan"  import os.path  import sys @@ -80,7 +80,7 @@ def _find_modules(src):      for m in matches:          mnames.append(m[2]) -        directors = directors or m[0].find('directors') >= 0 +        directors = directors or 'directors' in m[0]      return mnames, directors  def _add_director_header_targets(target, env): diff --git a/src/engine/SCons/Tool/swig.xml b/src/engine/SCons/Tool/swig.xml index 65a5971..6e6e7f0 100644 --- a/src/engine/SCons/Tool/swig.xml +++ b/src/engine/SCons/Tool/swig.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="UTF-8"?> +<?xml version="1.0"?>  <!--  Copyright (c) 2001 - 2019 The SCons Foundation diff --git a/src/engine/SCons/Tool/tar.py b/src/engine/SCons/Tool/tar.py index 08c80f2..564ea0f 100644 --- a/src/engine/SCons/Tool/tar.py +++ b/src/engine/SCons/Tool/tar.py @@ -31,7 +31,7 @@ selection method.  # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.  # -__revision__ = "src/engine/SCons/Tool/tar.py e724ae812eb96f4858a132f5b8c769724744faf6 2019-07-21 00:04:47 bdeegan" +__revision__ = "src/engine/SCons/Tool/tar.py bee7caf9defd6e108fc2998a2520ddb36a967691 2019-12-17 02:07:09 bdeegan"  import SCons.Action  import SCons.Builder diff --git a/src/engine/SCons/Tool/tar.xml b/src/engine/SCons/Tool/tar.xml index 95e8418..fd413ff 100644 --- a/src/engine/SCons/Tool/tar.xml +++ b/src/engine/SCons/Tool/tar.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="UTF-8"?> +<?xml version="1.0"?>  <!--  Copyright (c) 2001 - 2019 The SCons Foundation diff --git a/src/engine/SCons/Tool/tex.py b/src/engine/SCons/Tool/tex.py index 9beb557..c9d9f55 100644 --- a/src/engine/SCons/Tool/tex.py +++ b/src/engine/SCons/Tool/tex.py @@ -33,7 +33,7 @@ selection method.  #  from __future__ import print_function -__revision__ = "src/engine/SCons/Tool/tex.py e724ae812eb96f4858a132f5b8c769724744faf6 2019-07-21 00:04:47 bdeegan" +__revision__ = "src/engine/SCons/Tool/tex.py bee7caf9defd6e108fc2998a2520ddb36a967691 2019-12-17 02:07:09 bdeegan"  import os.path  import re @@ -297,8 +297,8 @@ def InternalLaTeXAuxAction(XXXLaTeXAction, target = None, source= None, env=None          logfilename = targetbase + '.log'          logContent = ''          if os.path.isfile(logfilename): -            with open(logfilename, "r") as f: -                logContent = f.read() +            with open(logfilename, "rb") as f: +                logContent = f.read().decode(errors='replace')          # Read the fls file to find all .aux files diff --git a/src/engine/SCons/Tool/tex.xml b/src/engine/SCons/Tool/tex.xml index c293977..ad91adc 100644 --- a/src/engine/SCons/Tool/tex.xml +++ b/src/engine/SCons/Tool/tex.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="UTF-8"?> +<?xml version="1.0"?>  <!--  Copyright (c) 2001 - 2019 The SCons Foundation diff --git a/src/engine/SCons/Tool/textfile.py b/src/engine/SCons/Tool/textfile.py index 58a5007..906c1ac 100644 --- a/src/engine/SCons/Tool/textfile.py +++ b/src/engine/SCons/Tool/textfile.py @@ -44,7 +44,7 @@ Textfile/Substfile builder for SCons.      is unpredictable whether the expansion will occur.  """ -__revision__ = "src/engine/SCons/Tool/textfile.py e724ae812eb96f4858a132f5b8c769724744faf6 2019-07-21 00:04:47 bdeegan" +__revision__ = "src/engine/SCons/Tool/textfile.py bee7caf9defd6e108fc2998a2520ddb36a967691 2019-12-17 02:07:09 bdeegan"  import SCons diff --git a/src/engine/SCons/Tool/textfile.xml b/src/engine/SCons/Tool/textfile.xml index 31d2d4f..8304c17 100644 --- a/src/engine/SCons/Tool/textfile.xml +++ b/src/engine/SCons/Tool/textfile.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="UTF-8"?> +<?xml version="1.0"?>  <!--  Copyright (c) 2001 - 2019 The SCons Foundation diff --git a/src/engine/SCons/Tool/tlib.py b/src/engine/SCons/Tool/tlib.py index 4d8101b..935b83f 100644 --- a/src/engine/SCons/Tool/tlib.py +++ b/src/engine/SCons/Tool/tlib.py @@ -27,7 +27,7 @@ XXX  # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.  # -__revision__ = "src/engine/SCons/Tool/tlib.py e724ae812eb96f4858a132f5b8c769724744faf6 2019-07-21 00:04:47 bdeegan" +__revision__ = "src/engine/SCons/Tool/tlib.py bee7caf9defd6e108fc2998a2520ddb36a967691 2019-12-17 02:07:09 bdeegan"  import SCons.Tool  import SCons.Tool.bcc32 diff --git a/src/engine/SCons/Tool/tlib.xml b/src/engine/SCons/Tool/tlib.xml index 2fd8c08..8235a66 100644 --- a/src/engine/SCons/Tool/tlib.xml +++ b/src/engine/SCons/Tool/tlib.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="UTF-8"?> +<?xml version="1.0"?>  <!--  Copyright (c) 2001 - 2019 The SCons Foundation diff --git a/src/engine/SCons/Tool/wix.py b/src/engine/SCons/Tool/wix.py index e79e4a1..093cbcd 100644 --- a/src/engine/SCons/Tool/wix.py +++ b/src/engine/SCons/Tool/wix.py @@ -30,7 +30,7 @@ selection method.  # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.  # -__revision__ = "src/engine/SCons/Tool/wix.py e724ae812eb96f4858a132f5b8c769724744faf6 2019-07-21 00:04:47 bdeegan" +__revision__ = "src/engine/SCons/Tool/wix.py bee7caf9defd6e108fc2998a2520ddb36a967691 2019-12-17 02:07:09 bdeegan"  import SCons.Builder  import SCons.Action diff --git a/src/engine/SCons/Tool/wixTests.py b/src/engine/SCons/Tool/wixTests.py index f2649a3..3cde796 100644 --- a/src/engine/SCons/Tool/wixTests.py +++ b/src/engine/SCons/Tool/wixTests.py @@ -21,7 +21,7 @@  # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.  # -__revision__ = "src/engine/SCons/Tool/wixTests.py e724ae812eb96f4858a132f5b8c769724744faf6 2019-07-21 00:04:47 bdeegan" +__revision__ = "src/engine/SCons/Tool/wixTests.py bee7caf9defd6e108fc2998a2520ddb36a967691 2019-12-17 02:07:09 bdeegan"  import unittest  import os.path diff --git a/src/engine/SCons/Tool/xgettext.py b/src/engine/SCons/Tool/xgettext.py index 185558e..1544a62 100644 --- a/src/engine/SCons/Tool/xgettext.py +++ b/src/engine/SCons/Tool/xgettext.py @@ -24,7 +24,7 @@ Tool specific initialization of `xgettext` tool.  # 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/xgettext.py e724ae812eb96f4858a132f5b8c769724744faf6 2019-07-21 00:04:47 bdeegan" +__revision__ = "src/engine/SCons/Tool/xgettext.py bee7caf9defd6e108fc2998a2520ddb36a967691 2019-12-17 02:07:09 bdeegan"  import os  import re diff --git a/src/engine/SCons/Tool/xgettext.xml b/src/engine/SCons/Tool/xgettext.xml index 079693f..5ab15fd 100644 --- a/src/engine/SCons/Tool/xgettext.xml +++ b/src/engine/SCons/Tool/xgettext.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="UTF-8"?> +<?xml version="1.0"?>  <!--  Copyright (c) 2001 - 2019 The SCons Foundation diff --git a/src/engine/SCons/Tool/yacc.py b/src/engine/SCons/Tool/yacc.py index 6857574..0fdd5dd 100644 --- a/src/engine/SCons/Tool/yacc.py +++ b/src/engine/SCons/Tool/yacc.py @@ -31,7 +31,7 @@ selection method.  # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.  # -__revision__ = "src/engine/SCons/Tool/yacc.py e724ae812eb96f4858a132f5b8c769724744faf6 2019-07-21 00:04:47 bdeegan" +__revision__ = "src/engine/SCons/Tool/yacc.py bee7caf9defd6e108fc2998a2520ddb36a967691 2019-12-17 02:07:09 bdeegan"  import os.path  import sys diff --git a/src/engine/SCons/Tool/yacc.xml b/src/engine/SCons/Tool/yacc.xml index 8ba3658..82274cb 100644 --- a/src/engine/SCons/Tool/yacc.xml +++ b/src/engine/SCons/Tool/yacc.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="UTF-8"?> +<?xml version="1.0"?>  <!--  Copyright (c) 2001 - 2019 The SCons Foundation diff --git a/src/engine/SCons/Tool/zip.py b/src/engine/SCons/Tool/zip.py index b7efdc7..8b7ab76 100644 --- a/src/engine/SCons/Tool/zip.py +++ b/src/engine/SCons/Tool/zip.py @@ -31,7 +31,7 @@ selection method.  # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.  # -__revision__ = "src/engine/SCons/Tool/zip.py e724ae812eb96f4858a132f5b8c769724744faf6 2019-07-21 00:04:47 bdeegan" +__revision__ = "src/engine/SCons/Tool/zip.py bee7caf9defd6e108fc2998a2520ddb36a967691 2019-12-17 02:07:09 bdeegan"  import os.path diff --git a/src/engine/SCons/Tool/zip.xml b/src/engine/SCons/Tool/zip.xml index d7622dd..c7743c0 100644 --- a/src/engine/SCons/Tool/zip.xml +++ b/src/engine/SCons/Tool/zip.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="UTF-8"?> +<?xml version="1.0"?>  <!--  Copyright (c) 2001 - 2019 The SCons Foundation diff --git a/src/engine/SCons/Util.py b/src/engine/SCons/Util.py index 5b4c225..2bc129a 100644 --- a/src/engine/SCons/Util.py +++ b/src/engine/SCons/Util.py @@ -24,7 +24,7 @@ Various utility functions go here.  # 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/Util.py e724ae812eb96f4858a132f5b8c769724744faf6 2019-07-21 00:04:47 bdeegan" +__revision__ = "src/engine/SCons/Util.py bee7caf9defd6e108fc2998a2520ddb36a967691 2019-12-17 02:07:09 bdeegan"  import os  import sys diff --git a/src/engine/SCons/UtilTests.py b/src/engine/SCons/UtilTests.py index 41a1647..e18dc13 100644 --- a/src/engine/SCons/UtilTests.py +++ b/src/engine/SCons/UtilTests.py @@ -21,7 +21,7 @@  # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.  # -__revision__ = "src/engine/SCons/UtilTests.py e724ae812eb96f4858a132f5b8c769724744faf6 2019-07-21 00:04:47 bdeegan" +__revision__ = "src/engine/SCons/UtilTests.py bee7caf9defd6e108fc2998a2520ddb36a967691 2019-12-17 02:07:09 bdeegan"  import SCons.compat diff --git a/src/engine/SCons/Variables/BoolVariable.py b/src/engine/SCons/Variables/BoolVariable.py index 4cb9f35..629faaf 100644 --- a/src/engine/SCons/Variables/BoolVariable.py +++ b/src/engine/SCons/Variables/BoolVariable.py @@ -34,7 +34,7 @@ Usage example::  # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.  # -__revision__ = "src/engine/SCons/Variables/BoolVariable.py e724ae812eb96f4858a132f5b8c769724744faf6 2019-07-21 00:04:47 bdeegan" +__revision__ = "src/engine/SCons/Variables/BoolVariable.py bee7caf9defd6e108fc2998a2520ddb36a967691 2019-12-17 02:07:09 bdeegan"  __all__ = ['BoolVariable',] diff --git a/src/engine/SCons/Variables/BoolVariableTests.py b/src/engine/SCons/Variables/BoolVariableTests.py index a184378..ca70253 100644 --- a/src/engine/SCons/Variables/BoolVariableTests.py +++ b/src/engine/SCons/Variables/BoolVariableTests.py @@ -21,7 +21,7 @@  # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.  # -__revision__ = "src/engine/SCons/Variables/BoolVariableTests.py e724ae812eb96f4858a132f5b8c769724744faf6 2019-07-21 00:04:47 bdeegan" +__revision__ = "src/engine/SCons/Variables/BoolVariableTests.py bee7caf9defd6e108fc2998a2520ddb36a967691 2019-12-17 02:07:09 bdeegan"  import sys  import unittest diff --git a/src/engine/SCons/Variables/EnumVariable.py b/src/engine/SCons/Variables/EnumVariable.py index ba9f972..22630a4 100644 --- a/src/engine/SCons/Variables/EnumVariable.py +++ b/src/engine/SCons/Variables/EnumVariable.py @@ -37,7 +37,7 @@ Usage example::  # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.  # -__revision__ = "src/engine/SCons/Variables/EnumVariable.py e724ae812eb96f4858a132f5b8c769724744faf6 2019-07-21 00:04:47 bdeegan" +__revision__ = "src/engine/SCons/Variables/EnumVariable.py bee7caf9defd6e108fc2998a2520ddb36a967691 2019-12-17 02:07:09 bdeegan"  __all__ = ['EnumVariable',] diff --git a/src/engine/SCons/Variables/EnumVariableTests.py b/src/engine/SCons/Variables/EnumVariableTests.py index 28b9d68..64d75a6 100644 --- a/src/engine/SCons/Variables/EnumVariableTests.py +++ b/src/engine/SCons/Variables/EnumVariableTests.py @@ -21,7 +21,7 @@  # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.  # -__revision__ = "src/engine/SCons/Variables/EnumVariableTests.py e724ae812eb96f4858a132f5b8c769724744faf6 2019-07-21 00:04:47 bdeegan" +__revision__ = "src/engine/SCons/Variables/EnumVariableTests.py bee7caf9defd6e108fc2998a2520ddb36a967691 2019-12-17 02:07:09 bdeegan"  import sys  import unittest diff --git a/src/engine/SCons/Variables/ListVariable.py b/src/engine/SCons/Variables/ListVariable.py index a30f265..bf0f856 100644 --- a/src/engine/SCons/Variables/ListVariable.py +++ b/src/engine/SCons/Variables/ListVariable.py @@ -46,7 +46,7 @@ Usage example::  # 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/Variables/ListVariable.py e724ae812eb96f4858a132f5b8c769724744faf6 2019-07-21 00:04:47 bdeegan" +__revision__ = "src/engine/SCons/Variables/ListVariable.py bee7caf9defd6e108fc2998a2520ddb36a967691 2019-12-17 02:07:09 bdeegan"  # Known Bug: This should behave like a Set-Type, but does not really,  # since elements can occur twice. diff --git a/src/engine/SCons/Variables/ListVariableTests.py b/src/engine/SCons/Variables/ListVariableTests.py index 86e2c9e..dd5f44f 100644 --- a/src/engine/SCons/Variables/ListVariableTests.py +++ b/src/engine/SCons/Variables/ListVariableTests.py @@ -21,7 +21,7 @@  # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.  # -__revision__ = "src/engine/SCons/Variables/ListVariableTests.py e724ae812eb96f4858a132f5b8c769724744faf6 2019-07-21 00:04:47 bdeegan" +__revision__ = "src/engine/SCons/Variables/ListVariableTests.py bee7caf9defd6e108fc2998a2520ddb36a967691 2019-12-17 02:07:09 bdeegan"  import copy  import sys diff --git a/src/engine/SCons/Variables/PackageVariable.py b/src/engine/SCons/Variables/PackageVariable.py index 7c23cca..12b8974 100644 --- a/src/engine/SCons/Variables/PackageVariable.py +++ b/src/engine/SCons/Variables/PackageVariable.py @@ -50,7 +50,7 @@ Usage example:  # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.  # -__revision__ = "src/engine/SCons/Variables/PackageVariable.py e724ae812eb96f4858a132f5b8c769724744faf6 2019-07-21 00:04:47 bdeegan" +__revision__ = "src/engine/SCons/Variables/PackageVariable.py bee7caf9defd6e108fc2998a2520ddb36a967691 2019-12-17 02:07:09 bdeegan"  __all__ = ['PackageVariable',] diff --git a/src/engine/SCons/Variables/PackageVariableTests.py b/src/engine/SCons/Variables/PackageVariableTests.py index 2e48536..9d7ca53 100644 --- a/src/engine/SCons/Variables/PackageVariableTests.py +++ b/src/engine/SCons/Variables/PackageVariableTests.py @@ -21,7 +21,7 @@  # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.  # -__revision__ = "src/engine/SCons/Variables/PackageVariableTests.py e724ae812eb96f4858a132f5b8c769724744faf6 2019-07-21 00:04:47 bdeegan" +__revision__ = "src/engine/SCons/Variables/PackageVariableTests.py bee7caf9defd6e108fc2998a2520ddb36a967691 2019-12-17 02:07:09 bdeegan"  import sys  import unittest diff --git a/src/engine/SCons/Variables/PathVariable.py b/src/engine/SCons/Variables/PathVariable.py index bf123fb..5b3059d 100644 --- a/src/engine/SCons/Variables/PathVariable.py +++ b/src/engine/SCons/Variables/PathVariable.py @@ -67,7 +67,7 @@ Usage example::  # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.  # -__revision__ = "src/engine/SCons/Variables/PathVariable.py e724ae812eb96f4858a132f5b8c769724744faf6 2019-07-21 00:04:47 bdeegan" +__revision__ = "src/engine/SCons/Variables/PathVariable.py bee7caf9defd6e108fc2998a2520ddb36a967691 2019-12-17 02:07:09 bdeegan"  __all__ = ['PathVariable',] diff --git a/src/engine/SCons/Variables/PathVariableTests.py b/src/engine/SCons/Variables/PathVariableTests.py index d862887..fbcc5b8 100644 --- a/src/engine/SCons/Variables/PathVariableTests.py +++ b/src/engine/SCons/Variables/PathVariableTests.py @@ -21,7 +21,7 @@  # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.  # -__revision__ = "src/engine/SCons/Variables/PathVariableTests.py e724ae812eb96f4858a132f5b8c769724744faf6 2019-07-21 00:04:47 bdeegan" +__revision__ = "src/engine/SCons/Variables/PathVariableTests.py bee7caf9defd6e108fc2998a2520ddb36a967691 2019-12-17 02:07:09 bdeegan"  import os.path  import sys diff --git a/src/engine/SCons/Variables/VariablesTests.py b/src/engine/SCons/Variables/VariablesTests.py index ed2edab..5822478 100644 --- a/src/engine/SCons/Variables/VariablesTests.py +++ b/src/engine/SCons/Variables/VariablesTests.py @@ -21,7 +21,7 @@  # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.  # -__revision__ = "src/engine/SCons/Variables/VariablesTests.py e724ae812eb96f4858a132f5b8c769724744faf6 2019-07-21 00:04:47 bdeegan" +__revision__ = "src/engine/SCons/Variables/VariablesTests.py bee7caf9defd6e108fc2998a2520ddb36a967691 2019-12-17 02:07:09 bdeegan"  import sys  import unittest diff --git a/src/engine/SCons/Variables/__init__.py b/src/engine/SCons/Variables/__init__.py index 5b4b3af..31d6621 100644 --- a/src/engine/SCons/Variables/__init__.py +++ b/src/engine/SCons/Variables/__init__.py @@ -26,7 +26,7 @@ customizable variables to an SCons build.  # 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/Variables/__init__.py e724ae812eb96f4858a132f5b8c769724744faf6 2019-07-21 00:04:47 bdeegan" +__revision__ = "src/engine/SCons/Variables/__init__.py bee7caf9defd6e108fc2998a2520ddb36a967691 2019-12-17 02:07:09 bdeegan"  import os.path  import sys diff --git a/src/engine/SCons/Warnings.py b/src/engine/SCons/Warnings.py index 1c84d57..49a35a9 100644 --- a/src/engine/SCons/Warnings.py +++ b/src/engine/SCons/Warnings.py @@ -27,7 +27,7 @@ This file implements the warnings framework for SCons.  """ -__revision__ = "src/engine/SCons/Warnings.py e724ae812eb96f4858a132f5b8c769724744faf6 2019-07-21 00:04:47 bdeegan" +__revision__ = "src/engine/SCons/Warnings.py bee7caf9defd6e108fc2998a2520ddb36a967691 2019-12-17 02:07:09 bdeegan"  import sys @@ -120,33 +120,15 @@ class PythonVersionWarning(DeprecatedWarning):  class DeprecatedSourceCodeWarning(FutureDeprecatedWarning):      pass -class DeprecatedBuildDirWarning(DeprecatedWarning): -    pass -  class TaskmasterNeedsExecuteWarning(DeprecatedWarning):      pass -class DeprecatedCopyWarning(MandatoryDeprecatedWarning): -    pass -  class DeprecatedOptionsWarning(MandatoryDeprecatedWarning):      pass -class DeprecatedSourceSignaturesWarning(MandatoryDeprecatedWarning): -    pass - -class DeprecatedTargetSignaturesWarning(MandatoryDeprecatedWarning): -    pass -  class DeprecatedDebugOptionsWarning(MandatoryDeprecatedWarning):      pass -class DeprecatedSigModuleWarning(MandatoryDeprecatedWarning): -    pass - -class DeprecatedBuilderKeywordsWarning(MandatoryDeprecatedWarning): -    pass -  class DeprecatedMissingSConscriptWarning(DeprecatedWarning):      pass diff --git a/src/engine/SCons/WarningsTests.py b/src/engine/SCons/WarningsTests.py index 2b36eb2..7fb6d6b 100644 --- a/src/engine/SCons/WarningsTests.py +++ b/src/engine/SCons/WarningsTests.py @@ -21,7 +21,7 @@  # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.  # -__revision__ = "src/engine/SCons/WarningsTests.py e724ae812eb96f4858a132f5b8c769724744faf6 2019-07-21 00:04:47 bdeegan" +__revision__ = "src/engine/SCons/WarningsTests.py bee7caf9defd6e108fc2998a2520ddb36a967691 2019-12-17 02:07:09 bdeegan"  import sys  import unittest diff --git a/src/engine/SCons/__init__.py b/src/engine/SCons/__init__.py index c915441..42582b1 100644 --- a/src/engine/SCons/__init__.py +++ b/src/engine/SCons/__init__.py @@ -27,15 +27,15 @@ The main package for the SCons software construction utility.  # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.  # -__revision__ = "src/engine/SCons/__init__.py e724ae812eb96f4858a132f5b8c769724744faf6 2019-07-21 00:04:47 bdeegan" +__revision__ = "src/engine/SCons/__init__.py bee7caf9defd6e108fc2998a2520ddb36a967691 2019-12-17 02:07:09 bdeegan" -__version__ = "3.1.0" +__version__ = "3.1.2" -__build__ = "e724ae812eb96f4858a132f5b8c769724744faf6" +__build__ = "bee7caf9defd6e108fc2998a2520ddb36a967691" -__buildsys__ = "kufra" +__buildsys__ = "octodog" -__date__ = "2019-07-21 00:04:47" +__date__ = "2019-12-17 02:07:09"  __developer__ = "bdeegan" diff --git a/src/engine/SCons/compat/__init__.py b/src/engine/SCons/compat/__init__.py index dcbd8e8..a3935c3 100644 --- a/src/engine/SCons/compat/__init__.py +++ b/src/engine/SCons/compat/__init__.py @@ -57,7 +57,7 @@ function defined below loads the module as the "real" name (without the  rest of our code will find our pre-loaded compatibility module.  """ -__revision__ = "src/engine/SCons/compat/__init__.py e724ae812eb96f4858a132f5b8c769724744faf6 2019-07-21 00:04:47 bdeegan" +__revision__ = "src/engine/SCons/compat/__init__.py bee7caf9defd6e108fc2998a2520ddb36a967691 2019-12-17 02:07:09 bdeegan"  import os  import sys diff --git a/src/engine/SCons/compat/_scons_dbm.py b/src/engine/SCons/compat/_scons_dbm.py index ec5e261..c5da402 100644 --- a/src/engine/SCons/compat/_scons_dbm.py +++ b/src/engine/SCons/compat/_scons_dbm.py @@ -30,7 +30,7 @@ that the whichdb.whichdb() implementstation in the various 2.X versions of  Python won't blow up even if dbm wasn't compiled in.  """ -__revision__ = "src/engine/SCons/compat/_scons_dbm.py e724ae812eb96f4858a132f5b8c769724744faf6 2019-07-21 00:04:47 bdeegan" +__revision__ = "src/engine/SCons/compat/_scons_dbm.py bee7caf9defd6e108fc2998a2520ddb36a967691 2019-12-17 02:07:09 bdeegan"  class error(Exception):      pass diff --git a/src/engine/SCons/cpp.py b/src/engine/SCons/cpp.py index 7c4ac92..17a92e1 100644 --- a/src/engine/SCons/cpp.py +++ b/src/engine/SCons/cpp.py @@ -21,7 +21,7 @@  # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.  # -__revision__ = "src/engine/SCons/cpp.py e724ae812eb96f4858a132f5b8c769724744faf6 2019-07-21 00:04:47 bdeegan" +__revision__ = "src/engine/SCons/cpp.py bee7caf9defd6e108fc2998a2520ddb36a967691 2019-12-17 02:07:09 bdeegan"  __doc__ = """  SCons C Pre-Processor module diff --git a/src/engine/SCons/cppTests.py b/src/engine/SCons/cppTests.py index 6d41ab0..2e94bf8 100644 --- a/src/engine/SCons/cppTests.py +++ b/src/engine/SCons/cppTests.py @@ -23,7 +23,7 @@  from __future__ import absolute_import -__revision__ = "src/engine/SCons/cppTests.py e724ae812eb96f4858a132f5b8c769724744faf6 2019-07-21 00:04:47 bdeegan" +__revision__ = "src/engine/SCons/cppTests.py bee7caf9defd6e108fc2998a2520ddb36a967691 2019-12-17 02:07:09 bdeegan"  import atexit  import sys diff --git a/src/engine/SCons/exitfuncs.py b/src/engine/SCons/exitfuncs.py index c5414a2..43ae73b 100644 --- a/src/engine/SCons/exitfuncs.py +++ b/src/engine/SCons/exitfuncs.py @@ -27,7 +27,7 @@ Register functions which are executed when SCons exits for any reason.  # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.  # -__revision__ = "src/engine/SCons/exitfuncs.py e724ae812eb96f4858a132f5b8c769724744faf6 2019-07-21 00:04:47 bdeegan" +__revision__ = "src/engine/SCons/exitfuncs.py bee7caf9defd6e108fc2998a2520ddb36a967691 2019-12-17 02:07:09 bdeegan"  import atexit diff --git a/src/script/scons-configure-cache.py b/src/script/scons-configure-cache.py index 757a79f..ee11943 100644 --- a/src/script/scons-configure-cache.py +++ b/src/script/scons-configure-cache.py @@ -37,15 +37,15 @@ import glob  import json  import os -__revision__ = "src/script/scons-configure-cache.py e724ae812eb96f4858a132f5b8c769724744faf6 2019-07-21 00:04:47 bdeegan" +__revision__ = "src/script/scons-configure-cache.py bee7caf9defd6e108fc2998a2520ddb36a967691 2019-12-17 02:07:09 bdeegan" -__version__ = "3.1.0" +__version__ = "3.1.2" -__build__ = "e724ae812eb96f4858a132f5b8c769724744faf6" +__build__ = "bee7caf9defd6e108fc2998a2520ddb36a967691" -__buildsys__ = "kufra" +__buildsys__ = "octodog" -__date__ = "2019-07-21 00:04:47" +__date__ = "2019-12-17 02:07:09"  __developer__ = "bdeegan" diff --git a/src/script/scons-time.py b/src/script/scons-time.py index 975ff64..c371d59 100644 --- a/src/script/scons-time.py +++ b/src/script/scons-time.py @@ -31,7 +31,7 @@  # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.  from __future__ import division, print_function -__revision__ = "src/script/scons-time.py e724ae812eb96f4858a132f5b8c769724744faf6 2019-07-21 00:04:47 bdeegan" +__revision__ = "src/script/scons-time.py bee7caf9defd6e108fc2998a2520ddb36a967691 2019-12-17 02:07:09 bdeegan"  import getopt  import glob @@ -274,8 +274,6 @@ class SConsTimer(object):          return kw      default_settings = makedict( -        aegis               = 'aegis', -        aegis_project       = None,          chdir               = None,          config_file         = None,          initial_commands    = [], @@ -1113,7 +1111,6 @@ class SConsTimer(object):          help = """\          Usage: scons-time run [OPTIONS] [FILE ...] -          --aegis=PROJECT               Use SCons from the Aegis PROJECT            --chdir=DIR                   Name of unpacked directory for chdir            -f FILE, --file=FILE          Read configuration from specified FILE            -h, --help                    Print this help and exit @@ -1138,7 +1135,6 @@ class SConsTimer(object):          short_opts = '?f:hnp:qs:v'          long_opts = [ -            'aegis=',              'file=',              'help',              'no-exec', @@ -1157,9 +1153,7 @@ class SConsTimer(object):          opts, args = getopt.getopt(argv[1:], short_opts, long_opts)          for o, a in opts: -            if o in ('--aegis',): -                self.aegis_project = a -            elif o in ('-f', '--file'): +            if o in ('-f', '--file'):                  self.config_file = a              elif o in ('-?', '-h', '--help'):                  self.do_help(['help', 'run']) @@ -1211,8 +1205,6 @@ class SConsTimer(object):          prepare = None          if self.subversion_url:              prepare = self.prep_subversion_run -        elif self.aegis_project: -            prepare = self.prep_aegis_run          for run_number in run_number_list:              self.individual_run(run_number, self.archive_list, prepare) @@ -1234,20 +1226,6 @@ class SConsTimer(object):      def scons_lib_dir_path(self, dir):          return os.path.join(dir, 'src', 'engine') -    def prep_aegis_run(self, commands, removals): -        self.aegis_tmpdir = tempfile.mkdtemp(prefix=self.name + '-aegis-') -        removals.append((shutil.rmtree, 'rm -rf %%s', self.aegis_tmpdir)) - -        self.aegis_parent_project = os.path.splitext(self.aegis_project)[0] -        self.scons = self.scons_path(self.aegis_tmpdir) -        self.scons_lib_dir = self.scons_lib_dir_path(self.aegis_tmpdir) - -        commands.extend([ -            (lambda: os.chdir(self.aegis_tmpdir), 'cd %(aegis_tmpdir)s'), -            '%(aegis)s -cp -ind -p %(aegis_parent_project)s .', -            '%(aegis)s -cp -ind -p %(aegis_project)s -delta %(run_number)s .', -        ]) -      def prep_subversion_run(self, commands, removals):          self.svn_tmpdir = tempfile.mkdtemp(prefix=self.name + '-svn-')          removals.append((shutil.rmtree, 'rm -rf %%s', self.svn_tmpdir)) diff --git a/src/script/scons.bat b/src/script/scons.bat index 75e2a49..dc67188 100644 --- a/src/script/scons.bat +++ b/src/script/scons.bat @@ -1,11 +1,11 @@  @REM Copyright (c) 2001 - 2019 The SCons Foundation
 -@REM src/script/scons.bat e724ae812eb96f4858a132f5b8c769724744faf6 2019-07-21 00:04:47 bdeegan
 +@REM src/script/scons.bat bee7caf9defd6e108fc2998a2520ddb36a967691 2019-12-17 02:07:09 bdeegan
  @echo off
  set SCONS_ERRORLEVEL=
  if "%OS%" == "Windows_NT" goto WinNT
  @REM for 9x/Me you better not have more than 9 args
 -python -c "from os.path import join; import sys; sys.path = [ join(sys.prefix, 'Lib', 'site-packages', 'scons-3.1.0'), join(sys.prefix, 'Lib', 'site-packages', 'scons'), join(sys.prefix, 'scons-3.1.0'), join(sys.prefix, 'scons')] + sys.path; import SCons.Script; SCons.Script.main()" %1 %2 %3 %4 %5 %6 %7 %8 %9
 +python -c "from os.path import join; import sys; sys.path = [ join(sys.prefix, 'Lib', 'site-packages', 'scons-3.1.2'), join(sys.prefix, 'Lib', 'site-packages', 'scons'), join(sys.prefix, 'scons-3.1.2'), join(sys.prefix, 'scons')] + sys.path; import SCons.Script; SCons.Script.main()" %1 %2 %3 %4 %5 %6 %7 %8 %9
  @REM no way to set exit status of this script for 9x/Me
  goto endscons
 diff --git a/src/script/scons.py b/src/script/scons.py index b3172b1..d889e74 100755 --- a/src/script/scons.py +++ b/src/script/scons.py @@ -25,15 +25,15 @@  from __future__ import print_function -__revision__ = "src/script/scons.py e724ae812eb96f4858a132f5b8c769724744faf6 2019-07-21 00:04:47 bdeegan" +__revision__ = "src/script/scons.py bee7caf9defd6e108fc2998a2520ddb36a967691 2019-12-17 02:07:09 bdeegan" -__version__ = "3.1.0" +__version__ = "3.1.2" -__build__ = "e724ae812eb96f4858a132f5b8c769724744faf6" +__build__ = "bee7caf9defd6e108fc2998a2520ddb36a967691" -__buildsys__ = "kufra" +__buildsys__ = "octodog" -__date__ = "2019-07-21 00:04:47" +__date__ = "2019-12-17 02:07:09"  __developer__ = "bdeegan" diff --git a/src/script/sconsign.py b/src/script/sconsign.py index a0d7b7e..b1f7cd0 100644 --- a/src/script/sconsign.py +++ b/src/script/sconsign.py @@ -25,15 +25,15 @@  from __future__ import print_function -__revision__ = "src/script/sconsign.py e724ae812eb96f4858a132f5b8c769724744faf6 2019-07-21 00:04:47 bdeegan" +__revision__ = "src/script/sconsign.py bee7caf9defd6e108fc2998a2520ddb36a967691 2019-12-17 02:07:09 bdeegan" -__version__ = "3.1.0" +__version__ = "3.1.2" -__build__ = "e724ae812eb96f4858a132f5b8c769724744faf6" +__build__ = "bee7caf9defd6e108fc2998a2520ddb36a967691" -__buildsys__ = "kufra" +__buildsys__ = "octodog" -__date__ = "2019-07-21 00:04:47" +__date__ = "2019-12-17 02:07:09"  __developer__ = "bdeegan" diff --git a/src/setup.py b/src/setup.py index 790b1ea..0d4b62e 100755 --- a/src/setup.py +++ b/src/setup.py @@ -44,13 +44,13 @@ NOTE: Installed SCons is not importable like usual Python packages. It is  """ -__revision__ = "src/setup.py e724ae812eb96f4858a132f5b8c769724744faf6 2019-07-21 00:04:47 bdeegan" +__revision__ = "src/setup.py bee7caf9defd6e108fc2998a2520ddb36a967691 2019-12-17 02:07:09 bdeegan"  import os  import stat  import sys -Version = "3.1.0" +Version = "3.1.2"  man_pages = [      'scons.1', diff --git a/src/test_files.py b/src/test_files.py index 42fb397..281027f 100644 --- a/src/test_files.py +++ b/src/test_files.py @@ -23,7 +23,7 @@  #  from __future__ import print_function -__revision__ = "src/test_files.py e724ae812eb96f4858a132f5b8c769724744faf6 2019-07-21 00:04:47 bdeegan" +__revision__ = "src/test_files.py bee7caf9defd6e108fc2998a2520ddb36a967691 2019-12-17 02:07:09 bdeegan"  """  Verify that we have certain important files in our distribution diff --git a/src/test_interrupts.py b/src/test_interrupts.py index 4ae0969..8427553 100644 --- a/src/test_interrupts.py +++ b/src/test_interrupts.py @@ -23,7 +23,7 @@  from __future__ import print_function -__revision__ = "src/test_interrupts.py e724ae812eb96f4858a132f5b8c769724744faf6 2019-07-21 00:04:47 bdeegan" +__revision__ = "src/test_interrupts.py bee7caf9defd6e108fc2998a2520ddb36a967691 2019-12-17 02:07:09 bdeegan"  """  Verify that the SCons source code contains only correct handling of diff --git a/src/test_pychecker.py b/src/test_pychecker.py index a93033d..a186ceb 100644 --- a/src/test_pychecker.py +++ b/src/test_pychecker.py @@ -22,7 +22,7 @@  # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.  from __future__ import print_function -__revision__ = "src/test_pychecker.py e724ae812eb96f4858a132f5b8c769724744faf6 2019-07-21 00:04:47 bdeegan" +__revision__ = "src/test_pychecker.py bee7caf9defd6e108fc2998a2520ddb36a967691 2019-12-17 02:07:09 bdeegan"  """  Use pychecker to catch various Python coding errors. diff --git a/src/test_setup.py b/src/test_setup.py index b540ab2..56e14eb 100644 --- a/src/test_setup.py +++ b/src/test_setup.py @@ -23,7 +23,7 @@  #  from __future__ import print_function -__revision__ = "src/test_setup.py e724ae812eb96f4858a132f5b8c769724744faf6 2019-07-21 00:04:47 bdeegan" +__revision__ = "src/test_setup.py bee7caf9defd6e108fc2998a2520ddb36a967691 2019-12-17 02:07:09 bdeegan"  """  Test how the setup.py script installs SCons. @@ -176,7 +176,7 @@ tar_gz = os.path.join(cwd, 'build', 'dist', '%s.tar.gz' % scons_version)  zip = os.path.join(cwd, 'build', 'dist', '%s.zip' % scons_version)  if os.path.isfile(zip): -    try:  +    try:          import zipfile      except ImportError:          pass @@ -185,9 +185,9 @@ if os.path.isfile(zip):              for name in zf.namelist():                  dname = os.path.dirname(name) -                try:  +                try:                      os.makedirs(dname) -                except FileExistsError:  +                except FileExistsError:                      pass                  # if the file exists, then delete it before writing                  # to it so that we don't end up trying to write to a symlink: @@ -325,8 +325,7 @@ test.must_have_installed(test.man_page_paths())  other_prefix = test.workpath('other-prefix')  test.subdir(other_prefix)  test.run(arguments = 'setup.py install --prefix=%s' % other_prefix) -test.fail_test(test.stderr().find("you'll have to change the search path yourself") -               != -1) +test.fail_test("you'll have to change the search path yourself" in test.stderr())  # All done.  test.pass_test() diff --git a/src/test_strings.py b/src/test_strings.py index ad2c755..555ca5d 100644 --- a/src/test_strings.py +++ b/src/test_strings.py @@ -23,7 +23,7 @@  #  from __future__ import print_function -__revision__ = "src/test_strings.py e724ae812eb96f4858a132f5b8c769724744faf6 2019-07-21 00:04:47 bdeegan" +__revision__ = "src/test_strings.py bee7caf9defd6e108fc2998a2520ddb36a967691 2019-12-17 02:07:09 bdeegan"  """  Verify that we have proper strings like Copyright notices on all the @@ -109,7 +109,7 @@ class Checker(object):  class CheckUnexpandedStrings(Checker):      expressions = [          re.compile('Copyright (c) 2001 - 2019 The SCons Foundation'), -        re.compile('src/test_strings.py e724ae812eb96f4858a132f5b8c769724744faf6 2019-07-21 00:04:47 bdeegan'), +        re.compile('src/test_strings.py bee7caf9defd6e108fc2998a2520ddb36a967691 2019-12-17 02:07:09 bdeegan'),      ]      def must_be_built(self):          return None  | 
