Upgrade to SCons 4.5.2
This commit is contained in:
parent
50f1b05f86
commit
f391178af0
1531 changed files with 127 additions and 13 deletions
97
scons/scons-configure-cache.py
vendored
Normal file
97
scons/scons-configure-cache.py
vendored
Normal file
|
@ -0,0 +1,97 @@
|
|||
#! /usr/bin/env python
|
||||
#
|
||||
# SCons - a Software Constructor
|
||||
#
|
||||
# MIT License
|
||||
#
|
||||
# Copyright The SCons Foundation
|
||||
#
|
||||
# Permission is hereby granted, free of charge, to any person obtaining
|
||||
# a copy of this software and associated documentation files (the
|
||||
# "Software"), to deal in the Software without restriction, including
|
||||
# without limitation the rights to use, copy, modify, merge, publish,
|
||||
# distribute, sublicense, and/or sell copies of the Software, and to
|
||||
# permit persons to whom the Software is furnished to do so, subject to
|
||||
# the following conditions:
|
||||
#
|
||||
# The above copyright notice and this permission notice shall be included
|
||||
# in all copies or substantial portions of the Software.
|
||||
#
|
||||
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
|
||||
# KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
|
||||
# WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
||||
# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
||||
# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
||||
# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
||||
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
|
||||
"""Show or convert the configuration of an SCons cache directory.
|
||||
|
||||
A cache of derived files is stored by file signature.
|
||||
The files are split into directories named by the first few
|
||||
digits of the signature. The prefix length used for directory
|
||||
names can be changed by this script.
|
||||
"""
|
||||
__revision__ = "scripts/scons-configure-cache.py 120fd4f633e9ef3cafbc0fec35306d7555ffd1db Tue, 21 Mar 2023 12:11:27 -0400 bdbaddog"
|
||||
|
||||
__version__ = "4.5.2"
|
||||
|
||||
__build__ = "120fd4f633e9ef3cafbc0fec35306d7555ffd1db"
|
||||
|
||||
__buildsys__ = "M1DOG2021"
|
||||
|
||||
__date__ = "Tue, 21 Mar 2023 12:11:27 -0400"
|
||||
|
||||
__developer__ = "bdbaddog"
|
||||
|
||||
|
||||
import os
|
||||
import sys
|
||||
|
||||
# python compatibility check
|
||||
if sys.version_info < (3, 6, 0):
|
||||
msg = "scons: *** SCons version %s does not run under Python version %s.\n\
|
||||
Python >= 3.5 is required.\n"
|
||||
sys.stderr.write(msg % (__version__, sys.version.split()[0]))
|
||||
sys.exit(1)
|
||||
|
||||
# Strip the script directory from sys.path so on case-insensitive
|
||||
# (WIN32) systems Python doesn't think that the "scons" script is the
|
||||
# "SCons" package.
|
||||
script_dir = os.path.dirname(os.path.realpath(__file__))
|
||||
script_path = os.path.realpath(os.path.dirname(__file__))
|
||||
if script_path in sys.path:
|
||||
sys.path.remove(script_path)
|
||||
|
||||
libs = []
|
||||
|
||||
if "SCONS_LIB_DIR" in os.environ:
|
||||
libs.append(os.environ["SCONS_LIB_DIR"])
|
||||
|
||||
# running from source takes 2nd priority (since 2.3.2), following SCONS_LIB_DIR
|
||||
source_path = os.path.join(script_path, os.pardir)
|
||||
if os.path.isdir(source_path):
|
||||
libs.append(source_path)
|
||||
|
||||
# add local-install locations
|
||||
local_version = 'scons-local-' + __version__
|
||||
local = 'scons-local'
|
||||
if script_dir:
|
||||
local_version = os.path.join(script_dir, local_version)
|
||||
local = os.path.join(script_dir, local)
|
||||
if os.path.isdir(local_version):
|
||||
libs.append(os.path.abspath(local_version))
|
||||
if os.path.isdir(local):
|
||||
libs.append(os.path.abspath(local))
|
||||
|
||||
scons_version = 'scons-%s' % __version__
|
||||
|
||||
sys.path = libs + sys.path
|
||||
|
||||
##############################################################################
|
||||
# END STANDARD SCons SCRIPT HEADER
|
||||
##############################################################################
|
||||
from SCons.Utilities.ConfigureCache import main
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
|
@ -1043,6 +1043,12 @@ class SubstitutionEnvironment:
|
|||
flags distributed into appropriate construction variables.
|
||||
See :meth:`ParseFlags`.
|
||||
|
||||
As a side effect, if *unique* is true, a new object is created
|
||||
for each modified construction variable by the loop at the end.
|
||||
This is silently expected by the :meth:`Override` *parse_flags*
|
||||
functionality, which does not want to share the list (or whatever)
|
||||
with the environment being overridden.
|
||||
|
||||
Args:
|
||||
args: flags to merge
|
||||
unique: merge flags rather than appending (default: True).
|
||||
|
@ -1077,6 +1083,16 @@ class SubstitutionEnvironment:
|
|||
try:
|
||||
orig = orig + value
|
||||
except (KeyError, TypeError):
|
||||
# If CPPDEFINES is a deque, adding value (a list)
|
||||
# results in TypeError, so we handle that case here.
|
||||
# Just in case we got called from Override, make
|
||||
# sure we make a copy, because we don't go through
|
||||
# the cleanup loops at the end of the outer for loop,
|
||||
# which implicitly gives us a new object.
|
||||
if isinstance(orig, deque):
|
||||
self[key] = self[key].copy()
|
||||
self.AppendUnique(CPPDEFINES=value, delete_existing=True)
|
||||
continue
|
||||
try:
|
||||
add_to_orig = orig.append
|
||||
except AttributeError:
|
||||
|
@ -1095,6 +1111,7 @@ class SubstitutionEnvironment:
|
|||
for v in orig[::-1]:
|
||||
if v not in t:
|
||||
t.insert(0, v)
|
||||
|
||||
self[key] = t
|
||||
|
||||
|
||||
|
@ -1419,7 +1436,7 @@ class Base(SubstitutionEnvironment):
|
|||
if key == 'CPPDEFINES':
|
||||
_add_cppdefines(self._dict, val)
|
||||
continue
|
||||
|
||||
|
||||
try:
|
||||
orig = self._dict[key]
|
||||
except KeyError:
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Reference in a new issue