diff --git a/scons/scons-LICENSE b/scons/scons-LICENSE
index ef99104b6..3c6c58d3b 100644
--- a/scons/scons-LICENSE
+++ b/scons/scons-LICENSE
@@ -5,7 +5,7 @@
MIT License
-Copyright (c) 2001 - 2023 The SCons Foundation
+Copyright (c) 2001 - 2024 The SCons Foundation
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
diff --git a/scons/scons-README b/scons/scons-README
index e32b71e3b..002af2d54 100644
--- a/scons/scons-README
+++ b/scons/scons-README
@@ -43,11 +43,9 @@ scons-local package, or any SCons package, at the SCons download page:
EXECUTION REQUIREMENTS
======================
-Running SCons requires Python 3.5 or higher.
-There should be no other dependencies or requirements to run SCons.
-
-As of SCons 4.2.0 support for Python 3.5 is deprecated and will be removed
-with the next major release.
+Running SCons requires Python 3.6 or higher. There should be no other
+dependencies or requirements to run standard SCons.
+The last release to support Python 3.5 was 4.2.0.
The default SCons configuration assumes use of the Microsoft Visual C++
compiler suite on WIN32 systems (either through the Visual Studio
@@ -84,6 +82,11 @@ Or (if, for example, you installed this package in a subdirectory named
That should be all you have to do. (If it isn't that simple, please let
us know!)
+Since 4.5, there is also an alternate form of scons-local avaialble:
+a zipapp. This is a single file with a .pyz suffix, which can be
+downloaded and executed directly (e.g.: python scons-local-4.5.2.pyz)
+without unpacking. This may be more convenient in a few cases.
+
CONTENTS OF THIS PACKAGE
========================
@@ -191,8 +194,9 @@ You may subscribe to the scons-users mailing list at:
http://two.pairlist.net/mailman/listinfo/scons-users
-An active mailing list for developers of SCons is available. You may
-send questions or comments to the list at:
+In addition to the scons-users list which is appropriate for almost any
+question, there is a mailing list specifically for developers of SCons
+You may send questions or comments to the list at:
scons-dev@scons.org
@@ -204,10 +208,11 @@ Subscription to the developer's mailing list is by approval. In practice, no
one is refused list membership, but we reserve the right to limit membership
in the future and/or weed out lurkers.
-There are other mailing lists available for SCons users, for notification of
-SCons code changes, and for notification of updated bug reports and project
-documents. Please see our mailing lists page for details.
-
+Note that while this list still exists, the number of different places you
+can talk about SCons means it is no longer very active. GitHub has
+support for discussions as well as for issues, and there is usually more
+immediacy on the Discord chat, so these are probably now considered the
+preferred places for "development" topics.
FOR MORE INFORMATION
diff --git a/scons/scons-configure-cache.py b/scons/scons-configure-cache.py
index 5fd93cac2..faf32ede2 100644
--- a/scons/scons-configure-cache.py
+++ b/scons/scons-configure-cache.py
@@ -32,15 +32,15 @@ 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"
+__revision__ = "scripts/scons-configure-cache.py 265be6883fadbb5a545612265acc919595158366 Sun, 17 Mar 2024 17:33:54 -0700 bdbaddog"
-__version__ = "4.5.2"
+__version__ = "4.7.0"
-__build__ = "120fd4f633e9ef3cafbc0fec35306d7555ffd1db"
+__build__ = "265be6883fadbb5a545612265acc919595158366"
-__buildsys__ = "M1DOG2021"
+__buildsys__ = "M1Dog2021"
-__date__ = "Tue, 21 Mar 2023 12:11:27 -0400"
+__date__ = "Sun, 17 Mar 2024 17:33:54 -0700"
__developer__ = "bdbaddog"
diff --git a/scons/scons-local-4.5.2/SCons/Taskmaster/Job.py b/scons/scons-local-4.5.2/SCons/Taskmaster/Job.py
deleted file mode 100644
index a63b5291b..000000000
--- a/scons/scons-local-4.5.2/SCons/Taskmaster/Job.py
+++ /dev/null
@@ -1,746 +0,0 @@
-# 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.
-
-"""Serial and Parallel classes to execute build tasks.
-
-The Jobs class provides a higher level interface to start,
-stop, and wait on jobs.
-"""
-
-import SCons.compat
-
-import logging
-import os
-import signal
-import sys
-import threading
-
-from enum import Enum
-
-import SCons.Errors
-import SCons.Warnings
-
-
-# The default stack size (in kilobytes) of the threads used to execute
-# jobs in parallel.
-#
-# We use a stack size of 256 kilobytes. The default on some platforms
-# is too large and prevents us from creating enough threads to fully
-# parallelized the build. For example, the default stack size on linux
-# is 8 MBytes.
-
-explicit_stack_size = None
-default_stack_size = 256
-
-interrupt_msg = 'Build interrupted.'
-
-class InterruptState:
- def __init__(self):
- self.interrupted = False
-
- def set(self):
- self.interrupted = True
-
- def __call__(self):
- return self.interrupted
-
-
-class Jobs:
- """An instance of this class initializes N jobs, and provides
- methods for starting, stopping, and waiting on all N jobs.
- """
-
- def __init__(self, num, taskmaster):
- """
- Create 'num' jobs using the given taskmaster.
-
- If 'num' is 1 or less, then a serial job will be used,
- otherwise a parallel job with 'num' worker threads will
- be used.
-
- The 'num_jobs' attribute will be set to the actual number of jobs
- allocated. If more than one job is requested but the Parallel
- class can't do it, it gets reset to 1. Wrapping interfaces that
- care should check the value of 'num_jobs' after initialization.
- """
-
- # Importing GetOption here instead of at top of file to avoid
- # circular imports
- # pylint: disable=import-outside-toplevel
- from SCons.Script import GetOption
-
- self.job = None
- if num > 1:
- stack_size = explicit_stack_size
- if stack_size is None:
- stack_size = default_stack_size
-
- try:
- experimental_option = GetOption('experimental')
- if 'tm_v2' in experimental_option:
- self.job = NewParallel(taskmaster, num, stack_size)
- else:
- self.job = LegacyParallel(taskmaster, num, stack_size)
-
- self.num_jobs = num
- except NameError:
- pass
- if self.job is None:
- self.job = Serial(taskmaster)
- self.num_jobs = 1
-
- def run(self, postfunc=lambda: None):
- """Run the jobs.
-
- postfunc() will be invoked after the jobs has run. It will be
- invoked even if the jobs are interrupted by a keyboard
- interrupt (well, in fact by a signal such as either SIGINT,
- SIGTERM or SIGHUP). The execution of postfunc() is protected
- against keyboard interrupts and is guaranteed to run to
- completion."""
- self._setup_sig_handler()
- try:
- self.job.start()
- finally:
- postfunc()
- self._reset_sig_handler()
-
- def were_interrupted(self):
- """Returns whether the jobs were interrupted by a signal."""
- return self.job.interrupted()
-
- def _setup_sig_handler(self):
- """Setup an interrupt handler so that SCons can shutdown cleanly in
- various conditions:
-
- a) SIGINT: Keyboard interrupt
- b) SIGTERM: kill or system shutdown
- c) SIGHUP: Controlling shell exiting
-
- We handle all of these cases by stopping the taskmaster. It
- turns out that it's very difficult to stop the build process
- by throwing asynchronously an exception such as
- KeyboardInterrupt. For example, the python Condition
- variables (threading.Condition) and queues do not seem to be
- asynchronous-exception-safe. It would require adding a whole
- bunch of try/finally block and except KeyboardInterrupt all
- over the place.
-
- Note also that we have to be careful to handle the case when
- SCons forks before executing another process. In that case, we
- want the child to exit immediately.
- """
- def handler(signum, stack, self=self, parentpid=os.getpid()):
- if os.getpid() == parentpid:
- self.job.taskmaster.stop()
- self.job.interrupted.set()
- else:
- os._exit(2) # pylint: disable=protected-access
-
- self.old_sigint = signal.signal(signal.SIGINT, handler)
- self.old_sigterm = signal.signal(signal.SIGTERM, handler)
- try:
- self.old_sighup = signal.signal(signal.SIGHUP, handler)
- except AttributeError:
- pass
- if (self.old_sigint is None) or (self.old_sigterm is None) or \
- (hasattr(self, "old_sighup") and self.old_sighup is None):
- msg = "Overwritting previous signal handler which was not installed from Python. " + \
- "Will not be able to reinstate and so will return to default handler."
- SCons.Warnings.warn(SCons.Warnings.SConsWarning, msg)
-
- def _reset_sig_handler(self):
- """Restore the signal handlers to their previous state (before the
- call to _setup_sig_handler()."""
- sigint_to_use = self.old_sigint if self.old_sigint is not None else signal.SIG_DFL
- sigterm_to_use = self.old_sigterm if self.old_sigterm is not None else signal.SIG_DFL
- signal.signal(signal.SIGINT, sigint_to_use)
- signal.signal(signal.SIGTERM, sigterm_to_use)
- try:
- sigterm_to_use = self.old_sighup if self.old_sighup is not None else signal.SIG_DFL
- signal.signal(signal.SIGHUP, sigterm_to_use)
- except AttributeError:
- pass
-
-
-class Serial:
- """This class is used to execute tasks in series, and is more efficient
- than Parallel, but is only appropriate for non-parallel builds. Only
- one instance of this class should be in existence at a time.
-
- This class is not thread safe.
- """
-
- def __init__(self, taskmaster):
- """Create a new serial job given a taskmaster.
-
- The taskmaster's next_task() method should return the next task
- that needs to be executed, or None if there are no more tasks. The
- taskmaster's executed() method will be called for each task when it
- is successfully executed, or failed() will be called if it failed to
- execute (e.g. execute() raised an exception)."""
-
- self.taskmaster = taskmaster
- self.interrupted = InterruptState()
-
- def start(self):
- """Start the job. This will begin pulling tasks from the taskmaster
- and executing them, and return when there are no more tasks. If a task
- fails to execute (i.e. execute() raises an exception), then the job will
- stop."""
-
- while True:
- task = self.taskmaster.next_task()
-
- if task is None:
- break
-
- try:
- task.prepare()
- if task.needs_execute():
- task.execute()
- except Exception:
- if self.interrupted():
- try:
- raise SCons.Errors.BuildError(
- task.targets[0], errstr=interrupt_msg)
- except Exception:
- task.exception_set()
- else:
- task.exception_set()
-
- # Let the failed() callback function arrange for the
- # build to stop if that's appropriate.
- task.failed()
- else:
- task.executed()
-
- task.postprocess()
- self.taskmaster.cleanup()
-
-
-# Trap import failure so that everything in the Job module but the
-# Parallel class (and its dependent classes) will work if the interpreter
-# doesn't support threads.
-try:
- import queue
- import threading
-except ImportError:
- pass
-else:
- class Worker(threading.Thread):
- """A worker thread waits on a task to be posted to its request queue,
- dequeues the task, executes it, and posts a tuple including the task
- and a boolean indicating whether the task executed successfully. """
-
- def __init__(self, requestQueue, resultsQueue, interrupted):
- super().__init__()
- self.daemon = True
- self.requestQueue = requestQueue
- self.resultsQueue = resultsQueue
- self.interrupted = interrupted
- self.start()
-
- def run(self):
- while True:
- task = self.requestQueue.get()
-
- if task is None:
- # The "None" value is used as a sentinel by
- # ThreadPool.cleanup(). This indicates that there
- # are no more tasks, so we should quit.
- break
-
- try:
- if self.interrupted():
- raise SCons.Errors.BuildError(
- task.targets[0], errstr=interrupt_msg)
- task.execute()
- except Exception:
- task.exception_set()
- ok = False
- else:
- ok = True
-
- self.resultsQueue.put((task, ok))
-
- class ThreadPool:
- """This class is responsible for spawning and managing worker threads."""
-
- def __init__(self, num, stack_size, interrupted):
- """Create the request and reply queues, and 'num' worker threads.
-
- One must specify the stack size of the worker threads. The
- stack size is specified in kilobytes.
- """
- self.requestQueue = queue.Queue(0)
- self.resultsQueue = queue.Queue(0)
-
- try:
- prev_size = threading.stack_size(stack_size * 1024)
- except AttributeError as e:
- # Only print a warning if the stack size has been
- # explicitly set.
- if explicit_stack_size is not None:
- msg = "Setting stack size is unsupported by this version of Python:\n " + \
- e.args[0]
- SCons.Warnings.warn(SCons.Warnings.StackSizeWarning, msg)
- except ValueError as e:
- msg = "Setting stack size failed:\n " + str(e)
- SCons.Warnings.warn(SCons.Warnings.StackSizeWarning, msg)
-
- # Create worker threads
- self.workers = []
- for _ in range(num):
- worker = Worker(self.requestQueue, self.resultsQueue, interrupted)
- self.workers.append(worker)
-
- if 'prev_size' in locals():
- threading.stack_size(prev_size)
-
- def put(self, task):
- """Put task into request queue."""
- self.requestQueue.put(task)
-
- def get(self):
- """Remove and return a result tuple from the results queue."""
- return self.resultsQueue.get()
-
- def preparation_failed(self, task):
- self.resultsQueue.put((task, False))
-
- def cleanup(self):
- """
- Shuts down the thread pool, giving each worker thread a
- chance to shut down gracefully.
- """
- # For each worker thread, put a sentinel "None" value
- # on the requestQueue (indicating that there's no work
- # to be done) so that each worker thread will get one and
- # terminate gracefully.
- for _ in self.workers:
- self.requestQueue.put(None)
-
- # Wait for all of the workers to terminate.
- #
- # If we don't do this, later Python versions (2.4, 2.5) often
- # seem to raise exceptions during shutdown. This happens
- # in requestQueue.get(), as an assertion failure that
- # requestQueue.not_full is notified while not acquired,
- # seemingly because the main thread has shut down (or is
- # in the process of doing so) while the workers are still
- # trying to pull sentinels off the requestQueue.
- #
- # Normally these terminations should happen fairly quickly,
- # but we'll stick a one-second timeout on here just in case
- # someone gets hung.
- for worker in self.workers:
- worker.join(1.0)
- self.workers = []
-
- class LegacyParallel:
- """This class is used to execute tasks in parallel, and is somewhat
- less efficient than Serial, but is appropriate for parallel builds.
-
- This class is thread safe.
- """
-
- def __init__(self, taskmaster, num, stack_size):
- """Create a new parallel job given a taskmaster.
-
- The taskmaster's next_task() method should return the next
- task that needs to be executed, or None if there are no more
- tasks. The taskmaster's executed() method will be called
- for each task when it is successfully executed, or failed()
- will be called if the task failed to execute (i.e. execute()
- raised an exception).
-
- Note: calls to taskmaster are serialized, but calls to
- execute() on distinct tasks are not serialized, because
- that is the whole point of parallel jobs: they can execute
- multiple tasks simultaneously. """
-
- self.taskmaster = taskmaster
- self.interrupted = InterruptState()
- self.tp = ThreadPool(num, stack_size, self.interrupted)
-
- self.maxjobs = num
-
- def start(self):
- """Start the job. This will begin pulling tasks from the
- taskmaster and executing them, and return when there are no
- more tasks. If a task fails to execute (i.e. execute() raises
- an exception), then the job will stop."""
-
- jobs = 0
-
- while True:
- # Start up as many available tasks as we're
- # allowed to.
- while jobs < self.maxjobs:
- task = self.taskmaster.next_task()
- if task is None:
- break
-
- try:
- # prepare task for execution
- task.prepare()
- except Exception:
- task.exception_set()
- task.failed()
- task.postprocess()
- else:
- if task.needs_execute():
- # dispatch task
- self.tp.put(task)
- jobs += 1
- else:
- task.executed()
- task.postprocess()
-
- if not task and not jobs:
- break
-
- # Let any/all completed tasks finish up before we go
- # back and put the next batch of tasks on the queue.
- while True:
- task, ok = self.tp.get()
- jobs -= 1
-
- if ok:
- task.executed()
- else:
- if self.interrupted():
- try:
- raise SCons.Errors.BuildError(
- task.targets[0], errstr=interrupt_msg)
- except Exception:
- task.exception_set()
-
- # Let the failed() callback function arrange
- # for the build to stop if that's appropriate.
- task.failed()
-
- task.postprocess()
-
- if self.tp.resultsQueue.empty():
- break
-
- self.tp.cleanup()
- self.taskmaster.cleanup()
-
- # An experimental new parallel scheduler that uses a leaders/followers pattern.
- class NewParallel:
-
- class State(Enum):
- READY = 0
- SEARCHING = 1
- STALLED = 2
- COMPLETED = 3
-
- class Worker(threading.Thread):
- def __init__(self, owner):
- super().__init__()
- self.daemon = True
- self.owner = owner
- self.start()
-
- def run(self):
- self.owner._work()
-
- def __init__(self, taskmaster, num, stack_size):
- self.taskmaster = taskmaster
- self.num_workers = num
- self.stack_size = stack_size
- self.interrupted = InterruptState()
- self.workers = []
-
- # The `tm_lock` is what ensures that we only have one
- # thread interacting with the taskmaster at a time. It
- # also protects access to our state that gets updated
- # concurrently. The `can_search_cv` is associated with
- # this mutex.
- self.tm_lock = threading.Lock()
-
- # Guarded under `tm_lock`.
- self.jobs = 0
- self.state = NewParallel.State.READY
-
- # The `can_search_cv` is used to manage a leader /
- # follower pattern for access to the taskmaster, and to
- # awaken from stalls.
- self.can_search_cv = threading.Condition(self.tm_lock)
-
- # The queue of tasks that have completed execution. The
- # next thread to obtain `tm_lock`` will retire them.
- self.results_queue_lock = threading.Lock()
- self.results_queue = []
-
- if self.taskmaster.trace:
- self.trace = self._setup_logging()
- else:
- self.trace = False
-
- def _setup_logging(self):
- jl = logging.getLogger("Job")
- jl.setLevel(level=logging.DEBUG)
- jl.addHandler(self.taskmaster.trace.log_handler)
- return jl
-
- def trace_message(self, message):
- # This grabs the name of the function which calls trace_message()
- method_name = sys._getframe(1).f_code.co_name + "():"
- thread_id=threading.get_ident()
- self.trace.debug('%s.%s [Thread:%s] %s' % (type(self).__name__, method_name, thread_id, message))
- # print('%-15s %s' % (method_name, message))
-
- def start(self):
- self._start_workers()
- for worker in self.workers:
- worker.join()
- self.workers = []
- self.taskmaster.cleanup()
-
- def _start_workers(self):
- prev_size = self._adjust_stack_size()
- for _ in range(self.num_workers):
- self.workers.append(NewParallel.Worker(self))
- self._restore_stack_size(prev_size)
-
- def _adjust_stack_size(self):
- try:
- prev_size = threading.stack_size(self.stack_size * 1024)
- return prev_size
- except AttributeError as e:
- # Only print a warning if the stack size has been
- # explicitly set.
- if explicit_stack_size is not None:
- msg = "Setting stack size is unsupported by this version of Python:\n " + \
- e.args[0]
- SCons.Warnings.warn(SCons.Warnings.StackSizeWarning, msg)
- except ValueError as e:
- msg = "Setting stack size failed:\n " + str(e)
- SCons.Warnings.warn(SCons.Warnings.StackSizeWarning, msg)
-
- return None
-
- def _restore_stack_size(self, prev_size):
- if prev_size is not None:
- threading.stack_size(prev_size)
-
- def _work(self):
-
- task = None
-
- while True:
-
- # Obtain `tm_lock`, granting exclusive access to the taskmaster.
- with self.can_search_cv:
-
- if self.trace:
- self.trace_message("Gained exclusive access")
-
- # Capture whether we got here with `task` set,
- # then drop our reference to the task as we are no
- # longer interested in the actual object.
- completed_task = (task is not None)
- task = None
-
- # We will only have `completed_task` set here if
- # we have looped back after executing a task. If
- # we have completed a task and find that we are
- # stalled, we should speculatively indicate that
- # we are no longer stalled by transitioning to the
- # 'ready' state which will bypass the condition
- # wait so that we immediately process the results
- # queue and hopefully light up new
- # work. Otherwise, stay stalled, and we will wait
- # in the condvar. Some other thread will come back
- # here with a completed task.
- if self.state == NewParallel.State.STALLED and completed_task:
- if self.trace:
- self.trace_message("Detected stall with completed task, bypassing wait")
- self.state = NewParallel.State.READY
-
- # Wait until we are neither searching nor stalled.
- while self.state == NewParallel.State.SEARCHING or self.state == NewParallel.State.STALLED:
- if self.trace:
- self.trace_message("Search already in progress, waiting")
- self.can_search_cv.wait()
-
- # If someone set the completed flag, bail.
- if self.state == NewParallel.State.COMPLETED:
- if self.trace:
- self.trace_message("Completion detected, breaking from main loop")
- break
-
- # Set the searching flag to indicate that a thread
- # is currently in the critical section for
- # taskmaster work.
- #
- if self.trace:
- self.trace_message("Starting search")
- self.state = NewParallel.State.SEARCHING
-
- # Bulk acquire the tasks in the results queue
- # under the result queue lock, then process them
- # all outside that lock. We need to process the
- # tasks in the results queue before looking for
- # new work because we might be unable to find new
- # work if we don't.
- results_queue = []
- with self.results_queue_lock:
- results_queue, self.results_queue = self.results_queue, results_queue
-
- if self.trace:
- self.trace_message("Found {len(results_queue)} completed tasks to process")
- for (rtask, rresult) in results_queue:
- if rresult:
- rtask.executed()
- else:
- if self.interrupted():
- try:
- raise SCons.Errors.BuildError(
- rtask.targets[0], errstr=interrupt_msg)
- except Exception:
- rtask.exception_set()
-
- # Let the failed() callback function arrange
- # for the build to stop if that's appropriate.
- rtask.failed()
-
- rtask.postprocess()
- self.jobs -= 1
-
- # We are done with any task objects that were in
- # the results queue.
- results_queue.clear()
-
- # Now, turn the crank on the taskmaster until we
- # either run out of tasks, or find a task that
- # needs execution. If we run out of tasks, go idle
- # until results arrive if jobs are pending, or
- # mark the walk as complete if not.
- while self.state == NewParallel.State.SEARCHING:
- if self.trace:
- self.trace_message("Searching for new tasks")
- task = self.taskmaster.next_task()
-
- if task:
- # We found a task. Walk it through the
- # task lifecycle. If it does not need
- # execution, just complete the task and
- # look for the next one. Otherwise,
- # indicate that we are no longer searching
- # so we can drop out of this loop, execute
- # the task outside the lock, and allow
- # another thread in to search.
- try:
- task.prepare()
- except Exception:
- task.exception_set()
- task.failed()
- task.postprocess()
- else:
- if not task.needs_execute():
- if self.trace:
- self.trace_message("Found internal task")
- task.executed()
- task.postprocess()
- else:
- self.jobs += 1
- if self.trace:
- self.trace_message("Found task requiring execution")
- self.state = NewParallel.State.READY
- self.can_search_cv.notify()
-
- else:
- # We failed to find a task, so this thread
- # cannot continue turning the taskmaster
- # crank. We must exit the loop.
- if self.jobs:
- # No task was found, but there are
- # outstanding jobs executing that
- # might unblock new tasks when they
- # complete. Transition to the stalled
- # state. We do not need a notify,
- # because we know there are threads
- # outstanding that will re-enter the
- # loop.
- #
- if self.trace:
- self.trace_message("Found no task requiring execution, but have jobs: marking stalled")
- self.state = NewParallel.State.STALLED
- else:
- # We didn't find a task and there are
- # no jobs outstanding, so there is
- # nothing that will ever return
- # results which might unblock new
- # tasks. We can conclude that the walk
- # is complete. Update our state to
- # note completion and awaken anyone
- # sleeping on the condvar.
- #
- if self.trace:
- self.trace_message("Found no task requiring execution, and have no jobs: marking complete")
- self.state = NewParallel.State.COMPLETED
- self.can_search_cv.notify_all()
-
- # We no longer hold `tm_lock` here. If we have a task,
- # we can now execute it. If there are threads waiting
- # to search, one of them can now begin turning the
- # taskmaster crank in NewParallel.
- if task:
- if self.trace:
- self.trace_message("Executing task")
- ok = True
- try:
- if self.interrupted():
- raise SCons.Errors.BuildError(
- task.targets[0], errstr=interrupt_msg)
- task.execute()
- except Exception:
- ok = False
- task.exception_set()
-
- # Grab the results queue lock and enqueue the
- # executed task and state. The next thread into
- # the searching loop will complete the
- # postprocessing work under the taskmaster lock.
- #
- if self.trace:
- self.trace_message("Enqueueing executed task results")
- with self.results_queue_lock:
- self.results_queue.append((task, ok))
-
- # Tricky state "fallthrough" here. We are going back
- # to the top of the loop, which behaves differently
- # depending on whether `task` is set. Do not perturb
- # the value of the `task` variable if you add new code
- # after this comment.
-
-# Local Variables:
-# tab-width:4
-# indent-tabs-mode:nil
-# End:
-# vim: set expandtab tabstop=4 shiftwidth=4:
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docs/html.xsl b/scons/scons-local-4.5.2/SCons/Tool/docbook/docs/html.xsl
deleted file mode 100644
index 407e18daf..000000000
--- a/scons/scons-local-4.5.2/SCons/Tool/docbook/docs/html.xsl
+++ /dev/null
@@ -1,55 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-/appendix toc,title
-article/appendix nop
-/article toc,title
-book toc,title,figure,table,example,equation
-/chapter toc,title
-part toc,title
-/preface toc,title
-reference toc,title
-/sect1 toc
-/sect2 toc
-/sect3 toc
-/sect4 toc
-/sect5 toc
-/section toc
-set toc,title
-
-
-
-
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docs/pdf.xsl b/scons/scons-local-4.5.2/SCons/Tool/docbook/docs/pdf.xsl
deleted file mode 100644
index 8703ced2f..000000000
--- a/scons/scons-local-4.5.2/SCons/Tool/docbook/docs/pdf.xsl
+++ /dev/null
@@ -1,62 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-0pt
-
-
-/appendix toc,title
-article/appendix nop
-/article toc,title
-book toc,title,figure,table,example,equation
-/chapter toc,title
-part toc,title
-/preface toc,title
-reference toc,title
-/sect1 toc
-/sect2 toc
-/sect3 toc
-/sect4 toc
-/sect5 toc
-/section toc
-set toc,title
-
-
-
-
-
-
-
-
diff --git a/scons/scons-local-4.5.2/SCons/Warnings.py b/scons/scons-local-4.5.2/SCons/Warnings.py
deleted file mode 100644
index f77a24a2d..000000000
--- a/scons/scons-local-4.5.2/SCons/Warnings.py
+++ /dev/null
@@ -1,241 +0,0 @@
-# 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.
-
-"""The SCons warnings framework."""
-
-import sys
-
-import SCons.Errors
-
-class SConsWarning(SCons.Errors.UserError):
- pass
-
-class WarningOnByDefault(SConsWarning):
- pass
-
-
-# NOTE: If you add a new warning class, add it to the man page, too!
-# Not all warnings are defined here, some are defined in the location of use
-
-class TargetNotBuiltWarning(SConsWarning): # Should go to OnByDefault
- pass
-
-class CacheVersionWarning(WarningOnByDefault):
- pass
-
-class CacheWriteErrorWarning(SConsWarning):
- pass
-
-class CacheCleanupErrorWarning(SConsWarning):
- pass
-
-class CorruptSConsignWarning(WarningOnByDefault):
- pass
-
-class DependencyWarning(SConsWarning):
- pass
-
-class DevelopmentVersionWarning(WarningOnByDefault):
- pass
-
-class DuplicateEnvironmentWarning(WarningOnByDefault):
- pass
-
-class FutureReservedVariableWarning(WarningOnByDefault):
- pass
-
-class LinkWarning(WarningOnByDefault):
- pass
-
-class MisleadingKeywordsWarning(WarningOnByDefault):
- pass
-
-class MissingSConscriptWarning(WarningOnByDefault):
- pass
-
-class NoObjectCountWarning(WarningOnByDefault):
- pass
-
-class NoParallelSupportWarning(WarningOnByDefault):
- pass
-
-class ReservedVariableWarning(WarningOnByDefault):
- pass
-
-class StackSizeWarning(WarningOnByDefault):
- pass
-
-class VisualCMissingWarning(WarningOnByDefault):
- pass
-
-# Used when MSVC_VERSION and MSVS_VERSION do not point to the
-# same version (MSVS_VERSION is deprecated)
-class VisualVersionMismatch(WarningOnByDefault):
- pass
-
-class VisualStudioMissingWarning(SConsWarning):
- pass
-
-class FortranCxxMixWarning(LinkWarning):
- pass
-
-
-# Deprecation warnings
-
-class FutureDeprecatedWarning(SConsWarning):
- pass
-
-class DeprecatedWarning(SConsWarning):
- pass
-
-class MandatoryDeprecatedWarning(DeprecatedWarning):
- pass
-
-
-# Special case; base always stays DeprecatedWarning
-class PythonVersionWarning(DeprecatedWarning):
- pass
-
-class DeprecatedSourceCodeWarning(FutureDeprecatedWarning):
- pass
-
-class TaskmasterNeedsExecuteWarning(DeprecatedWarning):
- pass
-
-class DeprecatedOptionsWarning(MandatoryDeprecatedWarning):
- pass
-
-class DeprecatedDebugOptionsWarning(MandatoryDeprecatedWarning):
- pass
-
-class DeprecatedMissingSConscriptWarning(DeprecatedWarning):
- pass
-
-class ToolQtDeprecatedWarning(DeprecatedWarning):
- pass
-
-# The below is a list of 2-tuples. The first element is a class object.
-# The second element is true if that class is enabled, false if it is disabled.
-_enabled = []
-
-# If set, raise the warning as an exception
-_warningAsException = False
-
-# If not None, a function to call with the warning
-_warningOut = None
-
-def suppressWarningClass(clazz):
- """Suppresses all warnings of type clazz or derived from clazz."""
- _enabled.insert(0, (clazz, False))
-
-def enableWarningClass(clazz):
- """Enables all warnings of type clazz or derived from clazz."""
- _enabled.insert(0, (clazz, True))
-
-def warningAsException(flag=True):
- """Set global _warningAsExeption flag.
-
- Args:
- flag: value to set warnings-as-exceptions to [default: True]
-
- Returns:
- The previous value.
- """
- global _warningAsException
- old = _warningAsException
- _warningAsException = flag
- return old
-
-def warn(clazz, *args):
- """Issue a warning, accounting for SCons rules.
-
- Check if warnings for this class are enabled.
- If warnings are treated as exceptions, raise exception.
- Use the global warning-emitter _warningOut, which allows selecting
- different ways of presenting a traceback (see Script/Main.py)
- """
- warning = clazz(args)
- for cls, flag in _enabled:
- if isinstance(warning, cls):
- if flag:
- if _warningAsException:
- raise warning
-
- if _warningOut:
- _warningOut(warning)
- break
-
-def process_warn_strings(arguments):
- """Process requests to enable/disable warnings.
-
- The requests are strings passed to the --warn option or the
- SetOption('warn') function.
-
- An argument to this option should be of the form "warning-class"
- or "no-warning-class". The warning class is munged and has
- the suffix "Warning" added in order to get an actual class name
- from the classes above, which we need to pass to the
- {enable,disable}WarningClass() functions.
-
- For example, "deprecated" will enable the DeprecatedWarning class.
- "no-dependency" will disable the DependencyWarning class.
-
- As a special case, --warn=all and --warn=no-all will enable or
- disable (respectively) the base class of all SCons warnings.
- """
-
- def _classmunge(s):
- """Convert a warning argument to SConsCase.
-
- The result is CamelCase, except "Scons" is changed to "SCons"
- """
- s = s.replace("-", " ").title().replace(" ", "")
- return s.replace("Scons", "SCons")
-
- for arg in arguments:
- enable = True
- if arg.startswith("no-"):
- enable = False
- arg = arg[len("no-") :]
- if arg == 'all':
- class_name = "SConsWarning"
- else:
- class_name = _classmunge(arg) + 'Warning'
- try:
- clazz = globals()[class_name]
- except KeyError:
- sys.stderr.write("No warning type: '%s'\n" % arg)
- else:
- if enable:
- enableWarningClass(clazz)
- elif issubclass(clazz, MandatoryDeprecatedWarning):
- fmt = "Can not disable mandataory warning: '%s'\n"
- sys.stderr.write(fmt % arg)
- else:
- suppressWarningClass(clazz)
-
-# Local Variables:
-# tab-width:4
-# indent-tabs-mode:nil
-# End:
-# vim: set expandtab tabstop=4 shiftwidth=4:
diff --git a/scons/scons-local-4.5.2/SCons/__init__.py b/scons/scons-local-4.5.2/SCons/__init__.py
deleted file mode 100644
index 12be8e6c4..000000000
--- a/scons/scons-local-4.5.2/SCons/__init__.py
+++ /dev/null
@@ -1,9 +0,0 @@
-__version__="4.5.2"
-__copyright__="Copyright (c) 2001 - 2023 The SCons Foundation"
-__developer__="bdbaddog"
-__date__="Tue, 21 Mar 2023 12:11:27 -0400"
-__buildsys__="M1DOG2021"
-__revision__="120fd4f633e9ef3cafbc0fec35306d7555ffd1db"
-__build__="120fd4f633e9ef3cafbc0fec35306d7555ffd1db"
-# make sure compatibility is always in place
-import SCons.compat # noqa
\ No newline at end of file
diff --git a/scons/scons-local-4.5.2/SCons/Action.py b/scons/scons-local-4.7.0/SCons/Action.py
similarity index 79%
rename from scons/scons-local-4.5.2/SCons/Action.py
rename to scons/scons-local-4.7.0/SCons/Action.py
index 1f5e5483f..afa1d91dd 100644
--- a/scons/scons-local-4.5.2/SCons/Action.py
+++ b/scons/scons-local-4.7.0/SCons/Action.py
@@ -100,24 +100,27 @@ way for wrapping up the functions.
"""
+import inspect
import os
import pickle
import re
-import sys
import subprocess
-from subprocess import DEVNULL
-import inspect
+import sys
+from abc import ABC, abstractmethod
from collections import OrderedDict
+from subprocess import DEVNULL, PIPE
+from typing import List, Optional, Tuple
import SCons.Debug
-import SCons.Util
-from SCons.Debug import logInstanceCreation
import SCons.Errors
-import SCons.Util
import SCons.Subst
+import SCons.Util
# we use these a lot, so try to optimize them
+from SCons.Debug import logInstanceCreation
+from SCons.Subst import SUBST_CMD, SUBST_RAW, SUBST_SIG
from SCons.Util import is_String, is_List
+from SCons.Util.sctyping import ExecutorType
class _null:
pass
@@ -126,13 +129,10 @@ print_actions = True
execute_actions = True
print_actions_presub = False
-# Use pickle protocol 1 when pickling functions for signature
-# otherwise python3 and python2 will yield different pickles
-# for the same object.
-# This is due to default being 1 for python 2.7, and 3 for 3.x
-# TODO: We can roll this forward to 2 (if it has value), but not
-# before a deprecation cycle as the sconsigns will change
-ACTION_SIGNATURE_PICKLE_PROTOCOL = 1
+# Use pickle protocol 4 when pickling functions for signature.
+# This is the common format since Python 3.4
+# TODO: use is commented out as not stable since 2017: e0bc3a04d5. Drop?
+# ACTION_SIGNATURE_PICKLE_PROTOCOL = 4
def rfile(n):
@@ -148,9 +148,8 @@ def default_exitstatfunc(s):
strip_quotes = re.compile(r'^[\'"](.*)[\'"]$')
-def _callable_contents(obj):
- """Return the signature contents of a callable Python object.
- """
+def _callable_contents(obj) -> bytearray:
+ """Return the signature contents of a callable Python object."""
try:
# Test if obj is a method.
return _function_contents(obj.__func__)
@@ -170,7 +169,7 @@ def _callable_contents(obj):
return _function_contents(obj)
-def _object_contents(obj):
+def _object_contents(obj) -> bytearray:
"""Return the signature contents of any Python object.
We have to handle the case where object contains a code object
@@ -210,8 +209,10 @@ def _object_contents(obj):
# the best we can.
return bytearray(repr(obj), 'utf-8')
+# TODO: docstrings for _code_contents and _function_contents
+# do not render well with Sphinx. Consider reworking.
-def _code_contents(code, docstring=None):
+def _code_contents(code, docstring=None) -> bytearray:
r"""Return the signature contents of a code object.
By providing direct access to the code object of the
@@ -223,7 +224,7 @@ def _code_contents(code, docstring=None):
recompilations from moving a Python function.
See:
- - https://docs.python.org/2/library/inspect.html
+ - https://docs.python.org/3/library/inspect.html
- http://python-reference.readthedocs.io/en/latest/docs/code/index.html
For info on what each co\_ variable provides
@@ -243,12 +244,11 @@ def _code_contents(code, docstring=None):
co_code - Returns a string representing the sequence of bytecode instructions.
"""
-
# contents = []
# The code contents depends on the number of local variables
# but not their actual names.
- contents = bytearray("{}, {}".format(code.co_argcount, len(code.co_varnames)), 'utf-8')
+ contents = bytearray(f"{code.co_argcount}, {len(code.co_varnames)}", 'utf-8')
contents.extend(b", ")
contents.extend(bytearray(str(len(code.co_cellvars)), 'utf-8'))
@@ -281,8 +281,9 @@ def _code_contents(code, docstring=None):
return contents
-def _function_contents(func):
- """
+def _function_contents(func) -> bytearray:
+ """Return the signature contents of a function.
+
The signature is as follows (should be byte/chars):
< _code_contents (see above) from func.__code__ >
,( comma separated _object_contents for function argument defaults)
@@ -293,11 +294,7 @@ def _function_contents(func):
- func.__code__ - The code object representing the compiled function body.
- func.__defaults__ - A tuple containing default argument values for those arguments that have defaults, or None if no arguments have a default value
- func.__closure__ - None or a tuple of cells that contain bindings for the function's free variables.
-
- :Returns:
- Signature contents of a function. (in bytes)
"""
-
contents = [_code_contents(func.__code__, func.__doc__)]
# The function contents depends on the value of defaults arguments
@@ -389,9 +386,10 @@ def _object_instance_content(obj):
# print("Inst Methods :\n%s"%pp.pformat(methods))
def _actionAppend(act1, act2):
- # This function knows how to slap two actions together.
- # Mainly, it handles ListActions by concatenating into
- # a single ListAction.
+ """Joins two actions together.
+
+ Mainly, it handles ListActions by concatenating into a single ListAction.
+ """
a1 = Action(act1)
a2 = Action(act2)
if a1 is None:
@@ -401,13 +399,12 @@ def _actionAppend(act1, act2):
if isinstance(a1, ListAction):
if isinstance(a2, ListAction):
return ListAction(a1.list + a2.list)
- else:
- return ListAction(a1.list + [ a2 ])
- else:
- if isinstance(a2, ListAction):
- return ListAction([ a1 ] + a2.list)
- else:
- return ListAction([ a1, a2 ])
+ return ListAction(a1.list + [ a2 ])
+
+ if isinstance(a2, ListAction):
+ return ListAction([ a1 ] + a2.list)
+
+ return ListAction([ a1, a2 ])
def _do_create_keywords(args, kw):
@@ -439,21 +436,18 @@ def _do_create_keywords(args, kw):
def _do_create_action(act, kw):
- """This is the actual "implementation" for the
- Action factory method, below. This handles the
- fact that passing lists to Action() itself has
- different semantics than passing lists as elements
- of lists.
-
- The former will create a ListAction, the latter
- will create a CommandAction by converting the inner
- list elements to strings."""
+ """The internal implementation for the Action factory method.
+ This handles the fact that passing lists to :func:`Action` itself has
+ different semantics than passing lists as elements of lists.
+ The former will create a :class:`ListAction`, the latter will create a
+ :class:`CommandAction` by converting the inner list elements to strings.
+ """
if isinstance(act, ActionBase):
return act
if is_String(act):
- var=SCons.Util.get_environment_var(act)
+ var = SCons.Util.get_environment_var(act)
if var:
# This looks like a string that is purely an Environment
# variable reference, like "$FOO" or "${FOO}". We do
@@ -473,11 +467,7 @@ def _do_create_action(act, kw):
return CommandAction(act, **kw)
if callable(act):
- try:
- gen = kw['generator']
- del kw['generator']
- except KeyError:
- gen = 0
+ gen = kw.pop('generator', False)
if gen:
action_type = CommandGeneratorAction
else:
@@ -485,25 +475,33 @@ def _do_create_action(act, kw):
return action_type(act, kw)
# Catch a common error case with a nice message:
- if isinstance(act, int) or isinstance(act, float):
+ if isinstance(act, (int, float)):
raise TypeError("Don't know how to create an Action from a number (%s)"%act)
# Else fail silently (???)
return None
-def _do_create_list_action(act, kw):
- """A factory for list actions. Convert the input list into Actions
- and then wrap them in a ListAction."""
+# TODO: from __future__ import annotations once we get to Python 3.7 base,
+# to avoid quoting the defined-later classname
+def _do_create_list_action(act, kw) -> "ListAction":
+ """A factory for list actions.
+
+ Convert the input list *act* into Actions and then wrap them in a
+ :class:`ListAction`. If *act* has only a single member, return that
+ member, not a *ListAction*. This is intended to allow a contained
+ list to specify a command action without being processed into a
+ list action.
+ """
acts = []
for a in act:
aa = _do_create_action(a, kw)
- if aa is not None: acts.append(aa)
+ if aa is not None:
+ acts.append(aa)
if not acts:
return ListAction([])
- elif len(acts) == 1:
+ if len(acts) == 1:
return acts[0]
- else:
- return ListAction(acts)
+ return ListAction(acts)
def Action(act, *args, **kw):
@@ -515,11 +513,26 @@ def Action(act, *args, **kw):
return _do_create_action(act, kw)
-class ActionBase:
+class ActionBase(ABC):
"""Base class for all types of action objects that can be held by
other objects (Builders, Executors, etc.) This provides the
common methods for manipulating and combining those actions."""
+ @abstractmethod
+ def __call__(
+ self,
+ target,
+ source,
+ env,
+ exitstatfunc=_null,
+ presub=_null,
+ show=_null,
+ execute=_null,
+ chdir=_null,
+ executor: Optional[ExecutorType] = None,
+ ):
+ raise NotImplementedError
+
def __eq__(self, other):
return self.__dict__ == other
@@ -528,13 +541,21 @@ class ActionBase:
batch_key = no_batch_key
- def genstring(self, target, source, env):
+ def genstring(self, target, source, env, executor: Optional[ExecutorType] = None) -> str:
return str(self)
+ @abstractmethod
+ def get_presig(self, target, source, env, executor: Optional[ExecutorType] = None):
+ raise NotImplementedError
+
+ @abstractmethod
+ def get_implicit_deps(self, target, source, env, executor: Optional[ExecutorType] = None):
+ raise NotImplementedError
+
def get_contents(self, target, source, env):
result = self.get_presig(target, source, env)
- if not isinstance(result,(bytes, bytearray)):
+ if not isinstance(result, (bytes, bytearray)):
result = bytearray(result, 'utf-8')
else:
# Make a copy and put in bytearray, without this the contents returned by get_presig
@@ -552,17 +573,15 @@ class ActionBase:
for v in vl:
# do the subst this way to ignore $(...$) parts:
if isinstance(result, bytearray):
- result.extend(SCons.Util.to_bytes(env.subst_target_source('${'+v+'}', SCons.Subst.SUBST_SIG, target, source)))
+ result.extend(SCons.Util.to_bytes(env.subst_target_source('${'+v+'}', SUBST_SIG, target, source)))
else:
raise Exception("WE SHOULD NEVER GET HERE result should be bytearray not:%s"%type(result))
- # result.append(SCons.Util.to_bytes(env.subst_target_source('${'+v+'}', SCons.Subst.SUBST_SIG, target, source)))
+ # result.append(SCons.Util.to_bytes(env.subst_target_source('${'+v+'}', SUBST_SIG, target, source)))
-
- if isinstance(result, (bytes,bytearray)):
+ if isinstance(result, (bytes, bytearray)):
return result
- else:
- raise Exception("WE SHOULD NEVER GET HERE - #2 result should be bytearray not:%s" % type(result))
- # return b''.join(result)
+
+ raise Exception("WE SHOULD NEVER GET HERE - #2 result should be bytearray not:%s" % type(result))
def __add__(self, other):
return _actionAppend(self, other)
@@ -582,10 +601,10 @@ class ActionBase:
self.presub_env = None # don't need this any more
return lines
- def get_varlist(self, target, source, env, executor=None):
+ def get_varlist(self, target, source, env, executor: Optional[ExecutorType] = None):
return self.varlist
- def get_targets(self, env, executor):
+ def get_targets(self, env, executor: Optional[ExecutorType]):
"""
Returns the type of targets ($TARGETS, $CHANGED_TARGETS) used
by this action.
@@ -597,8 +616,8 @@ class _ActionAction(ActionBase):
"""Base class for actions that create output objects."""
def __init__(self, cmdstr=_null, strfunction=_null, varlist=(),
presub=_null, chdir=None, exitstatfunc=None,
- batch_key=None, targets='$TARGETS',
- **kw):
+ batch_key=None, targets: str='$TARGETS',
+ **kw) -> None:
self.cmdstr = cmdstr
if strfunction is not _null:
if strfunction is None:
@@ -625,7 +644,7 @@ class _ActionAction(ActionBase):
batch_key = default_batch_key
SCons.Util.AddMethod(self, batch_key, 'batch_key')
- def print_cmd_line(self, s, target, source, env):
+ def print_cmd_line(self, s, target, source, env) -> None:
"""
In python 3, and in some of our tests, sys.stdout is
a String io object, and it takes unicode strings only
@@ -639,7 +658,7 @@ class _ActionAction(ActionBase):
show=_null,
execute=_null,
chdir=_null,
- executor=None):
+ executor: Optional[ExecutorType] = None):
if not is_List(target):
target = [target]
if not is_List(source):
@@ -719,6 +738,16 @@ class _ActionAction(ActionBase):
return stat
+ # Stub these two only so _ActionAction can be instantiated. It's really
+ # an ABC like parent ActionBase, but things reach in and use it. It's
+ # not just unittests or we could fix it up with a concrete subclass there.
+
+ def get_presig(self, target, source, env, executor: Optional[ExecutorType] = None):
+ raise NotImplementedError
+
+ def get_implicit_deps(self, target, source, env, executor: Optional[ExecutorType] = None):
+ raise NotImplementedError
+
def _string_from_cmd_list(cmd_list):
"""Takes a list of command line arguments and returns a pretty
@@ -751,7 +780,7 @@ def get_default_ENV(env):
return env['ENV']
except KeyError:
if not default_ENV:
- import SCons.Environment
+ import SCons.Environment # pylint: disable=import-outside-toplevel,redefined-outer-name
# This is a hideously expensive way to get a default execution
# environment. What it really should do is run the platform
# setup to get the default ENV. Fortunately, it's incredibly
@@ -778,22 +807,127 @@ def _resolve_shell_env(env, target, source):
shell_gens = iter(shell_gen)
except TypeError:
raise SCons.Errors.UserError("SHELL_ENV_GENERATORS must be iteratable.")
- else:
- ENV = ENV.copy()
- for generator in shell_gens:
- ENV = generator(env, target, source, ENV)
- if not isinstance(ENV, dict):
- raise SCons.Errors.UserError(f"SHELL_ENV_GENERATORS function: {generator} must return a dict.")
+
+ ENV = ENV.copy()
+ for generator in shell_gens:
+ ENV = generator(env, target, source, ENV)
+ if not isinstance(ENV, dict):
+ raise SCons.Errors.UserError(f"SHELL_ENV_GENERATORS function: {generator} must return a dict.")
+
return ENV
+def scons_subproc_run(scons_env, *args, **kwargs) -> subprocess.CompletedProcess:
+ """Run an external command using an SCons execution environment.
+
+ SCons normally runs external build commands using :mod:`subprocess`,
+ but does not harvest any output from such commands. This function
+ is a thin wrapper around :func:`subprocess.run` allowing running
+ a command in an SCons context (i.e. uses an "execution environment"
+ rather than the user's existing environment), and provides the ability
+ to return any output in a :class:`subprocess.CompletedProcess`
+ instance (this must be selected by setting ``stdout`` and/or
+ ``stderr`` to ``PIPE``, or setting ``capture_output=True`` - see
+ Keyword Arguments). Typical use case is to run a tool's "version"
+ option to find out the installed version.
+
+ If supplied, the ``env`` keyword argument provides an execution
+ environment to process into appropriate form before it is supplied
+ to :mod:`subprocess`; if omitted, *scons_env* is used to derive a
+ suitable default. The other keyword arguments are passed through,
+ except that the SCons legacy ``error`` keyword is remapped to the
+ subprocess ``check`` keyword; if both are omitted ``check=False``
+ will be passed. The caller is responsible for setting up the desired
+ arguments for :func:`subprocess.run`.
+
+ This function retains the legacy behavior of returning something
+ vaguely usable even in the face of complete failure, unless
+ ``check=True`` (in which case an error is allowed to be raised):
+ it synthesizes a :class:`~subprocess.CompletedProcess` instance in
+ this case.
+
+ A subset of interesting keyword arguments follows; see the Python
+ documentation of :mod:`subprocess` for the complete list.
+
+ Keyword Arguments:
+ stdout: (and *stderr*, *stdin*) if set to :const:`subprocess.PIPE`.
+ send input to or collect output from the relevant stream in
+ the subprocess; the default ``None`` does no redirection
+ (i.e. output or errors may go to the console or log file,
+ but is not captured); if set to :const:`subprocess.DEVNULL`
+ they are explicitly thrown away. ``capture_output=True`` is a
+ synonym for setting both ``stdout`` and ``stderr``
+ to :const:`~subprocess.PIPE`.
+ text: open *stdin*, *stdout*, *stderr* in text mode. Default
+ is binary mode. ``universal_newlines`` is a synonym.
+ encoding: specifies an encoding. Changes to text mode.
+ errors: specified error handling. Changes to text mode.
+ input: a byte sequence to be passed to *stdin*, unless text
+ mode is enabled, in which case it must be a string.
+ shell: if true, the command is executed through the shell.
+ check: if true and the subprocess exits with a non-zero exit
+ code, raise a :exc:`subprocess.CalledProcessError` exception.
+ Otherwise (the default) in case of an :exc:`OSError`, report the
+ exit code in the :class:`~Subprocess.CompletedProcess` instance.
+
+ .. versionadded:: 4.6
+ """
+ # Figure out the execution environment to use
+ env = kwargs.get('env', None)
+ if env is None:
+ env = get_default_ENV(scons_env)
+ kwargs['env'] = SCons.Util.sanitize_shell_env(env)
+
+ # Backwards-compat with _subproc: accept 'error', map to 'check',
+ # and remove, since subprocess.run does not recognize.
+ # 'error' isn't True/False, it takes a string value (see _subproc)
+ error = kwargs.get('error')
+ if error and 'check' in kwargs:
+ raise ValueError('error and check arguments may not both be used.')
+ check = kwargs.get('check', False) # always set a value for 'check'
+ if error is not None:
+ if error == 'raise':
+ check = True
+ del kwargs['error']
+ kwargs['check'] = check
+
+ # TODO: Python version-compat stuff: remap/remove too-new args if needed
+ if 'text' in kwargs and sys.version_info[:3] < (3, 7):
+ kwargs['universal_newlines'] = kwargs.pop('text')
+
+ if 'capture_output' in kwargs and sys.version_info[:3] < (3, 7):
+ capture_output = kwargs.pop('capture_output')
+ if capture_output:
+ kwargs['stdout'] = kwargs['stderr'] = PIPE
+
+ # Most SCons tools/tests expect not to fail on things like missing files.
+ # check=True (or error="raise") means we're okay to take an exception;
+ # else we catch the likely exception and construct a dummy
+ # CompletedProcess instance.
+ # Note pylint can't see we always include 'check' in kwargs: suppress.
+ if check:
+ cp = subprocess.run(*args, **kwargs) # pylint: disable=subprocess-run-check
+ else:
+ try:
+ cp = subprocess.run(*args, **kwargs) # pylint: disable=subprocess-run-check
+ except OSError as exc:
+ argline = ' '.join(*args)
+ cp = subprocess.CompletedProcess(
+ args=argline, returncode=1, stdout="", stderr=""
+ )
+
+ return cp
+
+
def _subproc(scons_env, cmd, error='ignore', **kw):
- """Wrapper for subprocess which pulls from construction env.
+ """Wrapper for subprocess.Popen which pulls from construction env.
Use for calls to subprocess which need to interpolate values from
an SCons construction environment into the environment passed to
subprocess. Adds an an error-handling argument. Adds ability
to specify std{in,out,err} with "'devnull'" tag.
+
+ .. deprecated:: 4.6
"""
# TODO: just uses subprocess.DEVNULL now, we can drop the "devnull"
# string now - it is a holdover from Py2, which didn't have DEVNULL.
@@ -810,11 +944,11 @@ def _subproc(scons_env, cmd, error='ignore', **kw):
try:
pobj = subprocess.Popen(cmd, **kw)
- except EnvironmentError as e:
+ except OSError as e:
if error == 'raise': raise
# return a dummy Popen instance that only returns error
class dummyPopen:
- def __init__(self, e):
+ def __init__(self, e) -> None:
self.exception = e
# Add the following two to enable using the return value as a context manager
# for example
@@ -824,7 +958,7 @@ def _subproc(scons_env, cmd, error='ignore', **kw):
def __enter__(self):
return self
- def __exit__(self, *args):
+ def __exit__(self, *args) -> None:
pass
def communicate(self, input=None):
@@ -835,8 +969,8 @@ def _subproc(scons_env, cmd, error='ignore', **kw):
stdin = None
class f:
- def read(self): return ''
- def readline(self): return ''
+ def read(self) -> str: return ''
+ def readline(self) -> str: return ''
def __iter__(self): return iter(())
stdout = stderr = f()
pobj = dummyPopen(e)
@@ -851,7 +985,7 @@ def _subproc(scons_env, cmd, error='ignore', **kw):
class CommandAction(_ActionAction):
"""Class for command-execution actions."""
- def __init__(self, cmd, **kw):
+ def __init__(self, cmd, **kw) -> None:
# Cmd can actually be a list or a single item; if it's a
# single item it should be the command string to execute; if a
# list then it should be the words of the command string to
@@ -870,23 +1004,24 @@ class CommandAction(_ActionAction):
"a single command")
self.cmd_list = cmd
- def __str__(self):
+ def __str__(self) -> str:
if is_List(self.cmd_list):
return ' '.join(map(str, self.cmd_list))
return str(self.cmd_list)
- def process(self, target, source, env, executor=None, overrides=False):
+
+ def process(self, target, source, env, executor=None, overrides: Optional[dict] = None) -> Tuple[List, bool, bool]:
if executor:
- result = env.subst_list(self.cmd_list, 0, executor=executor, overrides=overrides)
+ result = env.subst_list(self.cmd_list, SUBST_CMD, executor=executor, overrides=overrides)
else:
- result = env.subst_list(self.cmd_list, 0, target, source, overrides=overrides)
- silent = None
- ignore = None
+ result = env.subst_list(self.cmd_list, SUBST_CMD, target, source, overrides=overrides)
+ silent = False
+ ignore = False
while True:
try: c = result[0][0][0]
except IndexError: c = None
- if c == '@': silent = 1
- elif c == '-': ignore = 1
+ if c == '@': silent = True
+ elif c == '-': ignore = True
else: break
result[0][0] = result[0][0][1:]
try:
@@ -896,11 +1031,10 @@ class CommandAction(_ActionAction):
pass
return result, ignore, silent
- def strfunction(self, target, source, env, executor=None, overrides=False):
+ def strfunction(self, target, source, env, executor: Optional[ExecutorType] = None, overrides: Optional[dict] = None) -> str:
if self.cmdstr is None:
return None
if self.cmdstr is not _null:
- from SCons.Subst import SUBST_RAW
if executor:
c = env.subst(self.cmdstr, SUBST_RAW, executor=executor, overrides=overrides)
else:
@@ -912,7 +1046,7 @@ class CommandAction(_ActionAction):
return ''
return _string_from_cmd_list(cmd_list[0])
- def execute(self, target, source, env, executor=None):
+ def execute(self, target, source, env, executor: Optional[ExecutorType] = None):
"""Execute a command action.
This will handle lists of commands as well as individual commands,
@@ -933,12 +1067,11 @@ class CommandAction(_ActionAction):
spawn = env['SPAWN']
except KeyError:
raise SCons.Errors.UserError('Missing SPAWN construction variable.')
- else:
- if is_String(spawn):
- spawn = env.subst(spawn, raw=1, conv=lambda x: x)
+
+ if is_String(spawn):
+ spawn = env.subst(spawn, raw=1, conv=lambda x: x)
escape = env.get('ESCAPE', lambda x: x)
-
ENV = _resolve_shell_env(env, target, source)
# Ensure that the ENV values are all strings:
@@ -975,13 +1108,12 @@ class CommandAction(_ActionAction):
command=cmd_line)
return 0
- def get_presig(self, target, source, env, executor=None):
+ def get_presig(self, target, source, env, executor: Optional[ExecutorType] = None):
"""Return the signature contents of this action's command line.
This strips $(-$) and everything in between the string,
since those parts don't affect signatures.
"""
- from SCons.Subst import SUBST_SIG
cmd = self.cmd_list
if is_List(cmd):
cmd = ' '.join(map(str, cmd))
@@ -989,10 +1121,9 @@ class CommandAction(_ActionAction):
cmd = str(cmd)
if executor:
return env.subst_target_source(cmd, SUBST_SIG, executor=executor)
- else:
- return env.subst_target_source(cmd, SUBST_SIG, target, source)
+ return env.subst_target_source(cmd, SUBST_SIG, target, source)
- def get_implicit_deps(self, target, source, env, executor=None):
+ def get_implicit_deps(self, target, source, env, executor: Optional[ExecutorType] = None):
"""Return the implicit dependencies of this action's command line."""
icd = env.get('IMPLICIT_COMMAND_DEPENDENCIES', True)
if is_String(icd) and icd[:1] == '$':
@@ -1010,17 +1141,15 @@ class CommandAction(_ActionAction):
# An integer value greater than 1 specifies the number of entries
# to scan. "all" means to scan all.
return self._get_implicit_deps_heavyweight(target, source, env, executor, icd_int)
- else:
- # Everything else (usually 1 or True) means that we want
- # lightweight dependency scanning.
- return self._get_implicit_deps_lightweight(target, source, env, executor)
+ # Everything else (usually 1 or True) means that we want
+ # lightweight dependency scanning.
+ return self._get_implicit_deps_lightweight(target, source, env, executor)
- def _get_implicit_deps_lightweight(self, target, source, env, executor):
+ def _get_implicit_deps_lightweight(self, target, source, env, executor: Optional[ExecutorType]):
"""
Lightweight dependency scanning involves only scanning the first entry
in an action string, even if it contains &&.
"""
- from SCons.Subst import SUBST_SIG
if executor:
cmd_list = env.subst_list(self.cmd_list, SUBST_SIG, executor=executor)
else:
@@ -1037,7 +1166,7 @@ class CommandAction(_ActionAction):
res.append(env.fs.File(d))
return res
- def _get_implicit_deps_heavyweight(self, target, source, env, executor,
+ def _get_implicit_deps_heavyweight(self, target, source, env, executor: Optional[ExecutorType],
icd_int):
"""
Heavyweight dependency scanning involves scanning more than just the
@@ -1058,7 +1187,6 @@ class CommandAction(_ActionAction):
# Avoid circular and duplicate dependencies by not providing source,
# target, or executor to subst_list. This causes references to
# $SOURCES, $TARGETS, and all related variables to disappear.
- from SCons.Subst import SUBST_SIG
cmd_list = env.subst_list(self.cmd_list, SUBST_SIG, conv=lambda x: x)
res = []
@@ -1099,14 +1227,14 @@ class CommandAction(_ActionAction):
class CommandGeneratorAction(ActionBase):
"""Class for command-generator actions."""
- def __init__(self, generator, kw):
+ def __init__(self, generator, kw) -> None:
if SCons.Debug.track_instances: logInstanceCreation(self, 'Action.CommandGeneratorAction')
self.generator = generator
self.gen_kw = kw
self.varlist = kw.get('varlist', ())
self.targets = kw.get('targets', '$TARGETS')
- def _generate(self, target, source, env, for_signature, executor=None):
+ def _generate(self, target, source, env, for_signature, executor: Optional[ExecutorType] = None):
# ensure that target is a list, to make it easier to write
# generator functions:
if not is_List(target):
@@ -1124,7 +1252,7 @@ class CommandGeneratorAction(ActionBase):
raise SCons.Errors.UserError("Object returned from command generator: %s cannot be used to create an Action." % repr(ret))
return gen_cmd
- def __str__(self):
+ def __str__(self) -> str:
try:
env = self.presub_env
except AttributeError:
@@ -1137,11 +1265,11 @@ class CommandGeneratorAction(ActionBase):
def batch_key(self, env, target, source):
return self._generate(target, source, env, 1).batch_key(env, target, source)
- def genstring(self, target, source, env, executor=None):
+ def genstring(self, target, source, env, executor: Optional[ExecutorType] = None) -> str:
return self._generate(target, source, env, 1, executor).genstring(target, source, env)
def __call__(self, target, source, env, exitstatfunc=_null, presub=_null,
- show=_null, execute=_null, chdir=_null, executor=None):
+ show=_null, execute=_null, chdir=_null, executor: Optional[ExecutorType] = None):
act = self._generate(target, source, env, 0, executor)
if act is None:
raise SCons.Errors.UserError(
@@ -1153,7 +1281,7 @@ class CommandGeneratorAction(ActionBase):
target, source, env, exitstatfunc, presub, show, execute, chdir, executor
)
- def get_presig(self, target, source, env, executor=None):
+ def get_presig(self, target, source, env, executor: Optional[ExecutorType] = None):
"""Return the signature contents of this action's command line.
This strips $(-$) and everything in between the string,
@@ -1161,13 +1289,13 @@ class CommandGeneratorAction(ActionBase):
"""
return self._generate(target, source, env, 1, executor).get_presig(target, source, env)
- def get_implicit_deps(self, target, source, env, executor=None):
+ def get_implicit_deps(self, target, source, env, executor: Optional[ExecutorType] = None):
return self._generate(target, source, env, 1, executor).get_implicit_deps(target, source, env)
- def get_varlist(self, target, source, env, executor=None):
+ def get_varlist(self, target, source, env, executor: Optional[ExecutorType] = None):
return self._generate(target, source, env, 1, executor).get_varlist(target, source, env, executor)
- def get_targets(self, env, executor):
+ def get_targets(self, env, executor: Optional[ExecutorType]):
return self._generate(None, None, env, 1, executor).get_targets(env, executor)
@@ -1191,7 +1319,7 @@ class LazyAction(CommandGeneratorAction, CommandAction):
an action based on what's in the construction variable.
"""
- def __init__(self, var, kw):
+ def __init__(self, var, kw) -> None:
if SCons.Debug.track_instances: logInstanceCreation(self, 'Action.LazyAction')
CommandAction.__init__(self, '${'+var+'}', **kw)
self.var = SCons.Util.to_String(var)
@@ -1213,18 +1341,22 @@ class LazyAction(CommandGeneratorAction, CommandAction):
raise SCons.Errors.UserError("$%s value %s cannot be used to create an Action." % (self.var, repr(c)))
return gen_cmd
- def _generate(self, target, source, env, for_signature, executor=None):
+ def _generate(self, target, source, env, for_signature, executor: Optional[ExecutorType] = None):
return self._generate_cache(env)
def __call__(self, target, source, env, *args, **kw):
c = self.get_parent_class(env)
return c.__call__(self, target, source, env, *args, **kw)
- def get_presig(self, target, source, env):
+ def get_presig(self, target, source, env, executor: Optional[ExecutorType] = None):
c = self.get_parent_class(env)
return c.get_presig(self, target, source, env)
- def get_varlist(self, target, source, env, executor=None):
+ def get_implicit_deps(self, target, source, env, executor: Optional[ExecutorType] = None):
+ c = self.get_parent_class(env)
+ return c.get_implicit_deps(self, target, source, env)
+
+ def get_varlist(self, target, source, env, executor: Optional[ExecutorType] = None):
c = self.get_parent_class(env)
return c.get_varlist(self, target, source, env, executor)
@@ -1232,7 +1364,7 @@ class LazyAction(CommandGeneratorAction, CommandAction):
class FunctionAction(_ActionAction):
"""Class for Python function actions."""
- def __init__(self, execfunction, kw):
+ def __init__(self, execfunction, kw) -> None:
if SCons.Debug.track_instances: logInstanceCreation(self, 'Action.FunctionAction')
self.execfunction = execfunction
@@ -1257,11 +1389,10 @@ class FunctionAction(_ActionAction):
except AttributeError:
return "unknown_python_function"
- def strfunction(self, target, source, env, executor=None):
+ def strfunction(self, target, source, env, executor: Optional[ExecutorType] = None):
if self.cmdstr is None:
return None
if self.cmdstr is not _null:
- from SCons.Subst import SUBST_RAW
if executor:
c = env.subst(self.cmdstr, SUBST_RAW, executor=executor)
else:
@@ -1293,13 +1424,13 @@ class FunctionAction(_ActionAction):
sstr = array(source)
return "%s(%s, %s)" % (name, tstr, sstr)
- def __str__(self):
+ def __str__(self) -> str:
name = self.function_name()
if name == 'ActionCaller':
return str(self.execfunction)
return "%s(target, source, env)" % name
- def execute(self, target, source, env, executor=None):
+ def execute(self, target, source, env, executor: Optional[ExecutorType] = None):
exc_info = (None,None,None)
try:
if executor:
@@ -1308,9 +1439,7 @@ class FunctionAction(_ActionAction):
rsources = list(map(rfile, source))
try:
result = self.execfunction(target=target, source=rsources, env=env)
- except KeyboardInterrupt as e:
- raise
- except SystemExit as e:
+ except (KeyboardInterrupt, SystemExit):
raise
except Exception as e:
result = e
@@ -1318,8 +1447,8 @@ class FunctionAction(_ActionAction):
if result:
result = SCons.Errors.convert_to_BuildError(result, exc_info)
- result.node=target
- result.action=self
+ result.node = target
+ result.action = self
try:
result.command=self.strfunction(target, source, env, executor)
except TypeError:
@@ -1332,7 +1461,7 @@ class FunctionAction(_ActionAction):
# some codes do not check the return value of Actions and I do
# not have the time to modify them at this point.
if (exc_info[1] and
- not isinstance(exc_info[1],EnvironmentError)):
+ not isinstance(exc_info[1], EnvironmentError)):
raise result
return result
@@ -1342,19 +1471,19 @@ class FunctionAction(_ActionAction):
# more information about this issue.
del exc_info
- def get_presig(self, target, source, env):
+ def get_presig(self, target, source, env, executor: Optional[ExecutorType] = None):
"""Return the signature contents of this callable action."""
try:
return self.gc(target, source, env)
except AttributeError:
return self.funccontents
- def get_implicit_deps(self, target, source, env):
+ def get_implicit_deps(self, target, source, env, executor: Optional[ExecutorType] = None):
return []
class ListAction(ActionBase):
"""Class for lists of other actions."""
- def __init__(self, actionlist):
+ def __init__(self, actionlist) -> None:
if SCons.Debug.track_instances: logInstanceCreation(self, 'Action.ListAction')
def list_of_actions(x):
if isinstance(x, ActionBase):
@@ -1366,17 +1495,17 @@ class ListAction(ActionBase):
self.varlist = ()
self.targets = '$TARGETS'
- def genstring(self, target, source, env):
+ def genstring(self, target, source, env, executor: Optional[ExecutorType] = None) -> str:
return '\n'.join([a.genstring(target, source, env) for a in self.list])
- def __str__(self):
+ def __str__(self) -> str:
return '\n'.join(map(str, self.list))
def presub_lines(self, env):
return SCons.Util.flatten_sequence(
[a.presub_lines(env) for a in self.list])
- def get_presig(self, target, source, env):
+ def get_presig(self, target, source, env, executor: Optional[ExecutorType] = None):
"""Return the signature contents of this action list.
Simple concatenation of the signatures of the elements.
@@ -1384,7 +1513,7 @@ class ListAction(ActionBase):
return b"".join([bytes(x.get_contents(target, source, env)) for x in self.list])
def __call__(self, target, source, env, exitstatfunc=_null, presub=_null,
- show=_null, execute=_null, chdir=_null, executor=None):
+ show=_null, execute=_null, chdir=_null, executor: Optional[ExecutorType] = None):
if executor:
target = executor.get_all_targets()
source = executor.get_all_sources()
@@ -1395,13 +1524,13 @@ class ListAction(ActionBase):
return stat
return 0
- def get_implicit_deps(self, target, source, env):
+ def get_implicit_deps(self, target, source, env, executor: Optional[ExecutorType] = None):
result = []
for act in self.list:
result.extend(act.get_implicit_deps(target, source, env))
return result
- def get_varlist(self, target, source, env, executor=None):
+ def get_varlist(self, target, source, env, executor: Optional[ExecutorType] = None):
result = OrderedDict()
for act in self.list:
for var in act.get_varlist(target, source, env, executor):
@@ -1418,7 +1547,7 @@ class ActionCaller:
but what it's really doing is hanging on to the arguments until we
have a target, source and env to use for the expansion.
"""
- def __init__(self, parent, args, kw):
+ def __init__(self, parent, args, kw) -> None:
self.parent = parent
self.args = args
self.kw = kw
@@ -1453,8 +1582,9 @@ class ActionCaller:
# was called by using this hard-coded value as a special return.
if s == '$__env__':
return env
- elif is_String(s):
+ if is_String(s):
return env.subst(s, 1, target, source)
+
return self.parent.convert(s)
def subst_args(self, target, source, env):
@@ -1466,7 +1596,7 @@ class ActionCaller:
kw[key] = self.subst(self.kw[key], target, source, env)
return kw
- def __call__(self, target, source, env, executor=None):
+ def __call__(self, target, source, env, executor: Optional[ExecutorType] = None):
args = self.subst_args(target, source, env)
kw = self.subst_kw(target, source, env)
return self.parent.actfunc(*args, **kw)
@@ -1476,7 +1606,7 @@ class ActionCaller:
kw = self.subst_kw(target, source, env)
return self.parent.strfunc(*args, **kw)
- def __str__(self):
+ def __str__(self) -> str:
return self.parent.strfunc(*self.args, **self.kw)
@@ -1489,7 +1619,7 @@ class ActionFactory:
called with and give them to the ActionCaller object we create,
so it can hang onto them until it needs them.
"""
- def __init__(self, actfunc, strfunc, convert=lambda x: x):
+ def __init__(self, actfunc, strfunc, convert=lambda x: x) -> None:
self.actfunc = actfunc
self.strfunc = strfunc
self.convert = convert
diff --git a/scons/scons-local-4.5.2/SCons/Builder.py b/scons/scons-local-4.7.0/SCons/Builder.py
similarity index 95%
rename from scons/scons-local-4.5.2/SCons/Builder.py
rename to scons/scons-local-4.7.0/SCons/Builder.py
index ab51c3225..75cebc070 100644
--- a/scons/scons-local-4.5.2/SCons/Builder.py
+++ b/scons/scons-local-4.7.0/SCons/Builder.py
@@ -99,7 +99,10 @@ There are the following methods for internal use within this module:
"""
+import os
from collections import UserDict, UserList
+from contextlib import suppress
+from typing import Optional
import SCons.Action
import SCons.Debug
@@ -109,6 +112,7 @@ import SCons.Util
import SCons.Warnings
from SCons.Debug import logInstanceCreation
from SCons.Errors import InternalError, UserError
+from SCons.Util.sctyping import ExecutorType
class _Null:
pass
@@ -130,14 +134,14 @@ class DictCmdGenerator(SCons.Util.Selector):
to return the proper action based on the file suffix of
the source file."""
- def __init__(self, mapping=None, source_ext_match=True):
+ def __init__(self, mapping=None, source_ext_match: bool=True) -> None:
super().__init__(mapping)
self.source_ext_match = source_ext_match
def src_suffixes(self):
return list(self.keys())
- def add_action(self, suffix, action):
+ def add_action(self, suffix, action) -> None:
"""Add a suffix-action pair to the mapping.
"""
self[suffix] = action
@@ -222,12 +226,12 @@ class OverrideWarner(UserDict):
can actually invoke multiple builders. This class only emits the
warnings once, no matter how many Builders are invoked.
"""
- def __init__(self, mapping):
+ def __init__(self, mapping) -> None:
super().__init__(mapping)
if SCons.Debug.track_instances: logInstanceCreation(self, 'Builder.OverrideWarner')
self.already_warned = None
- def warn(self):
+ def warn(self) -> None:
if self.already_warned:
return
for k in self.keys():
@@ -335,7 +339,7 @@ class EmitterProxy:
look there at actual build time to see if it holds
a callable. If so, we will call that as the actual
emitter."""
- def __init__(self, var):
+ def __init__(self, var) -> None:
self.var = SCons.Util.to_String(var)
def __call__(self, target, source, env):
@@ -375,23 +379,23 @@ class BuilderBase:
"""
def __init__(self, action = None,
- prefix = '',
- suffix = '',
- src_suffix = '',
+ prefix: str = '',
+ suffix: str = '',
+ src_suffix: str = '',
target_factory = None,
source_factory = None,
target_scanner = None,
source_scanner = None,
emitter = None,
- multi = 0,
+ multi: int = 0,
env = None,
- single_source = 0,
+ single_source: bool = False,
name = None,
chdir = _null,
- is_explicit = 1,
+ is_explicit: bool = True,
src_builder = None,
- ensure_suffix = False,
- **overrides):
+ ensure_suffix: bool = False,
+ **overrides) -> None:
if SCons.Debug.track_instances: logInstanceCreation(self, 'Builder.BuilderBase')
self._memo = {}
self.action = action
@@ -439,7 +443,7 @@ class BuilderBase:
src_builder = [ src_builder ]
self.src_builder = src_builder
- def __bool__(self):
+ def __bool__(self) -> bool:
raise InternalError("Do not test for the Node.builder attribute directly; use Node.has_builder() instead")
def get_name(self, env):
@@ -471,7 +475,7 @@ class BuilderBase:
suffixes = []
return match_splitext(path, suffixes)
- def _adjustixes(self, files, pre, suf, ensure_suffix=False):
+ def _adjustixes(self, files, pre, suf, ensure_suffix: bool=False):
if not files:
return []
result = []
@@ -479,6 +483,11 @@ class BuilderBase:
files = [files]
for f in files:
+ # fspath() is to catch PathLike paths. We avoid the simpler
+ # str(f) so as not to "lose" files that are already Nodes:
+ # TypeError: expected str, bytes or os.PathLike object, not File
+ with suppress(TypeError):
+ f = os.fspath(f)
if SCons.Util.is_String(f):
f = SCons.Util.adjustixes(f, pre, suf, ensure_suffix)
result.append(f)
@@ -582,7 +591,7 @@ class BuilderBase:
# build this particular list of targets from this particular list of
# sources.
- executor = None
+ executor: Optional[ExecutorType] = None
key = None
if self.multi:
@@ -673,7 +682,7 @@ class BuilderBase:
prefix = prefix(env, sources)
return env.subst(prefix)
- def set_suffix(self, suffix):
+ def set_suffix(self, suffix) -> None:
if not callable(suffix):
suffix = self.adjust_suffix(suffix)
self.suffix = suffix
@@ -684,7 +693,7 @@ class BuilderBase:
suffix = suffix(env, sources)
return env.subst(suffix)
- def set_src_suffix(self, src_suffix):
+ def set_src_suffix(self, src_suffix) -> None:
if not src_suffix:
src_suffix = []
elif not SCons.Util.is_List(src_suffix):
@@ -698,7 +707,7 @@ class BuilderBase:
return ''
return ret[0]
- def add_emitter(self, suffix, emitter):
+ def add_emitter(self, suffix, emitter) -> None:
"""Add a suffix-emitter mapping to this Builder.
This assumes that emitter has been initialized with an
@@ -708,7 +717,7 @@ class BuilderBase:
"""
self.emitter[suffix] = emitter
- def add_src_builder(self, builder):
+ def add_src_builder(self, builder) -> None:
"""
Add a new Builder to the list of src_builders.
@@ -875,7 +884,7 @@ class CompositeBuilder(SCons.Util.Proxy):
to the DictCmdGenerator's add_action() method.
"""
- def __init__(self, builder, cmdgen):
+ def __init__(self, builder, cmdgen) -> None:
if SCons.Debug.track_instances: logInstanceCreation(self, 'Builder.CompositeBuilder')
super().__init__(builder)
@@ -885,11 +894,11 @@ class CompositeBuilder(SCons.Util.Proxy):
__call__ = SCons.Util.Delegate('__call__')
- def add_action(self, suffix, action):
+ def add_action(self, suffix, action) -> None:
self.cmdgen.add_action(suffix, action)
self.set_src_suffix(self.cmdgen.src_suffixes())
-def is_a_Builder(obj):
+def is_a_Builder(obj) -> bool:
""""Returns True if the specified obj is one of our Builder classes.
The test is complicated a bit by the fact that CompositeBuilder
diff --git a/scons/scons-local-4.5.2/SCons/CacheDir.py b/scons/scons-local-4.7.0/SCons/CacheDir.py
similarity index 92%
rename from scons/scons-local-4.5.2/SCons/CacheDir.py
rename to scons/scons-local-4.7.0/SCons/CacheDir.py
index 70c4f38a8..0174793df 100644
--- a/scons/scons-local-4.5.2/SCons/CacheDir.py
+++ b/scons/scons-local-4.7.0/SCons/CacheDir.py
@@ -34,7 +34,7 @@ import uuid
import SCons.Action
import SCons.Errors
import SCons.Warnings
-import SCons
+import SCons.Util
cache_enabled = True
cache_debug = False
@@ -43,7 +43,7 @@ cache_show = False
cache_readonly = False
cache_tmp_uuid = uuid.uuid4().hex
-def CacheRetrieveFunc(target, source, env):
+def CacheRetrieveFunc(target, source, env) -> int:
t = target[0]
fs = t.fs
cd = env.get_CacheDir()
@@ -67,7 +67,7 @@ def CacheRetrieveFunc(target, source, env):
fs.chmod(t.get_internal_path(), stat.S_IMODE(st[stat.ST_MODE]) | stat.S_IWRITE)
return 0
-def CacheRetrieveString(target, source, env):
+def CacheRetrieveString(target, source, env) -> None:
t = target[0]
fs = t.fs
cd = env.get_CacheDir()
@@ -118,7 +118,7 @@ def CachePushFunc(target, source, env):
cd.copy_to_cache(env, t.get_internal_path(), tempfile)
fs.rename(tempfile, cachefile)
- except EnvironmentError:
+ except OSError:
# It's possible someone else tried writing the file at the
# same time we did, or else that there was some problem like
# the CacheDir being on a separate file system that's full.
@@ -133,7 +133,7 @@ CachePush = SCons.Action.Action(CachePushFunc, None)
class CacheDir:
- def __init__(self, path):
+ def __init__(self, path) -> None:
"""
Initialize a CacheDir object.
@@ -169,15 +169,16 @@ class CacheDir:
"""
config_file = os.path.join(path, 'config')
try:
+ # still use a try block even with exist_ok, might have other fails
os.makedirs(path, exist_ok=True)
- except FileExistsError:
- pass
except OSError:
msg = "Failed to create cache directory " + path
raise SCons.Errors.SConsEnvironmentError(msg)
try:
- with open(config_file, 'x') as config:
+ with SCons.Util.FileLock(config_file, timeout=5, writer=True), open(
+ config_file, "x"
+ ) as config:
self.config['prefix_len'] = 2
try:
json.dump(self.config, config)
@@ -186,18 +187,20 @@ class CacheDir:
raise SCons.Errors.SConsEnvironmentError(msg)
except FileExistsError:
try:
- with open(config_file) as config:
+ with SCons.Util.FileLock(config_file, timeout=5, writer=False), open(
+ config_file
+ ) as config:
self.config = json.load(config)
- except ValueError:
+ except (ValueError, json.decoder.JSONDecodeError):
msg = "Failed to read cache configuration for " + path
raise SCons.Errors.SConsEnvironmentError(msg)
- def CacheDebug(self, fmt, target, cachefile):
+ def CacheDebug(self, fmt, target, cachefile) -> None:
if cache_debug != self.current_cache_debug:
if cache_debug == '-':
self.debugFP = sys.stdout
elif cache_debug:
- def debug_cleanup(debugFP):
+ def debug_cleanup(debugFP) -> None:
debugFP.close()
self.debugFP = open(cache_debug, 'w')
@@ -233,7 +236,7 @@ class CacheDir:
os.chmod(dst, st | stat.S_IWRITE)
return result
except AttributeError as ex:
- raise EnvironmentError from ex
+ raise OSError from ex
@property
def hit_ratio(self) -> float:
@@ -270,8 +273,11 @@ class CacheDir:
cachedir = os.path.join(self.path, subdir)
return cachedir, os.path.join(cachedir, sig)
- def retrieve(self, node):
- """
+ def retrieve(self, node) -> bool:
+ """Retrieve a node from cache.
+
+ Returns True if a successful retrieval resulted.
+
This method is called from multiple threads in a parallel build,
so only do thread safe stuff here. Do thread unsafe stuff in
built().
diff --git a/scons/scons-local-4.5.2/SCons/Conftest.py b/scons/scons-local-4.7.0/SCons/Conftest.py
similarity index 98%
rename from scons/scons-local-4.5.2/SCons/Conftest.py
rename to scons/scons-local-4.7.0/SCons/Conftest.py
index 3c52ef462..79ede9968 100644
--- a/scons/scons-local-4.5.2/SCons/Conftest.py
+++ b/scons/scons-local-4.7.0/SCons/Conftest.py
@@ -215,7 +215,7 @@ int main(void)
_YesNoResult(context, ret, None, text)
return ret
-def _check_empty_program(context, comp, text, language, use_shared = False):
+def _check_empty_program(context, comp, text, language, use_shared: bool = False):
"""Return 0 on success, 1 otherwise."""
if comp not in context.env or not context.env[comp]:
# The compiler construction variable is not set or empty
@@ -231,17 +231,22 @@ def _check_empty_program(context, comp, text, language, use_shared = False):
return context.CompileProg(text, suffix)
-def CheckFunc(context, function_name, header = None, language = None):
+def CheckFunc(context, function_name, header = None, language = None, funcargs = None):
"""
Configure check for a function "function_name".
"language" should be "C" or "C++" and is used to select the compiler.
Default is "C".
Optional "header" can be defined to define a function prototype, include a
header file or anything else that comes before main().
+ Optional "funcargs" can be defined to define an argument list for the
+ generated function invocation.
Sets HAVE_function_name in context.havedict according to the result.
Note that this uses the current value of compiler and linker flags, make
sure $CFLAGS, $CPPFLAGS and $LIBS are set correctly.
Returns an empty string for success, an error message for failure.
+
+ .. versionchanged:: 4.7.0
+ The ``funcargs`` parameter was added.
"""
# Remarks from autoconf:
@@ -274,6 +279,9 @@ char %s(void);""" % function_name
context.Display("Cannot check for %s(): %s\n" % (function_name, msg))
return msg
+ if not funcargs:
+ funcargs = ''
+
text = """
%(include)s
#include
@@ -287,14 +295,15 @@ int main(void) {
#if defined (__stub_%(name)s) || defined (__stub___%(name)s)
#error "%(name)s has a GNU stub, cannot check"
#else
- %(name)s();
+ %(name)s(%(args)s);
#endif
return 0;
}
""" % { 'name': function_name,
'include': includetext,
- 'hdr': header }
+ 'hdr': header,
+ 'args': funcargs}
context.Display("Checking for %s function %s()... " % (lang, function_name))
ret = context.BuildProg(text, suffix)
@@ -626,8 +635,8 @@ int main(void) {
return ret
def CheckLib(context, libs, func_name = None, header = None,
- extra_libs = None, call = None, language = None, autoadd = 1,
- append=True, unique=False):
+ extra_libs = None, call = None, language = None, autoadd: int = 1,
+ append: bool=True, unique: bool=False):
"""
Configure check for a C or C++ libraries "libs". Searches through
the list of libraries, until one is found where the test succeeds.
@@ -676,8 +685,7 @@ char %s();
# if no function to test, leave main() blank
text = text + """
-int
-main() {
+int main(void) {
%s
return 0;
}
@@ -753,7 +761,7 @@ def CheckProg(context, prog_name):
# END OF PUBLIC FUNCTIONS
#
-def _YesNoResult(context, ret, key, text, comment = None):
+def _YesNoResult(context, ret, key, text, comment = None) -> None:
r"""
Handle the result of a test with a "yes" or "no" result.
@@ -772,7 +780,7 @@ def _YesNoResult(context, ret, key, text, comment = None):
context.Display("yes\n")
-def _Have(context, key, have, comment = None):
+def _Have(context, key, have, comment = None) -> None:
r"""
Store result of a test in context.havedict and context.headerfilename.
@@ -815,7 +823,7 @@ def _Have(context, key, have, comment = None):
context.config_h = context.config_h + lines
-def _LogFailed(context, text, msg):
+def _LogFailed(context, text, msg) -> None:
"""
Write to the log about a failed program.
Add line numbers, so that error messages can be understood.
diff --git a/scons/scons-local-4.5.2/SCons/Debug.py b/scons/scons-local-4.7.0/SCons/Debug.py
similarity index 90%
rename from scons/scons-local-4.5.2/SCons/Debug.py
rename to scons/scons-local-4.7.0/SCons/Debug.py
index fa077436c..9397fdeda 100644
--- a/scons/scons-local-4.5.2/SCons/Debug.py
+++ b/scons/scons-local-4.7.0/SCons/Debug.py
@@ -41,8 +41,11 @@ import inspect
track_instances = False
# List of currently tracked classes
tracked_classes = {}
+# Global variable that gets set to 'True' by the Main script
+# when SConscript call tracing should be enabled.
+sconscript_trace = False
-def logInstanceCreation(instance, name=None):
+def logInstanceCreation(instance, name=None) -> None:
if name is None:
name = instance.__class__.__name__
if name not in tracked_classes:
@@ -60,15 +63,15 @@ def string_to_classes(s):
else:
return s.split()
-def fetchLoggedInstances(classes="*"):
+def fetchLoggedInstances(classes: str="*"):
classnames = string_to_classes(classes)
return [(cn, len(tracked_classes[cn])) for cn in classnames]
-def countLoggedInstances(classes, file=sys.stdout):
+def countLoggedInstances(classes, file=sys.stdout) -> None:
for classname in string_to_classes(classes):
file.write("%s: %d\n" % (classname, len(tracked_classes[classname])))
-def listLoggedInstances(classes, file=sys.stdout):
+def listLoggedInstances(classes, file=sys.stdout) -> None:
for classname in string_to_classes(classes):
file.write('\n%s:\n' % classname)
for ref in tracked_classes[classname]:
@@ -79,7 +82,7 @@ def listLoggedInstances(classes, file=sys.stdout):
if obj is not None:
file.write(' %s\n' % repr(obj))
-def dumpLoggedInstances(classes, file=sys.stdout):
+def dumpLoggedInstances(classes, file=sys.stdout) -> None:
for classname in string_to_classes(classes):
file.write('\n%s:\n' % classname)
for ref in tracked_classes[classname]:
@@ -92,14 +95,14 @@ def dumpLoggedInstances(classes, file=sys.stdout):
if sys.platform[:5] == "linux":
# Linux doesn't actually support memory usage stats from getrusage().
- def memory():
+ def memory() -> int:
with open('/proc/self/stat') as f:
mstr = f.read()
mstr = mstr.split()[22]
return int(mstr)
elif sys.platform[:6] == 'darwin':
#TODO really get memory stats for OS X
- def memory():
+ def memory() -> int:
return 0
elif sys.platform == 'win32':
from SCons.compat.win32 import get_peak_memory_usage
@@ -108,10 +111,10 @@ else:
try:
import resource
except ImportError:
- def memory():
+ def memory() -> int:
return 0
else:
- def memory():
+ def memory() -> int:
res = resource.getrusage(resource.RUSAGE_SELF)
return res[4]
@@ -132,7 +135,7 @@ def caller_stack():
caller_bases = {}
caller_dicts = {}
-def caller_trace(back=0):
+def caller_trace(back: int=0) -> None:
"""
Trace caller stack and save info into global dicts, which
are printed automatically at the end of SCons execution.
@@ -153,7 +156,7 @@ def caller_trace(back=0):
callee = caller
# print a single caller and its callers, if any
-def _dump_one_caller(key, file, level=0):
+def _dump_one_caller(key, file, level: int=0) -> None:
leader = ' '*level
for v,c in sorted([(-v,c) for c,v in caller_dicts[key].items()]):
file.write("%s %6d %s:%d(%s)\n" % ((leader,-v) + func_shorten(c[-3:])))
@@ -161,7 +164,7 @@ def _dump_one_caller(key, file, level=0):
_dump_one_caller(c, file, level+1)
# print each call tree
-def dump_caller_counts(file=sys.stdout):
+def dump_caller_counts(file=sys.stdout) -> None:
for k in sorted(caller_bases.keys()):
file.write("Callers of %s:%d(%s), %d calls:\n"
% (func_shorten(k) + (caller_bases[k],)))
@@ -196,7 +199,7 @@ TimeStampDefault = False
StartTime = time.perf_counter()
PreviousTime = StartTime
-def Trace(msg, tracefile=None, mode='w', tstamp=False):
+def Trace(msg, tracefile=None, mode: str='w', tstamp: bool=False) -> None:
"""Write a trace message.
Write messages when debugging which do not interfere with stdout.
@@ -217,7 +220,7 @@ def Trace(msg, tracefile=None, mode='w', tstamp=False):
global TimeStampDefault
global PreviousTime
- def trace_cleanup(traceFP):
+ def trace_cleanup(traceFP) -> None:
traceFP.close()
if tracefile is None:
diff --git a/scons/scons-local-4.5.2/SCons/Defaults.py b/scons/scons-local-4.7.0/SCons/Defaults.py
similarity index 85%
rename from scons/scons-local-4.5.2/SCons/Defaults.py
rename to scons/scons-local-4.7.0/SCons/Defaults.py
index b21ce4c4a..32e9da3f2 100644
--- a/scons/scons-local-4.5.2/SCons/Defaults.py
+++ b/scons/scons-local-4.7.0/SCons/Defaults.py
@@ -36,7 +36,7 @@ import shutil
import stat
import sys
import time
-from typing import List
+from typing import List, Callable
import SCons.Action
import SCons.Builder
@@ -58,31 +58,28 @@ _default_env = None
# Lazily instantiate the default environment so the overhead of creating
# it doesn't apply when it's not needed.
-def _fetch_DefaultEnvironment(*args, **kw):
+def _fetch_DefaultEnvironment(*args, **kwargs):
"""Returns the already-created default construction environment."""
- global _default_env
return _default_env
-def DefaultEnvironment(*args, **kw):
- """
- Initial public entry point for creating the default construction
- Environment.
+def DefaultEnvironment(*args, **kwargs):
+ """Construct the global ("default") construction environment.
- After creating the environment, we overwrite our name
- (DefaultEnvironment) with the _fetch_DefaultEnvironment() function,
- which more efficiently returns the initialized default construction
- environment without checking for its existence.
+ The environment is provisioned with the values from *kwargs*.
- (This function still exists with its _default_check because someone
- else (*cough* Script/__init__.py *cough*) may keep a reference
- to this function. So we can't use the fully functional idiom of
- having the name originally be a something that *only* creates the
- construction environment and then overwrites the name.)
+ After the environment is created, this function is replaced with
+ a reference to :func:`_fetch_DefaultEnvironment` which efficiently
+ returns the initialized default construction environment without
+ checking for its existence.
+
+ Historically, some parts of the code held references to this function.
+ Thus it still has the existence check for :data:`_default_env` rather
+ than just blindly creating the environment and overwriting itself.
"""
global _default_env
if not _default_env:
- _default_env = SCons.Environment.Environment(*args, **kw)
+ _default_env = SCons.Environment.Environment(*args, **kwargs)
_default_env.Decider('content')
global DefaultEnvironment
DefaultEnvironment = _fetch_DefaultEnvironment
@@ -95,7 +92,7 @@ def DefaultEnvironment(*args, **kw):
# going into a shared library are, in fact, shared.
def StaticObjectEmitter(target, source, env):
for tgt in target:
- tgt.attributes.shared = None
+ tgt.attributes.shared = False
return target, source
@@ -112,7 +109,7 @@ def SharedFlagChecker(source, target, env):
try:
shared = src.attributes.shared
except AttributeError:
- shared = None
+ shared = False
if not shared:
raise SCons.Errors.UserError(
"Source file: %s is static and is not compatible with shared target: %s" % (src, target[0]))
@@ -164,7 +161,7 @@ def get_paths_str(dest) -> str:
If *dest* is a list, manually converts each elem to a string.
"""
- def quote(arg):
+ def quote(arg) -> str:
return f'"{arg}"'
if is_List(dest):
@@ -256,7 +253,7 @@ Chmod = ActionFactory(chmod_func, chmod_strfunc)
-def copy_func(dest, src, symlinks=True) -> int:
+def copy_func(dest, src, symlinks: bool=True) -> int:
"""Implementation of the Copy action function.
Copies *src* to *dest*. If *src* is a list, *dest* must be
@@ -308,7 +305,7 @@ def copy_func(dest, src, symlinks=True) -> int:
return 0
-def copy_strfunc(dest, src, symlinks=True) -> str:
+def copy_strfunc(dest, src, symlinks: bool=True) -> str:
"""strfunction for the Copy action function."""
return f'Copy({get_paths_str(dest)}, {get_paths_str(src)})'
@@ -316,7 +313,7 @@ def copy_strfunc(dest, src, symlinks=True) -> str:
Copy = ActionFactory(copy_func, copy_strfunc)
-def delete_func(dest, must_exist=False) -> None:
+def delete_func(dest, must_exist: bool=False) -> None:
"""Implementation of the Delete action function.
Lets the Python :func:`os.unlink` raise an error if *dest* does not exist,
@@ -338,7 +335,7 @@ def delete_func(dest, must_exist=False) -> None:
os.unlink(entry)
-def delete_strfunc(dest, must_exist=False) -> str:
+def delete_strfunc(dest, must_exist: bool=False) -> str:
"""strfunction for the Delete action function."""
return f'Delete({get_paths_str(dest)})'
@@ -392,7 +389,7 @@ Touch = ActionFactory(touch_func, lambda file: f'Touch({get_paths_str(file)})')
# Internal utility functions
# pylint: disable-msg=too-many-arguments
-def _concat(prefix, items_iter, suffix, env, f=lambda x: x, target=None, source=None, affect_signature=True):
+def _concat(prefix, items_iter, suffix, env, f=lambda x: x, target=None, source=None, affect_signature: bool=True):
"""
Creates a new list from 'items_iter' by first interpolating each element
in the list using the 'env' dictionary and then calling f on the
@@ -458,16 +455,35 @@ def _concat_ixes(prefix, items_iter, suffix, env):
return result
-def _stripixes(prefix, itms, suffix, stripprefixes, stripsuffixes, env, c=None):
- """
- This is a wrapper around _concat()/_concat_ixes() that checks for
- the existence of prefixes or suffixes on list items and strips them
- where it finds them. This is used by tools (like the GNU linker)
- that need to turn something like 'libfoo.a' into '-lfoo'.
- """
+def _stripixes(
+ prefix: str,
+ items,
+ suffix: str,
+ stripprefixes: List[str],
+ stripsuffixes: List[str],
+ env,
+ literal_prefix: str = "",
+ c: Callable[[list], list] = None,
+) -> list:
+ """Returns a list with text added to items after first stripping them.
- if not itms:
- return itms
+ A companion to :func:`_concat_ixes`, used by tools (like the GNU
+ linker) that need to turn something like ``libfoo.a`` into ``-lfoo``.
+ *stripprefixes* and *stripsuffixes* are stripped from *items*.
+ Calls function *c* to postprocess the result.
+
+ Args:
+ prefix: string to prepend to elements
+ items: string or iterable to transform
+ suffix: string to append to elements
+ stripprefixes: prefix string(s) to strip from elements
+ stripsuffixes: suffix string(s) to strip from elements
+ env: construction environment for variable interpolation
+ c: optional function to perform a transformation on the list.
+ The default is `None`, which will select :func:`_concat_ixes`.
+ """
+ if not items:
+ return items
if not callable(c):
env_c = env['_concat']
@@ -483,8 +499,16 @@ def _stripixes(prefix, itms, suffix, stripprefixes, stripsuffixes, env, c=None):
stripprefixes = list(map(env.subst, flatten(stripprefixes)))
stripsuffixes = list(map(env.subst, flatten(stripsuffixes)))
+ # This is a little funky: if literal_prefix is the same as os.pathsep
+ # (e.g. both ':'), the normal conversion to a PathList will drop the
+ # literal_prefix prefix. Tell it not to split in that case, which *should*
+ # be okay because if we come through here, we're normally processing
+ # library names and won't have strings like "path:secondpath:thirdpath"
+ # which is why PathList() otherwise wants to split strings.
+ do_split = not literal_prefix == os.pathsep
+
stripped = []
- for l in SCons.PathList.PathList(itms).subst_path(env, None, None):
+ for l in SCons.PathList.PathList(items, do_split).subst_path(env, None, None):
if isinstance(l, SCons.Node.FS.File):
stripped.append(l)
continue
@@ -492,6 +516,10 @@ def _stripixes(prefix, itms, suffix, stripprefixes, stripsuffixes, env, c=None):
if not is_String(l):
l = str(l)
+ if literal_prefix and l.startswith(literal_prefix):
+ stripped.append(l)
+ continue
+
for stripprefix in stripprefixes:
lsp = len(stripprefix)
if l[:lsp] == stripprefix:
@@ -591,18 +619,16 @@ def _defines(prefix, defs, suffix, env, target=None, source=None, c=_concat_ixes
class NullCmdGenerator:
- """This is a callable class that can be used in place of other
- command generators if you don't want them to do anything.
+ """Callable class for use as a no-effect command generator.
- The __call__ method for this class simply returns the thing
- you instantiated it with.
+ The ``__call__`` method for this class simply returns the thing
+ you instantiated it with. Example usage::
- Example usage:
- env["DO_NOTHING"] = NullCmdGenerator
- env["LINKCOM"] = "${DO_NOTHING('$LINK $SOURCES $TARGET')}"
+ env["DO_NOTHING"] = NullCmdGenerator
+ env["LINKCOM"] = "${DO_NOTHING('$LINK $SOURCES $TARGET')}"
"""
- def __init__(self, cmd):
+ def __init__(self, cmd) -> None:
self.cmd = cmd
def __call__(self, target, source, env, for_signature=None):
@@ -613,16 +639,18 @@ class Variable_Method_Caller:
"""A class for finding a construction variable on the stack and
calling one of its methods.
- We use this to support "construction variables" in our string
- eval()s that actually stand in for methods--specifically, use
- of "RDirs" in call to _concat that should actually execute the
- "TARGET.RDirs" method. (We used to support this by creating a little
- "build dictionary" that mapped RDirs to the method, but this got in
- the way of Memoizing construction environments, because we had to
- create new environment objects to hold the variables.)
+ Used to support "construction variables" appearing in string
+ ``eval``s that actually stand in for methods--specifically, the use
+ of "RDirs" in a call to :func:`_concat` that should actually execute the
+ ``TARGET.RDirs`` method.
+
+ Historical note: This was formerly supported by creating a little
+ "build dictionary" that mapped RDirs to the method, but this got
+ in the way of Memoizing construction environments, because we had to
+ create new environment objects to hold the variables.
"""
- def __init__(self, variable, method):
+ def __init__(self, variable, method) -> None:
self.variable = variable
self.method = method
@@ -677,6 +705,9 @@ def __lib_either_version_flag(env, version_var1, version_var2, flags_var):
return None
+
+
+
ConstructionEnvironment = {
'BUILDERS': {},
'SCANNERS': [SCons.Tool.SourceFileScanner],
diff --git a/scons/scons-local-4.5.2/SCons/Environment.py b/scons/scons-local-4.7.0/SCons/Environment.py
similarity index 94%
rename from scons/scons-local-4.5.2/SCons/Environment.py
rename to scons/scons-local-4.7.0/SCons/Environment.py
index bd94832a1..3e57498ed 100644
--- a/scons/scons-local-4.5.2/SCons/Environment.py
+++ b/scons/scons-local-4.7.0/SCons/Environment.py
@@ -36,6 +36,8 @@ import sys
import re
import shlex
from collections import UserDict, deque
+from subprocess import PIPE, DEVNULL
+from typing import Optional
import SCons.Action
import SCons.Builder
@@ -74,6 +76,7 @@ from SCons.Util import (
to_String_for_subst,
uniquer_hashables,
)
+from SCons.Util.sctyping import ExecutorType
class _Null:
pass
@@ -87,7 +90,7 @@ _warn_target_signatures_deprecated = True
CleanTargets = {}
CalculatorArgs = {}
-def alias_builder(env, target, source):
+def alias_builder(env, target, source) -> None:
pass
AliasBuilder = SCons.Builder.Builder(
@@ -99,7 +102,7 @@ AliasBuilder = SCons.Builder.Builder(
name='AliasBuilder',
)
-def apply_tools(env, tools, toolpath):
+def apply_tools(env, tools, toolpath) -> None:
# Store the toolpath in the Environment.
# This is expected to work even if no tools are given, so do this first.
if toolpath is not None:
@@ -145,11 +148,11 @@ def copy_non_reserved_keywords(dict):
del result[k]
return result
-def _set_reserved(env, key, value):
+def _set_reserved(env, key, value) -> None:
msg = "Ignoring attempt to set reserved variable `$%s'"
SCons.Warnings.warn(SCons.Warnings.ReservedVariableWarning, msg % key)
-def _set_future_reserved(env, key, value):
+def _set_future_reserved(env, key, value) -> None:
env._dict[key] = value
msg = "`$%s' will be reserved in a future release and setting it will become ignored"
SCons.Warnings.warn(SCons.Warnings.FutureReservedVariableWarning, msg % key)
@@ -167,11 +170,11 @@ def _set_BUILDERS(env, key, value):
raise UserError('%s is not a Builder.' % repr(v))
bd.update(value)
-def _del_SCANNERS(env, key):
+def _del_SCANNERS(env, key) -> None:
del env._dict[key]
env.scanner_map_delete()
-def _set_SCANNERS(env, key, value):
+def _set_SCANNERS(env, key, value) -> None:
env._dict[key] = value
env.scanner_map_delete()
@@ -305,7 +308,7 @@ def _add_cppdefines(
elif is_Tuple(defines):
if len(defines) > 2:
raise SCons.Errors.UserError(
- f"Invalid tuple in CPPDEFINES: {define!r}, must be a two-tuple"
+ f"Invalid tuple in CPPDEFINES: {defines!r}, must be a two-tuple"
)
env_dict[key] = deque([defines])
elif is_List(defines):
@@ -438,10 +441,10 @@ class BuilderWrapper(MethodWrapper):
source = [source]
return super().__call__(target, source, *args, **kw)
- def __repr__(self):
+ def __repr__(self) -> str:
return '' % repr(self.name)
- def __str__(self):
+ def __str__(self) -> str:
return self.__repr__()
def __getattr__(self, name):
@@ -452,7 +455,7 @@ class BuilderWrapper(MethodWrapper):
else:
raise AttributeError(name)
- def __setattr__(self, name, value):
+ def __setattr__(self, name, value) -> None:
if name == 'env':
self.object = value
elif name == 'builder':
@@ -476,7 +479,7 @@ class BuilderDict(UserDict):
the Builders. We need to do this because every time someone changes
the Builders in the Environment's BUILDERS dictionary, we must
update the Environment's attributes."""
- def __init__(self, mapping, env):
+ def __init__(self, mapping, env) -> None:
# Set self.env before calling the superclass initialization,
# because it will end up calling our other methods, which will
# need to point the values in this dictionary to self.env.
@@ -488,7 +491,7 @@ class BuilderDict(UserDict):
# just copying would modify the original builder
raise TypeError( 'cannot semi_deepcopy a BuilderDict' )
- def __setitem__(self, item, val):
+ def __setitem__(self, item, val) -> None:
try:
method = getattr(self.env, item).method
except AttributeError:
@@ -498,26 +501,22 @@ class BuilderDict(UserDict):
super().__setitem__(item, val)
BuilderWrapper(self.env, val, item)
- def __delitem__(self, item):
+ def __delitem__(self, item) -> None:
super().__delitem__(item)
delattr(self.env, item)
- def update(self, mapping):
+ def update(self, mapping) -> None:
for i, v in mapping.items():
self.__setitem__(i, v)
-
_is_valid_var = re.compile(r'[_a-zA-Z]\w*$')
-def is_valid_construction_var(varstr):
- """Return if the specified string is a legitimate construction
- variable.
- """
+def is_valid_construction_var(varstr) -> bool:
+ """Return True if *varstr* is a legitimate construction variable."""
return _is_valid_var.match(varstr)
-
class SubstitutionEnvironment:
"""Base class for different flavors of construction environments.
@@ -544,7 +543,7 @@ class SubstitutionEnvironment:
class actually becomes useful.)
"""
- def __init__(self, **kw):
+ def __init__(self, **kw) -> None:
"""Initialization of an underlying SubstitutionEnvironment class.
"""
if SCons.Debug.track_instances: logInstanceCreation(self, 'Environment.SubstitutionEnvironment')
@@ -556,7 +555,7 @@ class SubstitutionEnvironment:
self.added_methods = []
#self._memo = {}
- def _init_special(self):
+ def _init_special(self) -> None:
"""Initial the dispatch tables for special handling of
special construction variables."""
self._special_del = {}
@@ -577,7 +576,7 @@ class SubstitutionEnvironment:
def __eq__(self, other):
return self._dict == other._dict
- def __delitem__(self, key):
+ def __delitem__(self, key) -> None:
special = self._special_del.get(key)
if special:
special(self, key)
@@ -614,7 +613,7 @@ class SubstitutionEnvironment:
"""Emulates the get() method of dictionaries."""
return self._dict.get(key, default)
- def __contains__(self, key):
+ def __contains__(self, key) -> bool:
return key in self._dict
def keys(self):
@@ -634,6 +633,17 @@ class SubstitutionEnvironment:
return self._dict.setdefault(key, default)
def arg2nodes(self, args, node_factory=_null, lookup_list=_null, **kw):
+ """Converts *args* to a list of nodes.
+
+ Arguments:
+ args - filename strings or nodes to convert; nodes are just
+ added to the list without further processing.
+ node_factory - optional factory to create the nodes; if not
+ specified, will use this environment's ``fs.File method.
+ lookup_list - optional list of lookup functions to call to
+ attempt to find the file referenced by each *args*.
+ kw - keyword arguments that represent additional nodes to add.
+ """
if node_factory is _null:
node_factory = self.fs.File
if lookup_list is _null:
@@ -682,7 +692,7 @@ class SubstitutionEnvironment:
def lvars(self):
return {}
- def subst(self, string, raw=0, target=None, source=None, conv=None, executor=None, overrides=False):
+ def subst(self, string, raw: int=0, target=None, source=None, conv=None, executor: Optional[ExecutorType] = None, overrides: Optional[dict] = None):
"""Recursively interpolates construction variables from the
Environment into the specified string, returning the expanded
result. Construction variables are specified by a $ prefix
@@ -699,7 +709,7 @@ class SubstitutionEnvironment:
lvars.update(executor.get_lvars())
return SCons.Subst.scons_subst(string, self, raw, target, source, gvars, lvars, conv, overrides=overrides)
- def subst_kw(self, kw, raw=0, target=None, source=None):
+ def subst_kw(self, kw, raw: int=0, target=None, source=None):
nkw = {}
for k, v in kw.items():
k = self.subst(k, raw, target, source)
@@ -708,9 +718,11 @@ class SubstitutionEnvironment:
nkw[k] = v
return nkw
- def subst_list(self, string, raw=0, target=None, source=None, conv=None, executor=None, overrides=False):
- """Calls through to SCons.Subst.scons_subst_list(). See
- the documentation for that function."""
+ def subst_list(self, string, raw: int=0, target=None, source=None, conv=None, executor: Optional[ExecutorType] = None, overrides: Optional[dict] = None):
+ """Calls through to SCons.Subst.scons_subst_list().
+
+ See the documentation for that function.
+ """
gvars = self.gvars()
lvars = self.lvars()
lvars['__env__'] = self
@@ -719,9 +731,10 @@ class SubstitutionEnvironment:
return SCons.Subst.scons_subst_list(string, self, raw, target, source, gvars, lvars, conv, overrides=overrides)
def subst_path(self, path, target=None, source=None):
- """Substitute a path list, turning EntryProxies into Nodes
- and leaving Nodes (and other objects) as-is."""
+ """Substitute a path list.
+ Turns EntryProxies into Nodes, leaving Nodes (and other objects) as-is.
+ """
if not is_List(path):
path = [path]
@@ -774,14 +787,11 @@ class SubstitutionEnvironment:
Raises:
OSError: if the external command returned non-zero exit status.
"""
-
- import subprocess
-
# common arguments
kw = {
- "stdin": "devnull",
- "stdout": subprocess.PIPE,
- "stderr": subprocess.PIPE,
+ "stdin": DEVNULL,
+ "stdout": PIPE,
+ "stderr": PIPE,
"universal_newlines": True,
}
# if the command is a list, assume it's been quoted
@@ -789,17 +799,15 @@ class SubstitutionEnvironment:
if not is_List(command):
kw["shell"] = True
# run constructed command
- p = SCons.Action._subproc(self, command, **kw)
- out, err = p.communicate()
- status = p.wait()
- if err:
- sys.stderr.write("" + err)
- if status:
- raise OSError("'%s' exited %d" % (command, status))
- return out
+ cp = SCons.Action.scons_subproc_run(self, command, **kw)
+ if cp.stderr:
+ sys.stderr.write(cp.stderr)
+ if cp.returncode:
+ raise OSError(f'{command!r} exited {cp.returncode}')
+ return cp.stdout
- def AddMethod(self, function, name=None):
+ def AddMethod(self, function, name=None) -> None:
"""
Adds the specified function as a method of this construction
environment with the specified name. If the name is omitted,
@@ -808,7 +816,7 @@ class SubstitutionEnvironment:
method = MethodWrapper(self, function, name)
self.added_methods.append(method)
- def RemoveMethod(self, function):
+ def RemoveMethod(self, function) -> None:
"""
Removes the specified function's MethodWrapper from the
added_methods list, so we don't re-bind it when making a clone.
@@ -873,7 +881,7 @@ class SubstitutionEnvironment:
'RPATH' : [],
}
- def do_parse(arg):
+ def do_parse(arg) -> None:
# if arg is a sequence, recurse with each element
if not arg:
return
@@ -887,7 +895,7 @@ class SubstitutionEnvironment:
arg = self.backtick(arg[1:])
# utility function to deal with -D option
- def append_define(name, mapping=mapping):
+ def append_define(name, mapping=mapping) -> None:
t = name.split('=')
if len(t) == 1:
mapping['CPPDEFINES'].append(name)
@@ -1035,7 +1043,7 @@ class SubstitutionEnvironment:
do_parse(arg)
return mapping
- def MergeFlags(self, args, unique=True) -> None:
+ def MergeFlags(self, args, unique: bool=True) -> None:
"""Merge flags into construction variables.
Merges the flags from *args* into this construction environent.
@@ -1166,7 +1174,7 @@ class Base(SubstitutionEnvironment):
variables=None,
parse_flags=None,
**kw
- ):
+ ) -> None:
"""Initialization of a basic SCons construction environment.
Sets up special construction variables like BUILDER,
@@ -1304,7 +1312,7 @@ class Base(SubstitutionEnvironment):
self._last_CacheDir = cd
return cd
- def get_factory(self, factory, default='File'):
+ def get_factory(self, factory, default: str='File'):
"""Return a factory function for creating Nodes for this
construction environment.
"""
@@ -1373,7 +1381,7 @@ class Base(SubstitutionEnvironment):
skey = skey.lower()
return self._gsm().get(skey)
- def scanner_map_delete(self, kw=None):
+ def scanner_map_delete(self, kw=None) -> None:
"""Delete the cached scanner map (if we need to).
"""
try:
@@ -1381,14 +1389,14 @@ class Base(SubstitutionEnvironment):
except KeyError:
pass
- def _update(self, other):
+ def _update(self, other) -> None:
"""Private method to update an environment's consvar dict directly.
Bypasses the normal checks that occur when users try to set items.
"""
self._dict.update(other)
- def _update_onlynew(self, other):
+ def _update_onlynew(self, other) -> None:
"""Private method to add new items to an environment's consvar dict.
Only adds items from `other` whose keys do not already appear in
@@ -1399,23 +1407,6 @@ class Base(SubstitutionEnvironment):
if k not in self._dict:
self._dict[k] = v
-
- def get_src_sig_type(self):
- try:
- return self.src_sig_type
- except AttributeError:
- t = SCons.Defaults.DefaultEnvironment().src_sig_type
- self.src_sig_type = t
- return t
-
- def get_tgt_sig_type(self):
- try:
- return self.tgt_sig_type
- except AttributeError:
- t = SCons.Defaults.DefaultEnvironment().tgt_sig_type
- self.tgt_sig_type = t
- return t
-
#######################################################################
# Public methods for manipulating an Environment. These begin with
# upper-case letters. The essential characteristic of methods in
@@ -1425,7 +1416,7 @@ class Base(SubstitutionEnvironment):
# an Environment's construction variables.
#######################################################################
- def Append(self, **kw):
+ def Append(self, **kw) -> None:
"""Append values to construction variables in an Environment.
The variable is created if it is not already present.
@@ -1505,8 +1496,8 @@ class Base(SubstitutionEnvironment):
path = str(self.fs.Dir(path))
return path
- def AppendENVPath(self, name, newpath, envname='ENV',
- sep=os.pathsep, delete_existing=False):
+ def AppendENVPath(self, name, newpath, envname: str='ENV',
+ sep=os.pathsep, delete_existing: bool=False) -> None:
"""Append path elements to the path *name* in the *envname*
dictionary for this environment. Will only add any particular
path once, and will normpath and normcase all paths to help
@@ -1528,7 +1519,7 @@ class Base(SubstitutionEnvironment):
self._dict[envname][name] = nv
- def AppendUnique(self, delete_existing=False, **kw):
+ def AppendUnique(self, delete_existing: bool=False, **kw) -> None:
"""Append values to existing construction variables
in an Environment, if they're not already there.
If delete_existing is True, removes existing values first, so
@@ -1619,29 +1610,21 @@ class Base(SubstitutionEnvironment):
if SCons.Debug.track_instances: logInstanceCreation(self, 'Environment.EnvironmentClone')
return clone
- def _changed_build(self, dependency, target, prev_ni, repo_node=None):
+ def _changed_build(self, dependency, target, prev_ni, repo_node=None) -> bool:
if dependency.changed_state(target, prev_ni, repo_node):
- return 1
+ return True
return self.decide_source(dependency, target, prev_ni, repo_node)
- def _changed_content(self, dependency, target, prev_ni, repo_node=None):
+ def _changed_content(self, dependency, target, prev_ni, repo_node=None) -> bool:
return dependency.changed_content(target, prev_ni, repo_node)
- def _changed_source(self, dependency, target, prev_ni, repo_node=None):
- target_env = dependency.get_build_env()
- type = target_env.get_tgt_sig_type()
- if type == 'source':
- return target_env.decide_source(dependency, target, prev_ni, repo_node)
- else:
- return target_env.decide_target(dependency, target, prev_ni, repo_node)
-
- def _changed_timestamp_then_content(self, dependency, target, prev_ni, repo_node=None):
+ def _changed_timestamp_then_content(self, dependency, target, prev_ni, repo_node=None) -> bool:
return dependency.changed_timestamp_then_content(target, prev_ni, repo_node)
- def _changed_timestamp_newer(self, dependency, target, prev_ni, repo_node=None):
+ def _changed_timestamp_newer(self, dependency, target, prev_ni, repo_node=None) -> bool:
return dependency.changed_timestamp_newer(target, prev_ni, repo_node)
- def _changed_timestamp_match(self, dependency, target, prev_ni, repo_node=None):
+ def _changed_timestamp_match(self, dependency, target, prev_ni, repo_node=None) -> bool:
return dependency.changed_timestamp_match(target, prev_ni, repo_node)
def Decider(self, function):
@@ -1704,7 +1687,7 @@ class Base(SubstitutionEnvironment):
return dlist
- def Dump(self, key=None, format='pretty'):
+ def Dump(self, key=None, format: str='pretty'):
""" Return construction variables serialized to a string.
Args:
@@ -1737,7 +1720,7 @@ class Base(SubstitutionEnvironment):
elif fmt == 'json':
import json
def non_serializable(obj):
- return str(type(obj).__qualname__)
+ return '<>' % type(obj).__qualname__
return json.dumps(cvars, indent=4, default=non_serializable)
else:
raise ValueError("Unsupported serialization format: %s." % fmt)
@@ -1764,7 +1747,7 @@ class Base(SubstitutionEnvironment):
return path
- def ParseConfig(self, command, function=None, unique=True):
+ def ParseConfig(self, command, function=None, unique: bool=True):
"""Parse the result of running a command to update construction vars.
Use ``function`` to parse the output of running ``command``
@@ -1790,7 +1773,7 @@ class Base(SubstitutionEnvironment):
return function(self, self.backtick(command), unique)
- def ParseDepends(self, filename, must_exist=None, only_one=False):
+ def ParseDepends(self, filename, must_exist=None, only_one: bool=False):
"""
Parse a mkdep-style file for explicit dependencies. This is
completely abusable, and should be unnecessary in the "normal"
@@ -1802,9 +1785,9 @@ class Base(SubstitutionEnvironment):
"""
filename = self.subst(filename)
try:
- with open(filename, 'r') as fp:
+ with open(filename) as fp:
lines = LogicalLines(fp).readlines()
- except IOError:
+ except OSError:
if must_exist:
raise
return
@@ -1834,7 +1817,7 @@ class Base(SubstitutionEnvironment):
platform = self.subst(platform)
return SCons.Platform.Platform(platform)(self)
- def Prepend(self, **kw):
+ def Prepend(self, **kw) -> None:
"""Prepend values to construction variables in an Environment.
The variable is created if it is not already present.
@@ -1902,8 +1885,8 @@ class Base(SubstitutionEnvironment):
self.scanner_map_delete(kw)
- def PrependENVPath(self, name, newpath, envname='ENV',
- sep=os.pathsep, delete_existing=True):
+ def PrependENVPath(self, name, newpath, envname: str='ENV',
+ sep=os.pathsep, delete_existing: bool=True) -> None:
"""Prepend path elements to the path *name* in the *envname*
dictionary for this environment. Will only add any particular
path once, and will normpath and normcase all paths to help
@@ -1926,7 +1909,7 @@ class Base(SubstitutionEnvironment):
self._dict[envname][name] = nv
- def PrependUnique(self, delete_existing=False, **kw):
+ def PrependUnique(self, delete_existing: bool=False, **kw) -> None:
"""Prepend values to existing construction variables
in an Environment, if they're not already there.
If delete_existing is True, removes existing values first, so
@@ -1969,7 +1952,7 @@ class Base(SubstitutionEnvironment):
self._dict[key] = val + dk
self.scanner_map_delete(kw)
- def Replace(self, **kw):
+ def Replace(self, **kw) -> None:
"""Replace existing construction variables in an Environment
with new construction variables and/or values.
"""
@@ -2009,7 +1992,7 @@ class Base(SubstitutionEnvironment):
name = name[:-len(old_suffix)]
return os.path.join(dir, new_prefix+name+new_suffix)
- def SetDefault(self, **kw):
+ def SetDefault(self, **kw) -> None:
for k in list(kw.keys()):
if k in self._dict:
del kw[k]
@@ -2159,7 +2142,7 @@ class Base(SubstitutionEnvironment):
nkw = self.subst_kw(kw)
return SCons.Builder.Builder(**nkw)
- def CacheDir(self, path, custom_class=None):
+ def CacheDir(self, path, custom_class=None) -> None:
if path is not None:
path = self.subst(path)
self._CacheDir_path = path
@@ -2174,7 +2157,7 @@ class Base(SubstitutionEnvironment):
# multiple threads, but initializing it before the task walk starts
self.get_CacheDir()
- def Clean(self, targets, files):
+ def Clean(self, targets, files) -> None:
global CleanTargets
tlist = self.arg2nodes(targets, self.fs.Entry)
flist = self.arg2nodes(files, self.fs.Entry)
@@ -2341,7 +2324,7 @@ class Base(SubstitutionEnvironment):
else:
return result[0]
- def Glob(self, pattern, ondisk=True, source=False, strings=False, exclude=None):
+ def Glob(self, pattern, ondisk: bool=True, source: bool=False, strings: bool=False, exclude=None):
return self.fs.Glob(self.subst(pattern), ondisk, source, strings, exclude)
def Ignore(self, target, dependency):
@@ -2368,6 +2351,7 @@ class Base(SubstitutionEnvironment):
return ret
def Precious(self, *targets):
+ """Mark *targets* as precious: do not delete before building."""
tlist = []
for t in targets:
tlist.extend(self.arg2nodes(t, self.fs.Entry))
@@ -2376,6 +2360,7 @@ class Base(SubstitutionEnvironment):
return tlist
def Pseudo(self, *targets):
+ """Mark *targets* as pseudo: must not exist."""
tlist = []
for t in targets:
tlist.extend(self.arg2nodes(t, self.fs.Entry))
@@ -2383,14 +2368,18 @@ class Base(SubstitutionEnvironment):
t.set_pseudo()
return tlist
- def Repository(self, *dirs, **kw):
+ def Repository(self, *dirs, **kw) -> None:
+ """Specify Repository directories to search."""
dirs = self.arg2nodes(list(dirs), self.fs.Dir)
self.fs.Repository(*dirs, **kw)
def Requires(self, target, prerequisite):
- """Specify that 'prerequisite' must be built before 'target',
- (but 'target' does not actually depend on 'prerequisite'
- and need not be rebuilt if it changes)."""
+ """Specify that *prerequisite* must be built before *target*.
+
+ Creates an order-only relationship, not a full dependency.
+ *prerequisite* must exist before *target* can be built, but
+ a change to *prerequisite* does not trigger a rebuild of *target*.
+ """
tlist = self.arg2nodes(target, self.fs.Entry)
plist = self.arg2nodes(prerequisite, self.fs.Entry)
for t in tlist:
@@ -2406,7 +2395,7 @@ class Base(SubstitutionEnvironment):
nkw = self.subst_kw(kw)
return SCons.Scanner.ScannerBase(*nargs, **nkw)
- def SConsignFile(self, name=SCons.SConsign.current_sconsign_filename(), dbm_module=None):
+ def SConsignFile(self, name=SCons.SConsign.current_sconsign_filename(), dbm_module=None) -> None:
if name is not None:
name = self.subst(name)
if not os.path.isabs(name):
@@ -2469,17 +2458,17 @@ class Base(SubstitutionEnvironment):
"""
return SCons.Node.Python.ValueWithMemo(value, built_value, name)
- def VariantDir(self, variant_dir, src_dir, duplicate=1):
+ def VariantDir(self, variant_dir, src_dir, duplicate: int=1) -> None:
variant_dir = self.arg2nodes(variant_dir, self.fs.Dir)[0]
src_dir = self.arg2nodes(src_dir, self.fs.Dir)[0]
self.fs.VariantDir(variant_dir, src_dir, duplicate)
- def FindSourceFiles(self, node='.') -> list:
+ def FindSourceFiles(self, node: str='.') -> list:
"""Return a list of all source files."""
node = self.arg2nodes(node, self.fs.Entry)[0]
sources = []
- def build_source(ss):
+ def build_source(ss) -> None:
for s in ss:
if isinstance(s, SCons.Node.FS.Dir):
build_source(s.all_children())
@@ -2527,7 +2516,7 @@ class OverrideEnvironment(Base):
values from the overrides dictionary.
"""
- def __init__(self, subject, overrides=None):
+ def __init__(self, subject, overrides=None) -> None:
if SCons.Debug.track_instances: logInstanceCreation(self, 'Environment.OverrideEnvironment')
self.__dict__['__subject'] = subject
if overrides is None:
@@ -2551,7 +2540,7 @@ class OverrideEnvironment(Base):
else:
return attr
- def __setattr__(self, name, value):
+ def __setattr__(self, name, value) -> None:
setattr(self.__dict__['__subject'], name, value)
# Methods that make this class act like a dictionary.
@@ -2588,7 +2577,7 @@ class OverrideEnvironment(Base):
except KeyError:
return self.__dict__['__subject'].get(key, default)
- def __contains__(self, key):
+ def __contains__(self, key) -> bool:
if key in self.__dict__['overrides']:
return True
return key in self.__dict__['__subject']
@@ -2624,10 +2613,10 @@ class OverrideEnvironment(Base):
return default
# Overridden private construction environment methods.
- def _update(self, other):
+ def _update(self, other) -> None:
self.__dict__['overrides'].update(other)
- def _update_onlynew(self, other):
+ def _update_onlynew(self, other) -> None:
"""Update a dict with new keys.
Unlike the .update method, if the key is already present,
@@ -2646,7 +2635,7 @@ class OverrideEnvironment(Base):
return lvars
# Overridden public construction environment methods.
- def Replace(self, **kw):
+ def Replace(self, **kw) -> None:
kw = copy_non_reserved_keywords(kw)
self.__dict__['overrides'].update(semi_deepcopy(kw))
@@ -2675,7 +2664,7 @@ def NoSubstitutionProxy(subject):
might have assigned to SCons.Environment.Environment.
"""
class _NoSubstitutionProxy(Environment):
- def __init__(self, subject):
+ def __init__(self, subject) -> None:
self.__dict__['__subject'] = subject
def __getattr__(self, name):
@@ -2684,14 +2673,14 @@ def NoSubstitutionProxy(subject):
def __setattr__(self, name, value):
return setattr(self.__dict__['__subject'], name, value)
- def executor_to_lvars(self, kwdict):
+ def executor_to_lvars(self, kwdict) -> None:
if 'executor' in kwdict:
kwdict['lvars'] = kwdict['executor'].get_lvars()
del kwdict['executor']
else:
kwdict['lvars'] = {}
- def raw_to_mode(self, mapping):
+ def raw_to_mode(self, mapping) -> None:
try:
raw = mapping['raw']
except KeyError:
diff --git a/scons/scons-local-4.5.2/SCons/EnvironmentValues.py b/scons/scons-local-4.7.0/SCons/EnvironmentValues.py
similarity index 96%
rename from scons/scons-local-4.5.2/SCons/EnvironmentValues.py
rename to scons/scons-local-4.7.0/SCons/EnvironmentValues.py
index c5eb972c2..51368c915 100644
--- a/scons/scons-local-4.5.2/SCons/EnvironmentValues.py
+++ b/scons/scons-local-4.7.0/SCons/EnvironmentValues.py
@@ -72,7 +72,7 @@ class EnvironmentValue:
Hold a single value. We're going to cache parsed version of the file
We're going to keep track of variables which feed into this values evaluation
"""
- def __init__(self, value):
+ def __init__(self, value) -> None:
self.value = value
self.var_type = ValueTypes.UNKNOWN
@@ -82,7 +82,7 @@ class EnvironmentValue:
self.parse_value()
- def parse_value(self):
+ def parse_value(self) -> None:
"""
Scan the string and break into component values
"""
@@ -99,7 +99,7 @@ class EnvironmentValue:
# likely callable? either way we don't parse
self._parsed = self.value
- def parse_trial(self):
+ def parse_trial(self) -> None:
"""
Try alternate parsing methods.
:return:
@@ -113,7 +113,7 @@ class EnvironmentValues:
"""
A class to hold all the environment variables
"""
- def __init__(self, **kw):
+ def __init__(self, **kw) -> None:
self._dict = {}
for k in kw:
self._dict[k] = EnvironmentValue(kw[k])
diff --git a/scons/scons-local-4.5.2/SCons/EnvironmentValuesTest.py b/scons/scons-local-4.7.0/SCons/EnvironmentValuesTest.py
similarity index 96%
rename from scons/scons-local-4.5.2/SCons/EnvironmentValuesTest.py
rename to scons/scons-local-4.7.0/SCons/EnvironmentValuesTest.py
index 074aa85ca..25d8804d1 100644
--- a/scons/scons-local-4.5.2/SCons/EnvironmentValuesTest.py
+++ b/scons/scons-local-4.7.0/SCons/EnvironmentValuesTest.py
@@ -26,7 +26,7 @@ import unittest
from SCons.EnvironmentValues import EnvironmentValues
class MyTestCase(unittest.TestCase):
- def test_simple_environmentValues(self):
+ def test_simple_environmentValues(self) -> None:
"""Test comparing SubstitutionEnvironments
"""
diff --git a/scons/scons-local-4.5.2/SCons/Errors.py b/scons/scons-local-4.7.0/SCons/Errors.py
similarity index 93%
rename from scons/scons-local-4.5.2/SCons/Errors.py
rename to scons/scons-local-4.7.0/SCons/Errors.py
index d37cb6de4..e489c58a0 100644
--- a/scons/scons-local-4.5.2/SCons/Errors.py
+++ b/scons/scons-local-4.7.0/SCons/Errors.py
@@ -27,7 +27,10 @@ Used to handle internal and user errors in SCons.
"""
import shutil
-import SCons.Util
+from typing import Optional
+
+from SCons.Util.sctypes import to_String, is_String
+from SCons.Util.sctyping import ExecutorType
# Note that not all Errors are defined here, some are at the point of use
@@ -71,13 +74,13 @@ class BuildError(Exception):
"""
def __init__(self,
- node=None, errstr="Unknown error", status=2, exitstatus=2,
- filename=None, executor=None, action=None, command=None,
- exc_info=(None, None, None)):
+ node=None, errstr: str="Unknown error", status: int=2, exitstatus: int=2,
+ filename=None, executor: Optional[ExecutorType] = None, action=None, command=None,
+ exc_info=(None, None, None)) -> None:
# py3: errstr should be string and not bytes.
- self.errstr = SCons.Util.to_String(errstr)
+ self.errstr = to_String(errstr)
self.status = status
self.exitstatus = exitstatus
self.filename = filename
@@ -91,7 +94,7 @@ class BuildError(Exception):
super().__init__(node, errstr, status, exitstatus, filename,
executor, action, command, exc_info)
- def __str__(self):
+ def __str__(self) -> str:
if self.filename:
return self.filename + ': ' + self.errstr
else:
@@ -113,7 +116,7 @@ class MSVCError(IOError):
pass
class ExplicitExit(Exception):
- def __init__(self, node=None, status=None, *args):
+ def __init__(self, node=None, status=None, *args) -> None:
self.node = node
self.status = status
self.exitstatus = status
@@ -189,7 +192,7 @@ def convert_to_BuildError(status, exc_info=None):
status=2,
exitstatus=2,
exc_info=exc_info)
- elif SCons.Util.is_String(status):
+ elif is_String(status):
buildError = BuildError(
errstr=status,
status=2,
diff --git a/scons/scons-local-4.5.2/SCons/Executor.py b/scons/scons-local-4.7.0/SCons/Executor.py
similarity index 93%
rename from scons/scons-local-4.5.2/SCons/Executor.py
rename to scons/scons-local-4.7.0/SCons/Executor.py
index 274af6ad9..1b054b4ba 100644
--- a/scons/scons-local-4.5.2/SCons/Executor.py
+++ b/scons/scons-local-4.7.0/SCons/Executor.py
@@ -24,6 +24,7 @@
"""Execute actions with specific lists of target and source Nodes."""
import collections
+from typing import Dict
import SCons.Errors
import SCons.Memoize
@@ -31,6 +32,7 @@ import SCons.Util
from SCons.compat import NoSlotsPyPy
import SCons.Debug
from SCons.Debug import logInstanceCreation
+from SCons.Util.sctyping import ExecutorType
class Batch:
"""Remembers exact association between targets
@@ -39,7 +41,7 @@ class Batch:
__slots__ = ('targets',
'sources')
- def __init__(self, targets=[], sources=[]):
+ def __init__(self, targets=[], sources=[]) -> None:
self.targets = targets
self.sources = sources
@@ -55,7 +57,7 @@ class TSList(collections.UserList):
a list during variable expansion. We're not really using any
collections.UserList methods in practice.
"""
- def __init__(self, func):
+ def __init__(self, func) -> None:
self.func = func
def __getattr__(self, attr):
nl = self.func()
@@ -63,10 +65,10 @@ class TSList(collections.UserList):
def __getitem__(self, i):
nl = self.func()
return nl[i]
- def __str__(self):
+ def __str__(self) -> str:
nl = self.func()
return str(nl)
- def __repr__(self):
+ def __repr__(self) -> str:
nl = self.func()
return repr(nl)
@@ -74,17 +76,17 @@ class TSObject:
"""A class that implements $TARGET or $SOURCE expansions by wrapping
an Executor method.
"""
- def __init__(self, func):
+ def __init__(self, func) -> None:
self.func = func
def __getattr__(self, attr):
n = self.func()
return getattr(n, attr)
- def __str__(self):
+ def __str__(self) -> str:
n = self.func()
if n:
return str(n)
return ''
- def __repr__(self):
+ def __repr__(self) -> str:
n = self.func()
if n:
return repr(n)
@@ -104,7 +106,7 @@ def rfile(node):
return rfile()
-def execute_nothing(obj, target, kw):
+def execute_nothing(obj, target, kw) -> int:
return 0
def execute_action_list(obj, target, kw):
@@ -138,14 +140,14 @@ def execute_actions_str(obj):
env)
for action in obj.get_action_list()])
-def execute_null_str(obj):
+def execute_null_str(obj) -> str:
return ''
_execute_str_map = {0 : execute_null_str,
1 : execute_actions_str}
-class Executor(object, metaclass=NoSlotsPyPy):
+class Executor(metaclass=NoSlotsPyPy):
"""A class for controlling instances of executing an action.
This largely exists to hold a single association of an action,
@@ -170,7 +172,7 @@ class Executor(object, metaclass=NoSlotsPyPy):
'_execute_str')
def __init__(self, action, env=None, overridelist=[{}],
- targets=[], sources=[], builder_kw={}):
+ targets=[], sources=[], builder_kw={}) -> None:
if SCons.Debug.track_instances: logInstanceCreation(self, 'Executor.Executor')
self.set_action_list(action)
self.pre_actions = []
@@ -202,7 +204,7 @@ class Executor(object, metaclass=NoSlotsPyPy):
}
return self.lvars
- def _get_changes(self):
+ def _get_changes(self) -> None:
cs = []
ct = []
us = []
@@ -383,10 +385,10 @@ class Executor(object, metaclass=NoSlotsPyPy):
def __call__(self, target, **kw):
return _do_execute_map[self._do_execute](self, target, kw)
- def cleanup(self):
+ def cleanup(self) -> None:
self._memo = {}
- def add_sources(self, sources):
+ def add_sources(self, sources) -> None:
"""Add source files to this Executor's list. This is necessary
for "multi" Builders that can be called repeatedly to build up
a source file list for a given target."""
@@ -399,7 +401,7 @@ class Executor(object, metaclass=NoSlotsPyPy):
def get_sources(self):
return self.batches[0].sources
- def add_batch(self, targets, sources):
+ def add_batch(self, targets, sources) -> None:
"""Add pair of associated target and source to this Executor's list.
This is necessary for "batch" Builders that can be called repeatedly
to build up a list of matching target and source files that will be
@@ -417,18 +419,18 @@ class Executor(object, metaclass=NoSlotsPyPy):
msg = "Source `%s' not found, needed by target `%s'."
raise SCons.Errors.StopError(msg % (s, self.batches[0].targets[0]))
- def add_pre_action(self, action):
+ def add_pre_action(self, action) -> None:
self.pre_actions.append(action)
- def add_post_action(self, action):
+ def add_post_action(self, action) -> None:
self.post_actions.append(action)
# another extra indirection for new-style objects and nullify...
- def __str__(self):
+ def __str__(self) -> str:
return _execute_str_map[self._execute_str](self)
- def nullify(self):
+ def nullify(self) -> None:
self.cleanup()
self._do_execute = 0
self._execute_str = 0
@@ -459,23 +461,23 @@ class Executor(object, metaclass=NoSlotsPyPy):
self._memo['get_contents'] = result
return result
- def get_timestamp(self):
+ def get_timestamp(self) -> int:
"""Fetch a time stamp for this Executor. We don't have one, of
course (only files do), but this is the interface used by the
timestamp module.
"""
return 0
- def scan_targets(self, scanner):
+ def scan_targets(self, scanner) -> None:
# TODO(batch): scan by batches
self.scan(scanner, self.get_all_targets())
- def scan_sources(self, scanner):
+ def scan_sources(self, scanner) -> None:
# TODO(batch): scan by batches
if self.batches[0].sources:
self.scan(scanner, self.get_all_sources())
- def scan(self, scanner, node_list):
+ def scan(self, scanner, node_list) -> None:
"""Scan a list of this Executor's files (targets or sources) for
implicit dependencies and update all of the targets with them.
This essentially short-circuits an N*M scan of the sources for
@@ -548,12 +550,12 @@ class Executor(object, metaclass=NoSlotsPyPy):
-_batch_executors = {}
+_batch_executors: Dict[str, ExecutorType] = {}
-def GetBatchExecutor(key):
+def GetBatchExecutor(key: str) -> ExecutorType:
return _batch_executors[key]
-def AddBatchExecutor(key, executor):
+def AddBatchExecutor(key: str, executor: ExecutorType) -> None:
assert key not in _batch_executors
_batch_executors[key] = executor
@@ -576,7 +578,7 @@ def get_NullEnvironment():
nullenv = NullEnvironment()
return nullenv
-class Null(object, metaclass=NoSlotsPyPy):
+class Null(metaclass=NoSlotsPyPy):
"""A null Executor, with a null build Environment, that does
nothing when the rest of the methods call it.
@@ -601,7 +603,7 @@ class Null(object, metaclass=NoSlotsPyPy):
'_do_execute',
'_execute_str')
- def __init__(self, *args, **kw):
+ def __init__(self, *args, **kw) -> None:
if SCons.Debug.track_instances:
logInstanceCreation(self, 'Executor.Null')
self.batches = [Batch(kw['targets'][:], [])]
@@ -609,9 +611,9 @@ class Null(object, metaclass=NoSlotsPyPy):
return get_NullEnvironment()
def get_build_scanner_path(self):
return None
- def cleanup(self):
+ def cleanup(self) -> None:
pass
- def prepare(self):
+ def prepare(self) -> None:
pass
def get_unignored_sources(self, *args, **kw):
return tuple(())
@@ -629,11 +631,11 @@ class Null(object, metaclass=NoSlotsPyPy):
return []
def get_action_side_effects(self):
return []
- def __call__(self, *args, **kw):
+ def __call__(self, *args, **kw) -> int:
return 0
- def get_contents(self):
+ def get_contents(self) -> str:
return ''
- def _morph(self):
+ def _morph(self) -> None:
"""Morph this Null executor to a real Executor object."""
batches = self.batches
self.__class__ = Executor
@@ -643,13 +645,13 @@ class Null(object, metaclass=NoSlotsPyPy):
# The following methods require morphing this Null Executor to a
# real Executor object.
- def add_pre_action(self, action):
+ def add_pre_action(self, action) -> None:
self._morph()
self.add_pre_action(action)
- def add_post_action(self, action):
+ def add_post_action(self, action) -> None:
self._morph()
self.add_post_action(action)
- def set_action_list(self, action):
+ def set_action_list(self, action) -> None:
self._morph()
self.set_action_list(action)
diff --git a/scons/scons-local-4.5.2/SCons/Memoize.py b/scons/scons-local-4.7.0/SCons/Memoize.py
similarity index 95%
rename from scons/scons-local-4.5.2/SCons/Memoize.py
rename to scons/scons-local-4.7.0/SCons/Memoize.py
index b02c1445b..42e52c4ac 100644
--- a/scons/scons-local-4.5.2/SCons/Memoize.py
+++ b/scons/scons-local-4.7.0/SCons/Memoize.py
@@ -111,7 +111,7 @@ class Counter:
fill in the correct class name and method name that represents
the name of the function being counted.
"""
- def __init__(self, cls_name, method_name):
+ def __init__(self, cls_name, method_name) -> None:
"""
"""
self.cls_name = cls_name
@@ -120,8 +120,8 @@ class Counter:
self.miss = 0
def key(self):
return self.cls_name+'.'+self.method_name
- def display(self):
- print(" {:7d} hits {:7d} misses {}()".format(self.hit, self.miss, self.key()))
+ def display(self) -> None:
+ print(f" {self.hit:7d} hits {self.miss:7d} misses {self.key()}()")
def __eq__(self, other):
try:
return self.key() == other.key()
@@ -136,7 +136,7 @@ class CountValue(Counter):
the class's methods that memoizes its return value by simply storing
the return value in its _memo dictionary.
"""
- def count(self, *args, **kw):
+ def count(self, *args, **kw) -> None:
""" Counts whether the memoized value has already been
set (a hit) or not (a miss).
"""
@@ -156,12 +156,12 @@ class CountDict(Counter):
indexed by some key that can be computed from one or more of
its input arguments.
"""
- def __init__(self, cls_name, method_name, keymaker):
+ def __init__(self, cls_name, method_name, keymaker) -> None:
"""
"""
super().__init__(cls_name, method_name)
self.keymaker = keymaker
- def count(self, *args, **kw):
+ def count(self, *args, **kw) -> None:
""" Counts whether the computed key value is already present
in the memoization dictionary (a hit) or not (a miss).
"""
@@ -177,7 +177,7 @@ class CountDict(Counter):
else:
self.miss = self.miss + 1
-def Dump(title=None):
+def Dump(title=None) -> None:
""" Dump the hit/miss count for all the counters
collected so far.
"""
@@ -186,7 +186,7 @@ def Dump(title=None):
for counter in sorted(CounterList):
CounterList[counter].display()
-def EnableMemoization():
+def EnableMemoization() -> None:
global use_memoizer
use_memoizer = 1
diff --git a/scons/scons-local-4.5.2/SCons/Node/Alias.py b/scons/scons-local-4.7.0/SCons/Node/Alias.py
similarity index 94%
rename from scons/scons-local-4.5.2/SCons/Node/Alias.py
rename to scons/scons-local-4.7.0/SCons/Node/Alias.py
index 1125c22f6..f36a4ecd5 100644
--- a/scons/scons-local-4.5.2/SCons/Node/Alias.py
+++ b/scons/scons-local-4.7.0/SCons/Node/Alias.py
@@ -78,7 +78,7 @@ class AliasNodeInfo(SCons.Node.NodeInfoBase):
return state
- def __setstate__(self, state):
+ def __setstate__(self, state) -> None:
"""
Restore the attributes from a pickled state.
"""
@@ -87,7 +87,7 @@ class AliasNodeInfo(SCons.Node.NodeInfoBase):
for key, value in state.items():
if key not in ('__weakref__',):
setattr(self, key, value)
-
+
class AliasBuildInfo(SCons.Node.BuildInfoBase):
__slots__ = ()
@@ -98,29 +98,29 @@ class Alias(SCons.Node.Node):
NodeInfo = AliasNodeInfo
BuildInfo = AliasBuildInfo
- def __init__(self, name):
+ def __init__(self, name) -> None:
super().__init__()
self.name = name
self.changed_since_last_build = 1
self.store_info = 0
-
+
def str_for_display(self):
return '"' + self.__str__() + '"'
- def __str__(self):
+ def __str__(self) -> str:
return self.name
- def make_ready(self):
+ def make_ready(self) -> None:
self.get_csig()
really_build = SCons.Node.Node.build
is_up_to_date = SCons.Node.Node.children_are_up_to_date
- def is_under(self, dir):
+ def is_under(self, dir) -> bool:
# Make Alias nodes get built regardless of
# what directory scons was run from. Alias nodes
# are outside the filesystem:
- return 1
+ return True
def get_contents(self):
"""The contents of an alias is the concatenation
@@ -128,7 +128,7 @@ class Alias(SCons.Node.Node):
childsigs = [n.get_csig() for n in self.children()]
return ''.join(childsigs)
- def sconsign(self):
+ def sconsign(self) -> None:
"""An Alias is not recorded in .sconsign files"""
pass
@@ -136,11 +136,11 @@ class Alias(SCons.Node.Node):
#
#
- def build(self):
+ def build(self) -> None:
"""A "builder" for aliases."""
pass
- def convert(self):
+ def convert(self) -> None:
try: del self.builder
except AttributeError: pass
self.reset_executor()
diff --git a/scons/scons-local-4.5.2/SCons/Node/FS.py b/scons/scons-local-4.7.0/SCons/Node/FS.py
similarity index 94%
rename from scons/scons-local-4.5.2/SCons/Node/FS.py
rename to scons/scons-local-4.7.0/SCons/Node/FS.py
index 67e1ff608..8694ad759 100644
--- a/scons/scons-local-4.5.2/SCons/Node/FS.py
+++ b/scons/scons-local-4.7.0/SCons/Node/FS.py
@@ -81,11 +81,11 @@ class EntryProxyAttributeError(AttributeError):
An AttributeError subclass for recording and displaying the name
of the underlying Entry involved in an AttributeError exception.
"""
- def __init__(self, entry_proxy, attribute):
+ def __init__(self, entry_proxy, attribute) -> None:
super().__init__()
self.entry_proxy = entry_proxy
self.attribute = attribute
- def __str__(self):
+ def __str__(self) -> str:
entry = self.entry_proxy.get()
fmt = "%s instance %s has no attribute %s"
return fmt % (entry.__class__.__name__,
@@ -116,7 +116,7 @@ default_max_drift = 2*24*60*60
#
Save_Strings = None
-def save_strings(val):
+def save_strings(val) -> None:
global Save_Strings
Save_Strings = val
@@ -130,7 +130,7 @@ def save_strings(val):
do_splitdrive = None
_my_splitdrive =None
-def initialize_do_splitdrive():
+def initialize_do_splitdrive() -> None:
global do_splitdrive
global has_unc
drive, path = os.path.splitdrive('X:/foo')
@@ -231,7 +231,7 @@ needs_normpath_match = needs_normpath_check.match
# TODO: See if theres a reasonable way to enable using links on win32/64
if hasattr(os, 'link') and sys.platform != 'win32':
- def _hardlink_func(fs, src, dst):
+ def _hardlink_func(fs, src, dst) -> None:
# If the source is a symlink, we can't just hard-link to it
# because a relative symlink may point somewhere completely
# different. We must disambiguate the symlink and then
@@ -247,12 +247,12 @@ else:
_hardlink_func = None
if hasattr(os, 'symlink') and sys.platform != 'win32':
- def _softlink_func(fs, src, dst):
+ def _softlink_func(fs, src, dst) -> None:
fs.symlink(src, dst)
else:
_softlink_func = None
-def _copy_func(fs, src, dest):
+def _copy_func(fs, src, dest) -> None:
shutil.copy2(src, dest)
st = fs.stat(src)
fs.chmod(dest, stat.S_IMODE(st.st_mode) | stat.S_IWRITE)
@@ -286,7 +286,7 @@ def set_duplicate(duplicate):
if link_dict[func]:
Link_Funcs.append(link_dict[func])
-def LinkFunc(target, source, env):
+def LinkFunc(target, source, env) -> int:
"""
Relative paths cause problems with symbolic links, so
we use absolute paths, which may be a problem for people
@@ -308,7 +308,7 @@ def LinkFunc(target, source, env):
try:
func(fs, src, dest)
break
- except (IOError, OSError):
+ except OSError:
# An OSError indicates something happened like a permissions
# problem or an attempt to symlink across file-system
# boundaries. An IOError indicates something like the file
@@ -321,27 +321,36 @@ def LinkFunc(target, source, env):
return 0
Link = SCons.Action.Action(LinkFunc, None)
-def LocalString(target, source, env):
+def LocalString(target, source, env) -> str:
return 'Local copy of %s from %s' % (target[0], source[0])
LocalCopy = SCons.Action.Action(LinkFunc, LocalString)
-def UnlinkFunc(target, source, env):
+def UnlinkFunc(target, source, env) -> int:
t = target[0]
t.fs.unlink(t.get_abspath())
return 0
Unlink = SCons.Action.Action(UnlinkFunc, None)
-def MkdirFunc(target, source, env):
+def MkdirFunc(target, source, env) -> int:
t = target[0]
- # This os.path.exists test looks redundant, but it's possible
- # when using Install() to install multiple dirs outside the
- # source tree to get a case where t.exists() is true but
- # the path does already exist, so this prevents spurious
- # build failures in that case. See test/Install/multi-dir.
- if not t.exists() and not os.path.exists(t.get_abspath()):
- t.fs.mkdir(t.get_abspath())
+ # - It's possible when using Install() to install multiple
+ # dirs outside the source tree to get a case where t.exists()
+ # is false but the path does already exist.
+ # - It's also possible for multiple SCons processes to try to create
+ # multiple build directories when processing SConscript files with
+ # variant dirs.
+ # Catching OS exceptions and ensuring directory existence prevents
+ # build failures in these cases. See test/Install/multi-dir.
+
+ if not t.exists():
+ abs_path = t.get_abspath()
+ try:
+ t.fs.mkdir(abs_path)
+ except FileExistsError:
+ pass
+
return 0
Mkdir = SCons.Action.Action(MkdirFunc, None, presub=None)
@@ -385,7 +394,7 @@ class DiskChecker:
This Class will hold functions to determine what this particular disk
checking implementation should do when enabled or disabled.
"""
- def __init__(self, disk_check_type, do_check_function, ignore_check_function):
+ def __init__(self, disk_check_type, do_check_function, ignore_check_function) -> None:
self.disk_check_type = disk_check_type
self.do_check_function = do_check_function
self.ignore_check_function = ignore_check_function
@@ -394,7 +403,7 @@ class DiskChecker:
def __call__(self, *args, **kw):
return self.func(*args, **kw)
- def enable(self, disk_check_type_list):
+ def enable(self, disk_check_type_list) -> None:
"""
If the current object's disk_check_type matches any in the list passed
:param disk_check_type_list: List of disk checks to enable
@@ -423,7 +432,7 @@ def do_diskcheck_match(node, predicate, errorfmt):
raise TypeError(errorfmt % node.get_abspath())
-def ignore_diskcheck_match(node, predicate, errorfmt):
+def ignore_diskcheck_match(node, predicate, errorfmt) -> None:
pass
@@ -434,7 +443,7 @@ diskcheckers = [
]
-def set_diskcheck(enabled_checkers):
+def set_diskcheck(enabled_checkers) -> None:
for dc in diskcheckers:
dc.enable(enabled_checkers)
@@ -584,7 +593,7 @@ class Base(SCons.Node.Node):
'_proxy',
'_func_sconsign']
- def __init__(self, name, directory, fs):
+ def __init__(self, name, directory, fs) -> None:
"""Initialize a generic Node.FS.Base object.
Call the superclass initialization, take care of setting up
@@ -663,7 +672,7 @@ class Base(SCons.Node.Node):
raise AttributeError("%r object has no attribute %r" %
(self.__class__, attr))
- def __str__(self):
+ def __str__(self) -> str:
"""A Node.FS.Base object's string representation is its path
name."""
global Save_Strings
@@ -762,30 +771,30 @@ class Base(SCons.Node.Node):
else:
return None
- def isdir(self):
+ def isdir(self) -> bool:
st = self.stat()
return st is not None and stat.S_ISDIR(st.st_mode)
- def isfile(self):
+ def isfile(self) -> bool:
st = self.stat()
return st is not None and stat.S_ISREG(st.st_mode)
if hasattr(os, 'symlink'):
- def islink(self):
+ def islink(self) -> bool:
st = self.lstat()
return st is not None and stat.S_ISLNK(st.st_mode)
else:
- def islink(self):
+ def islink(self) -> bool:
return False # no symlinks
- def is_under(self, dir):
+ def is_under(self, dir) -> bool:
if self is dir:
- return 1
+ return True
else:
return self.dir.is_under(dir)
- def set_local(self):
- self._local = 1
+ def set_local(self) -> None:
+ self._local = True
def srcnode(self):
"""If this node is in a build path, return the node
@@ -817,7 +826,7 @@ class Base(SCons.Node.Node):
pathname += p.dirname
return pathname + path_elems[-1].name
- def set_src_builder(self, builder):
+ def set_src_builder(self, builder) -> None:
"""Set the source code builder for this node."""
self.sbuilder = builder
if not self.has_builder():
@@ -951,7 +960,7 @@ class Base(SCons.Node.Node):
self._memo['rentry'] = result
return result
- def _glob1(self, pattern, ondisk=True, source=False, strings=False):
+ def _glob1(self, pattern, ondisk: bool=True, source: bool=False, strings: bool=False):
return []
# Dict that provides a simple backward compatibility
@@ -989,12 +998,12 @@ class Entry(Base):
'released_target_info',
'contentsig']
- def __init__(self, name, directory, fs):
+ def __init__(self, name, directory, fs) -> None:
super().__init__(name, directory, fs)
self._func_exists = 3
self._func_get_contents = 1
- def diskcheck_match(self):
+ def diskcheck_match(self) -> None:
pass
def disambiguate(self, must_exist=None):
@@ -1048,7 +1057,7 @@ class Entry(Base):
contents of the file."""
return SCons.Node._get_contents_map[self._func_get_contents](self)
- def get_text_contents(self):
+ def get_text_contents(self) -> str:
"""Fetch the decoded text contents of a Unicode encoded Entry.
Since this should return the text contents from the file
@@ -1064,9 +1073,10 @@ class Entry(Base):
# hand or catch the exception.
return ''
else:
+ # now we're a different node type, call its method to get the text.
return self.get_text_contents()
- def must_be_same(self, klass):
+ def must_be_same(self, klass) -> None:
"""Called to make sure a Node is a Dir. Since we're an
Entry, we can morph into one."""
if self.__class__ is not klass:
@@ -1097,7 +1107,7 @@ class Entry(Base):
def new_ninfo(self):
return self.disambiguate().new_ninfo()
- def _glob1(self, pattern, ondisk=True, source=False, strings=False):
+ def _glob1(self, pattern, ondisk: bool=True, source: bool=False, strings: bool=False):
return self.disambiguate()._glob1(pattern, ondisk, source, strings)
def get_subst_proxy(self):
@@ -1144,10 +1154,10 @@ class LocalFS:
def getsize(self, path):
return os.path.getsize(path)
- def isdir(self, path):
+ def isdir(self, path) -> bool:
return os.path.isdir(path)
- def isfile(self, path):
+ def isfile(self, path) -> bool:
return os.path.isfile(path)
def link(self, src, dst):
@@ -1162,10 +1172,10 @@ class LocalFS:
def scandir(self, path):
return os.scandir(path)
- def makedirs(self, path, mode=0o777, exist_ok=False):
+ def makedirs(self, path, mode: int=0o777, exist_ok: bool=False):
return os.makedirs(path, mode=mode, exist_ok=exist_ok)
- def mkdir(self, path, mode=0o777):
+ def mkdir(self, path, mode: int=0o777):
return os.mkdir(path, mode=mode)
def rename(self, old, new):
@@ -1185,28 +1195,28 @@ class LocalFS:
if hasattr(os, 'symlink'):
- def islink(self, path):
+ def islink(self, path) -> bool:
return os.path.islink(path)
else:
- def islink(self, path):
+ def islink(self, path) -> bool:
return False # no symlinks
if hasattr(os, 'readlink'):
- def readlink(self, file):
+ def readlink(self, file) -> str:
return os.readlink(file)
else:
- def readlink(self, file):
+ def readlink(self, file) -> str:
return ''
class FS(LocalFS):
- def __init__(self, path = None):
+ def __init__(self, path = None) -> None:
"""Initialize the Node.FS subsystem.
The supplied path is the top of the source tree, where we
@@ -1238,13 +1248,13 @@ class FS(LocalFS):
DirNodeInfo.fs = self
FileNodeInfo.fs = self
- def set_SConstruct_dir(self, dir):
+ def set_SConstruct_dir(self, dir) -> None:
self.SConstruct_dir = dir
def get_max_drift(self):
return self.max_drift
- def set_max_drift(self, max_drift):
+ def set_max_drift(self, max_drift) -> None:
self.max_drift = max_drift
def getcwd(self):
@@ -1253,7 +1263,7 @@ class FS(LocalFS):
else:
return ""
- def chdir(self, dir, change_os_dir=False):
+ def chdir(self, dir, change_os_dir: bool=False):
"""Change the current working directory for lookups.
If change_os_dir is true, we will also change the "real" cwd
to match.
@@ -1285,7 +1295,7 @@ class FS(LocalFS):
self.Root[''] = root
return root
- def _lookup(self, p, directory, fsclass, create=1):
+ def _lookup(self, p, directory, fsclass, create: bool = True):
"""
The generic entry point for Node lookup with user-supplied data.
@@ -1421,7 +1431,7 @@ class FS(LocalFS):
return root._lookup_abs(p, fsclass, create)
- def Entry(self, name, directory = None, create = 1):
+ def Entry(self, name, directory = None, create: bool = True):
"""Look up or create a generic Entry node with the specified name.
If the name is a relative path (begins with ./, ../, or a file
name), then it is looked up relative to the supplied directory
@@ -1430,7 +1440,7 @@ class FS(LocalFS):
"""
return self._lookup(name, directory, Entry, create)
- def File(self, name, directory = None, create = 1):
+ def File(self, name, directory = None, create: bool = True):
"""Look up or create a File node with the specified name. If
the name is a relative path (begins with ./, ../, or a file name),
then it is looked up relative to the supplied directory node,
@@ -1442,7 +1452,7 @@ class FS(LocalFS):
"""
return self._lookup(name, directory, File, create)
- def Dir(self, name, directory = None, create = True):
+ def Dir(self, name, directory = None, create: bool = True):
"""Look up or create a Dir node with the specified name. If
the name is a relative path (begins with ./, ../, or a file name),
then it is looked up relative to the supplied directory node,
@@ -1454,7 +1464,7 @@ class FS(LocalFS):
"""
return self._lookup(name, directory, Dir, create)
- def VariantDir(self, variant_dir, src_dir, duplicate=1):
+ def VariantDir(self, variant_dir, src_dir, duplicate: int=1):
"""Link the supplied variant directory to the source directory
for purposes of building files."""
@@ -1470,28 +1480,31 @@ class FS(LocalFS):
raise SCons.Errors.UserError("'%s' already has a source directory: '%s'."%(variant_dir, variant_dir.srcdir))
variant_dir.link(src_dir, duplicate)
- def Repository(self, *dirs):
+ def Repository(self, *dirs) -> None:
"""Specify Repository directories to search."""
for d in dirs:
if not isinstance(d, SCons.Node.Node):
d = self.Dir(d)
self.Top.addRepository(d)
- def PyPackageDir(self, modulename):
- r"""Locate the directory of a given python module name
+ def PyPackageDir(self, modulename) -> Optional[Dir]:
+ r"""Locate the directory of Python module *modulename*.
- For example scons might resolve to
- Windows: C:\Python27\Lib\site-packages\scons-2.5.1
- Linux: /usr/lib/scons
+ For example 'SCons' might resolve to
+ Windows: C:\Python311\Lib\site-packages\SCons
+ Linux: /usr/lib64/python3.11/site-packages/SCons
- This can be useful when we want to determine a toolpath based on a python module name"""
+ Can be used to determine a toolpath based on a Python module name.
- dirpath = ''
-
- # Python3 Code
+ This is the backend called by the public API function
+ :meth:`~Environment.Base.PyPackageDir`.
+ """
modspec = importlib.util.find_spec(modulename)
- dirpath = os.path.dirname(modspec.origin)
- return self._lookup(dirpath, None, Dir, True)
+ if modspec:
+ origin = os.path.dirname(modspec.origin)
+ return self._lookup(origin, directory=None, fsclass=Dir, create=True)
+ else:
+ return None
def variant_dir_target_climb(self, orig, dir, tail):
@@ -1521,7 +1534,7 @@ class FS(LocalFS):
message = fmt % ' '.join(map(str, targets))
return targets, message
- def Glob(self, pathname, ondisk=True, source=True, strings=False, exclude=None, cwd=None):
+ def Glob(self, pathname, ondisk: bool=True, source: bool=True, strings: bool=False, exclude=None, cwd=None):
"""
Globs
@@ -1555,7 +1568,7 @@ class DirBuildInfo(SCons.Node.BuildInfoBase):
glob_magic_check = re.compile('[*?[]')
-def has_glob_magic(s):
+def has_glob_magic(s) -> bool:
return glob_magic_check.search(s) is not None
class Dir(Base):
@@ -1580,12 +1593,12 @@ class Dir(Base):
NodeInfo = DirNodeInfo
BuildInfo = DirBuildInfo
- def __init__(self, name, directory, fs):
+ def __init__(self, name, directory, fs) -> None:
if SCons.Debug.track_instances: logInstanceCreation(self, 'Node.FS.Dir')
super().__init__(name, directory, fs)
self._morph()
- def _morph(self):
+ def _morph(self) -> None:
"""Turn a file system Node (either a freshly initialized directory
object or a separate Entry object) into a proper directory object.
@@ -1649,11 +1662,11 @@ class Dir(Base):
l.insert(0, a)
self.get_executor().set_action_list(l)
- def diskcheck_match(self):
+ def diskcheck_match(self) -> None:
diskcheck_match(self, self.isfile,
"File %s found where directory expected.")
- def __clearRepositoryCache(self, duplicate=None):
+ def __clearRepositoryCache(self, duplicate=None) -> None:
"""Called when we change the repository(ies) for a directory.
This clears any cached information that is invalidated by changing
the repository."""
@@ -1671,7 +1684,7 @@ class Dir(Base):
if duplicate is not None:
node.duplicate = duplicate
- def __resetDuplicate(self, node):
+ def __resetDuplicate(self, node) -> None:
if node != self:
node.duplicate = node.get_dir().duplicate
@@ -1682,7 +1695,7 @@ class Dir(Base):
"""
return self.fs.Entry(name, self)
- def Dir(self, name, create=True):
+ def Dir(self, name, create: bool=True):
"""
Looks up or creates a directory node named 'name' relative to
this directory.
@@ -1696,7 +1709,7 @@ class Dir(Base):
"""
return self.fs.File(name, self)
- def link(self, srcdir, duplicate):
+ def link(self, srcdir, duplicate) -> None:
"""Set this directory as the variant directory for the
supplied source directory."""
self.srcdir = srcdir
@@ -1734,7 +1747,7 @@ class Dir(Base):
return result
- def addRepository(self, dir):
+ def addRepository(self, dir) -> None:
if dir != self and dir not in self.repositories:
self.repositories.append(dir)
dir._tpath = '.'
@@ -1834,10 +1847,10 @@ class Dir(Base):
# Taskmaster interface subsystem
#
- def prepare(self):
+ def prepare(self) -> None:
pass
- def build(self, **kw):
+ def build(self, **kw) -> None:
"""A null "builder" for directories."""
global MkdirBuilder
if self.builder is not MkdirBuilder:
@@ -1911,19 +1924,18 @@ class Dir(Base):
contents = self.get_contents()
return hash_signature(contents)
- def do_duplicate(self, src):
+ def do_duplicate(self, src) -> None:
pass
- def is_up_to_date(self):
- """If any child is not up-to-date, then this directory isn't,
- either."""
+ def is_up_to_date(self) -> bool:
+ """If any child is not up-to-date, then this directory isn't, either."""
if self.builder is not MkdirBuilder and not self.exists():
- return 0
+ return False
up_to_date = SCons.Node.up_to_date
for kid in self.children():
if kid.get_state() > up_to_date:
- return 0
- return 1
+ return False
+ return True
def rdir(self):
if not self.exists():
@@ -2145,7 +2157,7 @@ class Dir(Base):
return None
return node
- def walk(self, func, arg):
+ def walk(self, func, arg) -> None:
"""
Walk this directory tree by calling the specified function
for each directory in the tree.
@@ -2171,7 +2183,7 @@ class Dir(Base):
for dirname in [n for n in names if isinstance(entries[n], Dir)]:
entries[dirname].walk(func, arg)
- def glob(self, pathname, ondisk=True, source=False, strings=False, exclude=None) -> list:
+ def glob(self, pathname, ondisk: bool=True, source: bool=False, strings: bool=False, exclude=None) -> list:
"""Returns a list of Nodes (or strings) matching a pathname pattern.
Pathname patterns follow POSIX shell syntax::
@@ -2234,7 +2246,7 @@ class Dir(Base):
result = [x for x in result if not any(fnmatch.fnmatch(str(x), str(e)) for e in SCons.Util.flatten(excludes))]
return sorted(result, key=lambda a: str(a))
- def _glob1(self, pattern, ondisk=True, source=False, strings=False):
+ def _glob1(self, pattern, ondisk: bool=True, source: bool=False, strings: bool=False):
"""
Globs for and returns a list of entry names matching a single
pattern in this directory.
@@ -2313,7 +2325,7 @@ class RootDir(Dir):
__slots__ = ('_lookupDict', 'abspath', 'path')
- def __init__(self, drive, fs):
+ def __init__(self, drive, fs) -> None:
if SCons.Debug.track_instances: logInstanceCreation(self, 'Node.FS.RootDir')
SCons.Node.Node.__init__(self)
@@ -2371,7 +2383,7 @@ class RootDir(Dir):
if not has_unc:
self._lookupDict['//'] = self
- def _morph(self):
+ def _morph(self) -> None:
"""Turn a file system Node (either a freshly initialized directory
object or a separate Entry object) into a proper directory object.
@@ -2412,12 +2424,12 @@ class RootDir(Dir):
self.get_executor().set_action_list(l)
- def must_be_same(self, klass):
+ def must_be_same(self, klass) -> None:
if klass is Dir:
return
Base.must_be_same(self, klass)
- def _lookup_abs(self, p, klass, create=True):
+ def _lookup_abs(self, p, klass, create: bool=True):
"""
Fast (?) lookup of a *normalized* absolute path.
@@ -2459,7 +2471,7 @@ class RootDir(Dir):
result.must_be_same(klass)
return result
- def __str__(self):
+ def __str__(self) -> str:
return self._abspath
def entry_abspath(self, name):
@@ -2474,11 +2486,8 @@ class RootDir(Dir):
def entry_tpath(self, name):
return self._tpath + name
- def is_under(self, dir):
- if self is dir:
- return 1
- else:
- return 0
+ def is_under(self, dir) -> bool:
+ return True if self is dir else False
def up(self):
return None
@@ -2531,7 +2540,7 @@ class FileNodeInfo(SCons.Node.NodeInfoBase):
return state
- def __setstate__(self, state):
+ def __setstate__(self, state) -> None:
"""
Restore the attributes from a pickled state.
"""
@@ -2544,7 +2553,7 @@ class FileNodeInfo(SCons.Node.NodeInfoBase):
def __eq__(self, other):
return self.csig == other.csig and self.timestamp == other.timestamp and self.size == other.size
- def __ne__(self, other):
+ def __ne__(self, other) -> bool:
return not self.__eq__(other)
@@ -2577,7 +2586,7 @@ class FileBuildInfo(SCons.Node.BuildInfoBase):
return super().__setattr__(key, value)
- def convert_to_sconsign(self):
+ def convert_to_sconsign(self) -> None:
"""
Converts this FileBuildInfo object for writing to a .sconsign file
@@ -2604,7 +2613,7 @@ class FileBuildInfo(SCons.Node.BuildInfoBase):
else:
setattr(self, attr, list(map(node_to_str, val)))
- def convert_from_sconsign(self, dir, name):
+ def convert_from_sconsign(self, dir, name) -> None:
"""
Converts a newly-read FileBuildInfo object for in-SCons use
@@ -2613,7 +2622,7 @@ class FileBuildInfo(SCons.Node.BuildInfoBase):
"""
pass
- def prepare_dependencies(self):
+ def prepare_dependencies(self) -> None:
"""
Prepares a FileBuildInfo object for explaining what changed
@@ -2642,7 +2651,7 @@ class FileBuildInfo(SCons.Node.BuildInfoBase):
nodes.append(s)
setattr(self, nattr, nodes)
- def format(self, names=0):
+ def format(self, names: int=0):
result = []
bkids = self.bsources + self.bdepends + self.bimplicit
bkidsigs = self.bsourcesigs + self.bdependsigs + self.bimplicitsigs
@@ -2680,11 +2689,11 @@ class File(Base):
# Although the command-line argument is in kilobytes, this is in bytes.
hash_chunksize = 65536
- def diskcheck_match(self):
+ def diskcheck_match(self) -> None:
diskcheck_match(self, self.isdir,
"Directory %s found where file expected.")
- def __init__(self, name, directory, fs):
+ def __init__(self, name, directory, fs) -> None:
if SCons.Debug.track_instances: logInstanceCreation(self, 'Node.FS.File')
super().__init__(name, directory, fs)
self._morph()
@@ -2694,7 +2703,7 @@ class File(Base):
the directory of this file."""
return self.dir.Entry(name)
- def Dir(self, name, create=True):
+ def Dir(self, name, create: bool=True):
"""Create a directory node named 'name' relative to
the directory of this file."""
return self.dir.Dir(name, create=create)
@@ -2709,11 +2718,11 @@ class File(Base):
the directory of this file."""
return self.dir.File(name)
- def _morph(self):
+ def _morph(self) -> None:
"""Turn a file system node into a File object."""
self.scanner_paths = {}
if not hasattr(self, '_local'):
- self._local = 0
+ self._local = False
if not hasattr(self, 'released_target_info'):
self.released_target_info = False
@@ -2746,43 +2755,18 @@ class File(Base):
return SCons.Node._get_contents_map[self._func_get_contents](self)
def get_text_contents(self) -> str:
- """Return the contents of the file in text form.
-
- This attempts to figure out what the encoding of the text is
- based upon the BOM bytes, and then decodes the contents so that
- it's a valid python string.
- """
- contents = self.get_contents()
- # The behavior of various decode() methods and functions
- # w.r.t. the initial BOM bytes is different for different
- # encodings and/or Python versions. ('utf-8' does not strip
- # them, but has a 'utf-8-sig' which does; 'utf-16' seems to
- # strip them; etc.) Just sidestep all the complication by
- # explicitly stripping the BOM before we decode().
- if contents[:len(codecs.BOM_UTF8)] == codecs.BOM_UTF8:
- return contents[len(codecs.BOM_UTF8):].decode('utf-8')
- if contents[:len(codecs.BOM_UTF16_LE)] == codecs.BOM_UTF16_LE:
- return contents[len(codecs.BOM_UTF16_LE):].decode('utf-16-le')
- if contents[:len(codecs.BOM_UTF16_BE)] == codecs.BOM_UTF16_BE:
- return contents[len(codecs.BOM_UTF16_BE):].decode('utf-16-be')
- try:
- return contents.decode('utf-8')
- except UnicodeDecodeError as e:
- try:
- return contents.decode('latin-1')
- except UnicodeDecodeError as e:
- return contents.decode('utf-8', errors='backslashreplace')
+ """Return the contents of the file as text."""
+ return SCons.Util.to_Text(self.get_contents())
def get_content_hash(self) -> str:
- """
- Compute and return the hash for this file.
- """
+ """Compute and return the hash for this file."""
if not self.rexists():
+ # special marker to help distinguish from empty file
return hash_signature(SCons.Util.NOFILE)
fname = self.rfile().get_abspath()
try:
cs = hash_file_signature(fname, chunksize=File.hash_chunksize)
- except EnvironmentError as e:
+ except OSError as e:
if not e.filename:
e.filename = fname
raise
@@ -2939,7 +2923,7 @@ class File(Base):
try:
sconsign_entry = self.dir.sconsign().get_entry(self.name)
- except (KeyError, EnvironmentError):
+ except (KeyError, OSError):
import SCons.SConsign
sconsign_entry = SCons.SConsign.SConsignEntry()
sconsign_entry.binfo = self.new_binfo()
@@ -2997,12 +2981,12 @@ class File(Base):
return result
- def _createDir(self):
+ def _createDir(self) -> None:
# ensure that the directories for this node are
# created.
self.dir._create()
- def push_to_cache(self):
+ def push_to_cache(self) -> None:
"""Try to push the node into a cache
"""
# This should get called before the Nodes' .built() method is
@@ -3018,22 +3002,22 @@ class File(Base):
if self.exists():
self.get_build_env().get_CacheDir().push(self)
- def retrieve_from_cache(self):
+ def retrieve_from_cache(self) -> bool:
"""Try to retrieve the node's content from a cache
This method is called from multiple threads in a parallel build,
so only do thread safe stuff here. Do thread unsafe stuff in
built().
- Returns true if the node was successfully retrieved.
+ Returns True if the node was successfully retrieved.
"""
if self.nocache:
- return None
+ return False
if not self.is_derived():
- return None
+ return False
return self.get_build_env().get_CacheDir().retrieve(self)
- def visited(self):
+ def visited(self) -> None:
if self.exists() and self.executor is not None:
self.get_build_env().get_CacheDir().push_if_forced(self)
@@ -3056,7 +3040,7 @@ class File(Base):
SCons.Node.store_info_map[self.store_info](self)
- def release_target_info(self):
+ def release_target_info(self) -> None:
"""Called just after this node has been marked
up-to-date or was built completely.
@@ -3123,7 +3107,7 @@ class File(Base):
self.builder_set(scb)
return scb
- def has_src_builder(self):
+ def has_src_builder(self) -> bool:
"""Return whether this Node has a source builder or not.
If this Node doesn't have an explicit source code builder, this
@@ -3150,7 +3134,7 @@ class File(Base):
def _rmv_existing(self):
self.clear_memoized_values()
if SCons.Node.print_duplicate:
- print("dup: removing existing target {}".format(self))
+ print(f"dup: removing existing target {self}")
e = Unlink(self, [], None)
if isinstance(e, SCons.Errors.BuildError):
raise e
@@ -3159,7 +3143,7 @@ class File(Base):
# Taskmaster interface subsystem
#
- def make_ready(self):
+ def make_ready(self) -> None:
self.has_src_builder()
self.get_binfo()
@@ -3178,7 +3162,7 @@ class File(Base):
try:
self._createDir()
except SCons.Errors.StopError as drive:
- raise SCons.Errors.StopError("No drive `{}' for target `{}'.".format(drive, self))
+ raise SCons.Errors.StopError(f"No drive `{drive}' for target `{self}'.")
#
#
@@ -3194,11 +3178,11 @@ class File(Base):
def do_duplicate(self, src):
self._createDir()
if SCons.Node.print_duplicate:
- print("dup: relinking variant '{}' from '{}'".format(self, src))
+ print(f"dup: relinking variant '{self}' from '{src}'")
Unlink(self, None, None)
e = Link(self, src, None)
if isinstance(e, SCons.Errors.BuildError):
- raise SCons.Errors.StopError("Cannot duplicate `{}' in `{}': {}.".format(src.get_internal_path(), self.dir._path, e.errstr))
+ raise SCons.Errors.StopError(f"Cannot duplicate `{src.get_internal_path()}' in `{self.dir._path}': {e.errstr}.")
self.linked = 1
# The Link() action may or may not have actually
# created the file, depending on whether the -n
@@ -3264,7 +3248,7 @@ class File(Base):
contents = self.get_contents()
else:
csig = self.get_content_hash()
- except IOError:
+ except OSError:
# This can happen if there's actually a directory on-disk,
# which can be the case if they've disabled disk checks,
# or if an action with a File target actually happens to
@@ -3282,11 +3266,11 @@ class File(Base):
# DECISION SUBSYSTEM
#
- def builder_set(self, builder):
+ def builder_set(self, builder) -> None:
SCons.Node.Node.builder_set(self, builder)
self.changed_since_last_build = 5
- def built(self):
+ def built(self) -> None:
"""Called just after this File node is successfully built.
Just like for 'release_target_info' we try to release
@@ -3310,7 +3294,7 @@ class File(Base):
self.scanner_paths = None
- def changed(self, node=None, allowcache=False):
+ def changed(self, node=None, allowcache: bool=False) -> bool:
"""
Returns if the node is up-to-date with respect to the BuildInfo
stored last time it was built.
@@ -3332,14 +3316,14 @@ class File(Base):
self._memo['changed'] = has_changed
return has_changed
- def changed_content(self, target, prev_ni, repo_node=None):
+ def changed_content(self, target, prev_ni, repo_node=None) -> bool:
cur_csig = self.get_csig()
try:
return cur_csig != prev_ni.csig
except AttributeError:
- return 1
+ return True
- def changed_state(self, target, prev_ni, repo_node=None):
+ def changed_state(self, target, prev_ni, repo_node=None) -> bool:
return self.state != SCons.Node.up_to_date
@@ -3466,7 +3450,7 @@ class File(Base):
return df
- def changed_timestamp_then_content(self, target, prev_ni, node=None):
+ def changed_timestamp_then_content(self, target, prev_ni, node=None) -> bool:
"""
Used when decider for file is Timestamp-MD5
@@ -3527,13 +3511,13 @@ class File(Base):
return False
return self.changed_content(target, new_prev_ni)
- def changed_timestamp_newer(self, target, prev_ni, repo_node=None):
+ def changed_timestamp_newer(self, target, prev_ni, repo_node=None) -> bool:
try:
return self.get_timestamp() > target.get_timestamp()
except AttributeError:
- return 1
+ return True
- def changed_timestamp_match(self, target, prev_ni, repo_node=None):
+ def changed_timestamp_match(self, target, prev_ni, repo_node=None) -> bool:
"""
Return True if the timestamps don't match or if there is no previous timestamp
:param target:
@@ -3543,13 +3527,13 @@ class File(Base):
try:
return self.get_timestamp() != prev_ni.timestamp
except AttributeError:
- return 1
+ return True
- def is_up_to_date(self):
- """Check for whether the Node is current
- In all cases self is the target we're checking to see if it's up to date
+ def is_up_to_date(self) -> bool:
+ """Check for whether the Node is current.
+
+ In all cases self is the target we're checking to see if it's up to date
"""
-
T = 0
if T: Trace('is_up_to_date(%s):' % self)
if not self.exists():
@@ -3570,10 +3554,10 @@ class File(Base):
raise e
SCons.Node.store_info_map[self.store_info](self)
if T: Trace(' 1\n')
- return 1
+ return True
self.changed()
if T: Trace(' None\n')
- return None
+ return False
else:
r = self.changed()
if T: Trace(' self.exists(): %s\n' % r)
@@ -3728,7 +3712,7 @@ class FileFinder:
"""
"""
- def __init__(self):
+ def __init__(self) -> None:
self._memo = {}
def filedir_lookup(self, p, fd=None):
@@ -3826,7 +3810,7 @@ class FileFinder:
find_file = FileFinder().find_file
-def invalidate_node_memos(targets):
+def invalidate_node_memos(targets) -> None:
"""
Invalidate the memoized values of all Nodes (files or directories)
that are associated with the given entries. Has been added to
diff --git a/scons/scons-local-4.5.2/SCons/Node/Python.py b/scons/scons-local-4.7.0/SCons/Node/Python.py
similarity index 95%
rename from scons/scons-local-4.5.2/SCons/Node/Python.py
rename to scons/scons-local-4.7.0/SCons/Node/Python.py
index 57416ef0b..2f285b40b 100644
--- a/scons/scons-local-4.5.2/SCons/Node/Python.py
+++ b/scons/scons-local-4.7.0/SCons/Node/Python.py
@@ -58,7 +58,7 @@ class ValueNodeInfo(SCons.Node.NodeInfoBase):
return state
- def __setstate__(self, state):
+ def __setstate__(self, state) -> None:
"""
Restore the attributes from a pickled state.
"""
@@ -87,7 +87,7 @@ class Value(SCons.Node.Node):
NodeInfo = ValueNodeInfo
BuildInfo = ValueBuildInfo
- def __init__(self, value, built_value=None, name=None):
+ def __init__(self, value, built_value=None, name=None) -> None:
super().__init__()
self.value = value
self.changed_since_last_build = 6
@@ -105,25 +105,25 @@ class Value(SCons.Node.Node):
def str_for_display(self):
return repr(self.value)
- def __str__(self):
+ def __str__(self) -> str:
return str(self.value)
- def make_ready(self):
+ def make_ready(self) -> None:
self.get_csig()
- def build(self, **kw):
+ def build(self, **kw) -> None:
if not hasattr(self, 'built_value'):
SCons.Node.Node.build(self, **kw)
is_up_to_date = SCons.Node.Node.children_are_up_to_date
- def is_under(self, dir):
+ def is_under(self, dir) -> bool:
# Make Value nodes get built regardless of
# what directory scons was run from. Value nodes
# are outside the filesystem:
- return 1
+ return True
- def write(self, built_value):
+ def write(self, built_value) -> None:
"""Set the value of the node."""
self.built_value = built_value
diff --git a/scons/scons-local-4.5.2/SCons/Node/__init__.py b/scons/scons-local-4.7.0/SCons/Node/__init__.py
similarity index 94%
rename from scons/scons-local-4.5.2/SCons/Node/__init__.py
rename to scons/scons-local-4.7.0/SCons/Node/__init__.py
index bb0986859..630490e53 100644
--- a/scons/scons-local-4.5.2/SCons/Node/__init__.py
+++ b/scons/scons-local-4.7.0/SCons/Node/__init__.py
@@ -43,6 +43,7 @@ be able to depend on any other type of "thing."
import collections
import copy
from itertools import chain, zip_longest
+from typing import Optional
import SCons.Debug
import SCons.Executor
@@ -50,6 +51,7 @@ import SCons.Memoize
from SCons.compat import NoSlotsPyPy
from SCons.Debug import logInstanceCreation, Trace
from SCons.Util import hash_signature, is_List, UniqueList, render_tree
+from SCons.Util.sctyping import ExecutorType
print_duplicate = 0
@@ -94,7 +96,7 @@ implicit_deps_changed = 0
# A variable that can be set to an interface-specific function be called
# to annotate a Node with information about its creation.
-def do_nothing_node(node): pass
+def do_nothing_node(node) -> None: pass
Annotate = do_nothing_node
@@ -109,7 +111,7 @@ interactive = False
def is_derived_none(node):
raise NotImplementedError
-def is_derived_node(node):
+def is_derived_node(node) -> bool:
"""
Returns true if this node is derived (i.e. built).
"""
@@ -118,16 +120,16 @@ def is_derived_node(node):
_is_derived_map = {0 : is_derived_none,
1 : is_derived_node}
-def exists_none(node):
+def exists_none(node) -> bool:
raise NotImplementedError
-def exists_always(node):
- return 1
+def exists_always(node) -> bool:
+ return True
-def exists_base(node):
+def exists_base(node) -> bool:
return node.stat() is not None
-def exists_entry(node):
+def exists_entry(node) -> bool:
"""Return if the Entry exists. Check the file system to see
what we should turn into first. Assume a file if there's no
directory."""
@@ -135,7 +137,7 @@ def exists_entry(node):
return _exists_map[node._func_exists](node)
-def exists_file(node):
+def exists_file(node) -> bool:
# Duplicate from source path if we are set up to do this.
if node.duplicate and not node.is_derived() and not node.linked:
src = node.srcnode()
@@ -212,7 +214,7 @@ def get_contents_file(node):
try:
with open(fname, "rb") as fp:
contents = fp.read()
- except EnvironmentError as e:
+ except OSError as e:
if not e.filename:
e.filename = fname
raise
@@ -245,7 +247,7 @@ _target_from_source_map = {0 : target_from_source_none,
#
# First, the single decider functions
#
-def changed_since_last_build_node(node, target, prev_ni, repo_node=None):
+def changed_since_last_build_node(node, target, prev_ni, repo_node=None) -> bool:
"""
Must be overridden in a specific subclass to return True if this
@@ -266,37 +268,37 @@ def changed_since_last_build_node(node, target, prev_ni, repo_node=None):
raise NotImplementedError
-def changed_since_last_build_alias(node, target, prev_ni, repo_node=None):
+def changed_since_last_build_alias(node, target, prev_ni, repo_node=None) -> bool:
cur_csig = node.get_csig()
try:
return cur_csig != prev_ni.csig
except AttributeError:
- return 1
+ return True
-def changed_since_last_build_entry(node, target, prev_ni, repo_node=None):
+def changed_since_last_build_entry(node, target, prev_ni, repo_node=None) -> bool:
node.disambiguate()
return _decider_map[node.changed_since_last_build](node, target, prev_ni, repo_node)
-def changed_since_last_build_state_changed(node, target, prev_ni, repo_node=None):
+def changed_since_last_build_state_changed(node, target, prev_ni, repo_node=None) -> bool:
return node.state != SCons.Node.up_to_date
-def decide_source(node, target, prev_ni, repo_node=None):
+def decide_source(node, target, prev_ni, repo_node=None) -> bool:
return target.get_build_env().decide_source(node, target, prev_ni, repo_node)
-def decide_target(node, target, prev_ni, repo_node=None):
+def decide_target(node, target, prev_ni, repo_node=None) -> bool:
return target.get_build_env().decide_target(node, target, prev_ni, repo_node)
-def changed_since_last_build_python(node, target, prev_ni, repo_node=None):
+def changed_since_last_build_python(node, target, prev_ni, repo_node=None) -> bool:
cur_csig = node.get_csig()
try:
return cur_csig != prev_ni.csig
except AttributeError:
- return 1
+ return True
#
@@ -326,10 +328,10 @@ do_store_info = True
# First, the single info functions
#
-def store_info_pass(node):
+def store_info_pass(node) -> None:
pass
-def store_info_file(node):
+def store_info_file(node) -> None:
# Merge our build information into the already-stored entry.
# This accommodates "chained builds" where a file that's a target
# in one build (SConstruct file) is a source in a different build.
@@ -353,7 +355,7 @@ class NodeInfoBase:
__slots__ = ('__weakref__',)
current_version_id = 2
- def update(self, node):
+ def update(self, node) -> None:
try:
field_list = self.field_list
except AttributeError:
@@ -370,10 +372,10 @@ class NodeInfoBase:
else:
setattr(self, f, func())
- def convert(self, node, val):
+ def convert(self, node, val) -> None:
pass
- def merge(self, other):
+ def merge(self, other) -> None:
"""
Merge the fields of another object into this object. Already existing
information is overwritten by the other instance's data.
@@ -383,7 +385,7 @@ class NodeInfoBase:
state = other.__getstate__()
self.__setstate__(state)
- def format(self, field_list=None, names=0):
+ def format(self, field_list=None, names: int=0):
if field_list is None:
try:
field_list = self.field_list
@@ -426,7 +428,7 @@ class NodeInfoBase:
pass
return state
- def __setstate__(self, state):
+ def __setstate__(self, state) -> None:
"""
Restore the attributes from a pickled state. The version is discarded.
"""
@@ -452,7 +454,7 @@ class BuildInfoBase:
"bsources", "bdepends", "bact", "bimplicit", "__weakref__")
current_version_id = 2
- def __init__(self):
+ def __init__(self) -> None:
# Create an object attribute from the class attribute so it ends up
# in the pickled data in the .sconsign file.
self.bsourcesigs = []
@@ -460,7 +462,7 @@ class BuildInfoBase:
self.bimplicitsigs = []
self.bactsig = None
- def merge(self, other):
+ def merge(self, other) -> None:
"""
Merge the fields of another object into this object. Already existing
information is overwritten by the other instance's data.
@@ -490,7 +492,7 @@ class BuildInfoBase:
pass
return state
- def __setstate__(self, state):
+ def __setstate__(self, state) -> None:
"""
Restore the attributes from a pickled state.
"""
@@ -501,7 +503,7 @@ class BuildInfoBase:
setattr(self, key, value)
-class Node(object, metaclass=NoSlotsPyPy):
+class Node(metaclass=NoSlotsPyPy):
"""The base Node class, for entities that we know how to
build, or use to build other Nodes.
"""
@@ -553,7 +555,7 @@ class Node(object, metaclass=NoSlotsPyPy):
__slots__ = ('shared', '__dict__')
- def __init__(self):
+ def __init__(self) -> None:
if SCons.Debug.track_instances: logInstanceCreation(self, 'Node.Node')
# Note that we no longer explicitly initialize a self.builder
# attribute to None here. That's because the self.builder
@@ -615,7 +617,7 @@ class Node(object, metaclass=NoSlotsPyPy):
def disambiguate(self, must_exist=None):
return self
- def get_suffix(self):
+ def get_suffix(self) -> str:
return ''
@SCons.Memoize.CountMethodCall
@@ -634,11 +636,11 @@ class Node(object, metaclass=NoSlotsPyPy):
"""Fetch the appropriate scanner path for this node."""
return self.get_executor().get_build_scanner_path(scanner)
- def set_executor(self, executor):
+ def set_executor(self, executor: ExecutorType) -> None:
"""Set the action executor for this node."""
self.executor = executor
- def get_executor(self, create=1):
+ def get_executor(self, create: int=1) -> ExecutorType:
"""Fetch the action executor for this node. Create one if
there isn't already one, and requested to do so."""
try:
@@ -649,7 +651,7 @@ class Node(object, metaclass=NoSlotsPyPy):
try:
act = self.builder.action
except AttributeError:
- executor = SCons.Executor.Null(targets=[self])
+ executor = SCons.Executor.Null(targets=[self]) # type: ignore
else:
executor = SCons.Executor.Executor(act,
self.env or self.builder.env,
@@ -659,7 +661,7 @@ class Node(object, metaclass=NoSlotsPyPy):
self.executor = executor
return executor
- def executor_cleanup(self):
+ def executor_cleanup(self) -> None:
"""Let the executor clean up any cached information."""
try:
executor = self.get_executor(create=None)
@@ -669,19 +671,19 @@ class Node(object, metaclass=NoSlotsPyPy):
if executor is not None:
executor.cleanup()
- def reset_executor(self):
+ def reset_executor(self) -> None:
"""Remove cached executor; forces recompute when needed."""
try:
delattr(self, 'executor')
except AttributeError:
pass
- def push_to_cache(self):
+ def push_to_cache(self) -> None:
"""Try to push a node into a cache
"""
pass
- def retrieve_from_cache(self):
+ def retrieve_from_cache(self) -> bool:
"""Try to retrieve the node's content from a cache
This method is called from multiple threads in a parallel build,
@@ -690,13 +692,13 @@ class Node(object, metaclass=NoSlotsPyPy):
Returns true if the node was successfully retrieved.
"""
- return 0
+ return False
#
# Taskmaster interface subsystem
#
- def make_ready(self):
+ def make_ready(self) -> None:
"""Get a Node ready for evaluation.
This is called before the Taskmaster decides if the Node is
@@ -757,7 +759,7 @@ class Node(object, metaclass=NoSlotsPyPy):
e.node = self
raise
- def built(self):
+ def built(self) -> None:
"""Called just after this node is successfully built."""
# Clear the implicit dependency caches of any Nodes
@@ -783,7 +785,6 @@ class Node(object, metaclass=NoSlotsPyPy):
except AttributeError:
pass
-
self.clear()
if self.pseudo:
@@ -795,7 +796,7 @@ class Node(object, metaclass=NoSlotsPyPy):
"Cannot find target " + str(self) + " after building")
self.ninfo.update(self)
- def visited(self):
+ def visited(self) -> None:
"""Called just after this node has been visited (with or
without a build)."""
try:
@@ -808,7 +809,7 @@ class Node(object, metaclass=NoSlotsPyPy):
self.ninfo.update(self)
SCons.Node.store_info_map[self.store_info](self)
- def release_target_info(self):
+ def release_target_info(self) -> None:
"""Called just after this node has been marked
up-to-date or was built completely.
@@ -825,10 +826,10 @@ class Node(object, metaclass=NoSlotsPyPy):
"""
pass
- def add_to_waiting_s_e(self, node):
+ def add_to_waiting_s_e(self, node) -> None:
self.waiting_s_e.add(node)
- def add_to_waiting_parents(self, node):
+ def add_to_waiting_parents(self, node) -> int:
"""
Returns the number of nodes added to our waiting parents list:
1 if we add a unique waiting parent, 0 if not. (Note that the
@@ -842,13 +843,13 @@ class Node(object, metaclass=NoSlotsPyPy):
wp.add(node)
return 1
- def postprocess(self):
+ def postprocess(self) -> None:
"""Clean up anything we don't need to hang onto after we've
been built."""
self.executor_cleanup()
self.waiting_parents = set()
- def clear(self):
+ def clear(self) -> None:
"""Completely clear a Node of all its cached state (so that it
can be re-evaluated by interfaces that do continuous integration
builds).
@@ -868,17 +869,17 @@ class Node(object, metaclass=NoSlotsPyPy):
self.cached = 0
self.includes = None
- def clear_memoized_values(self):
+ def clear_memoized_values(self) -> None:
self._memo = {}
- def builder_set(self, builder):
+ def builder_set(self, builder) -> None:
self.builder = builder
try:
del self.executor
except AttributeError:
pass
- def has_builder(self):
+ def has_builder(self) -> bool:
"""Return whether this Node has a builder or not.
In Boolean tests, this turns out to be a *lot* more efficient
@@ -897,11 +898,11 @@ class Node(object, metaclass=NoSlotsPyPy):
b = self.builder = None
return b is not None
- def set_explicit(self, is_explicit):
+ def set_explicit(self, is_explicit) -> None:
self.is_explicit = is_explicit
- def has_explicit_builder(self):
- """Return whether this Node has an explicit builder
+ def has_explicit_builder(self) -> bool:
+ """Return whether this Node has an explicit builder.
This allows an internal Builder created by SCons to be marked
non-explicit, so that it can be overridden by an explicit
@@ -910,8 +911,8 @@ class Node(object, metaclass=NoSlotsPyPy):
try:
return self.is_explicit
except AttributeError:
- self.is_explicit = None
- return self.is_explicit
+ self.is_explicit = False
+ return False
def get_builder(self, default_builder=None):
"""Return the set builder, or a specified default value"""
@@ -922,7 +923,7 @@ class Node(object, metaclass=NoSlotsPyPy):
multiple_side_effect_has_builder = has_builder
- def is_derived(self):
+ def is_derived(self) -> bool:
"""
Returns true if this node is derived (i.e. built).
@@ -934,11 +935,11 @@ class Node(object, metaclass=NoSlotsPyPy):
"""
return _is_derived_map[self._func_is_derived](self)
- def is_sconscript(self):
+ def is_sconscript(self) -> bool:
""" Returns true if this node is an sconscript """
return self in SConscriptNodes
- def is_conftest(self):
+ def is_conftest(self) -> bool:
""" Returns true if this node is an conftest node"""
try:
self.attributes.conftest_node
@@ -1050,14 +1051,14 @@ class Node(object, metaclass=NoSlotsPyPy):
scanner = scanner.select(node)
return scanner
- def add_to_implicit(self, deps):
+ def add_to_implicit(self, deps) -> None:
if not hasattr(self, 'implicit') or self.implicit is None:
self.implicit = []
self.implicit_set = set()
self._children_reset()
self._add_child(self.implicit, self.implicit_set, deps)
- def scan(self):
+ def scan(self) -> None:
"""Scan this node's dependents for implicit dependencies."""
# Don't bother scanning non-derived files, because we don't
# care what their dependencies are.
@@ -1119,7 +1120,7 @@ class Node(object, metaclass=NoSlotsPyPy):
"""
return scanner.select(self)
- def env_set(self, env, safe=0):
+ def env_set(self, env, safe: bool=False) -> None:
if safe and self.env:
return
self.env = env
@@ -1197,7 +1198,7 @@ class Node(object, metaclass=NoSlotsPyPy):
return binfo
- def del_binfo(self):
+ def del_binfo(self) -> None:
"""Delete the build info from this node."""
try:
delattr(self, 'binfo')
@@ -1226,32 +1227,32 @@ class Node(object, metaclass=NoSlotsPyPy):
#
#
- def set_precious(self, precious = 1):
+ def set_precious(self, precious: int = 1) -> None:
"""Set the Node's precious value."""
self.precious = precious
- def set_pseudo(self, pseudo = True):
- """Set the Node's precious value."""
+ def set_pseudo(self, pseudo: bool = True) -> None:
+ """Set the Node's pseudo value."""
self.pseudo = pseudo
- def set_noclean(self, noclean = 1):
+ def set_noclean(self, noclean: int = 1) -> None:
"""Set the Node's noclean value."""
# Make sure noclean is an integer so the --debug=stree
# output in Util.py can use it as an index.
self.noclean = noclean and 1 or 0
- def set_nocache(self, nocache = 1):
+ def set_nocache(self, nocache: int = 1) -> None:
"""Set the Node's nocache value."""
# Make sure nocache is an integer so the --debug=stree
# output in Util.py can use it as an index.
self.nocache = nocache and 1 or 0
- def set_always_build(self, always_build = 1):
+ def set_always_build(self, always_build: int = 1) -> None:
"""Set the Node's always_build value."""
self.always_build = always_build
- def exists(self):
- """Does this node exists?"""
+ def exists(self) -> bool:
+ """Reports whether node exists."""
return _exists_map[self._func_exists](self)
def rexists(self):
@@ -1263,7 +1264,7 @@ class Node(object, metaclass=NoSlotsPyPy):
"""Fetch the contents of the entry."""
return _get_contents_map[self._func_get_contents](self)
- def missing(self):
+ def missing(self) -> bool:
return not self.is_derived() and \
not self.linked and \
not self.rexists()
@@ -1284,7 +1285,7 @@ class Node(object, metaclass=NoSlotsPyPy):
s = str(e)
raise SCons.Errors.UserError("attempted to add a non-Node dependency to %s:\n\t%s is a %s, not a Node" % (str(self), s, type(e)))
- def add_prerequisite(self, prerequisite):
+ def add_prerequisite(self, prerequisite) -> None:
"""Adds prerequisites"""
if self.prerequisites is None:
self.prerequisites = UniqueList()
@@ -1317,7 +1318,7 @@ class Node(object, metaclass=NoSlotsPyPy):
s = str(e)
raise SCons.Errors.UserError("attempted to add a non-Node as source of %s:\n\t%s is a %s, not a Node" % (str(self), s, type(e)))
- def _add_child(self, collection, set, child):
+ def _add_child(self, collection, set, child) -> None:
"""Adds 'child' to 'collection', first checking 'set' to see if it's
already present."""
added = None
@@ -1329,16 +1330,16 @@ class Node(object, metaclass=NoSlotsPyPy):
if added:
self._children_reset()
- def set_specific_source(self, source):
+ def set_specific_source(self, source) -> None:
self.add_source(source)
self._specific_sources = True
- def add_wkid(self, wkid):
+ def add_wkid(self, wkid) -> None:
"""Add a node to the list of kids waiting to be evaluated"""
if self.wkids is not None:
self.wkids.append(wkid)
- def _children_reset(self):
+ def _children_reset(self) -> None:
self.clear_memoized_values()
# We need to let the Executor clear out any calculated
# build info that it's cached so we can re-calculate it.
@@ -1381,7 +1382,7 @@ class Node(object, metaclass=NoSlotsPyPy):
self._memo['_children_get'] = children
return children
- def all_children(self, scan=1):
+ def all_children(self, scan: int=1):
"""Return a list of all the node's direct children."""
if scan:
self.scan()
@@ -1405,14 +1406,14 @@ class Node(object, metaclass=NoSlotsPyPy):
# internally anyway...)
return list(chain.from_iterable([_f for _f in [self.sources, self.depends, self.implicit] if _f]))
- def children(self, scan=1):
+ def children(self, scan: int=1):
"""Return a list of the node's direct children, minus those
that are ignored by this node."""
if scan:
self.scan()
return self._children_get()
- def set_state(self, state):
+ def set_state(self, state) -> None:
self.state = state
def get_state(self):
@@ -1425,7 +1426,7 @@ class Node(object, metaclass=NoSlotsPyPy):
env = SCons.Defaults.DefaultEnvironment()
return env
- def Decider(self, function):
+ def Decider(self, function) -> None:
foundkey = None
for k, v in _decider_map.items():
if v == function:
@@ -1436,7 +1437,7 @@ class Node(object, metaclass=NoSlotsPyPy):
_decider_map[foundkey] = function
self.changed_since_last_build = foundkey
- def Tag(self, key, value):
+ def Tag(self, key, value) -> None:
""" Add a user-defined tag. """
if not self._tags:
self._tags = {}
@@ -1448,7 +1449,7 @@ class Node(object, metaclass=NoSlotsPyPy):
return None
return self._tags.get(key, None)
- def changed(self, node=None, allowcache=False):
+ def changed(self, node=None, allowcache: bool=False):
"""
Returns if the node is up-to-date with respect to the BuildInfo
stored last time it was built. The default behavior is to compare
@@ -1512,12 +1513,12 @@ class Node(object, metaclass=NoSlotsPyPy):
return result
- def is_up_to_date(self):
+ def is_up_to_date(self) -> bool:
"""Default check for whether the Node is current: unknown Node
subtypes are always out of date, so they will always get built."""
- return None
+ return False
- def children_are_up_to_date(self):
+ def children_are_up_to_date(self) -> bool:
"""Alternate check for whether the Node is current: If all of
our children were up-to-date, then this Node was up-to-date, too.
@@ -1526,7 +1527,7 @@ class Node(object, metaclass=NoSlotsPyPy):
# Allow the children to calculate their signatures.
self.binfo = self.get_binfo()
if self.always_build:
- return None
+ return False
state = 0
for kid in self.children(None):
s = kid.get_state()
@@ -1534,10 +1535,10 @@ class Node(object, metaclass=NoSlotsPyPy):
state = s
return (state == 0 or state == SCons.Node.up_to_date)
- def is_literal(self):
+ def is_literal(self) -> bool:
"""Always pass the string representation of a Node to
the command interpreter literally."""
- return 1
+ return True
def render_include_tree(self):
"""
@@ -1710,12 +1711,12 @@ class Node(object, metaclass=NoSlotsPyPy):
return ( ' '*11).join(lines)
class NodeList(collections.UserList):
- def __str__(self):
+ def __str__(self) -> str:
return str(list(map(str, self.data)))
def get_children(node, parent): return node.children()
-def ignore_cycle(node, stack): pass
-def do_nothing(node, parent): pass
+def ignore_cycle(node, stack) -> None: pass
+def do_nothing(node, parent) -> None: pass
class Walker:
"""An iterator for walking a Node tree.
@@ -1732,7 +1733,7 @@ class Walker:
"""
def __init__(self, node, kids_func=get_children,
cycle_func=ignore_cycle,
- eval_func=do_nothing):
+ eval_func=do_nothing) -> None:
self.kids_func = kids_func
self.cycle_func = cycle_func
self.eval_func = eval_func
@@ -1771,7 +1772,7 @@ class Walker:
return node
return None
- def is_done(self):
+ def is_done(self) -> bool:
return not self.stack
diff --git a/scons/scons-local-4.5.2/SCons/PathList.py b/scons/scons-local-4.7.0/SCons/PathList.py
similarity index 94%
rename from scons/scons-local-4.5.2/SCons/PathList.py
rename to scons/scons-local-4.7.0/SCons/PathList.py
index a7e666dfa..33ac7e58b 100644
--- a/scons/scons-local-4.5.2/SCons/PathList.py
+++ b/scons/scons-local-4.7.0/SCons/PathList.py
@@ -64,10 +64,9 @@ def node_conv(obj):
return result
class _PathList:
- """
- An actual PathList object.
- """
- def __init__(self, pathlist):
+ """An actual PathList object."""
+
+ def __init__(self, pathlist, split=True) -> None:
"""
Initializes a PathList object, canonicalizing the input and
pre-processing it for quicker substitution later.
@@ -94,7 +93,10 @@ class _PathList:
over and over for each target.
"""
if SCons.Util.is_String(pathlist):
- pathlist = pathlist.split(os.pathsep)
+ if split:
+ pathlist = pathlist.split(os.pathsep)
+ else: # no splitting, but still need a list
+ pathlist = [pathlist]
elif not SCons.Util.is_Sequence(pathlist):
pathlist = [pathlist]
@@ -113,7 +115,7 @@ class _PathList:
self.pathlist = tuple(pl)
- def __len__(self): return len(self.pathlist)
+ def __len__(self) -> int: return len(self.pathlist)
def __getitem__(self, i): return self.pathlist[i]
@@ -141,8 +143,7 @@ class _PathList:
class PathListCache:
- """
- A class to handle caching of PathList lookups.
+ """A class to handle caching of PathList lookups.
This class gets instantiated once and then deleted from the namespace,
so it's used as a Singleton (although we don't enforce that in the
@@ -161,14 +162,14 @@ class PathListCache:
The main type of duplication we're trying to catch will come from
looking up the same path list from two different clones of the
same construction environment. That is, given
-
+
env2 = env1.Clone()
both env1 and env2 will have the same CPPPATH value, and we can
cheaply avoid re-parsing both values of CPPPATH by using the
common value from this cache.
"""
- def __init__(self):
+ def __init__(self) -> None:
self._memo = {}
def _PathList_key(self, pathlist):
@@ -189,7 +190,7 @@ class PathListCache:
return pathlist
@SCons.Memoize.CountDictCall(_PathList_key)
- def PathList(self, pathlist):
+ def PathList(self, pathlist, split=True):
"""
Returns the cached _PathList object for the specified pathlist,
creating and caching a new object as necessary.
@@ -206,7 +207,7 @@ class PathListCache:
except KeyError:
pass
- result = _PathList(pathlist)
+ result = _PathList(pathlist, split)
memo_dict[pathlist] = result
diff --git a/scons/scons-local-4.5.2/SCons/Platform/__init__.py b/scons/scons-local-4.7.0/SCons/Platform/__init__.py
similarity index 98%
rename from scons/scons-local-4.5.2/SCons/Platform/__init__.py
rename to scons/scons-local-4.7.0/SCons/Platform/__init__.py
index 3fa5a75e2..77eea5c09 100644
--- a/scons/scons-local-4.5.2/SCons/Platform/__init__.py
+++ b/scons/scons-local-4.7.0/SCons/Platform/__init__.py
@@ -130,14 +130,14 @@ def DefaultToolList(platform, env):
class PlatformSpec:
- def __init__(self, name, generate):
+ def __init__(self, name, generate) -> None:
self.name = name
self.generate = generate
def __call__(self, *args, **kw):
return self.generate(*args, **kw)
- def __str__(self):
+ def __str__(self) -> str:
return self.name
@@ -192,7 +192,7 @@ class TempFileMunge:
env["TEMPFILEARGESCFUNC"] = tempfile_arg_esc_func
"""
- def __init__(self, cmd, cmdstr = None):
+ def __init__(self, cmd, cmdstr = None) -> None:
self.cmd = cmd
self.cmdstr = cmdstr
@@ -323,7 +323,7 @@ class TempFileMunge:
return cmdlist
- def _print_cmd_str(self, target, source, env, cmdstr):
+ def _print_cmd_str(self, target, source, env, cmdstr) -> None:
# check if the user has specified a cmd line print function
print_func = None
try:
diff --git a/scons/scons-local-4.5.2/SCons/Platform/aix.py b/scons/scons-local-4.7.0/SCons/Platform/aix.py
similarity index 84%
rename from scons/scons-local-4.5.2/SCons/Platform/aix.py
rename to scons/scons-local-4.7.0/SCons/Platform/aix.py
index e5f34b45f..113622626 100644
--- a/scons/scons-local-4.5.2/SCons/Platform/aix.py
+++ b/scons/scons-local-4.7.0/SCons/Platform/aix.py
@@ -28,7 +28,7 @@ will usually be imported through the generic SCons.Platform.Platform()
selection method.
"""
-import subprocess
+from subprocess import PIPE
from . import posix
@@ -47,27 +47,26 @@ def get_xlc(env, xlc=None, packages=[]):
xlc = xlc[0]
for package in packages:
# find the installed filename, which may be a symlink as well
- pipe = SCons.Action._subproc(env, ['lslpp', '-fc', package],
- stdin = 'devnull',
- stderr = 'devnull',
- universal_newlines=True,
- stdout = subprocess.PIPE)
+ cp = SCons.Action.scons_subproc_run(
+ env, ['lslpp', '-fc', package], universal_newlines=True, stdout=PIPE
+ )
# output of lslpp is something like this:
# #Path:Fileset:File
# /usr/lib/objrepos:vac.C 6.0.0.0:/usr/vac/exe/xlCcpp
# /usr/lib/objrepos:vac.C 6.0.0.0:/usr/vac/bin/xlc_r -> /usr/vac/bin/xlc
- for line in pipe.stdout:
+ for line in cp.stdout.splitlines():
if xlcPath:
- continue # read everything to let lslpp terminate
+ continue # read everything to let lslpp terminate
fileset, filename = line.split(':')[1:3]
filename = filename.split()[0]
- if ('/' in xlc and filename == xlc) \
- or ('/' not in xlc and filename.endswith('/' + xlc)):
+ if ('/' in xlc and filename == xlc) or (
+ '/' not in xlc and filename.endswith('/' + xlc)
+ ):
xlcVersion = fileset.split()[1]
xlcPath, sep, xlc = filename.rpartition('/')
return (xlcPath, xlc, xlcVersion)
-def generate(env):
+def generate(env) -> None:
posix.generate(env)
#Based on AIX 5.2: ARG_MAX=24576 - 3000 for environment expansion
env['MAXLINELENGTH'] = 21576
diff --git a/scons/scons-local-4.5.2/SCons/Platform/cygwin.py b/scons/scons-local-4.7.0/SCons/Platform/cygwin.py
similarity index 90%
rename from scons/scons-local-4.5.2/SCons/Platform/cygwin.py
rename to scons/scons-local-4.7.0/SCons/Platform/cygwin.py
index 82e1d616b..2353763d7 100644
--- a/scons/scons-local-4.5.2/SCons/Platform/cygwin.py
+++ b/scons/scons-local-4.7.0/SCons/Platform/cygwin.py
@@ -40,15 +40,16 @@ if sys.platform == 'win32':
r'C:\cygwin\bin'
]
-def generate(env):
+def generate(env) -> None:
posix.generate(env)
env['PROGPREFIX'] = ''
env['PROGSUFFIX'] = '.exe'
env['SHLIBPREFIX'] = ''
env['SHLIBSUFFIX'] = '.dll'
- env['LIBPREFIXES'] = [ '$LIBPREFIX', '$SHLIBPREFIX', '$IMPLIBPREFIX' ]
- env['LIBSUFFIXES'] = [ '$LIBSUFFIX', '$SHLIBSUFFIX', '$IMPLIBSUFFIX' ]
+ env['LIBPREFIXES'] = ['$LIBPREFIX', '$SHLIBPREFIX', '$IMPLIBPREFIX']
+ env['LIBSUFFIXES'] = ['$LIBSUFFIX', '$SHLIBSUFFIX', '$IMPLIBSUFFIX']
+ env['LIBLITERAPPREFIX'] = ':'
env['TEMPFILE'] = TempFileMunge
env['TEMPFILEPREFIX'] = '@'
env['MAXLINELENGTH'] = 2048
diff --git a/scons/scons-local-4.5.2/SCons/Platform/darwin.py b/scons/scons-local-4.7.0/SCons/Platform/darwin.py
similarity index 97%
rename from scons/scons-local-4.5.2/SCons/Platform/darwin.py
rename to scons/scons-local-4.7.0/SCons/Platform/darwin.py
index dcaf5c80f..381b54249 100644
--- a/scons/scons-local-4.5.2/SCons/Platform/darwin.py
+++ b/scons/scons-local-4.7.0/SCons/Platform/darwin.py
@@ -32,7 +32,7 @@ from . import posix
import os
-def generate(env):
+def generate(env) -> None:
posix.generate(env)
env['SHLIBSUFFIX'] = '.dylib'
env['HOST_OS'] = 'darwin'
@@ -54,7 +54,7 @@ def generate(env):
for file in filelist:
if os.path.isfile(file):
- with open(file, 'r') as f:
+ with open(file) as f:
lines = f.readlines()
for line in lines:
if line:
diff --git a/scons/scons-local-4.5.2/SCons/Platform/hpux.py b/scons/scons-local-4.7.0/SCons/Platform/hpux.py
similarity index 98%
rename from scons/scons-local-4.5.2/SCons/Platform/hpux.py
rename to scons/scons-local-4.7.0/SCons/Platform/hpux.py
index 642f1feff..9d796db39 100644
--- a/scons/scons-local-4.5.2/SCons/Platform/hpux.py
+++ b/scons/scons-local-4.7.0/SCons/Platform/hpux.py
@@ -30,7 +30,7 @@ selection method.
from . import posix
-def generate(env):
+def generate(env) -> None:
posix.generate(env)
#Based on HP-UX11i: ARG_MAX=2048000 - 3000 for environment expansion
env['MAXLINELENGTH'] = 2045000
diff --git a/scons/scons-local-4.5.2/SCons/Platform/irix.py b/scons/scons-local-4.7.0/SCons/Platform/irix.py
similarity index 98%
rename from scons/scons-local-4.5.2/SCons/Platform/irix.py
rename to scons/scons-local-4.7.0/SCons/Platform/irix.py
index 4d6be540d..19f619b13 100644
--- a/scons/scons-local-4.5.2/SCons/Platform/irix.py
+++ b/scons/scons-local-4.7.0/SCons/Platform/irix.py
@@ -30,7 +30,7 @@ selection method.
from . import posix
-def generate(env):
+def generate(env) -> None:
posix.generate(env)
env['HOST_OS'] = 'irix'
diff --git a/scons/scons-local-4.5.2/SCons/Platform/mingw.py b/scons/scons-local-4.7.0/SCons/Platform/mingw.py
similarity index 94%
rename from scons/scons-local-4.5.2/SCons/Platform/mingw.py
rename to scons/scons-local-4.7.0/SCons/Platform/mingw.py
index 1d38a9bdb..55dd3b883 100644
--- a/scons/scons-local-4.5.2/SCons/Platform/mingw.py
+++ b/scons/scons-local-4.7.0/SCons/Platform/mingw.py
@@ -29,5 +29,7 @@ MINGW_DEFAULT_PATHS = []
if sys.platform == 'win32':
MINGW_DEFAULT_PATHS = [
r'C:\msys64',
- r'C:\msys'
+ r'C:\msys64\usr\bin',
+ r'C:\msys',
+ r'C:\msys\usr\bin'
]
diff --git a/scons/scons-local-4.5.2/SCons/Platform/os2.py b/scons/scons-local-4.7.0/SCons/Platform/os2.py
similarity index 92%
rename from scons/scons-local-4.5.2/SCons/Platform/os2.py
rename to scons/scons-local-4.7.0/SCons/Platform/os2.py
index 6b412eed2..72bb03402 100644
--- a/scons/scons-local-4.5.2/SCons/Platform/os2.py
+++ b/scons/scons-local-4.7.0/SCons/Platform/os2.py
@@ -30,7 +30,7 @@ selection method.
from . import win32
-def generate(env):
+def generate(env) -> None:
if 'ENV' not in env:
env['ENV'] = {}
env['OBJPREFIX'] = ''
@@ -43,8 +43,9 @@ def generate(env):
env['LIBSUFFIX'] = '.lib'
env['SHLIBPREFIX'] = ''
env['SHLIBSUFFIX'] = '.dll'
- env['LIBPREFIXES'] = '$LIBPREFIX'
- env['LIBSUFFIXES'] = [ '$LIBSUFFIX', '$SHLIBSUFFIX' ]
+ env['LIBPREFIXES'] = ['$LIBPREFIX']
+ env['LIBSUFFIXES'] = ['$LIBSUFFIX', '$SHLIBSUFFIX']
+ env['LIBLITERAPPREFIX'] = ''
env['HOST_OS'] = 'os2'
env['HOST_ARCH'] = win32.get_architecture().arch
diff --git a/scons/scons-local-4.5.2/SCons/Platform/posix.py b/scons/scons-local-4.7.0/SCons/Platform/posix.py
similarity index 96%
rename from scons/scons-local-4.5.2/SCons/Platform/posix.py
rename to scons/scons-local-4.7.0/SCons/Platform/posix.py
index 75b6c0bf2..b655b77d5 100644
--- a/scons/scons-local-4.5.2/SCons/Platform/posix.py
+++ b/scons/scons-local-4.7.0/SCons/Platform/posix.py
@@ -74,7 +74,7 @@ def piped_env_spawn(sh, escape, cmd, args, env, stdout, stderr):
env, stdout, stderr)
-def generate(env):
+def generate(env) -> None:
# Bearing in mind we have python 2.4 as a baseline, we can just do this:
spawn = subprocess_spawn
pspawn = piped_env_spawn
@@ -93,8 +93,9 @@ def generate(env):
env['LIBSUFFIX'] = '.a'
env['SHLIBPREFIX'] = '$LIBPREFIX'
env['SHLIBSUFFIX'] = '.so'
- env['LIBPREFIXES'] = [ '$LIBPREFIX' ]
- env['LIBSUFFIXES'] = [ '$LIBSUFFIX', '$SHLIBSUFFIX' ]
+ env['LIBPREFIXES'] = ['$LIBPREFIX']
+ env['LIBSUFFIXES'] = ['$LIBSUFFIX', '$SHLIBSUFFIX']
+ env['LIBLITERALPREFIX'] = ''
env['HOST_OS'] = 'posix'
env['HOST_ARCH'] = platform.machine()
env['PSPAWN'] = pspawn
diff --git a/scons/scons-local-4.5.2/SCons/Platform/sunos.py b/scons/scons-local-4.7.0/SCons/Platform/sunos.py
similarity index 98%
rename from scons/scons-local-4.5.2/SCons/Platform/sunos.py
rename to scons/scons-local-4.7.0/SCons/Platform/sunos.py
index 86924335f..4aa1fffcb 100644
--- a/scons/scons-local-4.5.2/SCons/Platform/sunos.py
+++ b/scons/scons-local-4.7.0/SCons/Platform/sunos.py
@@ -30,7 +30,7 @@ selection method.
from . import posix
-def generate(env):
+def generate(env) -> None:
posix.generate(env)
# Based on sunSparc 8:32bit
# ARG_MAX=1048320 - 3000 for environment expansion
diff --git a/scons/scons-local-4.5.2/SCons/Platform/virtualenv.py b/scons/scons-local-4.7.0/SCons/Platform/virtualenv.py
similarity index 95%
rename from scons/scons-local-4.5.2/SCons/Platform/virtualenv.py
rename to scons/scons-local-4.7.0/SCons/Platform/virtualenv.py
index 2204a595b..df7ad574d 100644
--- a/scons/scons-local-4.5.2/SCons/Platform/virtualenv.py
+++ b/scons/scons-local-4.7.0/SCons/Platform/virtualenv.py
@@ -51,7 +51,7 @@ def _running_in_virtualenv():
(hasattr(sys, 'base_prefix') and sys.base_prefix != sys.prefix))
-def _is_path_in(path, base):
+def _is_path_in(path, base) -> bool:
"""Returns true if **path** is located under the **base** directory."""
if not path or not base: # empty path may happen, base too
return False
@@ -59,7 +59,7 @@ def _is_path_in(path, base):
return (not rp.startswith(os.path.pardir)) and (not rp == os.path.curdir)
-def _inject_venv_variables(env):
+def _inject_venv_variables(env) -> None:
if 'ENV' not in env:
env['ENV'] = {}
ENV = env['ENV']
@@ -69,7 +69,7 @@ def _inject_venv_variables(env):
except KeyError:
pass
-def _inject_venv_path(env, path_list=None):
+def _inject_venv_path(env, path_list=None) -> None:
"""Modify environment such that SCons will take into account its virtualenv
when running external tools."""
if path_list is None:
@@ -86,7 +86,7 @@ def select_paths_in_venv(path_list):
return [path for path in path_list if IsInVirtualenv(path)]
-def ImportVirtualenv(env):
+def ImportVirtualenv(env) -> None:
"""Copies virtualenv-related environment variables from OS environment
to ``env['ENV']`` and prepends virtualenv's PATH to ``env['ENV']['PATH']``.
"""
diff --git a/scons/scons-local-4.5.2/SCons/Platform/win32.py b/scons/scons-local-4.7.0/SCons/Platform/win32.py
similarity index 90%
rename from scons/scons-local-4.5.2/SCons/Platform/win32.py
rename to scons/scons-local-4.7.0/SCons/Platform/win32.py
index 990794f96..1779b0364 100644
--- a/scons/scons-local-4.5.2/SCons/Platform/win32.py
+++ b/scons/scons-local-4.7.0/SCons/Platform/win32.py
@@ -58,7 +58,7 @@ if False:
shutil.copy2 = CopyFile
- def win_api_copyfile(src,dst):
+ def win_api_copyfile(src,dst) -> None:
CopyFile(src,dst)
os.utime(dst)
@@ -81,9 +81,8 @@ try:
# This locked version of spawnve works around a Windows
# MSVCRT bug, because its spawnve is not thread-safe.
# Without this, python can randomly crash while using -jN.
- # See the python bug at http://bugs.python.org/issue6476
- # and SCons issue at
- # https://github.com/SCons/scons/issues/2449
+ # See the python bug at https://github.com/python/cpython/issues/50725
+ # and SCons issue at https://github.com/SCons/scons/issues/2449
def spawnve(mode, file, args, env):
spawn_lock.acquire()
try:
@@ -166,18 +165,20 @@ def piped_spawn(sh, escape, cmd, args, env, stdout, stderr):
# and do clean up stuff
if stdout is not None and not stdoutRedirected:
try:
- with open(tmpFileStdoutName, "r") as tmpFileStdout:
- stdout.write(tmpFileStdout.read())
+ with open(tmpFileStdoutName, "rb") as tmpFileStdout:
+ output = tmpFileStdout.read()
+ stdout.write(output.decode(stdout.encoding, "replace"))
os.remove(tmpFileStdoutName)
- except (IOError, OSError):
+ except OSError:
pass
if stderr is not None and not stderrRedirected:
try:
- with open(tmpFileStderrName, "r") as tmpFileStderr:
- stderr.write(tmpFileStderr.read())
+ with open(tmpFileStderrName, "rb") as tmpFileStderr:
+ errors = tmpFileStderr.read()
+ stderr.write(errors.decode(stderr.encoding, "replace"))
os.remove(tmpFileStderrName)
- except (IOError, OSError):
+ except OSError:
pass
return ret
@@ -186,7 +187,7 @@ def piped_spawn(sh, escape, cmd, args, env, stdout, stderr):
def exec_spawn(l, env):
try:
result = spawnve(os.P_WAIT, l[0], l, env)
- except (OSError, EnvironmentError) as e:
+ except OSError as e:
try:
result = exitvalmap[e.errno]
sys.stderr.write("scons: %s: %s\n" % (l[0], e.strerror))
@@ -283,7 +284,7 @@ class ArchDefinition:
Determine which windows CPU were running on.
A class for defining architecture-specific settings and logic.
"""
- def __init__(self, arch, synonyms=[]):
+ def __init__(self, arch, synonyms=[]) -> None:
self.arch = arch
self.synonyms = synonyms
@@ -298,6 +299,11 @@ SupportedArchitectureList = [
['AMD64', 'amd64', 'em64t', 'EM64T', 'x86_64'],
),
+ ArchDefinition(
+ 'arm64',
+ ['ARM64', 'aarch64', 'AARCH64', 'AArch64'],
+ ),
+
ArchDefinition(
'ia64',
['IA64'],
@@ -315,9 +321,20 @@ def get_architecture(arch=None):
"""Returns the definition for the specified architecture string.
If no string is specified, the system default is returned (as defined
- by the PROCESSOR_ARCHITEW6432 or PROCESSOR_ARCHITECTURE environment
- variables).
+ by the registry PROCESSOR_ARCHITECTURE value, PROCESSOR_ARCHITEW6432
+ environment variable, PROCESSOR_ARCHITECTURE environment variable, or
+ the platform machine).
"""
+ if arch is None:
+ if SCons.Util.can_read_reg:
+ try:
+ k=SCons.Util.RegOpenKeyEx(SCons.Util.hkey_mod.HKEY_LOCAL_MACHINE,
+ 'SYSTEM\\CurrentControlSet\\Control\\Session Manager\\Environment')
+ val, tok = SCons.Util.RegQueryValueEx(k, 'PROCESSOR_ARCHITECTURE')
+ except SCons.Util.RegError:
+ val = ''
+ if val and val in SupportedArchitectureMap:
+ arch = val
if arch is None:
arch = os.environ.get('PROCESSOR_ARCHITEW6432')
if not arch:
@@ -405,8 +422,9 @@ def generate(env):
env['LIBSUFFIX'] = '.lib'
env['SHLIBPREFIX'] = ''
env['SHLIBSUFFIX'] = '.dll'
- env['LIBPREFIXES'] = [ '$LIBPREFIX' ]
- env['LIBSUFFIXES'] = [ '$LIBSUFFIX' ]
+ env['LIBPREFIXES'] = ['$LIBPREFIX']
+ env['LIBSUFFIXES'] = ['$LIBSUFFIX']
+ env['LIBLITERALPREFIX'] = ''
env['PSPAWN'] = piped_spawn
env['SPAWN'] = spawn
env['SHELL'] = cmd_interp
diff --git a/scons/scons-local-4.5.2/SCons/SConf.py b/scons/scons-local-4.7.0/SCons/SConf.py
similarity index 91%
rename from scons/scons-local-4.5.2/SCons/SConf.py
rename to scons/scons-local-4.7.0/SCons/SConf.py
index 136be279b..d2e09be34 100644
--- a/scons/scons-local-4.5.2/SCons/SConf.py
+++ b/scons/scons-local-4.7.0/SCons/SConf.py
@@ -39,6 +39,7 @@ import os
import re
import sys
import traceback
+from typing import Tuple
import SCons.Action
import SCons.Builder
@@ -61,7 +62,7 @@ SCons.Conftest.LogErrorMessages = 0
build_type = None
build_types = ['clean', 'help']
-def SetBuildType(buildtype):
+def SetBuildType(buildtype) -> None:
global build_type
build_type = buildtype
@@ -73,7 +74,7 @@ FORCE=1 # force all tests to be rebuilt
CACHE=2 # force all tests to be taken from cache (raise an error, if necessary)
cache_mode = AUTO
-def _set_conftest_node(node):
+def _set_conftest_node(node) -> None:
node.attributes.conftest_node = 1
def SetCacheMode(mode):
@@ -90,7 +91,7 @@ def SetCacheMode(mode):
raise ValueError("SCons.SConf.SetCacheMode: Unknown mode " + mode)
progress_display = SCons.Util.display # will be overwritten by SCons.Script
-def SetProgressDisplay(display):
+def SetProgressDisplay(display) -> None:
"""Set the progress display to use (called from SCons.Script)"""
global progress_display
progress_display = display
@@ -102,7 +103,7 @@ _ac_config_logs = {} # all config.log files created in this build
_ac_config_hs = {} # all config.h files created in this build
sconf_global = None # current sconf object
-def _createConfigH(target, source, env):
+def _createConfigH(target, source, env) -> None:
t = open(str(target[0]), "w")
defname = re.sub('[^A-Za-z0-9_]', '_', str(target[0]).upper())
t.write("""#ifndef %(DEFNAME)s_SEEN
@@ -119,13 +120,13 @@ def _stringConfigH(target, source, env):
return "scons: Configure: creating " + str(target[0])
-def NeedConfigHBuilder():
+def NeedConfigHBuilder() -> bool:
if len(_ac_config_hs) == 0:
return False
else:
return True
-def CreateConfigHBuilder(env):
+def CreateConfigHBuilder(env) -> None:
"""Called if necessary just before the building targets phase begins."""
action = SCons.Action.Action(_createConfigH,
_stringConfigH)
@@ -141,13 +142,13 @@ SCons.Warnings.enableWarningClass(SConfWarning)
# some error definitions
class SConfError(SCons.Errors.UserError):
- def __init__(self,msg):
+ def __init__(self,msg) -> None:
super().__init__(msg)
class ConfigureDryRunError(SConfError):
"""Raised when a file or directory needs to be updated during a Configure
process, but the user requested a dry-run"""
- def __init__(self,target):
+ def __init__(self,target) -> None:
if not isinstance(target, SCons.Node.FS.File):
msg = 'Cannot create configure directory "%s" within a dry-run.' % str(target)
else:
@@ -157,12 +158,12 @@ class ConfigureDryRunError(SConfError):
class ConfigureCacheError(SConfError):
"""Raised when a use explicitely requested the cache feature, but the test
is run the first time."""
- def __init__(self,target):
+ def __init__(self,target) -> None:
super().__init__('"%s" is not yet built and cache is forced.' % str(target))
# define actions for building text files
-def _createSource(target, source, env):
+def _createSource(target, source, env) -> None:
fd = open(str(target[0]), "w")
fd.write(source[0].get_contents().decode())
fd.close()
@@ -180,11 +181,11 @@ class SConfBuildInfo(SCons.Node.FS.FileBuildInfo):
"""
__slots__ = ('result', 'string')
- def __init__(self):
+ def __init__(self) -> None:
self.result = None # -> 0/None -> no error, != 0 error
self.string = None # the stdout / stderr output when building the target
- def set_build_result(self, result, string):
+ def set_build_result(self, result, string) -> None:
self.result = result
self.string = string
@@ -193,11 +194,11 @@ class Streamer:
"""
'Sniffer' for a file-like writable object. Similar to the unix tool tee.
"""
- def __init__(self, orig):
+ def __init__(self, orig) -> None:
self.orig = orig
self.s = io.StringIO()
- def write(self, str):
+ def write(self, str) -> None:
if self.orig:
self.orig.write(str)
try:
@@ -206,7 +207,7 @@ class Streamer:
# "unicode argument expected" bug in IOStream (python 2.x)
self.s.write(str.decode())
- def writelines(self, lines):
+ def writelines(self, lines) -> None:
for l in lines:
self.write(l + '\n')
@@ -216,7 +217,7 @@ class Streamer:
"""
return self.s.getvalue()
- def flush(self):
+ def flush(self) -> None:
if self.orig:
self.orig.flush()
self.s.flush()
@@ -229,11 +230,11 @@ class SConfBuildTask(SCons.Taskmaster.AlwaysTask):
"""
non_sconf_nodes = set()
- def display(self, message):
+ def display(self, message) -> None:
if sconf_global.logstream:
sconf_global.logstream.write("scons: Configure: " + message + "\n")
- def display_cached_string(self, bi):
+ def display_cached_string(self, bi) -> None:
"""
Logs the original builder messages, given the SConfBuildInfo instance
bi.
@@ -250,10 +251,9 @@ class SConfBuildTask(SCons.Taskmaster.AlwaysTask):
def failed(self):
# check, if the reason was a ConfigureDryRunError or a
# ConfigureCacheError and if yes, reraise the exception
- exc_type = self.exc_info()[0]
+ exc_type, exc, _ = self.exc_info()
if issubclass(exc_type, SConfError):
- # TODO pylint E0704: bare raise not inside except
- raise
+ raise exc
elif issubclass(exc_type, SCons.Errors.BuildError):
# we ignore Build Errors (occurs, when a test doesn't pass)
# Clear the exception to prevent the contained traceback
@@ -265,12 +265,12 @@ class SConfBuildTask(SCons.Taskmaster.AlwaysTask):
sys.excepthook(*self.exc_info())
return SCons.Taskmaster.Task.failed(self)
- def collect_node_states(self):
+ def collect_node_states(self) -> Tuple[bool, bool, bool]:
# returns (is_up_to_date, cached_error, cachable)
- # where is_up_to_date is 1, if the node(s) are up_to_date
- # cached_error is 1, if the node(s) are up_to_date, but the
- # build will fail
- # cachable is 0, if some nodes are not in our cache
+ # where is_up_to_date is True if the node(s) are up_to_date
+ # cached_error is True if the node(s) are up_to_date, but the
+ # build will fail
+ # cachable is False if some nodes are not in our cache
T = 0
changed = False
cached_error = False
@@ -311,7 +311,7 @@ class SConfBuildTask(SCons.Taskmaster.AlwaysTask):
if cache_mode == CACHE and not cachable:
raise ConfigureCacheError(self.targets[0])
elif cache_mode == FORCE:
- is_up_to_date = 0
+ is_up_to_date = False
if cached_error and is_up_to_date:
self.display("Building \"%s\" failed in a previous run and all "
@@ -378,7 +378,7 @@ class SConfBuildTask(SCons.Taskmaster.AlwaysTask):
sconsign.set_entry(t.name, sconsign_entry)
sconsign.merge()
- def make_ready_current(self):
+ def make_ready_current(self) -> None:
# We're overriding make_ready_current() call to add to the list
# of nodes used by this task, filtering out any nodes created
# by the checker for it's own purpose.
@@ -386,7 +386,7 @@ class SConfBuildTask(SCons.Taskmaster.AlwaysTask):
super().make_ready_current()
make_ready = make_ready_current
- def postprocess(self):
+ def postprocess(self) -> None:
# We're done executing this task, so now we'll go through all the
# nodes used by this task which aren't nodes created for
# Configure checkers, but rather are existing or built files
@@ -410,8 +410,8 @@ class SConfBase:
SConf run, we need to explicitly cache this error.
"""
- def __init__(self, env, custom_tests = {}, conf_dir='$CONFIGUREDIR',
- log_file='$CONFIGURELOG', config_h = None, _depth = 0):
+ def __init__(self, env, custom_tests = {}, conf_dir: str='$CONFIGUREDIR',
+ log_file: str='$CONFIGURELOG', config_h = None, _depth: int = 0) -> None:
"""Constructor. Pass additional tests in the custom_tests-dictionary,
e.g. custom_tests={'CheckPrivate':MyPrivateTest}, where MyPrivateTest
defines a custom test.
@@ -432,7 +432,7 @@ class SConfBase:
# and keep the build state consistent.
def force_build(dependency, target, prev_ni,
repo_node=None,
- env_decider=env.decide_source):
+ env_decider=env.decide_source) -> bool:
try:
env_decider(dependency, target, prev_ni, repo_node)
except Exception as e:
@@ -496,7 +496,7 @@ class SConfBase:
return self.env
- def Define(self, name, value = None, comment = None):
+ def Define(self, name, value = None, comment = None) -> None:
"""
Define a pre processor symbol name, with the optional given value in the
current config header.
@@ -602,7 +602,7 @@ class SConfBase:
"""
return self.pspawn(sh, escape, cmd, args, env, self.logstream, self.logstream)
- def TryBuild(self, builder, text=None, extension=""):
+ def TryBuild(self, builder, text=None, extension: str=""):
"""Low level TryBuild implementation. Normally you don't need to
call that - you can use TryCompile / TryLink / TryRun instead
"""
@@ -673,7 +673,7 @@ class SConfBase:
return result
- def TryAction(self, action, text = None, extension = ""):
+ def TryAction(self, action, text = None, extension: str = ""):
"""Tries to execute the given action with optional source file
contents and optional source file extension ,
Returns the status (0 : failed, 1 : ok) and the contents of the
@@ -714,6 +714,12 @@ class SConfBase:
if ok:
prog = self.lastTarget
pname = prog.get_internal_path()
+ if sys.platform == "win32" and os.sep == "/":
+ # msys might have a Python where os.sep='/' on Windows.
+ # That builds a path in the env.Command below which breaks
+ # if the SHELL used is cmd because 'pname' will always have
+ # an os.sep in it.
+ pname = pname.replace(os.sep, os.altsep)
output = self.confdir.File(os.path.basename(pname)+'.out')
node = self.env.Command(output, prog, [ [ pname, ">", "${TARGET}"] ])
ok = self.BuildNodes(node)
@@ -724,7 +730,7 @@ class SConfBase:
class TestWrapper:
"""A wrapper around Tests (to ensure sanity)"""
- def __init__(self, test, sconf):
+ def __init__(self, test, sconf) -> None:
self.test = test
self.sconf = sconf
def __call__(self, *args, **kw):
@@ -737,12 +743,12 @@ class SConfBase:
context.Result("error: no result")
return ret
- def AddTest(self, test_name, test_instance):
+ def AddTest(self, test_name, test_instance) -> None:
"""Adds test_class to this SConf instance. It can be called with
self.test_name(...)"""
setattr(self, test_name, SConfBase.TestWrapper(test_instance, self))
- def AddTests(self, tests):
+ def AddTests(self, tests) -> None:
"""Adds all the tests given in the tests dictionary to this SConf
instance
"""
@@ -758,7 +764,7 @@ class SConfBase:
if not os.path.isdir( dirName ):
os.makedirs( dirName )
- def _startup(self):
+ def _startup(self) -> None:
"""Private method. Set up logstream, and set the environment
variables necessary for a piped build
"""
@@ -781,7 +787,7 @@ class SConfBase:
log_mode = "w"
fp = open(str(self.logfile), log_mode)
- def conflog_cleanup(logf):
+ def conflog_cleanup(logf) -> None:
logf.close()
atexit.register(conflog_cleanup, fp)
@@ -855,7 +861,7 @@ class CheckContext:
changed.
"""
- def __init__(self, sconf):
+ def __init__(self, sconf) -> None:
"""Constructor. Pass the corresponding SConf instance."""
self.sconf = sconf
self.did_show_result = 0
@@ -873,7 +879,7 @@ class CheckContext:
# correctly. Note that we can't use Conftest.py's support for config.h,
# cause we will need to specify a builder for the config.h file ...
- def Message(self, text):
+ def Message(self, text) -> None:
"""Inform about what we are doing right now, e.g.
'Checking for SOMETHING ... '
"""
@@ -881,7 +887,7 @@ class CheckContext:
self.sconf.cached = 1
self.did_show_result = 0
- def Result(self, res):
+ def Result(self, res) -> None:
"""Inform about the result of the test. If res is not a string, displays
'yes' or 'no' depending on whether res is evaluated as true or false.
The result is only displayed when self.did_show_result is not set.
@@ -923,17 +929,17 @@ class CheckContext:
#### Stuff used by Conftest.py (look there for explanations).
- def BuildProg(self, text, ext):
+ def BuildProg(self, text, ext) -> bool:
self.sconf.cached = 1
# TODO: should use self.vardict for $CC, $CPPFLAGS, etc.
return not self.TryBuild(self.env.Program, text, ext)
- def CompileProg(self, text, ext):
+ def CompileProg(self, text, ext) -> bool:
self.sconf.cached = 1
# TODO: should use self.vardict for $CC, $CPPFLAGS, etc.
return not self.TryBuild(self.env.Object, text, ext)
- def CompileSharedObject(self, text, ext):
+ def CompileSharedObject(self, text, ext) -> bool:
self.sconf.cached = 1
# TODO: should use self.vardict for $SHCC, $CPPFLAGS, etc.
return not self.TryBuild(self.env.SharedObject, text, ext)
@@ -944,7 +950,7 @@ class CheckContext:
st, out = self.TryRun(text, ext)
return not st, out
- def AppendLIBS(self, lib_name_list, unique=False):
+ def AppendLIBS(self, lib_name_list, unique: bool=False):
oldLIBS = self.env.get( 'LIBS', [] )
if unique:
self.env.AppendUnique(LIBS = lib_name_list)
@@ -952,7 +958,7 @@ class CheckContext:
self.env.Append(LIBS = lib_name_list)
return oldLIBS
- def PrependLIBS(self, lib_name_list, unique=False):
+ def PrependLIBS(self, lib_name_list, unique: bool=False):
oldLIBS = self.env.get( 'LIBS', [] )
if unique:
self.env.PrependUnique(LIBS = lib_name_list)
@@ -965,7 +971,7 @@ class CheckContext:
self.env.Replace(LIBS = val)
return oldLIBS
- def Display(self, msg):
+ def Display(self, msg) -> None:
if self.sconf.cached:
# We assume that Display is called twice for each test here
# once for the Checking for ... message and once for the result.
@@ -975,7 +981,7 @@ class CheckContext:
progress_display(msg, append_newline=0)
self.Log("scons: Configure: " + msg + "\n")
- def Log(self, msg):
+ def Log(self, msg) -> None:
if self.sconf.logstream is not None:
self.sconf.logstream.write(msg)
@@ -995,39 +1001,39 @@ def SConf(*args, **kw):
return SCons.Util.Null()
-def CheckFunc(context, function_name, header = None, language = None):
- res = SCons.Conftest.CheckFunc(context, function_name, header = header, language = language)
+def CheckFunc(context, function_name, header = None, language = None, funcargs = None) -> bool:
+ res = SCons.Conftest.CheckFunc(context, function_name, header = header, language = language, funcargs = funcargs)
context.did_show_result = 1
return not res
-def CheckType(context, type_name, includes = "", language = None):
+def CheckType(context, type_name, includes: str = "", language = None) -> bool:
res = SCons.Conftest.CheckType(context, type_name,
header = includes, language = language)
context.did_show_result = 1
return not res
-def CheckTypeSize(context, type_name, includes = "", language = None, expect = None):
+def CheckTypeSize(context, type_name, includes: str = "", language = None, expect = None):
res = SCons.Conftest.CheckTypeSize(context, type_name,
header = includes, language = language,
expect = expect)
context.did_show_result = 1
return res
-def CheckDeclaration(context, declaration, includes = "", language = None):
+def CheckDeclaration(context, declaration, includes: str = "", language = None) -> bool:
res = SCons.Conftest.CheckDeclaration(context, declaration,
includes = includes,
language = language)
context.did_show_result = 1
return not res
-def CheckMember(context, aggregate_member, header = None, language = None):
+def CheckMember(context, aggregate_member, header = None, language = None) -> bool:
'''Returns the status (False : failed, True : ok).'''
res = SCons.Conftest.CheckMember(context, aggregate_member, header=header, language=language)
context.did_show_result = 1
return not res
-def createIncludesFromHeaders(headers, leaveLast, include_quotes = '""'):
+def createIncludesFromHeaders(headers, leaveLast, include_quotes: str = '""'):
# used by CheckHeader and CheckLibWithHeader to produce C - #include
# statements from the specified header (list)
if not SCons.Util.is_List(headers):
@@ -1043,7 +1049,7 @@ def createIncludesFromHeaders(headers, leaveLast, include_quotes = '""'):
% (include_quotes[0], s, include_quotes[1]))
return ''.join(l), lastHeader
-def CheckHeader(context, header, include_quotes = '<>', language = None):
+def CheckHeader(context, header, include_quotes: str = '<>', language = None) -> bool:
"""
A test for a C or C++ header file.
"""
@@ -1055,29 +1061,29 @@ def CheckHeader(context, header, include_quotes = '<>', language = None):
context.did_show_result = 1
return not res
-def CheckCC(context):
+def CheckCC(context) -> bool:
res = SCons.Conftest.CheckCC(context)
context.did_show_result = 1
return not res
-def CheckCXX(context):
+def CheckCXX(context) -> bool:
res = SCons.Conftest.CheckCXX(context)
context.did_show_result = 1
return not res
-def CheckSHCC(context):
+def CheckSHCC(context) -> bool:
res = SCons.Conftest.CheckSHCC(context)
context.did_show_result = 1
return not res
-def CheckSHCXX(context):
+def CheckSHCXX(context) -> bool:
res = SCons.Conftest.CheckSHCXX(context)
context.did_show_result = 1
return not res
# Bram: Make this function obsolete? CheckHeader() is more generic.
-def CheckCHeader(context, header, include_quotes = '""'):
+def CheckCHeader(context, header, include_quotes: str = '""'):
"""
A test for a C header file.
"""
@@ -1086,16 +1092,16 @@ def CheckCHeader(context, header, include_quotes = '""'):
# Bram: Make this function obsolete? CheckHeader() is more generic.
-def CheckCXXHeader(context, header, include_quotes = '""'):
+def CheckCXXHeader(context, header, include_quotes: str = '""'):
"""
A test for a C++ header file.
"""
return CheckHeader(context, header, include_quotes, language = "C++")
-def CheckLib(context, library = None, symbol = "main",
- header = None, language = None, autoadd=True,
- append=True, unique=False) -> bool:
+def CheckLib(context, library = None, symbol: str = "main",
+ header = None, language = None, autoadd: bool=True,
+ append: bool=True, unique: bool=False) -> bool:
"""
A test for a library. See also CheckLibWithHeader.
Note that library may also be None to test whether the given symbol
@@ -1119,7 +1125,7 @@ def CheckLib(context, library = None, symbol = "main",
# Bram: Can only include one header and can't use #ifdef HAVE_HEADER_H.
def CheckLibWithHeader(context, libs, header, language,
- call = None, autoadd=True, append=True, unique=False) -> bool:
+ call = None, autoadd: bool=True, append: bool=True, unique: bool=False) -> bool:
# ToDo: accept path for library. Support system header files.
"""
Another (more sophisticated) test for a library.
diff --git a/scons/scons-local-4.5.2/SCons/SConsign.py b/scons/scons-local-4.7.0/SCons/SConsign.py
similarity index 91%
rename from scons/scons-local-4.5.2/SCons/SConsign.py
rename to scons/scons-local-4.7.0/SCons/SConsign.py
index ecca39127..1215c6a50 100644
--- a/scons/scons-local-4.5.2/SCons/SConsign.py
+++ b/scons/scons-local-4.7.0/SCons/SConsign.py
@@ -23,7 +23,7 @@
"""Operations on signature database files (.sconsign). """
-import SCons.compat
+import SCons.compat # pylint: disable=wrong-import-order
import os
import pickle
@@ -35,7 +35,7 @@ from SCons.compat import PICKLE_PROTOCOL
from SCons.Util import print_time
-def corrupt_dblite_warning(filename):
+def corrupt_dblite_warning(filename) -> None:
SCons.Warnings.warn(
SCons.Warnings.CorruptSConsignWarning,
"Ignoring corrupt .sconsign file: %s" % filename,
@@ -69,11 +69,10 @@ def current_sconsign_filename():
# eg .sconsign_sha1, etc.
if hash_format is None and current_hash_algorithm == 'md5':
return ".sconsign"
- else:
- return ".sconsign_" + current_hash_algorithm
+ return ".sconsign_" + current_hash_algorithm
def Get_DataBase(dir):
- global DataBase, DB_Module, DB_Name
+ global DB_Name
if DB_Name is None:
DB_Name = current_sconsign_filename()
@@ -88,7 +87,7 @@ def Get_DataBase(dir):
except KeyError:
path = d.entry_abspath(DB_Name)
try: db = DataBase[d] = DB_Module.open(path, mode)
- except (IOError, OSError):
+ except OSError:
pass
else:
if mode != "r":
@@ -106,19 +105,18 @@ def Get_DataBase(dir):
raise
-def Reset():
+def Reset() -> None:
"""Reset global state. Used by unit tests that end up using
SConsign multiple times to get a clean slate for each test."""
global sig_files, DB_sync_list
sig_files = []
DB_sync_list = []
+
normcase = os.path.normcase
-def write():
- global sig_files
-
+def write() -> None:
if print_time():
start_time = time.perf_counter()
@@ -154,16 +152,16 @@ class SConsignEntry:
__slots__ = ("binfo", "ninfo", "__weakref__")
current_version_id = 2
- def __init__(self):
+ def __init__(self) -> None:
# Create an object attribute from the class attribute so it ends up
# in the pickled data in the .sconsign file.
#_version_id = self.current_version_id
pass
- def convert_to_sconsign(self):
+ def convert_to_sconsign(self) -> None:
self.binfo.convert_to_sconsign()
- def convert_from_sconsign(self, dir, name):
+ def convert_from_sconsign(self, dir, name) -> None:
self.binfo.convert_from_sconsign(dir, name)
def __getstate__(self):
@@ -180,7 +178,7 @@ class SConsignEntry:
pass
return state
- def __setstate__(self, state):
+ def __setstate__(self, state) -> None:
for key, value in state.items():
if key not in ('_version_id', '__weakref__'):
setattr(self, key, value)
@@ -195,7 +193,7 @@ class Base:
methods for fetching and storing the individual bits of information
that make up signature entry.
"""
- def __init__(self):
+ def __init__(self) -> None:
self.entries = {}
self.dirty = False
self.to_be_merged = {}
@@ -206,26 +204,26 @@ class Base:
"""
return self.entries[filename]
- def set_entry(self, filename, obj):
+ def set_entry(self, filename, obj) -> None:
"""
Set the entry.
"""
self.entries[filename] = obj
self.dirty = True
- def do_not_set_entry(self, filename, obj):
+ def do_not_set_entry(self, filename, obj) -> None:
pass
- def store_info(self, filename, node):
+ def store_info(self, filename, node) -> None:
entry = node.get_stored_info()
entry.binfo.merge(node.get_binfo())
self.to_be_merged[filename] = node
self.dirty = True
- def do_not_store_info(self, filename, node):
+ def do_not_store_info(self, filename, node) -> None:
pass
- def merge(self):
+ def merge(self) -> None:
for key, node in self.to_be_merged.items():
entry = node.get_stored_info()
try:
@@ -247,7 +245,7 @@ class DB(Base):
from a global .sconsign.db* file--the actual file suffix is
determined by the database module.
"""
- def __init__(self, dir):
+ def __init__(self, dir) -> None:
super().__init__()
self.dir = dir
@@ -284,10 +282,9 @@ class DB(Base):
self.set_entry = self.do_not_set_entry
self.store_info = self.do_not_store_info
- global sig_files
sig_files.append(self)
- def write(self, sync=1):
+ def write(self, sync: int=1) -> None:
if not self.dirty:
return
@@ -315,10 +312,8 @@ class DB(Base):
class Dir(Base):
- def __init__(self, fp=None, dir=None):
- """
- fp - file pointer to read entries from
- """
+ def __init__(self, fp=None, dir=None) -> None:
+ """fp - file pointer to read entries from."""
super().__init__()
if not fp:
@@ -335,20 +330,16 @@ class Dir(Base):
class DirFile(Dir):
- """
- Encapsulates reading and writing a per-directory .sconsign file.
- """
- def __init__(self, dir):
- """
- dir - the directory for the file
- """
+ """Encapsulates reading and writing a per-directory .sconsign file."""
+ def __init__(self, dir) -> None:
+ """dir - the directory for the file."""
self.dir = dir
self.sconsign = os.path.join(dir.get_internal_path(), current_sconsign_filename())
try:
fp = open(self.sconsign, 'rb')
- except IOError:
+ except OSError:
fp = None
try:
@@ -364,12 +355,10 @@ class DirFile(Dir):
except AttributeError:
pass
- global sig_files
sig_files.append(self)
- def write(self, sync=1):
- """
- Write the .sconsign file to disk.
+ def write(self, sync: int=1) -> None:
+ """Write the .sconsign file to disk.
Try to write to a temporary file first, and rename it if we
succeed. If we can't write to the temporary file, it's
@@ -389,11 +378,11 @@ class DirFile(Dir):
try:
file = open(temp, 'wb')
fname = temp
- except IOError:
+ except OSError:
try:
file = open(self.sconsign, 'wb')
fname = self.sconsign
- except IOError:
+ except OSError:
return
for key, entry in self.entries.items():
entry.convert_to_sconsign()
@@ -404,7 +393,7 @@ class DirFile(Dir):
mode = os.stat(self.sconsign)[0]
os.chmod(self.sconsign, 0o666)
os.unlink(self.sconsign)
- except (IOError, OSError):
+ except OSError:
# Try to carry on in the face of either OSError
# (things like permission issues) or IOError (disk
# or network issues). If there's a really dangerous
@@ -425,13 +414,13 @@ class DirFile(Dir):
os.chmod(self.sconsign, mode)
try:
os.unlink(temp)
- except (IOError, OSError):
+ except OSError:
pass
ForDirectory = DB
-def File(name, dbm_module=None):
+def File(name, dbm_module=None) -> None:
"""
Arrange for all signatures to be stored in a global .sconsign.db*
file.
diff --git a/scons/scons-local-4.5.2/SCons/Scanner/C.py b/scons/scons-local-4.7.0/SCons/Scanner/C.py
similarity index 75%
rename from scons/scons-local-4.5.2/SCons/Scanner/C.py
rename to scons/scons-local-4.7.0/SCons/Scanner/C.py
index a066104e5..aafe0d9a5 100644
--- a/scons/scons-local-4.5.2/SCons/Scanner/C.py
+++ b/scons/scons-local-4.7.0/SCons/Scanner/C.py
@@ -21,7 +21,12 @@
# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-"""Dependency scanner for C/C++ code."""
+"""Dependency scanner for C/C++ code.
+
+Two scanners are defined here: the default CScanner, and the optional
+CConditionalScanner, which must be explicitly selected by calling
+add_scanner() for each affected suffix.
+"""
import SCons.Node.FS
import SCons.cpp
@@ -36,11 +41,11 @@ class SConsCPPScanner(SCons.cpp.PreProcessor):
by Nodes, not strings; 2) we can keep track of the files that are
missing.
"""
- def __init__(self, *args, **kwargs):
+ def __init__(self, *args, **kwargs) -> None:
super().__init__(*args, **kwargs)
self.missing = []
- def initialize_result(self, fname):
+ def initialize_result(self, fname) -> None:
self.result = SCons.Util.UniqueList([fname])
def finalize_result(self, fname):
@@ -53,34 +58,68 @@ class SConsCPPScanner(SCons.cpp.PreProcessor):
self.missing.append((fname, self.current_file))
return result
- def read_file(self, file):
+ def read_file(self, file) -> str:
try:
- with open(str(file.rfile())) as fp:
- return fp.read()
- except EnvironmentError as e:
+ return file.rfile().get_text_contents()
+ except OSError as e:
self.missing.append((file, self.current_file))
return ''
def dictify_CPPDEFINES(env) -> dict:
- """Returns CPPDEFINES converted to a dict."""
+ """Returns CPPDEFINES converted to a dict.
+
+ This should be similar to :func:`~SCons.Defaults.processDefines`.
+ Unfortunately, we can't do the simple thing of calling that routine and
+ passing the result to the dict() constructor, because it turns the defines
+ into a list of "name=value" pairs, which the dict constructor won't
+ consume correctly. Also cannot just call dict on CPPDEFINES itself - it's
+ fine if it's stored in the converted form (currently deque of tuples), but
+ CPPDEFINES could be in other formats too.
+
+ So we have to do all the work here - keep concepts in sync with
+ ``processDefines``.
+ """
cppdefines = env.get('CPPDEFINES', {})
+ result = {}
if cppdefines is None:
- return {}
+ return result
+
+ if SCons.Util.is_Tuple(cppdefines):
+ try:
+ return {cppdefines[0]: cppdefines[1]}
+ except IndexError:
+ return {cppdefines[0]: None}
+
if SCons.Util.is_Sequence(cppdefines):
- result = {}
for c in cppdefines:
if SCons.Util.is_Sequence(c):
try:
result[c[0]] = c[1]
except IndexError:
- # it could be a one-item sequence
+ # could be a one-item sequence
result[c[0]] = None
+ elif SCons.Util.is_String(c):
+ try:
+ name, value = c.split('=')
+ result[name] = value
+ except ValueError:
+ result[c] = None
else:
+ # don't really know what to do here
result[c] = None
return result
- if not SCons.Util.is_Dict(cppdefines):
- return {cppdefines : None}
- return cppdefines
+
+ if SCons.Util.is_String(cppdefines):
+ try:
+ name, value = cppdefines.split('=')
+ return {name: value}
+ except ValueError:
+ return {cppdefines: None}
+
+ if SCons.Util.is_Dict(cppdefines):
+ return cppdefines
+
+ return {cppdefines: None}
class SConsCPPScannerWrapper:
"""The SCons wrapper around a cpp.py scanner.
@@ -91,7 +130,7 @@ class SConsCPPScannerWrapper:
evaluation of #if/#ifdef/#else/#elif lines.
"""
- def __init__(self, name, variable):
+ def __init__(self, name, variable) -> None:
self.name = name
self.path = FindPathDirs(variable)
@@ -145,12 +184,12 @@ class SConsCPPConditionalScanner(SCons.cpp.PreProcessor):
missing.
"""
- def __init__(self, *args, **kwargs):
+ def __init__(self, *args, **kwargs) -> None:
super().__init__(*args, **kwargs)
self.missing = []
self._known_paths = []
- def initialize_result(self, fname):
+ def initialize_result(self, fname) -> None:
self.result = SCons.Util.UniqueList([fname])
def find_include_file(self, t):
@@ -169,11 +208,10 @@ class SConsCPPConditionalScanner(SCons.cpp.PreProcessor):
self.missing.append((fname, self.current_file))
return result
- def read_file(self, file):
+ def read_file(self, file) -> str:
try:
- with open(str(file.rfile())) as fp:
- return fp.read()
- except EnvironmentError:
+ return file.rfile().get_text_contents()
+ except OSError:
self.missing.append((file, self.current_file))
return ""
@@ -188,7 +226,7 @@ class SConsCPPConditionalScannerWrapper:
evaluation of #if/#ifdef/#else/#elif lines.
"""
- def __init__(self, name, variable):
+ def __init__(self, name, variable) -> None:
self.name = name
self.path = FindPathDirs(variable)
diff --git a/scons/scons-local-4.5.2/SCons/Scanner/D.py b/scons/scons-local-4.7.0/SCons/Scanner/D.py
similarity index 84%
rename from scons/scons-local-4.5.2/SCons/Scanner/D.py
rename to scons/scons-local-4.7.0/SCons/Scanner/D.py
index c9b1e36d9..fbb28943b 100644
--- a/scons/scons-local-4.5.2/SCons/Scanner/D.py
+++ b/scons/scons-local-4.7.0/SCons/Scanner/D.py
@@ -35,7 +35,7 @@ def DScanner():
return ds
class D(Classic):
- def __init__(self):
+ def __init__(self) -> None:
super().__init__(
name="DScanner",
suffixes='$DSUFFIXES',
@@ -43,13 +43,16 @@ class D(Classic):
regex=r'(?:import\s+)([\w\s=,.]+)(?:\s*:[\s\w,=]+)?(?:;)',
)
- def find_include(self, include, source_dir, path):
+ @staticmethod
+ def find_include(include, source_dir, path):
# translate dots (package separators) to slashes
inc = include.replace('.', '/')
- i = SCons.Node.FS.find_file(inc + '.d', (source_dir,) + path)
+ # According to https://dlang.org/dmd-linux.html#interface-files
+ # Prefer .di files over .d files when processing includes(imports)
+ i = SCons.Node.FS.find_file(inc + '.di', (source_dir,) + path)
if i is None:
- i = SCons.Node.FS.find_file(inc + '.di', (source_dir,) + path)
+ i = SCons.Node.FS.find_file(inc + '.d', (source_dir,) + path)
return i, include
def find_include_names(self, node):
diff --git a/scons/scons-local-4.5.2/SCons/Scanner/Dir.py b/scons/scons-local-4.7.0/SCons/Scanner/Dir.py
similarity index 99%
rename from scons/scons-local-4.5.2/SCons/Scanner/Dir.py
rename to scons/scons-local-4.7.0/SCons/Scanner/Dir.py
index 239b1ec3e..6e0002a0f 100644
--- a/scons/scons-local-4.5.2/SCons/Scanner/Dir.py
+++ b/scons/scons-local-4.7.0/SCons/Scanner/Dir.py
@@ -100,7 +100,7 @@ def scan_on_disk(node, env, path=()):
"""
try:
flist = node.fs.listdir(node.get_abspath())
- except (IOError, OSError):
+ except OSError:
return []
e = node.Entry
for f in filter(do_not_scan, flist):
diff --git a/scons/scons-local-4.5.2/SCons/Scanner/Fortran.py b/scons/scons-local-4.7.0/SCons/Scanner/Fortran.py
similarity index 99%
rename from scons/scons-local-4.5.2/SCons/Scanner/Fortran.py
rename to scons/scons-local-4.7.0/SCons/Scanner/Fortran.py
index 9cf5b220d..14df5fc96 100644
--- a/scons/scons-local-4.5.2/SCons/Scanner/Fortran.py
+++ b/scons/scons-local-4.7.0/SCons/Scanner/Fortran.py
@@ -48,7 +48,7 @@ class F90Scanner(Classic):
"""
def __init__(self, name, suffixes, path_variable,
- use_regex, incl_regex, def_regex, *args, **kwargs):
+ use_regex, incl_regex, def_regex, *args, **kwargs) -> None:
self.cre_use = re.compile(use_regex, re.M)
self.cre_incl = re.compile(incl_regex, re.M)
@@ -119,7 +119,7 @@ class F90Scanner(Classic):
return [pair[1] for pair in sorted(nodes)]
-def FortranScan(path_variable="FORTRANPATH"):
+def FortranScan(path_variable: str="FORTRANPATH"):
"""Return a prototype Scanner instance for scanning source files
for Fortran USE & INCLUDE statements"""
diff --git a/scons/scons-local-4.5.2/SCons/Scanner/IDL.py b/scons/scons-local-4.7.0/SCons/Scanner/IDL.py
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Scanner/IDL.py
rename to scons/scons-local-4.7.0/SCons/Scanner/IDL.py
diff --git a/scons/scons-local-4.5.2/SCons/Scanner/Java.py b/scons/scons-local-4.7.0/SCons/Scanner/Java.py
similarity index 98%
rename from scons/scons-local-4.5.2/SCons/Scanner/Java.py
rename to scons/scons-local-4.7.0/SCons/Scanner/Java.py
index e6c2db978..4a66c9de9 100644
--- a/scons/scons-local-4.5.2/SCons/Scanner/Java.py
+++ b/scons/scons-local-4.7.0/SCons/Scanner/Java.py
@@ -52,7 +52,7 @@ def _subst_paths(env, paths) -> list:
return paths
-def _collect_classes(classlist, dirname, files):
+def _collect_classes(classlist, dirname, files) -> None:
for fname in files:
if fname.endswith(".class"):
classlist.append(os.path.join(str(dirname), fname))
diff --git a/scons/scons-local-4.5.2/SCons/Scanner/LaTeX.py b/scons/scons-local-4.7.0/SCons/Scanner/LaTeX.py
similarity index 98%
rename from scons/scons-local-4.5.2/SCons/Scanner/LaTeX.py
rename to scons/scons-local-4.7.0/SCons/Scanner/LaTeX.py
index 700b7cbe7..4412aee64 100644
--- a/scons/scons-local-4.5.2/SCons/Scanner/LaTeX.py
+++ b/scons/scons-local-4.7.0/SCons/Scanner/LaTeX.py
@@ -78,7 +78,7 @@ class FindENVPathDirs:
A class to bind a specific E{*}PATH variable name to a function that
will return all of the E{*}path directories.
"""
- def __init__(self, variable):
+ def __init__(self, variable) -> None:
self.variable = variable
def __call__(self, env, dir=None, target=None, source=None, argument=None):
@@ -175,7 +175,7 @@ class LaTeX(ScannerBase):
'includefrom', 'subincludefrom',
'inputfrom', 'subinputfrom']
- def __init__(self, name, suffixes, graphics_extensions, *args, **kwargs):
+ def __init__(self, name, suffixes, graphics_extensions, *args, **kwargs) -> None:
regex = r'''
\\(
include
@@ -219,7 +219,7 @@ class LaTeX(ScannerBase):
back and uses a dictionary of tuples rather than a single tuple
of paths.
"""
- def __init__(self, dictionary):
+ def __init__(self, dictionary) -> None:
self.dictionary = {}
for k,n in dictionary.items():
self.dictionary[k] = (FindPathDirs(n), FindENVPathDirs(n))
@@ -241,7 +241,7 @@ class LaTeX(ScannerBase):
Do not scan *.eps, *.pdf, *.jpg, etc.
"""
- def __init__(self, suffixes):
+ def __init__(self, suffixes) -> None:
self.suffixes = suffixes
def __call__(self, node, env):
@@ -289,7 +289,8 @@ class LaTeX(ScannerBase):
return [filename+e for e in self.graphics_extensions]
return [filename]
- def sort_key(self, include):
+ @staticmethod
+ def sort_key(include):
return SCons.Node.FS._my_normcase(str(include))
def find_include(self, include, source_dir, path):
@@ -331,7 +332,7 @@ class LaTeX(ScannerBase):
line_continues_a_comment = len(comment) > 0
return '\n'.join(out).rstrip()+'\n'
- def scan(self, node, subdir='.'):
+ def scan(self, node, subdir: str='.'):
# Modify the default scan function to allow for the regular
# expression to return a comma separated list of file names
# as can be the case with the bibliography keyword.
diff --git a/scons/scons-local-4.5.2/SCons/Scanner/Prog.py b/scons/scons-local-4.7.0/SCons/Scanner/Prog.py
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Scanner/Prog.py
rename to scons/scons-local-4.7.0/SCons/Scanner/Prog.py
diff --git a/scons/scons-local-4.5.2/SCons/Scanner/Python.py b/scons/scons-local-4.7.0/SCons/Scanner/Python.py
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Scanner/Python.py
rename to scons/scons-local-4.7.0/SCons/Scanner/Python.py
diff --git a/scons/scons-local-4.5.2/SCons/Scanner/RC.py b/scons/scons-local-4.7.0/SCons/Scanner/RC.py
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Scanner/RC.py
rename to scons/scons-local-4.7.0/SCons/Scanner/RC.py
diff --git a/scons/scons-local-4.5.2/SCons/Scanner/SWIG.py b/scons/scons-local-4.7.0/SCons/Scanner/SWIG.py
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Scanner/SWIG.py
rename to scons/scons-local-4.7.0/SCons/Scanner/SWIG.py
diff --git a/scons/scons-local-4.5.2/SCons/Scanner/__init__.py b/scons/scons-local-4.7.0/SCons/Scanner/__init__.py
similarity index 96%
rename from scons/scons-local-4.5.2/SCons/Scanner/__init__.py
rename to scons/scons-local-4.7.0/SCons/Scanner/__init__.py
index fe44ee0fc..61ba8a918 100644
--- a/scons/scons-local-4.5.2/SCons/Scanner/__init__.py
+++ b/scons/scons-local-4.7.0/SCons/Scanner/__init__.py
@@ -59,7 +59,7 @@ class FindPathDirs:
"""Class to bind a specific E{*}PATH variable name to a function that
will return all of the E{*}path directories.
"""
- def __init__(self, variable):
+ def __init__(self, variable) -> None:
self.variable = variable
def __call__(self, env, dir=None, target=None, source=None, argument=None):
@@ -149,7 +149,7 @@ class ScannerBase:
def __init__(
self,
function,
- name="NONE",
+ name: str="NONE",
argument=_null,
skeys=_null,
path_function=None,
@@ -159,7 +159,7 @@ class ScannerBase:
node_factory=None,
scan_check=None,
recursive=None,
- ):
+ ) -> None:
"""Construct a new scanner object given a scanner function."""
# Note: this class could easily work with scanner functions that take
# something other than a filename as an argument (e.g. a database
@@ -238,10 +238,10 @@ class ScannerBase:
def __hash__(self):
return id(self)
- def __str__(self):
+ def __str__(self) -> str:
return self.name
- def add_skey(self, skey):
+ def add_skey(self, skey) -> None:
"""Add a skey to the list of skeys"""
self.skeys.append(skey)
@@ -270,7 +270,7 @@ class ScannerBase:
# recurse_nodes = _recurse_no_nodes
- def add_scanner(self, skey, scanner):
+ def add_scanner(self, skey, scanner) -> None:
self.function[skey] = scanner
self.add_skey(skey)
@@ -292,7 +292,7 @@ class Selector(ScannerBase):
used by various Tool modules and therefore was likely a template
for custom modules that may be out there.)
"""
- def __init__(self, mapping, *args, **kwargs):
+ def __init__(self, mapping, *args, **kwargs) -> None:
super().__init__(None, *args, **kwargs)
self.mapping = mapping
self.skeys = list(mapping.keys())
@@ -306,7 +306,7 @@ class Selector(ScannerBase):
except KeyError:
return None
- def add_scanner(self, skey, scanner):
+ def add_scanner(self, skey, scanner) -> None:
self.mapping[skey] = scanner
self.add_skey(skey)
@@ -318,7 +318,7 @@ class Current(ScannerBase):
either locally or in a repository).
"""
- def __init__(self, *args, **kwargs):
+ def __init__(self, *args, **kwargs) -> None:
def current_check(node, env):
return not node.has_builder() or node.is_up_to_date()
@@ -337,7 +337,7 @@ class Classic(Current):
name of the include file in group 0.
"""
- def __init__(self, name, suffixes, path_variable, regex, *args, **kwargs):
+ def __init__(self, name, suffixes, path_variable, regex, *args, **kwargs) -> None:
self.cre = re.compile(regex, re.M)
def _scan(node, _, path=(), self=self):
@@ -415,7 +415,8 @@ class ClassicCPP(Classic):
to the constructor must return the leading bracket in group 0, and
the contained filename in group 1.
"""
- def find_include(self, include, source_dir, path):
+ @staticmethod
+ def find_include(include, source_dir, path):
include = list(map(SCons.Util.to_str, include))
if include[0] == '"':
paths = (source_dir,) + tuple(path)
@@ -426,7 +427,8 @@ class ClassicCPP(Classic):
i = SCons.Util.silent_intern(include[1])
return n, i
- def sort_key(self, include):
+ @staticmethod
+ def sort_key(include):
return SCons.Node.FS._my_normcase(' '.join(include))
# Local Variables:
diff --git a/scons/scons-local-4.5.2/SCons/Script/Interactive.py b/scons/scons-local-4.7.0/SCons/Script/Interactive.py
similarity index 95%
rename from scons/scons-local-4.5.2/SCons/Script/Interactive.py
rename to scons/scons-local-4.7.0/SCons/Script/Interactive.py
index d6947402e..ec58c0f79 100644
--- a/scons/scons-local-4.5.2/SCons/Script/Interactive.py
+++ b/scons/scons-local-4.7.0/SCons/Script/Interactive.py
@@ -112,7 +112,7 @@ version Prints SCons version information.
'sh' : 'shell',
}
- def __init__(self, **kw):
+ def __init__(self, **kw) -> None:
cmd.Cmd.__init__(self)
for key, val in kw.items():
setattr(self, key, val)
@@ -122,7 +122,7 @@ version Prints SCons version information.
else:
self.shell_variable = 'SHELL'
- def default(self, argv):
+ def default(self, argv) -> None:
print("*** Unknown command: %s" % argv[0])
def onecmd(self, line):
@@ -148,7 +148,7 @@ version Prints SCons version information.
return self.default(argv)
return func(argv)
- def do_build(self, argv):
+ def do_build(self, argv) -> None:
"""\
build [TARGETS] Build the specified TARGETS and their
dependencies. 'b' is a synonym.
@@ -213,11 +213,11 @@ version Prints SCons version information.
seen_nodes = {}
def get_unseen_children(node, parent, seen_nodes=seen_nodes):
- def is_unseen(node, seen_nodes=seen_nodes):
+ def is_unseen(node, seen_nodes=seen_nodes) -> bool:
return node not in seen_nodes
return [child for child in node.children(scan=1) if is_unseen(child)]
- def add_to_seen_nodes(node, parent, seen_nodes=seen_nodes):
+ def add_to_seen_nodes(node, parent, seen_nodes=seen_nodes) -> None:
seen_nodes[node] = 1
# If this file is in a VariantDir and has a
@@ -272,11 +272,11 @@ version Prints SCons version information.
"""
return self.do_build(['build', '--clean'] + argv[1:])
- def do_EOF(self, argv):
+ def do_EOF(self, argv) -> None:
print()
self.do_exit(argv)
- def _do_one_help(self, arg):
+ def _do_one_help(self, arg) -> None:
try:
# If help_() exists, then call it.
func = getattr(self, 'help_' + arg)
@@ -312,13 +312,13 @@ version Prints SCons version information.
lines = list(map(strip_spaces, lines))
return '\n'.join(lines)
- def do_exit(self, argv):
+ def do_exit(self, argv) -> None:
"""\
exit Exit SCons interactive mode.
"""
sys.exit(0)
- def do_help(self, argv):
+ def do_help(self, argv) -> None:
"""\
help [COMMAND] Prints help for the specified COMMAND. 'h'
and '?' are synonyms.
@@ -335,7 +335,7 @@ version Prints SCons version information.
sys.stdout.write(doc + '\n')
sys.stdout.flush()
- def do_shell(self, argv):
+ def do_shell(self, argv) -> None:
"""\
shell [COMMANDLINE] Execute COMMANDLINE in a subshell. 'sh' and
'!' are synonyms.
@@ -346,22 +346,22 @@ version Prints SCons version information.
argv = os.environ[self.shell_variable]
try:
# Per "[Python-Dev] subprocess insufficiently platform-independent?"
- # http://mail.python.org/pipermail/python-dev/2008-August/081979.html "+
+ # https://mail.python.org/pipermail/python-dev/2008-August/081979.html "+
# Doing the right thing with an argument list currently
# requires different shell= values on Windows and Linux.
p = subprocess.Popen(argv, shell=(sys.platform=='win32'))
- except EnvironmentError as e:
+ except OSError as e:
sys.stderr.write('scons: %s: %s\n' % (argv[0], e.strerror))
else:
p.wait()
- def do_version(self, argv):
+ def do_version(self, argv) -> None:
"""\
version Prints SCons version information.
"""
sys.stdout.write(self.parser.version + '\n')
-def interact(fs, parser, options, targets, target_top):
+def interact(fs, parser, options, targets, target_top) -> None:
c = SConsInteractiveCmd(prompt = 'scons>>> ',
fs = fs,
parser = parser,
diff --git a/scons/scons-local-4.5.2/SCons/Script/Main.py b/scons/scons-local-4.7.0/SCons/Script/Main.py
similarity index 85%
rename from scons/scons-local-4.5.2/SCons/Script/Main.py
rename to scons/scons-local-4.7.0/SCons/Script/Main.py
index d4228facb..af7e3ff1f 100644
--- a/scons/scons-local-4.5.2/SCons/Script/Main.py
+++ b/scons/scons-local-4.7.0/SCons/Script/Main.py
@@ -31,13 +31,8 @@ some other module. If it's specific to the "scons" script invocation,
it goes here.
"""
-# these define the range of versions SCons supports
-minimum_python_version = (3, 6, 0)
-deprecated_python_version = (3, 6, 0)
-
import SCons.compat
-import atexit
import importlib.util
import os
import re
@@ -46,6 +41,7 @@ import time
import traceback
import platform
import threading
+from typing import Optional, List
import SCons.CacheDir
import SCons.Debug
@@ -63,9 +59,34 @@ import SCons.Taskmaster
import SCons.Util
import SCons.Warnings
import SCons.Script.Interactive
+from SCons.Util.stats import count_stats, memory_stats, time_stats, ENABLE_JSON, write_scons_stats_file, JSON_OUTPUT_FILE
from SCons import __version__ as SConsVersion
+# these define the range of versions SCons supports
+minimum_python_version = (3, 6, 0)
+deprecated_python_version = (3, 6, 0)
+
+# ordered list of SConsctruct names to look for if there is no -f flag
+KNOWN_SCONSTRUCT_NAMES = [
+ 'SConstruct',
+ 'Sconstruct',
+ 'sconstruct',
+ 'SConstruct.py',
+ 'Sconstruct.py',
+ 'sconstruct.py',
+]
+
+# list of names recognized by debugger as "SConscript files" (inc. SConstruct)
+# files suffixed .py always work so don't need to be in this list.
+KNOWN_SCONSCRIPTS = [
+ "SConstruct",
+ "Sconstruct",
+ "sconstruct",
+ "SConscript",
+ "sconscript",
+]
+
# Global variables
first_command_start = None
last_command_end = None
@@ -82,7 +103,7 @@ num_jobs = None
delayed_warnings = []
-def revert_io():
+def revert_io() -> None:
# This call is added to revert stderr and stdout to the original
# ones just in case some build rule or something else in the system
# has redirected them elsewhere.
@@ -103,7 +124,7 @@ class Progressor:
count = 0
target_string = '$TARGET'
- def __init__(self, obj, interval=1, file=None, overwrite=False):
+ def __init__(self, obj, interval: int=1, file=None, overwrite: bool=False) -> None:
if file is None:
file = sys.stdout
@@ -121,12 +142,12 @@ class Progressor:
else:
self.func = self.string
- def write(self, s):
+ def write(self, s) -> None:
self.file.write(s)
self.file.flush()
self.prev = s
- def erase_previous(self):
+ def erase_previous(self) -> None:
if self.prev:
length = len(self.prev)
if self.prev[-1] in ('\n', '\r'):
@@ -134,16 +155,16 @@ class Progressor:
self.write(' ' * length + '\r')
self.prev = ''
- def spinner(self, node):
+ def spinner(self, node) -> None:
self.write(self.obj[self.count % len(self.obj)])
- def string(self, node):
+ def string(self, node) -> None:
self.write(self.obj)
- def replace_string(self, node):
+ def replace_string(self, node) -> None:
self.write(self.obj.replace(self.target_string, str(node)))
- def __call__(self, node):
+ def __call__(self, node) -> None:
self.count = self.count + 1
if (self.count % self.interval) == 0:
if self.overwrite:
@@ -152,7 +173,7 @@ class Progressor:
ProgressObject = SCons.Util.Null()
-def Progress(*args, **kw):
+def Progress(*args, **kw) -> None:
global ProgressObject
ProgressObject = Progressor(*args, **kw)
@@ -170,7 +191,7 @@ class BuildTask(SCons.Taskmaster.OutOfDateTask):
"""An SCons build task."""
progress = ProgressObject
- def display(self, message):
+ def display(self, message) -> None:
display('scons: ' + message)
def prepare(self):
@@ -179,14 +200,14 @@ class BuildTask(SCons.Taskmaster.OutOfDateTask):
self.progress(target)
return SCons.Taskmaster.OutOfDateTask.prepare(self)
- def needs_execute(self):
+ def needs_execute(self) -> bool:
if SCons.Taskmaster.OutOfDateTask.needs_execute(self):
return True
if self.top and self.targets[0].has_builder():
display("scons: `%s' is up to date." % str(self.node))
return False
- def execute(self):
+ def execute(self) -> None:
if print_time:
start_time = time.time()
global first_command_start
@@ -208,12 +229,13 @@ class BuildTask(SCons.Taskmaster.OutOfDateTask):
"Command execution end timestamp: %s: %f\n"
% (str(self.node), finish_time)
)
+ time_stats.add_command(str(self.node), start_time, 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):
+ def do_failed(self, status: int=2) -> None:
_BuildFailures.append(self.exception[1])
global exit_status
global this_build_status
@@ -253,7 +275,7 @@ class BuildTask(SCons.Taskmaster.OutOfDateTask):
else:
SCons.Taskmaster.OutOfDateTask.executed(self)
- def failed(self):
+ def failed(self) -> None:
# Handle the failure of a build task. The primary purpose here
# is to display the various types of Errors and Exceptions
# appropriately.
@@ -284,7 +306,7 @@ class BuildTask(SCons.Taskmaster.OutOfDateTask):
node = buildError.node
if not SCons.Util.is_List(node):
- node = [ node ]
+ node = [node]
nodename = ', '.join(map(str, node))
errfmt = "scons: *** [%s] %s\n"
@@ -309,7 +331,7 @@ class BuildTask(SCons.Taskmaster.OutOfDateTask):
self.exc_clear()
- def postprocess(self):
+ def postprocess(self) -> None:
if self.top:
t = self.targets[0]
for tp in self.options.tree_printers:
@@ -321,7 +343,7 @@ class BuildTask(SCons.Taskmaster.OutOfDateTask):
print(tree)
SCons.Taskmaster.OutOfDateTask.postprocess(self)
- def make_ready(self):
+ def make_ready(self) -> None:
"""Make a task ready for execution"""
SCons.Taskmaster.OutOfDateTask.make_ready(self)
if self.out_of_date and self.options.debug_explain:
@@ -332,7 +354,7 @@ class BuildTask(SCons.Taskmaster.OutOfDateTask):
class CleanTask(SCons.Taskmaster.AlwaysTask):
"""An SCons clean task."""
- def fs_delete(self, path, pathstr, remove=True):
+ def fs_delete(self, path, pathstr, remove: bool=True):
try:
if os.path.lexists(path):
if os.path.isfile(path) or os.path.islink(path):
@@ -356,7 +378,7 @@ class CleanTask(SCons.Taskmaster.AlwaysTask):
raise SCons.Errors.UserError(errstr % pathstr)
except SCons.Errors.UserError as e:
print(e)
- except (IOError, OSError) as e:
+ except OSError as e:
print("scons: Could not remove '%s':" % pathstr, e.strerror)
def _get_files_to_clean(self):
@@ -366,20 +388,20 @@ class CleanTask(SCons.Taskmaster.AlwaysTask):
result = [t for t in self.targets if not t.noclean]
return result
- def _clean_targets(self, remove=True):
+ def _clean_targets(self, remove: bool=True) -> None:
target = self.targets[0]
if target in SCons.Environment.CleanTargets:
files = SCons.Environment.CleanTargets[target]
for f in files:
self.fs_delete(f.get_abspath(), str(f), remove)
- def show(self):
+ def show(self) -> None:
for t in self._get_files_to_clean():
if not t.isdir():
display("Removed " + str(t))
self._clean_targets(remove=False)
- def remove(self):
+ def remove(self) -> None:
for t in self._get_files_to_clean():
try:
removed = t.remove()
@@ -389,7 +411,7 @@ class CleanTask(SCons.Taskmaster.AlwaysTask):
# the file not existing. In either case, print a
# message and keep going to try to remove as many
# targets as possible.
- print("scons: Could not remove '{0}'".format(str(t)), e.strerror)
+ print(f"scons: Could not remove '{str(t)}'", e.strerror)
else:
if removed:
display("Removed " + str(t))
@@ -408,15 +430,15 @@ class CleanTask(SCons.Taskmaster.AlwaysTask):
# anything really needs to be done.
make_ready = SCons.Taskmaster.Task.make_ready_all
- def prepare(self):
+ def prepare(self) -> None:
pass
class QuestionTask(SCons.Taskmaster.AlwaysTask):
"""An SCons task for the -q (question) option."""
- def prepare(self):
+ def prepare(self) -> None:
pass
- def execute(self):
+ def execute(self) -> None:
if self.targets[0].get_state() != SCons.Node.up_to_date or \
(self.top and not self.targets[0].exists()):
global exit_status
@@ -425,12 +447,12 @@ class QuestionTask(SCons.Taskmaster.AlwaysTask):
this_build_status = 1
self.tm.stop()
- def executed(self):
+ def executed(self) -> None:
pass
class TreePrinter:
- def __init__(self, derived=False, prune=False, status=False, sLineDraw=False):
+ def __init__(self, derived: bool=False, prune: bool=False, status: bool=False, sLineDraw: bool=False) -> None:
self.derived = derived
self.prune = prune
self.status = status
@@ -440,7 +462,7 @@ class TreePrinter:
def get_derived_children(self, node):
children = node.all_children(None)
return [x for x in children if x.has_builder()]
- def display(self, t):
+ def display(self, t) -> None:
if self.derived:
func = self.get_derived_children
else:
@@ -460,24 +482,29 @@ def python_version_deprecated(version=sys.version_info):
class FakeOptionParser:
- """
- A do-nothing option parser, used for the initial OptionsParser variable.
+ """A do-nothing option parser, used for the initial OptionsParser value.
During normal SCons operation, the OptionsParser is created right
- away by the main() function. Certain tests scripts however, can
+ away by the main() function. Certain test scripts however, can
introspect on different Tool modules, the initialization of which
can try to add a new, local option to an otherwise uninitialized
OptionsParser object. This allows that introspection to happen
without blowing up.
-
"""
+
class FakeOptionValues:
def __getattr__(self, attr):
return None
+
values = FakeOptionValues()
- def add_local_option(self, *args, **kw):
+
+ # TODO: to quiet checkers, FakeOptionParser should also define
+ # raise_exception_on_error, preserve_unknown_options, largs and parse_args
+
+ def add_local_option(self, *args, **kw) -> None:
pass
+
OptionsParser = FakeOptionParser()
def AddOption(*args, **kw):
@@ -492,86 +519,61 @@ def GetOption(name):
def SetOption(name, value):
return OptionsParser.values.set_option(name, value)
+def DebugOptions(json=None):
+ """
+ API to allow specifying options to SCons debug logic
+ Currently only json is supported which changes the
+ json file written by --debug=json from the default
+ """
+ if json is not None:
+ json_node = SCons.Defaults.DefaultEnvironment().arg2nodes(json)
+ SCons.Util.stats.JSON_OUTPUT_FILE = json_node[0].get_abspath()
+ # Check if parent dir to JSON_OUTPUT_FILE exists
+ json_dir = os.path.dirname(SCons.Util.stats.JSON_OUTPUT_FILE)
+ try:
+ if not os.path.isdir(json_dir):
+ os.makedirs(json_dir, exist_ok=True)
+ # Now try to open file and see if you can..
+ with open(SCons.Util.stats.JSON_OUTPUT_FILE,'w') as js:
+ pass
+ except OSError as e:
+ raise SCons.Errors.UserError(f"Unable to create directory for JSON debug output file: {SCons.Util.stats.JSON_OUTPUT_FILE}")
-def ValidateOptions(throw_exception=False) -> None:
+
+def ValidateOptions(throw_exception: bool=False) -> None:
"""Validate options passed to SCons on the command line.
- If you call this after you set all your command line options with AddOption(),
- it will verify that all command line options are valid.
- So if you added an option --xyz and you call SCons with --xyy you can cause
+ Checks that all options given on the command line are known to this
+ instance of SCons. Call after all of the cli options have been set
+ up through :func:`AddOption` calls. For example, if you added an
+ option ``--xyz`` and you call SCons with ``--xyy`` you can cause
SCons to issue an error message and exit by calling this function.
- :param bool throw_exception: (Optional) Should this function raise an error if there's an invalid option on the command line, or issue a message and exit with error status.
+ Arguments:
+ throw_exception: if an invalid option is present on the command line,
+ raises an exception if this optional parameter evaluates true;
+ if false (the default), issue a message and exit with error status.
- :raises SConsBadOptionError: If throw_exception is True and there are invalid options on command line.
+ Raises:
+ SConsBadOptionError: If *throw_exception* is true and there are invalid
+ options on the command line.
.. versionadded:: 4.5.0
"""
-
OptionsParser.raise_exception_on_error = throw_exception
OptionsParser.preserve_unknown_options = False
OptionsParser.parse_args(OptionsParser.largs, OptionsParser.values)
-def PrintHelp(file=None):
- OptionsParser.print_help(file=file)
+def PrintHelp(file=None, local_only: bool = False) -> None:
+ if local_only:
+ OptionsParser.print_local_option_help(file=file)
+ else:
+ OptionsParser.print_help(file=file)
-class Stats:
- def __init__(self):
- self.stats = []
- self.labels = []
- self.append = self.do_nothing
- self.print_stats = self.do_nothing
- def enable(self, outfp):
- self.outfp = outfp
- self.append = self.do_append
- self.print_stats = self.do_print
- def do_nothing(self, *args, **kw):
- pass
-
-class CountStats(Stats):
- def do_append(self, label):
- self.labels.append(label)
- self.stats.append(SCons.Debug.fetchLoggedInstances())
- def do_print(self):
- stats_table = {}
- for s in self.stats:
- for n in [t[0] for t in s]:
- stats_table[n] = [0, 0, 0, 0]
- i = 0
- for s in self.stats:
- for n, c in s:
- stats_table[n][i] = c
- i = i + 1
- self.outfp.write("Object counts:\n")
- pre = [" "]
- post = [" %s\n"]
- l = len(self.stats)
- fmt1 = ''.join(pre + [' %7s']*l + post)
- fmt2 = ''.join(pre + [' %7d']*l + post)
- labels = self.labels[:l]
- labels.append(("", "Class"))
- self.outfp.write(fmt1 % tuple([x[0] for x in labels]))
- self.outfp.write(fmt1 % tuple([x[1] for x in labels]))
- for k in sorted(stats_table.keys()):
- r = stats_table[k][:l] + [k]
- self.outfp.write(fmt2 % tuple(r))
-
-count_stats = CountStats()
-
-class MemStats(Stats):
- def do_append(self, label):
- self.labels.append(label)
- self.stats.append(SCons.Debug.memory())
- def do_print(self):
- fmt = 'Memory %-32s %12d\n'
- for label, stats in zip(self.labels, self.stats):
- self.outfp.write(fmt % (label, stats))
-
-memory_stats = MemStats()
# utility functions
-def _scons_syntax_error(e):
+def _scons_syntax_error(e) -> None:
"""Handle syntax errors. Print out a message and show where the error
occurred.
"""
@@ -599,7 +601,7 @@ def find_deepest_user_frame(tb):
return frame
return tb[0]
-def _scons_user_error(e):
+def _scons_user_error(e) -> None:
"""Handle user errors. Print out a message and a description of the
error, along with the line number and routine where it occured.
The file and line number will be the deepest stack frame that is
@@ -614,7 +616,7 @@ def _scons_user_error(e):
sys.stderr.write('File "%s", line %d, in %s\n' % (filename, lineno, routine))
sys.exit(2)
-def _scons_user_warning(e):
+def _scons_user_warning(e) -> None:
"""Handle user warnings. Print out a message and a description of
the warning, along with the line number and routine where it occured.
The file and line number will be the deepest stack frame that is
@@ -625,7 +627,7 @@ def _scons_user_warning(e):
sys.stderr.write("\nscons: warning: %s\n" % e)
sys.stderr.write('File "%s", line %d, in %s\n' % (filename, lineno, routine))
-def _scons_internal_warning(e):
+def _scons_internal_warning(e) -> None:
"""Slightly different from _scons_user_warning in that we use the
*current call stack* rather than sys.exc_info() to get our stack trace.
This is used by the warnings framework to print warnings."""
@@ -633,7 +635,7 @@ def _scons_internal_warning(e):
sys.stderr.write("\nscons: warning: %s\n" % e.args[0])
sys.stderr.write('File "%s", line %d, in %s\n' % (filename, lineno, routine))
-def _scons_internal_error():
+def _scons_internal_error() -> None:
"""Handle all errors but user errors. Print out a message telling
the user what to do in this case and print a normal trace.
"""
@@ -641,13 +643,24 @@ def _scons_internal_error():
traceback.print_exc()
sys.exit(2)
-def _SConstruct_exists(dirname='', repositories=[], filelist=None):
- """This function checks that an SConstruct file exists in a directory.
- If so, it returns the path of the file. By default, it checks the
- current directory.
+def _SConstruct_exists(
+ dirname: str, repositories: List[str], filelist: List[str]
+) -> Optional[str]:
+ """Check that an SConstruct file exists in a directory.
+
+ Arguments:
+ dirname: the directory to search. If empty, look in cwd.
+ repositories: a list of repositories to search in addition to the
+ project directory tree.
+ filelist: names of SConstruct file(s) to search for.
+ If empty list, use the built-in list of names.
+
+ Returns:
+ The path to the located SConstruct file, or ``None``.
+
"""
if not filelist:
- filelist = ['SConstruct', 'Sconstruct', 'sconstruct', 'SConstruct.py', 'Sconstruct.py', 'sconstruct.py']
+ filelist = KNOWN_SCONSTRUCT_NAMES
for file in filelist:
sfile = os.path.join(dirname, file)
if os.path.isfile(sfile):
@@ -658,8 +671,10 @@ def _SConstruct_exists(dirname='', repositories=[], filelist=None):
return sfile
return None
-def _set_debug_values(options):
- global print_memoizer, print_objects, print_stacktrace, print_time, print_action_timestamps
+
+def _set_debug_values(options) -> None:
+ global print_memoizer, print_objects, print_stacktrace, print_time, \
+ print_action_timestamps, ENABLE_JSON
debug_values = options.debug
@@ -679,11 +694,11 @@ def _set_debug_values(options):
SCons.Warnings.warn(SCons.Warnings.NoObjectCountWarning, msg)
if "dtree" in debug_values:
options.tree_printers.append(TreePrinter(derived=True))
- options.debug_explain = ("explain" in debug_values)
+ options.debug_explain = "explain" in debug_values
if "findlibs" in debug_values:
SCons.Scanner.Prog.print_find_libs = "findlibs"
- options.debug_includes = ("includes" in debug_values)
- print_memoizer = ("memoizer" in debug_values)
+ options.debug_includes = "includes" in debug_values
+ print_memoizer = "memoizer" in debug_values
if "memory" in debug_values:
memory_stats.enable(sys.stdout)
print_objects = ("objects" in debug_values)
@@ -697,6 +712,8 @@ def _set_debug_values(options):
options.tree_printers.append(TreePrinter(status=True))
if "time" in debug_values:
print_time = True
+ time_stats.enable(sys.stdout)
+ time_stats.enable(sys.stdout)
if "action-timestamps" in debug_values:
print_time = True
print_action_timestamps = True
@@ -706,6 +723,10 @@ def _set_debug_values(options):
SCons.Taskmaster.print_prepare = True
if "duplicate" in debug_values:
SCons.Node.print_duplicate = True
+ if "json" in debug_values:
+ ENABLE_JSON = True
+ if "sconscript" in debug_values:
+ SCons.Debug.sconscript_trace = True
def _create_path(plist):
path = '.'
@@ -774,7 +795,7 @@ def _load_site_scons_dir(topdir, site_dir_name=None):
if not re_dunder.match(k):
site_m[k] = v
- with open(spec.origin, 'r') as f:
+ with open(spec.origin) as f:
code = f.read()
try:
codeobj = compile(code, spec.name, "exec")
@@ -798,7 +819,7 @@ def _load_site_scons_dir(topdir, site_dir_name=None):
raise
-def _load_all_site_scons_dirs(topdir, verbose=False):
+def _load_all_site_scons_dirs(topdir, verbose: bool=False) -> None:
"""Load all of the predefined site_scons dir.
Order is significant; we load them in order from most generic
(machine-wide) to most specific (topdir).
@@ -841,7 +862,7 @@ def _load_all_site_scons_dirs(topdir, verbose=False):
print("Loading site dir ", d)
_load_site_scons_dir(d)
-def test_load_all_site_scons_dirs(d):
+def test_load_all_site_scons_dirs(d) -> None:
_load_all_site_scons_dirs(d, True)
def version_string(label, module):
@@ -858,7 +879,7 @@ def version_string(label, module):
module.__developer__,
module.__buildsys__)
-def path_string(label, module):
+def path_string(label, module) -> str:
path = module.__path__
return "\t%s path: %s\n"%(label,path)
@@ -919,9 +940,9 @@ def _main(parser):
target_top = None
if options.climb_up:
target_top = '.' # directory to prepend to targets
- while script_dir and not _SConstruct_exists(script_dir,
- options.repository,
- options.file):
+ while script_dir and not _SConstruct_exists(
+ script_dir, options.repository, options.file
+ ):
script_dir, last_part = os.path.split(script_dir)
if last_part:
target_top = os.path.join(last_part, target_top)
@@ -951,8 +972,7 @@ def _main(parser):
if options.file:
scripts.extend(options.file)
if not scripts:
- sfile = _SConstruct_exists(repositories=options.repository,
- filelist=options.file)
+ sfile = _SConstruct_exists("", options.repository, options.file)
if sfile:
scripts.append(sfile)
@@ -1011,8 +1031,8 @@ def _main(parser):
# Next, set up the variables that hold command-line arguments,
# so the SConscript files that we read and execute have access to them.
# TODO: for options defined via AddOption which take space-separated
- # option-args, the option-args will collect into targets here,
- # because we don't yet know to do any different.
+ # option-args, the option-args will collect into targets here,
+ # because we don't yet know to do any different.
targets = []
xmit_args = []
for a in parser.largs:
@@ -1114,7 +1134,7 @@ def _main(parser):
raise SConsPrintHelpException
else:
print(help_text)
- print("Use scons -H for help about command-line options.")
+ print("Use scons -H for help about SCons built-in command-line options.")
exit_status = 0
return
@@ -1327,7 +1347,7 @@ def _build_targets(fs, options, targets, target_top):
options=options,
closing_message=closing_message,
failure_message=failure_message
- ):
+ ) -> None:
if jobs.were_interrupted():
if not options.no_progress and not options.silent:
sys.stderr.write("scons: Build interrupted.\n")
@@ -1353,7 +1373,7 @@ def _build_targets(fs, options, targets, target_top):
return nodes
-def _exec_main(parser, values):
+def _exec_main(parser, values) -> None:
sconsflags = os.environ.get('SCONSFLAGS', '')
all_args = sconsflags.split() + sys.argv[1:]
@@ -1361,7 +1381,43 @@ def _exec_main(parser, values):
if isinstance(options.debug, list) and "pdb" in options.debug:
import pdb
- pdb.Pdb().runcall(_main, parser)
+
+ class SConsPdb(pdb.Pdb):
+ """Specialization of Pdb to help find SConscript files."""
+
+ def lookupmodule(self, filename: str) -> Optional[str]:
+ """Helper function for break/clear parsing -- SCons version.
+
+ Translates (possibly incomplete) file or module name
+ into an absolute file name. The "possibly incomplete"
+ means adding a ``.py`` suffix if not present, which breaks
+ picking breakpoints in sconscript files, which often don't
+ have a suffix. This version fixes for some known names of
+ sconscript files that don't have the suffix.
+
+ .. versionadded:: 4.6.0
+ """
+ if os.path.isabs(filename) and os.path.exists(filename):
+ return filename
+ f = os.path.join(sys.path[0], filename)
+ if os.path.exists(f) and self.canonic(f) == self.mainpyfile:
+ return f
+ root, ext = os.path.splitext(filename)
+ base = os.path.split(filename)[-1]
+ if ext == '' and base not in KNOWN_SCONSCRIPTS: # SCons mod
+ filename = filename + '.py'
+ if os.path.isabs(filename):
+ return filename
+ for dirname in sys.path:
+ while os.path.islink(dirname):
+ dirname = os.readlink(dirname)
+ fullname = os.path.join(dirname, filename)
+ if os.path.exists(fullname):
+ return fullname
+ return None
+
+ SConsPdb().runcall(_main, parser)
+
elif options.profile_file:
from cProfile import Profile
@@ -1370,14 +1426,16 @@ def _exec_main(parser, values):
prof.runcall(_main, parser)
finally:
prof.dump_stats(options.profile_file)
+
else:
_main(parser)
-def main():
+def main() -> None:
global OptionsParser
global exit_status
global first_command_start
+ global ENABLE_JSON
# Check up front for a Python version we do not support. We
# delay the check for deprecated Python versions until later,
@@ -1389,6 +1447,13 @@ def main():
sys.stderr.write("scons: *** Minimum Python version is %d.%d.%d\n" %minimum_python_version)
sys.exit(1)
+ try:
+ import threading
+ except ImportError:
+ msg = "scons: *** SCons version %s requires a Python interpreter with support for the `threading` package"
+ sys.stderr.write(msg % SConsVersion)
+ sys.exit(1)
+
parts = ["SCons by Steven Knight et al.:\n"]
try:
import SCons
@@ -1468,6 +1533,11 @@ def main():
print("Total SConscript file execution time: %f seconds"%sconscript_time)
print("Total SCons execution time: %f seconds"%scons_time)
print("Total command execution time: %f seconds"%ct)
+ time_stats.total_times(total_time, sconscript_time, scons_time, ct)
+
+
+ if ENABLE_JSON:
+ write_scons_stats_file()
sys.exit(exit_status)
diff --git a/scons/scons-local-4.5.2/SCons/Script/SConsOptions.py b/scons/scons-local-4.7.0/SCons/Script/SConsOptions.py
similarity index 93%
rename from scons/scons-local-4.5.2/SCons/Script/SConsOptions.py
rename to scons/scons-local-4.7.0/SCons/Script/SConsOptions.py
index 8391d6208..e8e5cbf4e 100644
--- a/scons/scons-local-4.5.2/SCons/Script/SConsOptions.py
+++ b/scons/scons-local-4.7.0/SCons/Script/SConsOptions.py
@@ -40,7 +40,7 @@ SUPPRESS_HELP = optparse.SUPPRESS_HELP
diskcheck_all = SCons.Node.FS.diskcheck_types()
-experimental_features = {'warp_speed', 'transporter', 'ninja', 'tm_v2'}
+experimental_features = {'warp_speed', 'transporter', 'ninja', 'legacy_sched'}
def diskcheck_convert(value):
@@ -98,7 +98,7 @@ class SConsValues(optparse.Values):
in the set_option() method.
"""
- def __init__(self, defaults):
+ def __init__(self, defaults) -> None:
self.__defaults__ = defaults
self.__SConscript_settings__ = {}
@@ -271,8 +271,7 @@ class SConsOption(optparse.Option):
class SConsOptionGroup(optparse.OptionGroup):
- """
- A subclass for SCons-specific option groups.
+ """A subclass for SCons-specific option groups.
The only difference between this and the base class is that we print
the group's help text flush left, underneath their own title but
@@ -288,7 +287,8 @@ class SConsOptionGroup(optparse.OptionGroup):
formatter.dedent()
result = formatter.format_heading(self.title)
formatter.indent()
- result = result + optparse.OptionContainer.format_help(self, formatter)
+ # bypass OptionGroup format_help and call up to its parent
+ result += optparse.OptionContainer.format_help(self, formatter)
return result
@@ -300,11 +300,11 @@ class SConsBadOptionError(optparse.BadOptionError):
"""
- def __init__(self, opt_str, parser=None):
+ def __init__(self, opt_str, parser=None) -> None:
self.opt_str = opt_str
self.parser = parser
- def __str__(self):
+ def __str__(self) -> str:
return _("no such option: %s") % self.opt_str
@@ -396,7 +396,7 @@ class SConsOptionParser(optparse.OptionParser):
option.process(opt, value, values, self)
- def reparse_local_options(self):
+ def reparse_local_options(self) -> None:
""" Re-parse the leftover command-line options.
Parse options stored in `self.largs`, so that any value
@@ -474,7 +474,6 @@ class SConsOptionParser(optparse.OptionParser):
self.local_option_group = group
result = group.add_option(*args, **kw)
-
if result:
# The option was added successfully. We now have to add the
# default value to our object that holds the default values
@@ -489,9 +488,43 @@ class SConsOptionParser(optparse.OptionParser):
return result
+ def format_local_option_help(self, formatter=None, file=None):
+ """Return the help for the project-level ("local") options.
+
+ .. versionadded:: 4.6.0
+ """
+ if formatter is None:
+ formatter = self.formatter
+ try:
+ group = self.local_option_group
+ except AttributeError:
+ return ""
+
+ formatter.store_local_option_strings(self, group)
+ for opt in group.option_list:
+ strings = formatter.format_option_strings(opt)
+ formatter.option_strings[opt] = strings
+
+ # defeat our own cleverness, which starts out by dedenting
+ formatter.indent()
+ local_help = group.format_help(formatter)
+ formatter.dedent()
+ return local_help
+
+ def print_local_option_help(self, file=None):
+ """Print help for just project-defined options.
+
+ Writes to *file* (default stdout).
+
+ .. versionadded:: 4.6.0
+ """
+ if file is None:
+ file = sys.stdout
+ file.write(self.format_local_option_help())
+
class SConsIndentedHelpFormatter(optparse.IndentedHelpFormatter):
- def format_usage(self, usage):
+ def format_usage(self, usage) -> str:
""" Formats the usage message. """
return "usage: %s\n" % usage
@@ -504,7 +537,7 @@ class SConsIndentedHelpFormatter(optparse.IndentedHelpFormatter):
"""
if heading == 'Options':
heading = "SCons Options"
- return optparse.IndentedHelpFormatter.format_heading(self, heading)
+ return super().format_heading(heading)
def format_option(self, option):
""" Customized option formatter.
@@ -577,6 +610,24 @@ class SConsIndentedHelpFormatter(optparse.IndentedHelpFormatter):
result.append("\n")
return "".join(result)
+ def store_local_option_strings(self, parser, group):
+ """Local-only version of store_option_strings.
+
+ We need to replicate this so the formatter will be set up
+ properly if we didn't go through the "normal" store_option_strings
+
+ .. versionadded:: 4.6.0
+ """
+ self.indent()
+ max_len = 0
+ for opt in group.option_list:
+ strings = self.format_option_strings(opt)
+ self.option_strings[opt] = strings
+ max_len = max(max_len, len(strings) + self.current_indent)
+ self.dedent()
+ self.help_position = min(max_len + 2, self.max_help_position)
+ self.help_width = max(self.width - self.help_position, 11)
+
def Parser(version):
"""Returns a parser object initialized with the standard SCons options.
@@ -610,7 +661,7 @@ def Parser(version):
op.version = version
# options ignored for compatibility
- def opt_ignore(option, opt, value, parser):
+ def opt_ignore(option, opt, value, parser) -> None:
sys.stderr.write("Warning: ignoring %s option\n" % opt)
op.add_option("-b", "-d", "-e", "-m", "-S", "-t", "-w",
@@ -701,7 +752,7 @@ def Parser(version):
debug_options = ["count", "duplicate", "explain", "findlibs",
"includes", "memoizer", "memory", "objects",
"pdb", "prepare", "presub", "stacktrace",
- "time", "action-timestamps"]
+ "time", "action-timestamps", "json", "sconscript"]
def opt_debug(option, opt, value__, parser,
debug_options=debug_options,
@@ -822,11 +873,11 @@ def Parser(version):
action="help",
help="Print this message and exit")
- def warn_md5_chunksize_deprecated(option, opt, value, parser):
+ def warn_md5_chunksize_deprecated(option, opt, value, parser) -> None:
if opt == '--md5-chunksize':
- SCons.Warnings.warn(SCons.Warnings.DeprecatedWarning,
- "Parameter %s is deprecated. Use "
- "--hash-chunksize instead." % opt)
+ SCons.Warnings.warn(SCons.Warnings.DeprecatedOptionsWarning,
+ f"Option {opt} is deprecated. "
+ "Use --hash-chunksize instead.")
setattr(parser.values, option.dest, value)
@@ -865,7 +916,7 @@ def Parser(version):
action="store_true",
help="Cache implicit dependencies")
- def opt_implicit_deps(option, opt, value, parser):
+ def opt_implicit_deps(option, opt, value, parser) -> None:
setattr(parser.values, 'implicit_cache', True)
setattr(parser.values, option.dest, True)
@@ -1002,7 +1053,7 @@ def Parser(version):
help="Search up directory tree for SConstruct, "
"build Default() targets from local SConscript")
- def opt_version(option, opt, value, parser):
+ def opt_version(option, opt, value, parser) -> None:
sys.stdout.write(parser.version + '\n')
sys.exit(0)
@@ -1010,7 +1061,7 @@ def Parser(version):
action="callback", callback=opt_version,
help="Print the SCons version number and exit")
- def opt_warn(option, opt, value, parser, tree_options=tree_options):
+ def opt_warn(option, opt, value, parser, tree_options=tree_options) -> None:
if SCons.Util.is_String(value):
value = value.split(',')
parser.values.warn.extend(value)
@@ -1033,7 +1084,7 @@ def Parser(version):
# we don't want to change. These all get a "the -X option is not
# yet implemented" message and don't show up in the help output.
- def opt_not_yet(option, opt, value, parser):
+ def opt_not_yet(option, opt, value, parser) -> None:
msg = "Warning: the %s option is not yet implemented\n" % opt
sys.stderr.write(msg)
diff --git a/scons/scons-local-4.5.2/SCons/Script/SConscript.py b/scons/scons-local-4.7.0/SCons/Script/SConscript.py
similarity index 90%
rename from scons/scons-local-4.5.2/SCons/Script/SConscript.py
rename to scons/scons-local-4.7.0/SCons/Script/SConscript.py
index b72f30eee..85070ab05 100644
--- a/scons/scons-local-4.5.2/SCons/Script/SConscript.py
+++ b/scons/scons-local-4.7.0/SCons/Script/SConscript.py
@@ -104,7 +104,7 @@ def compute_exports(exports):
class Frame:
"""A frame on the SConstruct/SConscript call stack"""
- def __init__(self, fs, exports, sconscript):
+ def __init__(self, fs, exports, sconscript) -> None:
self.globals = BuildDefaultGlobals()
self.retval = None
self.prev_dir = fs.getcwd()
@@ -145,40 +145,32 @@ def Return(*vars, **kw):
stack_bottom = '% Stack boTTom %' # hard to define a variable w/this name :)
-def handle_missing_SConscript(f, must_exist=None):
+def handle_missing_SConscript(f: str, must_exist: bool = True) -> None:
"""Take appropriate action on missing file in SConscript() call.
Print a warning or raise an exception on missing file, unless
- missing is explicitly allowed by the *must_exist* value.
- On first warning, print a deprecation message.
+ missing is explicitly allowed by the *must_exist* parameter or by
+ a global flag.
Args:
- f (str): path of missing configuration file
- must_exist (bool): if true, fail. If false, but not ``None``,
- allow the file to be missing. The default is ``None``,
- which means issue the warning. The default is deprecated.
+ f: path to missing configuration file
+ must_exist: if true (the default), fail. If false
+ do nothing, allowing a build to declare it's okay to be missing.
Raises:
- UserError: if *must_exist* is true or if global
+ UserError: if *must_exist* is true or if global
:data:`SCons.Script._no_missing_sconscript` is true.
+
+ .. versionchanged: 4.6.0
+ Changed default from False.
"""
+ if not must_exist: # explicitly set False: ok
+ return
+ if not SCons.Script._no_missing_sconscript: # system default changed: ok
+ return
+ msg = f"missing SConscript file {f.get_internal_path()!r}"
+ raise SCons.Errors.UserError(msg)
- if must_exist or (SCons.Script._no_missing_sconscript and must_exist is not False):
- msg = "Fatal: missing SConscript '%s'" % f.get_internal_path()
- raise SCons.Errors.UserError(msg)
-
- if must_exist is None:
- if SCons.Script._warn_missing_sconscript_deprecated:
- msg = (
- "Calling missing SConscript without error is deprecated.\n"
- "Transition by adding must_exist=False to SConscript calls.\n"
- "Missing SConscript '%s'" % f.get_internal_path()
- )
- SCons.Warnings.warn(SCons.Warnings.MissingSConscriptWarning, msg)
- SCons.Script._warn_missing_sconscript_deprecated = False
- else:
- msg = "Ignoring missing SConscript '%s'" % f.get_internal_path()
- SCons.Warnings.warn(SCons.Warnings.MissingSConscriptWarning, msg)
def _SConscript(fs, *files, **kw):
top = fs.Top
@@ -282,9 +274,16 @@ def _SConscript(fs, *files, **kw):
scriptdata = _file_.read()
scriptname = _file_.name
_file_.close()
+ if SCons.Debug.sconscript_trace:
+ print("scons: Entering "+str(scriptname))
exec(compile(scriptdata, scriptname, 'exec'), call_stack[-1].globals)
+ if SCons.Debug.sconscript_trace:
+ print("scons: Exiting "+str(scriptname))
except SConscriptReturn:
- pass
+ if SCons.Debug.sconscript_trace:
+ print("scons: Exiting "+str(scriptname))
+ else:
+ pass
finally:
if Main.print_time:
elapsed = time.perf_counter() - start_time
@@ -294,7 +293,7 @@ def _SConscript(fs, *files, **kw):
call_stack[-1].globals.update({__file__:old_file})
else:
- handle_missing_SConscript(f, kw.get('must_exist', None))
+ handle_missing_SConscript(f, kw.get('must_exist', True))
finally:
SCons.Script.sconscript_reading = SCons.Script.sconscript_reading - 1
@@ -332,7 +331,7 @@ def _SConscript(fs, *files, **kw):
else:
return tuple(results)
-def SConscript_exception(file=sys.stderr):
+def SConscript_exception(file=sys.stderr) -> None:
"""Print an exception stack trace just for the SConscript file(s).
This will show users who have Python errors where the problem is,
without cluttering the output with all of the internal calls leading
@@ -481,11 +480,11 @@ class SConsEnvironment(SCons.Environment.Base):
kw['_depth'] = kw.get('_depth', 0) + 1
return SCons.Environment.Base.Configure(self, *args, **kw)
- def Default(self, *targets):
+ def Default(self, *targets) -> None:
SCons.Script._Set_Default_Targets(self, targets)
@staticmethod
- def EnsureSConsVersion(major, minor, revision=0):
+ def EnsureSConsVersion(major, minor, revision: int=0) -> None:
"""Exit abnormally if the SCons version is not late enough."""
# split string to avoid replacement during build process
if SCons.__version__ == '__' + 'VERSION__':
@@ -503,7 +502,7 @@ class SConsEnvironment(SCons.Environment.Base):
sys.exit(2)
@staticmethod
- def EnsurePythonVersion(major, minor):
+ def EnsurePythonVersion(major, minor) -> None:
"""Exit abnormally if the Python version is not late enough."""
if sys.version_info < (major, minor):
v = sys.version.split()[0]
@@ -511,10 +510,10 @@ class SConsEnvironment(SCons.Environment.Base):
sys.exit(2)
@staticmethod
- def Exit(value=0):
+ def Exit(value: int=0) -> None:
sys.exit(value)
- def Export(self, *vars, **kw):
+ def Export(self, *vars, **kw) -> None:
for var in vars:
global_exports.update(compute_exports(self.Split(var)))
global_exports.update(kw)
@@ -528,10 +527,25 @@ class SConsEnvironment(SCons.Environment.Base):
name = self.subst(name)
return SCons.Script.Main.GetOption(name)
+ def Help(self, text, append: bool = False, keep_local: bool = False) -> None:
+ """Update the help text.
- def Help(self, text, append=False):
+ The previous help text has *text* appended to it, except on the
+ first call. On first call, the values of *append* and *keep_local*
+ are considered to determine what is appended to.
+
+ Arguments:
+ text: string to add to the help text.
+ append: on first call, if true, keep the existing help text
+ (default False).
+ keep_local: on first call, if true and *append* is also true,
+ keep only the help text from AddOption calls.
+
+ .. versionchanged:: 4.6.0
+ The *keep_local* parameter was added.
+ """
text = self.subst(text, raw=1)
- SCons.Script.HelpFunction(text, append=append)
+ SCons.Script.HelpFunction(text, append=append, keep_local=keep_local)
def Import(self, *vars):
try:
@@ -602,7 +616,7 @@ class SConsEnvironment(SCons.Environment.Base):
global sconscript_chdir
sconscript_chdir = flag
- def SetOption(self, name, value):
+ def SetOption(self, name, value) -> None:
name = self.subst(name)
SCons.Script.Main.SetOption(name, value)
@@ -650,7 +664,7 @@ class DefaultEnvironmentCall:
thereby prevent expansion of construction variables (since from
the user's point of view this was called as a global function,
with no associated construction environment)."""
- def __init__(self, method_name, subst=0):
+ def __init__(self, method_name, subst: int=0) -> None:
self.method_name = method_name
if subst:
self.factory = SCons.Defaults.DefaultEnvironment
@@ -674,7 +688,7 @@ def BuildDefaultGlobals():
import SCons.Script
d = SCons.Script.__dict__
- def not_a_module(m, d=d, mtype=type(SCons.Script)):
+ def not_a_module(m, d=d, mtype=type(SCons.Script)) -> bool:
return not isinstance(d[m], mtype)
for m in filter(not_a_module, dir(SCons.Script)):
GlobalDict[m] = d[m]
diff --git a/scons/scons-local-4.5.2/SCons/Script/__init__.py b/scons/scons-local-4.7.0/SCons/Script/__init__.py
similarity index 94%
rename from scons/scons-local-4.5.2/SCons/Script/__init__.py
rename to scons/scons-local-4.7.0/SCons/Script/__init__.py
index 6cfea1b43..a62650f7f 100644
--- a/scons/scons-local-4.5.2/SCons/Script/__init__.py
+++ b/scons/scons-local-4.7.0/SCons/Script/__init__.py
@@ -100,7 +100,6 @@ main = Main.main
BuildTask = Main.BuildTask
CleanTask = Main.CleanTask
QuestionTask = Main.QuestionTask
-#PrintHelp = Main.PrintHelp
#SConscriptSettableOptions = Main.SConscriptSettableOptions
AddOption = Main.AddOption
@@ -110,6 +109,7 @@ SetOption = Main.SetOption
ValidateOptions = Main.ValidateOptions
Progress = Main.Progress
GetBuildFailures = Main.GetBuildFailures
+DebugOptions = Main.DebugOptions
#keep_going_on_error = Main.keep_going_on_error
#print_dtree = Main.print_dtree
@@ -175,11 +175,11 @@ DefaultEnvironment = SCons.Defaults.DefaultEnvironment
# Other variables we provide.
class TargetList(collections.UserList):
- def _do_nothing(self, *args, **kw):
+ def _do_nothing(self, *args, **kw) -> None:
pass
- def _add_Default(self, list):
+ def _add_Default(self, list) -> None:
self.extend(list)
- def _clear(self):
+ def _clear(self) -> None:
del self[:]
ARGUMENTS = {}
@@ -199,13 +199,13 @@ DEFAULT_TARGETS = []
# own targets to BUILD_TARGETS.
_build_plus_default = TargetList()
-def _Add_Arguments(alist):
+def _Add_Arguments(alist) -> None:
for arg in alist:
a, b = arg.split('=', 1)
ARGUMENTS[a] = b
ARGLIST.append((a, b))
-def _Add_Targets(tlist):
+def _Add_Targets(tlist) -> None:
if tlist:
COMMAND_LINE_TARGETS.extend(tlist)
BUILD_TARGETS.extend(tlist)
@@ -225,7 +225,7 @@ def _Set_Default_Targets_Has_Not_Been_Called(d, fs):
_Get_Default_Targets = _Set_Default_Targets_Has_Not_Been_Called
-def _Set_Default_Targets(env, tlist):
+def _Set_Default_Targets(env, tlist) -> None:
global DEFAULT_TARGETS
global _Get_Default_Targets
_Get_Default_Targets = _Set_Default_Targets_Has_Been_Called
@@ -247,31 +247,37 @@ def _Set_Default_Targets(env, tlist):
BUILD_TARGETS._add_Default(nodes)
_build_plus_default._add_Default(nodes)
-#
+
help_text = None
-def HelpFunction(text, append=False):
+
+def HelpFunction(text, append: bool = False, keep_local: bool = False) -> None:
+ """The implementaion of the the ``Help`` method.
+
+ See :meth:`~SCons.Script.SConscript.Help`.
+
+ .. versionchanged:: 4.6.0
+ The *keep_local* parameter was added.
+ """
global help_text
if help_text is None:
if append:
- s = StringIO()
- PrintHelp(s)
- help_text = s.getvalue()
- s.close()
+ with StringIO() as s:
+ PrintHelp(s, local_only=keep_local)
+ help_text = s.getvalue()
else:
help_text = ""
- help_text= help_text + text
+ help_text += text
-#
# Will be non-zero if we are reading an SConscript file.
-sconscript_reading = 0
+sconscript_reading: int = 0
-_no_missing_sconscript = False
-_warn_missing_sconscript_deprecated = True
+_no_missing_sconscript = True
+_warn_missing_sconscript_deprecated = False # TODO: now unused
-def set_missing_sconscript_error(flag=1):
+def set_missing_sconscript_error(flag: bool = True) -> bool:
"""Set behavior on missing file in SConscript() call.
Returns:
@@ -337,6 +343,7 @@ GlobalDefaultEnvironmentFunctions = [
'Local',
'ParseDepends',
'Precious',
+ 'Pseudo',
'PyPackageDir',
'Repository',
'Requires',
diff --git a/scons/scons-local-4.5.2/SCons/Subst.py b/scons/scons-local-4.7.0/SCons/Subst.py
similarity index 95%
rename from scons/scons-local-4.5.2/SCons/Subst.py
rename to scons/scons-local-4.7.0/SCons/Subst.py
index 645639b49..b04ebe50c 100644
--- a/scons/scons-local-4.5.2/SCons/Subst.py
+++ b/scons/scons-local-4.7.0/SCons/Subst.py
@@ -26,6 +26,7 @@
import collections
import re
from inspect import signature, Parameter
+from typing import Optional
import SCons.Errors
from SCons.Util import is_String, is_Sequence
@@ -40,7 +41,7 @@ _strconv = [
AllowableExceptions = (IndexError, NameError)
-def SetAllowableExceptions(*excepts):
+def SetAllowableExceptions(*excepts) -> None:
global AllowableExceptions
AllowableExceptions = [_f for _f in excepts if _f]
@@ -59,10 +60,10 @@ class Literal:
around a string, then it will be interpreted as literal.
When passed to the command interpreter, all special
characters will be escaped."""
- def __init__(self, lstr):
+ def __init__(self, lstr) -> None:
self.lstr = lstr
- def __str__(self):
+ def __str__(self) -> str:
return self.lstr
def escape(self, escape_func):
@@ -71,15 +72,15 @@ class Literal:
def for_signature(self):
return self.lstr
- def is_literal(self):
- return 1
+ def is_literal(self) -> bool:
+ return True
def __eq__(self, other):
if not isinstance(other, Literal):
return False
return self.lstr == other.lstr
- def __neq__(self, other):
+ def __neq__(self, other) -> bool:
return not self.__eq__(other)
def __hash__(self):
@@ -94,7 +95,7 @@ class SpecialAttrWrapper:
such that we can return some canonical string during signature
calculation to avoid unnecessary rebuilds."""
- def __init__(self, lstr, for_signature=None):
+ def __init__(self, lstr, for_signature=None) -> None:
"""The for_signature parameter, if supplied, will be the
canonical string we return from for_signature(). Else
we will simply return lstr."""
@@ -104,7 +105,7 @@ class SpecialAttrWrapper:
else:
self.forsig = lstr
- def __str__(self):
+ def __str__(self) -> str:
return self.lstr
def escape(self, escape_func):
@@ -113,8 +114,8 @@ class SpecialAttrWrapper:
def for_signature(self):
return self.forsig
- def is_literal(self):
- return 1
+ def is_literal(self) -> bool:
+ return True
def quote_spaces(arg):
"""Generic function for putting double quotes around any string that
@@ -131,11 +132,11 @@ class CmdStringHolder(collections.UserString):
particular platform, it will return the contained string with the
proper escape sequences inserted.
"""
- def __init__(self, cmd, literal=None):
+ def __init__(self, cmd, literal=None) -> None:
super().__init__(cmd)
self.literal = literal
- def is_literal(self):
+ def is_literal(self) -> bool:
return self.literal
def escape(self, escape_func, quote_func=quote_spaces):
@@ -180,7 +181,7 @@ class NLWrapper:
cleaner conceptually...
"""
- def __init__(self, list, func):
+ def __init__(self, list, func) -> None:
self.list = list
self.func = func
def _return_nodelist(self):
@@ -209,7 +210,7 @@ class Targets_or_Sources(collections.UserList):
a list during variable expansion. We're not really using any
collections.UserList methods in practice.
"""
- def __init__(self, nl):
+ def __init__(self, nl) -> None:
self.nl = nl
def __getattr__(self, attr):
nl = self.nl._create_nodelist()
@@ -217,10 +218,10 @@ class Targets_or_Sources(collections.UserList):
def __getitem__(self, i):
nl = self.nl._create_nodelist()
return nl[i]
- def __str__(self):
+ def __str__(self) -> str:
nl = self.nl._create_nodelist()
return str(nl)
- def __repr__(self):
+ def __repr__(self) -> str:
nl = self.nl._create_nodelist()
return repr(nl)
@@ -230,7 +231,7 @@ class Target_or_Source:
to access an individual proxy Node, calling the NLWrapper to create
a proxy on demand.
"""
- def __init__(self, nl):
+ def __init__(self, nl) -> None:
self.nl = nl
def __getattr__(self, attr):
nl = self.nl._create_nodelist()
@@ -241,20 +242,20 @@ class Target_or_Source:
# pass through, so raise AttributeError for everything.
raise AttributeError("NodeList has no attribute: %s" % attr)
return getattr(nl0, attr)
- def __str__(self):
+ def __str__(self) -> str:
nl = self.nl._create_nodelist()
if nl:
return str(nl[0])
return ''
- def __repr__(self):
+ def __repr__(self) -> str:
nl = self.nl._create_nodelist()
if nl:
return repr(nl[0])
return ''
class NullNodeList(SCons.Util.NullSeq):
- def __call__(self, *args, **kwargs): return ''
- def __str__(self): return ''
+ def __call__(self, *args, **kwargs) -> str: return ''
+ def __str__(self) -> str: return ''
NullNodesList = NullNodeList()
@@ -335,7 +336,7 @@ class StringSubber:
"""
- def __init__(self, env, mode, conv, gvars):
+ def __init__(self, env, mode, conv, gvars) -> None:
self.env = env
self.mode = mode
self.conv = conv
@@ -417,7 +418,7 @@ class StringSubber:
return list(map(func, s))
elif callable(s):
- # SCons has the unusual Null class where any __getattr__ call returns it's self,
+ # SCons has the unusual Null class where any __getattr__ call returns it's self,
# which does not work the signature module, and the Null class returns an empty
# string if called on, so we make an exception in this condition for Null class
# Also allow callables where the only non default valued args match the expected defaults
@@ -448,11 +449,12 @@ class StringSubber:
This serves as a wrapper for splitting up a string into
separate tokens.
"""
+ def sub_match(match):
+ return self.conv(self.expand(match.group(1), lvars))
+
if is_String(args) and not isinstance(args, CmdStringHolder):
args = str(args) # In case it's a UserString.
try:
- def sub_match(match):
- return self.conv(self.expand(match.group(1), lvars))
result = _dollar_exps.sub(sub_match, args)
except TypeError:
# If the internal conversion routine doesn't return
@@ -489,7 +491,7 @@ class ListSubber(collections.UserList):
and the rest of the object takes care of doing the right thing
internally.
"""
- def __init__(self, env, mode, conv, gvars):
+ def __init__(self, env, mode, conv, gvars) -> None:
super().__init__([])
self.env = env
self.mode = mode
@@ -503,7 +505,7 @@ class ListSubber(collections.UserList):
self.in_strip = None
self.next_line()
- def expanded(self, s):
+ def expanded(self, s) -> bool:
"""Determines if the string s requires further expansion.
Due to the implementation of ListSubber expand will call
@@ -594,7 +596,7 @@ class ListSubber(collections.UserList):
self.substitute(a, lvars, 1)
self.next_word()
elif callable(s):
- # SCons has the unusual Null class where any __getattr__ call returns it's self,
+ # SCons has the unusual Null class where any __getattr__ call returns it's self,
# which does not work the signature module, and the Null class returns an empty
# string if called on, so we make an exception in this condition for Null class
# Also allow callables where the only non default valued args match the expected defaults
@@ -620,7 +622,7 @@ class ListSubber(collections.UserList):
else:
self.append(s)
- def substitute(self, args, lvars, within_list):
+ def substitute(self, args, lvars, within_list) -> None:
"""Substitute expansions in an argument or list of arguments.
This serves as a wrapper for splitting up a string into
@@ -643,23 +645,23 @@ class ListSubber(collections.UserList):
else:
self.expand(args, lvars, within_list)
- def next_line(self):
+ def next_line(self) -> None:
"""Arrange for the next word to start a new line. This
is like starting a new word, except that we have to append
another line to the result."""
collections.UserList.append(self, [])
self.next_word()
- def this_word(self):
+ def this_word(self) -> None:
"""Arrange for the next word to append to the end of the
current last word in the result."""
self.append = self.add_to_current_word
- def next_word(self):
+ def next_word(self) -> None:
"""Arrange for the next word to start a new word."""
self.append = self.add_new_word
- def add_to_current_word(self, x):
+ def add_to_current_word(self, x) -> None:
"""Append the string x to the end of the current last word
in the result. If that is not possible, then just add
it as a new word. Make sure the entire concatenated string
@@ -707,7 +709,7 @@ class ListSubber(collections.UserList):
y = CmdStringHolder(y, None)
self[-1][-1] = y
- def add_new_word(self, x):
+ def add_new_word(self, x) -> None:
if not self.in_strip or self.mode != SUBST_SIG:
literal = self.literal(x)
x = self.conv(x)
@@ -724,12 +726,12 @@ class ListSubber(collections.UserList):
else:
return l()
- def open_strip(self, x):
+ def open_strip(self, x) -> None:
"""Handle the "open strip" $( token."""
self.add_strip(x)
self.in_strip = 1
- def close_strip(self, x):
+ def close_strip(self, x) -> None:
"""Handle the "close strip" $) token."""
self.add_strip(x)
self.in_strip = None
@@ -805,7 +807,7 @@ _separate_args = re.compile(r'(%s|\s+|[^\s$]+|\$)' % _dollar_exps_str)
_space_sep = re.compile(r'[\t ]+(?![^{]*})')
-def scons_subst(strSubst, env, mode=SUBST_RAW, target=None, source=None, gvars={}, lvars={}, conv=None, overrides=False):
+def scons_subst(strSubst, env, mode=SUBST_RAW, target=None, source=None, gvars={}, lvars={}, conv=None, overrides: Optional[dict] = None):
"""Expand a string or list containing construction variable
substitutions.
@@ -887,14 +889,14 @@ def scons_subst(strSubst, env, mode=SUBST_RAW, target=None, source=None, gvars={
return result
-def scons_subst_list(strSubst, env, mode=SUBST_RAW, target=None, source=None, gvars={}, lvars={}, conv=None,overrides=False):
+def scons_subst_list(strSubst, env, mode=SUBST_RAW, target=None, source=None, gvars={}, lvars={}, conv=None, overrides: Optional[dict] = None):
"""Substitute construction variables in a string (or list or other
object) and separate the arguments into a command list.
The companion scons_subst() function (above) handles basic
substitutions within strings, so see that function instead
if that's what you're looking for.
- """
+ """
if conv is None:
conv = _strconv[mode]
diff --git a/scons/scons-local-4.7.0/SCons/Taskmaster/Job.py b/scons/scons-local-4.7.0/SCons/Taskmaster/Job.py
new file mode 100644
index 000000000..73ec0df45
--- /dev/null
+++ b/scons/scons-local-4.7.0/SCons/Taskmaster/Job.py
@@ -0,0 +1,763 @@
+# 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.
+
+"""Serial and Parallel classes to execute build tasks.
+
+The Jobs class provides a higher level interface to start,
+stop, and wait on jobs.
+"""
+
+import SCons.compat
+
+import logging
+import os
+import queue
+import signal
+import sys
+import threading
+
+from enum import Enum
+
+import SCons.Errors
+import SCons.Warnings
+
+
+# The default stack size (in kilobytes) of the threads used to execute
+# jobs in parallel.
+#
+# We use a stack size of 256 kilobytes. The default on some platforms
+# is too large and prevents us from creating enough threads to fully
+# parallelized the build. For example, the default stack size on linux
+# is 8 MBytes.
+
+explicit_stack_size = None
+default_stack_size = 256
+
+interrupt_msg = 'Build interrupted.'
+
+class InterruptState:
+ def __init__(self) -> None:
+ self.interrupted = False
+
+ def set(self) -> None:
+ self.interrupted = True
+
+ def __call__(self):
+ return self.interrupted
+
+
+class Jobs:
+ """An instance of this class initializes N jobs, and provides
+ methods for starting, stopping, and waiting on all N jobs.
+ """
+
+ def __init__(self, num, taskmaster) -> None:
+ """
+ Create 'num' jobs using the given taskmaster. The exact implementation
+ used varies with the number of jobs requested and the state of the `legacy_sched` flag
+ to `--experimental`.
+ """
+
+ # Importing GetOption here instead of at top of file to avoid
+ # circular imports
+ # pylint: disable=import-outside-toplevel
+ from SCons.Script import GetOption
+
+ stack_size = explicit_stack_size
+ if stack_size is None:
+ stack_size = default_stack_size
+
+ experimental_option = GetOption('experimental') or []
+ if 'legacy_sched' in experimental_option:
+ if num > 1:
+ self.job = LegacyParallel(taskmaster, num, stack_size)
+ else:
+ self.job = Serial(taskmaster)
+ else:
+ self.job = NewParallel(taskmaster, num, stack_size)
+
+ self.num_jobs = num
+
+ def run(self, postfunc=lambda: None) -> None:
+ """Run the jobs.
+
+ postfunc() will be invoked after the jobs has run. It will be
+ invoked even if the jobs are interrupted by a keyboard
+ interrupt (well, in fact by a signal such as either SIGINT,
+ SIGTERM or SIGHUP). The execution of postfunc() is protected
+ against keyboard interrupts and is guaranteed to run to
+ completion."""
+ self._setup_sig_handler()
+ try:
+ self.job.start()
+ finally:
+ postfunc()
+ self._reset_sig_handler()
+
+ def were_interrupted(self):
+ """Returns whether the jobs were interrupted by a signal."""
+ return self.job.interrupted()
+
+ def _setup_sig_handler(self) -> None:
+ """Setup an interrupt handler so that SCons can shutdown cleanly in
+ various conditions:
+
+ a) SIGINT: Keyboard interrupt
+ b) SIGTERM: kill or system shutdown
+ c) SIGHUP: Controlling shell exiting
+
+ We handle all of these cases by stopping the taskmaster. It
+ turns out that it's very difficult to stop the build process
+ by throwing asynchronously an exception such as
+ KeyboardInterrupt. For example, the python Condition
+ variables (threading.Condition) and queues do not seem to be
+ asynchronous-exception-safe. It would require adding a whole
+ bunch of try/finally block and except KeyboardInterrupt all
+ over the place.
+
+ Note also that we have to be careful to handle the case when
+ SCons forks before executing another process. In that case, we
+ want the child to exit immediately.
+ """
+ def handler(signum, stack, self=self, parentpid=os.getpid()) -> None:
+ if os.getpid() == parentpid:
+ self.job.taskmaster.stop()
+ self.job.interrupted.set()
+ else:
+ os._exit(2) # pylint: disable=protected-access
+
+ self.old_sigint = signal.signal(signal.SIGINT, handler)
+ self.old_sigterm = signal.signal(signal.SIGTERM, handler)
+ try:
+ self.old_sighup = signal.signal(signal.SIGHUP, handler)
+ except AttributeError:
+ pass
+ if (self.old_sigint is None) or (self.old_sigterm is None) or \
+ (hasattr(self, "old_sighup") and self.old_sighup is None):
+ msg = "Overwritting previous signal handler which was not installed from Python. " + \
+ "Will not be able to reinstate and so will return to default handler."
+ SCons.Warnings.warn(SCons.Warnings.SConsWarning, msg)
+
+ def _reset_sig_handler(self) -> None:
+ """Restore the signal handlers to their previous state (before the
+ call to _setup_sig_handler()."""
+ sigint_to_use = self.old_sigint if self.old_sigint is not None else signal.SIG_DFL
+ sigterm_to_use = self.old_sigterm if self.old_sigterm is not None else signal.SIG_DFL
+ signal.signal(signal.SIGINT, sigint_to_use)
+ signal.signal(signal.SIGTERM, sigterm_to_use)
+ try:
+ sigterm_to_use = self.old_sighup if self.old_sighup is not None else signal.SIG_DFL
+ signal.signal(signal.SIGHUP, sigterm_to_use)
+ except AttributeError:
+ pass
+
+
+class Serial:
+ """This class is used to execute tasks in series, and is more efficient
+ than Parallel, but is only appropriate for non-parallel builds. Only
+ one instance of this class should be in existence at a time.
+
+ This class is not thread safe.
+ """
+
+ def __init__(self, taskmaster) -> None:
+ """Create a new serial job given a taskmaster.
+
+ The taskmaster's next_task() method should return the next task
+ that needs to be executed, or None if there are no more tasks. The
+ taskmaster's executed() method will be called for each task when it
+ is successfully executed, or failed() will be called if it failed to
+ execute (e.g. execute() raised an exception)."""
+
+ self.taskmaster = taskmaster
+ self.interrupted = InterruptState()
+
+ def start(self):
+ """Start the job. This will begin pulling tasks from the taskmaster
+ and executing them, and return when there are no more tasks. If a task
+ fails to execute (i.e. execute() raises an exception), then the job will
+ stop."""
+
+ while True:
+ task = self.taskmaster.next_task()
+
+ if task is None:
+ break
+
+ try:
+ task.prepare()
+ if task.needs_execute():
+ task.execute()
+ except Exception:
+ if self.interrupted():
+ try:
+ raise SCons.Errors.BuildError(
+ task.targets[0], errstr=interrupt_msg)
+ except Exception:
+ task.exception_set()
+ else:
+ task.exception_set()
+
+ # Let the failed() callback function arrange for the
+ # build to stop if that's appropriate.
+ task.failed()
+ else:
+ task.executed()
+
+ task.postprocess()
+ self.taskmaster.cleanup()
+
+
+class Worker(threading.Thread):
+ """A worker thread waits on a task to be posted to its request queue,
+ dequeues the task, executes it, and posts a tuple including the task
+ and a boolean indicating whether the task executed successfully. """
+
+ def __init__(self, requestQueue, resultsQueue, interrupted) -> None:
+ super().__init__()
+ self.daemon = True
+ self.requestQueue = requestQueue
+ self.resultsQueue = resultsQueue
+ self.interrupted = interrupted
+ self.start()
+
+ def run(self):
+ while True:
+ task = self.requestQueue.get()
+
+ if task is None:
+ # The "None" value is used as a sentinel by
+ # ThreadPool.cleanup(). This indicates that there
+ # are no more tasks, so we should quit.
+ break
+
+ try:
+ if self.interrupted():
+ raise SCons.Errors.BuildError(
+ task.targets[0], errstr=interrupt_msg)
+ task.execute()
+ except Exception:
+ task.exception_set()
+ ok = False
+ else:
+ ok = True
+
+ self.resultsQueue.put((task, ok))
+
+class ThreadPool:
+ """This class is responsible for spawning and managing worker threads."""
+
+ def __init__(self, num, stack_size, interrupted) -> None:
+ """Create the request and reply queues, and 'num' worker threads.
+
+ One must specify the stack size of the worker threads. The
+ stack size is specified in kilobytes.
+ """
+ self.requestQueue = queue.Queue(0)
+ self.resultsQueue = queue.Queue(0)
+
+ try:
+ prev_size = threading.stack_size(stack_size * 1024)
+ except AttributeError as e:
+ # Only print a warning if the stack size has been
+ # explicitly set.
+ if explicit_stack_size is not None:
+ msg = "Setting stack size is unsupported by this version of Python:\n " + \
+ e.args[0]
+ SCons.Warnings.warn(SCons.Warnings.StackSizeWarning, msg)
+ except ValueError as e:
+ msg = "Setting stack size failed:\n " + str(e)
+ SCons.Warnings.warn(SCons.Warnings.StackSizeWarning, msg)
+
+ # Create worker threads
+ self.workers = []
+ for _ in range(num):
+ worker = Worker(self.requestQueue, self.resultsQueue, interrupted)
+ self.workers.append(worker)
+
+ if 'prev_size' in locals():
+ threading.stack_size(prev_size)
+
+ def put(self, task) -> None:
+ """Put task into request queue."""
+ self.requestQueue.put(task)
+
+ def get(self):
+ """Remove and return a result tuple from the results queue."""
+ return self.resultsQueue.get()
+
+ def preparation_failed(self, task) -> None:
+ self.resultsQueue.put((task, False))
+
+ def cleanup(self) -> None:
+ """
+ Shuts down the thread pool, giving each worker thread a
+ chance to shut down gracefully.
+ """
+ # For each worker thread, put a sentinel "None" value
+ # on the requestQueue (indicating that there's no work
+ # to be done) so that each worker thread will get one and
+ # terminate gracefully.
+ for _ in self.workers:
+ self.requestQueue.put(None)
+
+ # Wait for all of the workers to terminate.
+ #
+ # If we don't do this, later Python versions (2.4, 2.5) often
+ # seem to raise exceptions during shutdown. This happens
+ # in requestQueue.get(), as an assertion failure that
+ # requestQueue.not_full is notified while not acquired,
+ # seemingly because the main thread has shut down (or is
+ # in the process of doing so) while the workers are still
+ # trying to pull sentinels off the requestQueue.
+ #
+ # Normally these terminations should happen fairly quickly,
+ # but we'll stick a one-second timeout on here just in case
+ # someone gets hung.
+ for worker in self.workers:
+ worker.join(1.0)
+ self.workers = []
+
+class LegacyParallel:
+ """This class is used to execute tasks in parallel, and is somewhat
+ less efficient than Serial, but is appropriate for parallel builds.
+
+ This class is thread safe.
+ """
+
+ def __init__(self, taskmaster, num, stack_size) -> None:
+ """Create a new parallel job given a taskmaster.
+
+ The taskmaster's next_task() method should return the next
+ task that needs to be executed, or None if there are no more
+ tasks. The taskmaster's executed() method will be called
+ for each task when it is successfully executed, or failed()
+ will be called if the task failed to execute (i.e. execute()
+ raised an exception).
+
+ Note: calls to taskmaster are serialized, but calls to
+ execute() on distinct tasks are not serialized, because
+ that is the whole point of parallel jobs: they can execute
+ multiple tasks simultaneously. """
+
+ self.taskmaster = taskmaster
+ self.interrupted = InterruptState()
+ self.tp = ThreadPool(num, stack_size, self.interrupted)
+
+ self.maxjobs = num
+
+ def start(self):
+ """Start the job. This will begin pulling tasks from the
+ taskmaster and executing them, and return when there are no
+ more tasks. If a task fails to execute (i.e. execute() raises
+ an exception), then the job will stop."""
+
+ jobs = 0
+
+ while True:
+ # Start up as many available tasks as we're
+ # allowed to.
+ while jobs < self.maxjobs:
+ task = self.taskmaster.next_task()
+ if task is None:
+ break
+
+ try:
+ # prepare task for execution
+ task.prepare()
+ except Exception:
+ task.exception_set()
+ task.failed()
+ task.postprocess()
+ else:
+ if task.needs_execute():
+ # dispatch task
+ self.tp.put(task)
+ jobs += 1
+ else:
+ task.executed()
+ task.postprocess()
+
+ if not task and not jobs:
+ break
+
+ # Let any/all completed tasks finish up before we go
+ # back and put the next batch of tasks on the queue.
+ while True:
+ task, ok = self.tp.get()
+ jobs -= 1
+
+ if ok:
+ task.executed()
+ else:
+ if self.interrupted():
+ try:
+ raise SCons.Errors.BuildError(
+ task.targets[0], errstr=interrupt_msg)
+ except Exception:
+ task.exception_set()
+
+ # Let the failed() callback function arrange
+ # for the build to stop if that's appropriate.
+ task.failed()
+
+ task.postprocess()
+
+ if self.tp.resultsQueue.empty():
+ break
+
+ self.tp.cleanup()
+ self.taskmaster.cleanup()
+
+# An experimental new parallel scheduler that uses a leaders/followers pattern.
+class NewParallel:
+
+ class State(Enum):
+ READY = 0
+ SEARCHING = 1
+ STALLED = 2
+ COMPLETED = 3
+
+ class Worker(threading.Thread):
+ def __init__(self, owner) -> None:
+ super().__init__()
+ self.daemon = True
+ self.owner = owner
+ self.start()
+
+ def run(self) -> None:
+ self.owner._work()
+
+ class FakeLock(object):
+ def lock(self):
+ pass
+ def unlock(self):
+ pass
+ def __enter__(self):
+ pass
+ def __exit__(self, *args):
+ pass
+
+ class FakeCondition(object):
+ def __init__(self, lock):
+ pass
+ def wait(self):
+ fatal();
+ def notify(self):
+ pass
+ def notify_all(self):
+ pass
+ def __enter__(self):
+ pass
+ def __exit__(self, *args):
+ pass
+
+ def __init__(self, taskmaster, num, stack_size) -> None:
+ self.taskmaster = taskmaster
+ self.max_workers = num
+ self.stack_size = stack_size
+ self.interrupted = InterruptState()
+ self.workers = []
+
+ # The `tm_lock` is what ensures that we only have one
+ # thread interacting with the taskmaster at a time. It
+ # also protects access to our state that gets updated
+ # concurrently. The `can_search_cv` is associated with
+ # this mutex.
+ self.tm_lock = (threading.Lock if self.max_workers > 1 else NewParallel.FakeLock)()
+
+ # Guarded under `tm_lock`.
+ self.jobs = 0
+ self.state = NewParallel.State.READY
+
+ # The `can_search_cv` is used to manage a leader /
+ # follower pattern for access to the taskmaster, and to
+ # awaken from stalls.
+ self.can_search_cv = (threading.Condition if self.max_workers > 1 else NewParallel.FakeCondition)(self.tm_lock)
+
+ # The queue of tasks that have completed execution. The
+ # next thread to obtain `tm_lock`` will retire them.
+ self.results_queue_lock = (threading.Lock if self.max_workers > 1 else NewParallel.FakeLock)()
+ self.results_queue = []
+
+ if self.taskmaster.trace:
+ self.trace = self._setup_logging()
+ else:
+ self.trace = False
+
+ def _setup_logging(self):
+ jl = logging.getLogger("Job")
+ jl.setLevel(level=logging.DEBUG)
+ jl.addHandler(self.taskmaster.trace.log_handler)
+ return jl
+
+ def trace_message(self, message) -> None:
+ # This grabs the name of the function which calls trace_message()
+ method_name = sys._getframe(1).f_code.co_name + "():"
+ thread_id=threading.get_ident()
+ self.trace.debug('%s.%s [Thread:%s] %s' % (type(self).__name__, method_name, thread_id, message))
+
+ def start(self) -> None:
+ if self.max_workers == 1:
+ self._work()
+ else:
+ self._start_worker()
+ while len(self.workers) > 0:
+ self.workers[0].join()
+ self.workers.pop(0)
+ self.taskmaster.cleanup()
+
+ def _maybe_start_worker(self) -> None:
+ if self.max_workers > 1 and len(self.workers) < self.max_workers:
+ if self.jobs >= len(self.workers):
+ self._start_worker()
+
+ def _start_worker(self) -> None:
+ prev_size = self._adjust_stack_size()
+ if self.trace:
+ self.trace_message("Starting new worker thread")
+ self.workers.append(NewParallel.Worker(self))
+ self._restore_stack_size(prev_size)
+
+ def _adjust_stack_size(self):
+ try:
+ prev_size = threading.stack_size(self.stack_size * 1024)
+ return prev_size
+ except AttributeError as e:
+ # Only print a warning if the stack size has been
+ # explicitly set.
+ if explicit_stack_size is not None:
+ msg = "Setting stack size is unsupported by this version of Python:\n " + \
+ e.args[0]
+ SCons.Warnings.warn(SCons.Warnings.StackSizeWarning, msg)
+ except ValueError as e:
+ msg = "Setting stack size failed:\n " + str(e)
+ SCons.Warnings.warn(SCons.Warnings.StackSizeWarning, msg)
+
+ return None
+
+ def _restore_stack_size(self, prev_size) -> None:
+ if prev_size is not None:
+ threading.stack_size(prev_size)
+
+ def _work(self):
+
+ task = None
+
+ while True:
+
+ # Obtain `tm_lock`, granting exclusive access to the taskmaster.
+ with self.can_search_cv:
+
+ if self.trace:
+ self.trace_message("Gained exclusive access")
+
+ # Capture whether we got here with `task` set,
+ # then drop our reference to the task as we are no
+ # longer interested in the actual object.
+ completed_task = (task is not None)
+ task = None
+
+ # We will only have `completed_task` set here if
+ # we have looped back after executing a task. If
+ # we have completed a task and find that we are
+ # stalled, we should speculatively indicate that
+ # we are no longer stalled by transitioning to the
+ # 'ready' state which will bypass the condition
+ # wait so that we immediately process the results
+ # queue and hopefully light up new
+ # work. Otherwise, stay stalled, and we will wait
+ # in the condvar. Some other thread will come back
+ # here with a completed task.
+ if self.state == NewParallel.State.STALLED and completed_task:
+ if self.trace:
+ self.trace_message("Detected stall with completed task, bypassing wait")
+ self.state = NewParallel.State.READY
+
+ # Wait until we are neither searching nor stalled.
+ while self.state == NewParallel.State.SEARCHING or self.state == NewParallel.State.STALLED:
+ if self.trace:
+ self.trace_message("Search already in progress, waiting")
+ self.can_search_cv.wait()
+
+ # If someone set the completed flag, bail.
+ if self.state == NewParallel.State.COMPLETED:
+ if self.trace:
+ self.trace_message("Completion detected, breaking from main loop")
+ break
+
+ # Set the searching flag to indicate that a thread
+ # is currently in the critical section for
+ # taskmaster work.
+ #
+ if self.trace:
+ self.trace_message("Starting search")
+ self.state = NewParallel.State.SEARCHING
+
+ # Bulk acquire the tasks in the results queue
+ # under the result queue lock, then process them
+ # all outside that lock. We need to process the
+ # tasks in the results queue before looking for
+ # new work because we might be unable to find new
+ # work if we don't.
+ results_queue = []
+ with self.results_queue_lock:
+ results_queue, self.results_queue = self.results_queue, results_queue
+
+ if self.trace:
+ self.trace_message(f"Found {len(results_queue)} completed tasks to process")
+ for (rtask, rresult) in results_queue:
+ if rresult:
+ rtask.executed()
+ else:
+ if self.interrupted():
+ try:
+ raise SCons.Errors.BuildError(
+ rtask.targets[0], errstr=interrupt_msg)
+ except Exception:
+ rtask.exception_set()
+
+ # Let the failed() callback function arrange
+ # for the build to stop if that's appropriate.
+ rtask.failed()
+
+ rtask.postprocess()
+ self.jobs -= 1
+
+ # We are done with any task objects that were in
+ # the results queue.
+ results_queue.clear()
+
+ # Now, turn the crank on the taskmaster until we
+ # either run out of tasks, or find a task that
+ # needs execution. If we run out of tasks, go idle
+ # until results arrive if jobs are pending, or
+ # mark the walk as complete if not.
+ while self.state == NewParallel.State.SEARCHING:
+ if self.trace:
+ self.trace_message("Searching for new tasks")
+ task = self.taskmaster.next_task()
+
+ if task:
+ # We found a task. Walk it through the
+ # task lifecycle. If it does not need
+ # execution, just complete the task and
+ # look for the next one. Otherwise,
+ # indicate that we are no longer searching
+ # so we can drop out of this loop, execute
+ # the task outside the lock, and allow
+ # another thread in to search.
+ try:
+ task.prepare()
+ except Exception:
+ task.exception_set()
+ task.failed()
+ task.postprocess()
+ else:
+ if not task.needs_execute():
+ if self.trace:
+ self.trace_message("Found internal task")
+ task.executed()
+ task.postprocess()
+ else:
+ self.jobs += 1
+ if self.trace:
+ self.trace_message("Found task requiring execution")
+ self.state = NewParallel.State.READY
+ self.can_search_cv.notify()
+ # This thread will be busy taking care of
+ # `execute`ing this task. If we haven't
+ # reached the limit, spawn a new thread to
+ # turn the crank and find the next task.
+ self._maybe_start_worker()
+
+ else:
+ # We failed to find a task, so this thread
+ # cannot continue turning the taskmaster
+ # crank. We must exit the loop.
+ if self.jobs:
+ # No task was found, but there are
+ # outstanding jobs executing that
+ # might unblock new tasks when they
+ # complete. Transition to the stalled
+ # state. We do not need a notify,
+ # because we know there are threads
+ # outstanding that will re-enter the
+ # loop.
+ #
+ if self.trace:
+ self.trace_message("Found no task requiring execution, but have jobs: marking stalled")
+ self.state = NewParallel.State.STALLED
+ else:
+ # We didn't find a task and there are
+ # no jobs outstanding, so there is
+ # nothing that will ever return
+ # results which might unblock new
+ # tasks. We can conclude that the walk
+ # is complete. Update our state to
+ # note completion and awaken anyone
+ # sleeping on the condvar.
+ #
+ if self.trace:
+ self.trace_message("Found no task requiring execution, and have no jobs: marking complete")
+ self.state = NewParallel.State.COMPLETED
+ self.can_search_cv.notify_all()
+
+ # We no longer hold `tm_lock` here. If we have a task,
+ # we can now execute it. If there are threads waiting
+ # to search, one of them can now begin turning the
+ # taskmaster crank in NewParallel.
+ if task:
+ if self.trace:
+ self.trace_message("Executing task")
+ ok = True
+ try:
+ if self.interrupted():
+ raise SCons.Errors.BuildError(
+ task.targets[0], errstr=interrupt_msg)
+ task.execute()
+ except Exception:
+ ok = False
+ task.exception_set()
+
+ # Grab the results queue lock and enqueue the
+ # executed task and state. The next thread into
+ # the searching loop will complete the
+ # postprocessing work under the taskmaster lock.
+ #
+ if self.trace:
+ self.trace_message("Enqueueing executed task results")
+ with self.results_queue_lock:
+ self.results_queue.append((task, ok))
+
+ # Tricky state "fallthrough" here. We are going back
+ # to the top of the loop, which behaves differently
+ # depending on whether `task` is set. Do not perturb
+ # the value of the `task` variable if you add new code
+ # after this comment.
+
+# Local Variables:
+# tab-width:4
+# indent-tabs-mode:nil
+# End:
+# vim: set expandtab tabstop=4 shiftwidth=4:
diff --git a/scons/scons-local-4.5.2/SCons/Taskmaster/__init__.py b/scons/scons-local-4.7.0/SCons/Taskmaster/__init__.py
similarity index 97%
rename from scons/scons-local-4.5.2/SCons/Taskmaster/__init__.py
rename to scons/scons-local-4.7.0/SCons/Taskmaster/__init__.py
index 7ab864eee..4d768ee90 100644
--- a/scons/scons-local-4.5.2/SCons/Taskmaster/__init__.py
+++ b/scons/scons-local-4.7.0/SCons/Taskmaster/__init__.py
@@ -81,7 +81,7 @@ class Stats:
the Taskmaster records its decision each time it processes the Node.
(Ideally, that's just once per Node.)
"""
- def __init__(self):
+ def __init__(self) -> None:
"""
Instantiates a Taskmaster.Stats object, initializing all
appropriate counters to zero.
@@ -106,7 +106,7 @@ fmt = "%(considered)3d "\
"%(build)3d "
-def dump_stats():
+def dump_stats() -> None:
for n in sorted(StatsNodes, key=lambda a: str(a)):
print((fmt % n.attributes.stats.__dict__) + str(n))
@@ -132,19 +132,19 @@ class Task(ABC):
LOGGER = None
- def __init__(self, tm, targets, top, node):
+ def __init__(self, tm, targets, top, node) -> None:
self.tm = tm
self.targets = targets
self.top = top
self.node = node
self.exc_clear()
- def trace_message(self, node, description='node'):
+ def trace_message(self, node, description: str='node') -> None:
# This grabs the name of the function which calls trace_message()
method_name=sys._getframe(1).f_code.co_name+"():"
Task.LOGGER.debug('%-15s %s %s' % (method_name, description, self.tm.tm_trace_node(node)))
- def display(self, message):
+ def display(self, message) -> None:
"""
Hook to allow the calling interface to display a message.
@@ -157,7 +157,7 @@ class Task(ABC):
"""
pass
- def prepare(self):
+ def prepare(self) -> None:
"""
Called just before the task is executed.
@@ -240,10 +240,12 @@ class Task(ABC):
for t in cached_targets:
try:
t.fs.unlink(t.get_internal_path())
- except (IOError, OSError) as e:
+ except OSError as e:
SCons.Warnings.warn(SCons.Warnings.CacheCleanupErrorWarning,
"Failed copying all target files from cache, Error while attempting to remove file %s retrieved from cache: %s" % (t.get_internal_path(), e))
self.targets[0].build()
+ for t in self.targets:
+ t.push_to_cache()
else:
for t in cached_targets:
t.cached = 1
@@ -260,7 +262,7 @@ class Task(ABC):
buildError.exc_info = sys.exc_info()
raise buildError
- def executed_without_callbacks(self):
+ def executed_without_callbacks(self) -> None:
"""
Called when the task has been successfully executed
and the Taskmaster instance doesn't want to call
@@ -276,7 +278,7 @@ class Task(ABC):
side_effect.set_state(NODE_NO_STATE)
t.set_state(NODE_EXECUTED)
- def executed_with_callbacks(self):
+ def executed_with_callbacks(self) -> None:
"""
Called when the task has been successfully executed and
the Taskmaster instance wants to call the Node's callback
@@ -299,8 +301,6 @@ class Task(ABC):
for side_effect in t.side_effects:
side_effect.set_state(NODE_NO_STATE)
t.set_state(NODE_EXECUTED)
- if not t.cached:
- t.push_to_cache()
t.built()
t.visited()
if (not print_prepare and
@@ -311,7 +311,7 @@ class Task(ABC):
executed = executed_with_callbacks
- def failed(self):
+ def failed(self) -> None:
"""
Default action when a task fails: stop the build.
@@ -321,7 +321,7 @@ class Task(ABC):
"""
self.fail_stop()
- def fail_stop(self):
+ def fail_stop(self) -> None:
"""
Explicit stop-the-build failure.
@@ -349,7 +349,7 @@ class Task(ABC):
self.targets = [self.tm.current_top]
self.top = 1
- def fail_continue(self):
+ def fail_continue(self) -> None:
"""
Explicit continue-the-build failure.
@@ -366,7 +366,7 @@ class Task(ABC):
self.tm.will_not_build(self.targets, lambda n: n.set_state(NODE_FAILED))
- def make_ready_all(self):
+ def make_ready_all(self) -> None:
"""
Marks all targets in a task ready for execution.
@@ -404,7 +404,7 @@ class Task(ABC):
t.disambiguate().make_ready()
is_up_to_date = not t.has_builder() or \
(not t.always_build and t.is_up_to_date())
- except EnvironmentError as e:
+ except OSError as e:
raise SCons.Errors.BuildError(node=t, errstr=e.strerror, filename=e.filename)
if not is_up_to_date:
@@ -431,7 +431,7 @@ class Task(ABC):
make_ready = make_ready_current
- def postprocess(self):
+ def postprocess(self) -> None:
"""
Post-processes a task after it's been executed.
@@ -511,7 +511,7 @@ class Task(ABC):
"""
return self.exception
- def exc_clear(self):
+ def exc_clear(self) -> None:
"""
Clears any recorded exception.
@@ -521,7 +521,7 @@ class Task(ABC):
self.exception = (None, None, None)
self.exception_raise = self._no_exception_to_raise
- def exception_set(self, exception=None):
+ def exception_set(self, exception=None) -> None:
"""
Records an exception to be raised at the appropriate time.
@@ -533,7 +533,7 @@ class Task(ABC):
self.exception = exception
self.exception_raise = self._exception_raise
- def _no_exception_to_raise(self):
+ def _no_exception_to_raise(self) -> None:
pass
def _exception_raise(self):
@@ -563,7 +563,7 @@ class Task(ABC):
class AlwaysTask(Task):
- def needs_execute(self):
+ def needs_execute(self) -> bool:
"""
Always returns True (indicating this Task should always
be executed).
@@ -606,7 +606,7 @@ class Taskmaster:
The Taskmaster for walking the dependency DAG.
"""
- def __init__(self, targets=[], tasker=None, order=None, trace=None):
+ def __init__(self, targets=[], tasker=None, order=None, trace=None) -> None:
self.original_top = targets
self.top_targets_left = targets[:]
self.top_targets_left.reverse()
@@ -623,7 +623,7 @@ class Taskmaster:
self.trace = False
self.configure_trace(trace)
- def configure_trace(self, trace=None):
+ def configure_trace(self, trace=None) -> None:
"""
This handles the command line option --taskmastertrace=
It can be:
@@ -726,7 +726,7 @@ class Taskmaster:
self.will_not_build(candidates)
return None
- def _validate_pending_children(self):
+ def _validate_pending_children(self) -> None:
"""
Validate the content of the pending_children set. Assert if an
internal error is found.
@@ -803,7 +803,7 @@ class Taskmaster:
for p in n.waiting_parents:
assert p.ref_count > 0, (str(n), str(p), p.ref_count)
- def tm_trace_node(self, node):
+ def tm_trace_node(self, node) -> str:
return('<%-10s %-3s %s>' % (StateString[node.get_state()],
node.ref_count,
repr(str(node))))
@@ -1047,7 +1047,7 @@ class Taskmaster:
return task
- def will_not_build(self, nodes, node_func=lambda n: None):
+ def will_not_build(self, nodes, node_func=lambda n: None) -> None:
"""
Perform clean-up about nodes that will never be built. Invokes
a user defined function on all of these nodes (including all
@@ -1092,7 +1092,7 @@ class Taskmaster:
# allow us to use in-place updates
self.pending_children = pending_children
- def stop(self):
+ def stop(self) -> None:
"""
Stops the current build completely.
"""
diff --git a/scons/scons-local-4.5.2/SCons/Tool/386asm.py b/scons/scons-local-4.7.0/SCons/Tool/386asm.py
similarity index 98%
rename from scons/scons-local-4.5.2/SCons/Tool/386asm.py
rename to scons/scons-local-4.7.0/SCons/Tool/386asm.py
index 51738ebc1..f19f75810 100644
--- a/scons/scons-local-4.5.2/SCons/Tool/386asm.py
+++ b/scons/scons-local-4.7.0/SCons/Tool/386asm.py
@@ -39,7 +39,7 @@ import SCons.Util
as_module = __import__('as', globals(), locals(), [], 1)
-def generate(env):
+def generate(env) -> None:
"""Add Builders and construction variables for ar to an Environment."""
as_module.generate(env)
diff --git a/scons/scons-local-4.5.2/SCons/Tool/DCommon.py b/scons/scons-local-4.7.0/SCons/Tool/DCommon.py
similarity index 65%
rename from scons/scons-local-4.5.2/SCons/Tool/DCommon.py
rename to scons/scons-local-4.7.0/SCons/Tool/DCommon.py
index 128e56165..35f8f3d6e 100644
--- a/scons/scons-local-4.5.2/SCons/Tool/DCommon.py
+++ b/scons/scons-local-4.7.0/SCons/Tool/DCommon.py
@@ -29,21 +29,22 @@ Coded by Russel Winder (russel@winder.org.uk)
2012-09-06
"""
+from pathlib import Path
import os.path
-def isD(env, source):
+def isD(env, source) -> bool:
if not source:
- return 0
+ return False
for s in source:
if s.sources:
ext = os.path.splitext(str(s.sources[0]))[1]
if ext == '.d':
- return 1
- return 0
+ return True
+ return False
-def addDPATHToEnv(env, executable):
+def addDPATHToEnv(env, executable) -> None:
dPath = env.WhereIs(executable)
if dPath:
phobosDir = dPath[:dPath.rindex(executable)] + '/../src/phobos'
@@ -57,6 +58,27 @@ def allAtOnceEmitter(target, source, env):
env.Clean(target[0], str(target[0]) + '.o')
return target, source
+def DObjectEmitter(target,source,env):
+ di_file_dir = env.get('DI_FILE_DIR', False)
+ # TODO: Verify sane DI_FILE_DIR?
+ if di_file_dir:
+ di_file_suffix = env.subst('$DI_FILE_SUFFIX', target=target, source=source)
+ file_base = Path(target[0].get_path()).stem
+ # print(f'DObjectEmitter: {di_file_dir}/*{file_base}*{di_file_suffix}')
+ target.append(env.fs.File(f"{file_base}{di_file_suffix}", di_file_dir))
+ # print("New Target:%s"%" ".join([str(t) for t in target]))
+ return (target,source)
+
+def DStaticObjectEmitter(target,source,env):
+ for tgt in target:
+ tgt.attributes.shared = None
+ return DObjectEmitter(target,source,env)
+
+def DSharedObjectEmitter(target,source,env):
+ for tgt in target:
+ tgt.attributes.shared = 1
+ return DObjectEmitter(target,source,env)
+
# Local Variables:
# tab-width:4
# indent-tabs-mode:nil
diff --git a/scons/scons-local-4.5.2/SCons/Tool/FortranCommon.py b/scons/scons-local-4.7.0/SCons/Tool/FortranCommon.py
similarity index 77%
rename from scons/scons-local-4.5.2/SCons/Tool/FortranCommon.py
rename to scons/scons-local-4.7.0/SCons/Tool/FortranCommon.py
index aff0f9238..f221d15ec 100644
--- a/scons/scons-local-4.5.2/SCons/Tool/FortranCommon.py
+++ b/scons/scons-local-4.7.0/SCons/Tool/FortranCommon.py
@@ -25,16 +25,17 @@
import re
import os.path
-from typing import Tuple
+from typing import Tuple, List
import SCons.Scanner.Fortran
import SCons.Tool
import SCons.Util
-from SCons.Action import Action
+from SCons.Action import Action, CommandAction
+from SCons.Defaults import StaticObjectEmitter, SharedObjectEmitter
def isfortran(env, source) -> bool:
- """Returns True if source has any fortran files in it.
+ """Returns True if *source* has any fortran files in it.
Only checks based on filename suffixes, does not examine code.
"""
@@ -62,14 +63,14 @@ def _fortranEmitter(target, source, env) -> Tuple:
Called by both the static and shared object emitters,
mainly to account for generated module files.
"""
-
node = source[0].rfile()
if not node.exists() and not node.is_derived():
- print("Could not locate " + str(node.name))
- return ([], [])
+ print("Could not locate " + str(node.name))
+ return [], []
+
# This has to match the def_regex in the Fortran scanner
mod_regex = r"""(?i)^\s*MODULE\s+(?!PROCEDURE|SUBROUTINE|FUNCTION|PURE|ELEMENTAL)(\w+)"""
- cre = re.compile(mod_regex,re.M)
+ cre = re.compile(mod_regex, re.M)
# Retrieve all USE'd module names
modules = cre.findall(node.get_text_contents())
# Remove unique items from the list
@@ -77,45 +78,48 @@ def _fortranEmitter(target, source, env) -> Tuple:
# Convert module name to a .mod filename
suffix = env.subst('$FORTRANMODSUFFIX', target=target, source=source)
moddir = env.subst('$FORTRANMODDIR', target=target, source=source)
- modules = [x.lower() + suffix for x in modules]
- for m in modules:
- target.append(env.fs.File(m, moddir))
- return (target, source)
+ modules = [mod.lower() + suffix for mod in modules]
+ for module in modules:
+ target.append(env.fs.File(module, moddir))
+ return target, source
def FortranEmitter(target, source, env) -> Tuple:
- import SCons.Defaults
+ """Create emitter for static objects."""
target, source = _fortranEmitter(target, source, env)
- return SCons.Defaults.StaticObjectEmitter(target, source, env)
+ return StaticObjectEmitter(target, source, env)
def ShFortranEmitter(target, source, env) -> Tuple:
- import SCons.Defaults
+ """Create emitter for shared objects."""
target, source = _fortranEmitter(target, source, env)
- return SCons.Defaults.SharedObjectEmitter(target, source, env)
+ return SharedObjectEmitter(target, source, env)
-def ComputeFortranSuffixes(suffixes, ppsuffixes) -> None:
+def ComputeFortranSuffixes(suffixes: List[str], ppsuffixes: List[str]) -> None:
"""Update the suffix lists to reflect the platform requirements.
If upper-cased suffixes can be distinguished from lower, those are
added to *ppsuffixes*. If not, they are added to *suffixes*.
Args:
- suffixes (list): indicate regular Fortran source files
- ppsuffixes (list): indicate Fortran source files that should be
+ suffixes: regular Fortran source files
+ ppsuffixes: Fortran source files that should be
be run through the pre-processor
"""
assert len(suffixes) > 0
s = suffixes[0]
sup = s.upper()
- upper_suffixes = [_.upper() for _ in suffixes]
+ upper_suffixes = [suf.upper() for suf in suffixes]
if SCons.Util.case_sensitive_suffixes(s, sup):
ppsuffixes.extend(upper_suffixes)
else:
suffixes.extend(upper_suffixes)
-def CreateDialectActions(dialect) -> Tuple[Action, Action, Action, Action]:
+
+def CreateDialectActions(
+ dialect: str,
+) -> Tuple[CommandAction, CommandAction, CommandAction, CommandAction]:
"""Create dialect specific actions."""
CompAction = Action(f'${dialect}COM ', cmdstr=f'${dialect}COMSTR')
CompPPAction = Action(f'${dialect}PPCOM ', cmdstr=f'${dialect}PPCOMSTR')
@@ -124,14 +128,20 @@ def CreateDialectActions(dialect) -> Tuple[Action, Action, Action, Action]:
return CompAction, CompPPAction, ShCompAction, ShCompPPAction
-def DialectAddToEnv(env, dialect, suffixes, ppsuffixes, support_mods=False) -> None:
+def DialectAddToEnv(
+ env,
+ dialect: str,
+ suffixes: List[str],
+ ppsuffixes: List[str],
+ support_mods: bool = False,
+) -> None:
"""Add dialect specific construction variables.
Args:
- dialect (str): dialect name
- suffixes (list): suffixes associated with this dialect
- ppsuffixes (list): suffixes using cpp associated with this dialect
- support_mods (bool): whether this dialect supports modules
+ dialect: dialect name
+ suffixes: suffixes associated with this dialect
+ ppsuffixes: suffixes using cpp associated with this dialect
+ support_mods: whether this dialect supports modules
"""
ComputeFortranSuffixes(suffixes, ppsuffixes)
@@ -184,16 +194,8 @@ def DialectAddToEnv(env, dialect, suffixes, ppsuffixes, support_mods=False) -> N
def add_fortran_to_env(env) -> None:
"""Add Builders and construction variables for Fortran/generic."""
- try:
- FortranSuffixes = env['FORTRANFILESUFFIXES']
- except KeyError:
- FortranSuffixes = ['.f', '.for', '.ftn']
-
- try:
- FortranPPSuffixes = env['FORTRANPPFILESUFFIXES']
- except KeyError:
- FortranPPSuffixes = ['.fpp', '.FPP']
-
+ FortranSuffixes = env.get('FORTRANFILESUFFIXES', ['.f', '.for', '.ftn'])
+ FortranPPSuffixes = env.get('FORTRANPPFILESUFFIXES', ['.fpp', '.FPP'])
DialectAddToEnv(env, "FORTRAN", FortranSuffixes, FortranPPSuffixes, support_mods=True)
# Module support
@@ -206,72 +208,32 @@ def add_fortran_to_env(env) -> None:
def add_f77_to_env(env) -> None:
"""Add Builders and construction variables for f77 dialect."""
- try:
- F77Suffixes = env['F77FILESUFFIXES']
- except KeyError:
- F77Suffixes = ['.f77']
-
- try:
- F77PPSuffixes = env['F77PPFILESUFFIXES']
- except KeyError:
- F77PPSuffixes = []
-
+ F77Suffixes = env.get('F77FILESUFFIXES', ['.f77'])
+ F77PPSuffixes = env.get('F77PPFILESUFFIXES', [])
DialectAddToEnv(env, "F77", F77Suffixes, F77PPSuffixes)
def add_f90_to_env(env) -> None:
"""Add Builders and construction variables for f90 dialect."""
- try:
- F90Suffixes = env['F90FILESUFFIXES']
- except KeyError:
- F90Suffixes = ['.f90']
-
- try:
- F90PPSuffixes = env['F90PPFILESUFFIXES']
- except KeyError:
- F90PPSuffixes = []
-
+ F90Suffixes = env.get('F90FILESUFFIXES', ['.f90'])
+ F90PPSuffixes = env.get('F90PPFILESUFFIXES', [])
DialectAddToEnv(env, "F90", F90Suffixes, F90PPSuffixes, support_mods=True)
def add_f95_to_env(env) -> None:
"""Add Builders and construction variables for f95 dialect."""
- try:
- F95Suffixes = env['F95FILESUFFIXES']
- except KeyError:
- F95Suffixes = ['.f95']
-
- try:
- F95PPSuffixes = env['F95PPFILESUFFIXES']
- except KeyError:
- F95PPSuffixes = []
-
+ F95Suffixes = env.get('F95FILESUFFIXES', ['.f95'])
+ F95PPSuffixes = env.get('F95PPFILESUFFIXES', [])
DialectAddToEnv(env, "F95", F95Suffixes, F95PPSuffixes, support_mods=True)
def add_f03_to_env(env) -> None:
"""Add Builders and construction variables for f03 dialect."""
- try:
- F03Suffixes = env['F03FILESUFFIXES']
- except KeyError:
- F03Suffixes = ['.f03']
-
- try:
- F03PPSuffixes = env['F03PPFILESUFFIXES']
- except KeyError:
- F03PPSuffixes = []
-
+ F03Suffixes = env.get('F03FILESUFFIXES', ['.f03'])
+ F03PPSuffixes = env.get('F03PPFILESUFFIXES', [])
DialectAddToEnv(env, "F03", F03Suffixes, F03PPSuffixes, support_mods=True)
def add_f08_to_env(env) -> None:
"""Add Builders and construction variables for f08 dialect."""
- try:
- F08Suffixes = env['F08FILESUFFIXES']
- except KeyError:
- F08Suffixes = ['.f08']
-
- try:
- F08PPSuffixes = env['F08PPFILESUFFIXES']
- except KeyError:
- F08PPSuffixes = []
-
+ F08Suffixes = env.get('F08FILESUFFIXES', ['.f08'])
+ F08PPSuffixes = env.get('F08PPFILESUFFIXES', [])
DialectAddToEnv(env, "F08", F08Suffixes, F08PPSuffixes, support_mods=True)
def add_all_to_env(env) -> None:
diff --git a/scons/scons-local-4.5.2/SCons/Tool/GettextCommon.py b/scons/scons-local-4.7.0/SCons/Tool/GettextCommon.py
similarity index 97%
rename from scons/scons-local-4.5.2/SCons/Tool/GettextCommon.py
rename to scons/scons-local-4.7.0/SCons/Tool/GettextCommon.py
index 058b9971e..ba9ce3102 100644
--- a/scons/scons-local-4.5.2/SCons/Tool/GettextCommon.py
+++ b/scons/scons-local-4.7.0/SCons/Tool/GettextCommon.py
@@ -82,8 +82,8 @@ class _POTargetFactory:
default for all produced nodes.
"""
- def __init__(self, env, nodefault=True, alias=None, precious=True
- , noclean=True):
+ def __init__(self, env, nodefault: bool=True, alias=None, precious: bool=True
+ , noclean: bool=True) -> None:
""" Object constructor.
**Arguments**
@@ -104,7 +104,7 @@ class _POTargetFactory:
self.noclean = noclean
self.nodefault = nodefault
- def _create_node(self, name, factory, directory=None, create=1):
+ def _create_node(self, name, factory, directory=None, create: int=1):
""" Create node, and set it up to factory settings. """
node = factory(name, directory, create)
node.set_noclean(self.noclean)
@@ -115,11 +115,11 @@ class _POTargetFactory:
self.env.AlwaysBuild(self.env.Alias(self.alias, node))
return node
- def Entry(self, name, directory=None, create=1):
+ def Entry(self, name, directory=None, create: int=1):
""" Create `SCons.Node.FS.Entry` """
return self._create_node(name, self.env.fs.Entry, directory, create)
- def File(self, name, directory=None, create=1):
+ def File(self, name, directory=None, create: int=1):
""" Create `SCons.Node.FS.File` """
return self._create_node(name, self.env.fs.File, directory, create)
@@ -191,7 +191,7 @@ class _POFileBuilder(BuilderBase):
# and execute iterativelly (recursion) self._execute(None, source[i]).
# After that it calls emitter (which is quite too late). The emitter is
# also called in each iteration, what makes things yet worse.
- def __init__(self, env, **kw):
+ def __init__(self, env, **kw) -> None:
if 'suffix' not in kw:
kw['suffix'] = '$POSUFFIX'
if 'src_suffix' not in kw:
@@ -300,7 +300,7 @@ class RPaths:
# seems be enough for our purposes (don't need TARGET variable and
# SCons.Defaults.Variable_Caller stuff).
- def __init__(self, env):
+ def __init__(self, env) -> None:
""" Initialize `RPaths` callable object.
**Arguments**:
diff --git a/scons/scons-local-4.5.2/SCons/Tool/JavaCommon.py b/scons/scons-local-4.7.0/SCons/Tool/JavaCommon.py
similarity index 95%
rename from scons/scons-local-4.5.2/SCons/Tool/JavaCommon.py
rename to scons/scons-local-4.7.0/SCons/Tool/JavaCommon.py
index adec1d3a7..c7e62b88c 100644
--- a/scons/scons-local-4.5.2/SCons/Tool/JavaCommon.py
+++ b/scons/scons-local-4.7.0/SCons/Tool/JavaCommon.py
@@ -29,6 +29,8 @@ import glob
from pathlib import Path
from typing import List
+import SCons.Util
+
java_parsing = True
default_java_version = '1.4'
@@ -100,7 +102,7 @@ if java_parsing:
"""The initial state for parsing a Java file for classes,
interfaces, and anonymous inner classes."""
- def __init__(self, version=default_java_version):
+ def __init__(self, version=default_java_version) -> None:
if version not in (
'1.1',
'1.2',
@@ -121,6 +123,10 @@ if java_parsing:
'15.0',
'16.0',
'17.0',
+ '18.0',
+ '19.0',
+ '20.0',
+ '21.0',
):
msg = "Java version %s not supported" % version
raise NotImplementedError(msg)
@@ -136,7 +142,7 @@ if java_parsing:
self.anonStacksStack = [[0]]
self.package = None
- def trace(self):
+ def trace(self) -> None:
pass
def __getClassState(self):
@@ -175,10 +181,10 @@ if java_parsing:
def _getAnonStack(self):
return self.anonStacksStack[-1]
- def openBracket(self):
+ def openBracket(self) -> None:
self.brackets = self.brackets + 1
- def closeBracket(self):
+ def closeBracket(self) -> None:
self.brackets = self.brackets - 1
if len(self.stackBrackets) and \
self.brackets == self.stackBrackets[-1]:
@@ -223,7 +229,7 @@ if java_parsing:
return self.__getSkipState()
return self
- def addAnonClass(self):
+ def addAnonClass(self) -> None:
"""Add an anonymous inner class"""
if self.version in ('1.1', '1.2', '1.3', '1.4'):
clazz = self.listClasses[0]
@@ -245,6 +251,10 @@ if java_parsing:
'15.0',
'16.0',
'17.0',
+ '18.0',
+ '19.0',
+ '20.0',
+ '21.0',
):
self.stackAnonClassBrackets.append(self.brackets)
className = []
@@ -257,7 +267,7 @@ if java_parsing:
self.nextAnon = self.nextAnon + 1
self._getAnonStack().append(0)
- def setPackage(self, package):
+ def setPackage(self, package) -> None:
self.package = package
@@ -267,7 +277,7 @@ if java_parsing:
within the confines of a scope.
"""
- def __init__(self, old_state):
+ def __init__(self, old_state) -> None:
self.outer_state = old_state.outer_state
self.old_state = old_state
self.brackets = 0
@@ -296,10 +306,10 @@ if java_parsing:
self.skipState = ret
return ret
- def openBracket(self):
+ def openBracket(self) -> None:
self.brackets = self.brackets + 1
- def closeBracket(self):
+ def closeBracket(self) -> None:
self.brackets = self.brackets - 1
def parseToken(self, token):
@@ -332,7 +342,7 @@ if java_parsing:
class AnonClassState:
"""A state that looks for anonymous inner classes."""
- def __init__(self, old_state):
+ def __init__(self, old_state) -> None:
# outer_state is always an instance of OuterState
self.outer_state = old_state.outer_state
self.old_state = old_state
@@ -373,7 +383,7 @@ if java_parsing:
"""A state that will skip a specified number of tokens before
reverting to the previous state."""
- def __init__(self, tokens_to_skip, old_state):
+ def __init__(self, tokens_to_skip, old_state) -> None:
self.tokens_to_skip = tokens_to_skip
self.old_state = old_state
@@ -387,7 +397,7 @@ if java_parsing:
class ClassState:
"""A state we go into when we hit a class or interface keyword."""
- def __init__(self, outer_state):
+ def __init__(self, outer_state) -> None:
# outer_state is always an instance of OuterState
self.outer_state = outer_state
@@ -419,7 +429,7 @@ if java_parsing:
"""A state that will ignore all tokens until it gets to a
specified token."""
- def __init__(self, ignore_until, old_state):
+ def __init__(self, ignore_until, old_state) -> None:
self.ignore_until = ignore_until
self.old_state = old_state
@@ -433,7 +443,7 @@ if java_parsing:
"""The state we enter when we encounter the package keyword.
We assume the next token will be the package name."""
- def __init__(self, outer_state):
+ def __init__(self, outer_state) -> None:
# outer_state is always an instance of OuterState
self.outer_state = outer_state
@@ -443,8 +453,8 @@ if java_parsing:
def parse_java_file(fn, version=default_java_version):
- with open(fn, 'r', encoding='utf-8') as f:
- data = f.read()
+ with open(fn, "rb") as f:
+ data = SCons.Util.to_Text(f.read())
return parse_java(data, version)
@@ -471,7 +481,7 @@ else:
# Java-file parsing takes too long (although it shouldn't relative
# to how long the Java compiler itself seems to take...).
- def parse_java_file(fn):
+ def parse_java_file(fn, version=default_java_version):
""" "Parse" a .java file.
This actually just splits the file name, so the assumption here
@@ -511,7 +521,7 @@ def get_java_install_dirs(platform, version=None) -> List[str]:
extracts the next-to-last component, then trims it further if
it had a complex name, like 'java-1.8.0-openjdk-1.8.0.312-1',
to try and put it on a common footing with the more common style,
- which looks like 'jdk-11.0.2'.
+ which looks like 'jdk-11.0.2'.
This is certainly fragile, and if someone has a 9.0 it won't
sort right since this will still be alphabetic, BUT 9.0 was
diff --git a/scons/scons-local-4.5.2/SCons/Tool/MSCommon/MSVC/Dispatcher.py b/scons/scons-local-4.7.0/SCons/Tool/MSCommon/MSVC/Dispatcher.py
similarity index 96%
rename from scons/scons-local-4.5.2/SCons/Tool/MSCommon/MSVC/Dispatcher.py
rename to scons/scons-local-4.7.0/SCons/Tool/MSCommon/MSVC/Dispatcher.py
index 42b5287b0..31233a969 100644
--- a/scons/scons-local-4.5.2/SCons/Tool/MSCommon/MSVC/Dispatcher.py
+++ b/scons/scons-local-4.7.0/SCons/Tool/MSCommon/MSVC/Dispatcher.py
@@ -53,16 +53,16 @@ from ..common import (
_refs = []
-def register_modulename(modname):
+def register_modulename(modname) -> None:
module = sys.modules[modname]
_refs.append(module)
-def register_class(ref):
+def register_class(ref) -> None:
_refs.append(ref)
-def reset():
+def reset() -> None:
debug('')
for ref in _refs:
for method in ['reset', '_reset']:
@@ -73,7 +73,7 @@ def reset():
func()
-def verify():
+def verify() -> None:
debug('')
for ref in _refs:
for method in ['verify', '_verify']:
diff --git a/scons/scons-local-4.5.2/SCons/Tool/MSCommon/MSVC/Exceptions.py b/scons/scons-local-4.7.0/SCons/Tool/MSCommon/MSVC/Exceptions.py
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/MSCommon/MSVC/Exceptions.py
rename to scons/scons-local-4.7.0/SCons/Tool/MSCommon/MSVC/Exceptions.py
diff --git a/scons/scons-local-4.5.2/SCons/Tool/MSCommon/MSVC/Policy.py b/scons/scons-local-4.7.0/SCons/Tool/MSCommon/MSVC/Policy.py
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/MSCommon/MSVC/Policy.py
rename to scons/scons-local-4.7.0/SCons/Tool/MSCommon/MSVC/Policy.py
diff --git a/scons/scons-local-4.5.2/SCons/Tool/MSCommon/MSVC/Registry.py b/scons/scons-local-4.7.0/SCons/Tool/MSCommon/MSVC/Registry.py
similarity index 91%
rename from scons/scons-local-4.5.2/SCons/Tool/MSCommon/MSVC/Registry.py
rename to scons/scons-local-4.7.0/SCons/Tool/MSCommon/MSVC/Registry.py
index 9519e1553..f9e544c6f 100644
--- a/scons/scons-local-4.5.2/SCons/Tool/MSCommon/MSVC/Registry.py
+++ b/scons/scons-local-4.7.0/SCons/Tool/MSCommon/MSVC/Registry.py
@@ -46,7 +46,7 @@ Dispatcher.register_modulename(__name__)
# A null-terminated string that contains unexpanded references to environment variables.
REG_EXPAND_SZ = 2
-def read_value(hkey, subkey_valname, expand=True):
+def read_value(hkey, subkey_valname, expand: bool=True):
try:
rval_t = RegGetValue(hkey, subkey_valname)
except OSError:
@@ -58,11 +58,11 @@ def read_value(hkey, subkey_valname, expand=True):
debug('hkey=%s, subkey=%s, rval=%s', repr(hkey), repr(subkey_valname), repr(rval))
return rval
-def registry_query_path(key, val, suffix, expand=True):
+def registry_query_path(key, val, suffix, expand: bool=True):
extval = val + '\\' + suffix if suffix else val
qpath = read_value(key, extval, expand=expand)
if qpath and os.path.exists(qpath):
- qpath = Util.process_path(qpath)
+ qpath = Util.normalize_path(qpath)
else:
qpath = None
return (qpath, key, val, extval)
@@ -74,20 +74,20 @@ REG_SOFTWARE_MICROSOFT = [
(HKEY_CURRENT_USER, r'Software\Microsoft'),
]
-def microsoft_query_paths(suffix, usrval=None, expand=True):
+def microsoft_query_paths(suffix, usrval=None, expand: bool=True):
paths = []
records = []
for key, val in REG_SOFTWARE_MICROSOFT:
extval = val + '\\' + suffix if suffix else val
qpath = read_value(key, extval, expand=expand)
if qpath and os.path.exists(qpath):
- qpath = Util.process_path(qpath)
+ qpath = Util.normalize_path(qpath)
if qpath not in paths:
paths.append(qpath)
records.append((qpath, key, val, extval, usrval))
return records
-def microsoft_query_keys(suffix, usrval=None, expand=True):
+def microsoft_query_keys(suffix, usrval=None, expand: bool=True):
records = []
for key, val in REG_SOFTWARE_MICROSOFT:
extval = val + '\\' + suffix if suffix else val
diff --git a/scons/scons-local-4.5.2/SCons/Tool/MSCommon/MSVC/ScriptArguments.py b/scons/scons-local-4.7.0/SCons/Tool/MSCommon/MSVC/ScriptArguments.py
similarity index 95%
rename from scons/scons-local-4.5.2/SCons/Tool/MSCommon/MSVC/ScriptArguments.py
rename to scons/scons-local-4.7.0/SCons/Tool/MSCommon/MSVC/ScriptArguments.py
index 57dbf9d3f..8848095cf 100644
--- a/scons/scons-local-4.5.2/SCons/Tool/MSCommon/MSVC/ScriptArguments.py
+++ b/scons/scons-local-4.7.0/SCons/Tool/MSCommon/MSVC/ScriptArguments.py
@@ -73,7 +73,7 @@ def _verify_re_sdk_dispatch_map():
for sdk_version in Config.MSVC_SDK_VERSIONS:
if sdk_version in re_sdk_dispatch_map:
continue
- err_msg = 'sdk version {} not in re_sdk_dispatch_map'.format(sdk_version)
+ err_msg = f'sdk version {sdk_version} not in re_sdk_dispatch_map'
raise MSVCInternalError(err_msg)
return None
@@ -107,12 +107,12 @@ _MSVC_FORCE_DEFAULT_TOOLSET = False
# Force default arguments
_MSVC_FORCE_DEFAULT_ARGUMENTS = False
-def _msvc_force_default_sdk(force=True):
+def _msvc_force_default_sdk(force: bool=True) -> None:
global _MSVC_FORCE_DEFAULT_SDK
_MSVC_FORCE_DEFAULT_SDK = force
debug('_MSVC_FORCE_DEFAULT_SDK=%s', repr(force))
-def _msvc_force_default_toolset(force=True):
+def _msvc_force_default_toolset(force: bool=True) -> None:
global _MSVC_FORCE_DEFAULT_TOOLSET
_MSVC_FORCE_DEFAULT_TOOLSET = force
debug('_MSVC_FORCE_DEFAULT_TOOLSET=%s', repr(force))
@@ -227,7 +227,7 @@ def _msvc_script_argument_uwp(env, msvc, arglist):
return uwp_arg
-def _user_script_argument_uwp(env, uwp, user_argstr):
+def _user_script_argument_uwp(env, uwp, user_argstr) -> bool:
matches = [m for m in re_vcvars_uwp.finditer(user_argstr)]
if not matches:
@@ -235,7 +235,7 @@ def _user_script_argument_uwp(env, uwp, user_argstr):
if len(matches) > 1:
debug('multiple uwp declarations: MSVC_SCRIPT_ARGS=%s', repr(user_argstr))
- err_msg = "multiple uwp declarations: MSVC_SCRIPT_ARGS={}".format(repr(user_argstr))
+ err_msg = f"multiple uwp declarations: MSVC_SCRIPT_ARGS={user_argstr!r}"
raise MSVCArgumentError(err_msg)
if not uwp:
@@ -270,7 +270,7 @@ def _msvc_script_argument_sdk_constraints(msvc, sdk_version):
return None
debug('invalid: method exit: sdk_version=%s', repr(sdk_version))
- err_msg = "MSVC_SDK_VERSION ({}) is not supported".format(repr(sdk_version))
+ err_msg = f"MSVC_SDK_VERSION ({sdk_version!r}) is not supported"
return err_msg
def _msvc_script_argument_sdk_platform_constraints(msvc, toolset, sdk_version, platform_def):
@@ -331,7 +331,7 @@ def _msvc_script_argument_sdk(env, msvc, toolset, platform_def, arglist):
return sdk_version
-def _msvc_script_default_sdk(env, msvc, platform_def, arglist, force_sdk=False):
+def _msvc_script_default_sdk(env, msvc, platform_def, arglist, force_sdk: bool=False):
if msvc.vs_def.vc_buildtools_def.vc_version_numeric < VS2015.vc_buildtools_def.vc_version_numeric:
return None
@@ -361,7 +361,7 @@ def _user_script_argument_sdk(env, sdk_version, user_argstr):
if len(matches) > 1:
debug('multiple sdk version declarations: MSVC_SCRIPT_ARGS=%s', repr(user_argstr))
- err_msg = "multiple sdk version declarations: MSVC_SCRIPT_ARGS={}".format(repr(user_argstr))
+ err_msg = f"multiple sdk version declarations: MSVC_SCRIPT_ARGS={user_argstr!r}"
raise MSVCArgumentError(err_msg)
if not sdk_version:
@@ -390,7 +390,7 @@ def _msvc_have140_toolset():
return _toolset_have140_cache
-def _reset_have140_cache():
+def _reset_have140_cache() -> None:
global _toolset_have140_cache
debug('reset: cache')
_toolset_have140_cache = None
@@ -434,7 +434,7 @@ def _msvc_read_toolset_folders(msvc, vc_dir):
sxs_folder, sxs_version = _msvc_sxs_toolset_folder(msvc, sxs_folder)
if not sxs_version:
continue
- filename = 'Microsoft.VCToolsVersion.{}.txt'.format(sxs_folder)
+ filename = f'Microsoft.VCToolsVersion.{sxs_folder}.txt'
filepath = os.path.join(sxs_path, filename)
debug('sxs toolset: check file=%s', repr(filepath))
if os.path.exists(filepath):
@@ -496,7 +496,7 @@ def _msvc_read_toolset_default(msvc, vc_dir):
build_dir = os.path.join(vc_dir, "Auxiliary", "Build")
# VS2019+
- filename = "Microsoft.VCToolsVersion.{}.default.txt".format(msvc.vs_def.vc_buildtools_def.vc_buildtools)
+ filename = f"Microsoft.VCToolsVersion.{msvc.vs_def.vc_buildtools_def.vc_buildtools}.default.txt"
filepath = os.path.join(build_dir, filename)
debug('default toolset: check file=%s', repr(filepath))
@@ -520,7 +520,7 @@ def _msvc_read_toolset_default(msvc, vc_dir):
_toolset_version_cache = {}
_toolset_default_cache = {}
-def _reset_toolset_cache():
+def _reset_toolset_cache() -> None:
global _toolset_version_cache
global _toolset_default_cache
debug('reset: toolset cache')
@@ -639,7 +639,7 @@ def _msvc_script_argument_toolset_constraints(msvc, toolset_version):
return None
debug('invalid: method exit: toolset_version=%s', repr(toolset_version))
- err_msg = "MSVC_TOOLSET_VERSION ({}) format is not supported".format(repr(toolset_version))
+ err_msg = f"MSVC_TOOLSET_VERSION ({toolset_version!r}) format is not supported"
return err_msg
def _msvc_script_argument_toolset_vcvars(msvc, toolset_version, vc_dir):
@@ -681,12 +681,12 @@ def _msvc_script_argument_toolset(env, msvc, vc_dir, arglist):
toolset_vcvars = _msvc_script_argument_toolset_vcvars(msvc, toolset_version, vc_dir)
# toolset may not be installed for host/target
- argpair = (SortOrder.TOOLSET, '-vcvars_ver={}'.format(toolset_vcvars))
+ argpair = (SortOrder.TOOLSET, f'-vcvars_ver={toolset_vcvars}')
arglist.append(argpair)
return toolset_vcvars
-def _msvc_script_default_toolset(env, msvc, vc_dir, arglist, force_toolset=False):
+def _msvc_script_default_toolset(env, msvc, vc_dir, arglist, force_toolset: bool=False):
if msvc.vs_def.vc_buildtools_def.vc_version_numeric < VS2017.vc_buildtools_def.vc_version_numeric:
return None
@@ -698,7 +698,7 @@ def _msvc_script_default_toolset(env, msvc, vc_dir, arglist, force_toolset=False
debug('MSVC_VERSION=%s, toolset_default=%s', repr(msvc.version), repr(toolset_default))
if force_toolset:
- argpair = (SortOrder.TOOLSET, '-vcvars_ver={}'.format(toolset_default))
+ argpair = (SortOrder.TOOLSET, f'-vcvars_ver={toolset_default}')
arglist.append(argpair)
return toolset_default
@@ -711,7 +711,7 @@ def _user_script_argument_toolset(env, toolset_version, user_argstr):
if len(matches) > 1:
debug('multiple toolset version declarations: MSVC_SCRIPT_ARGS=%s', repr(user_argstr))
- err_msg = "multiple toolset version declarations: MSVC_SCRIPT_ARGS={}".format(repr(user_argstr))
+ err_msg = f"multiple toolset version declarations: MSVC_SCRIPT_ARGS={user_argstr!r}"
raise MSVCArgumentError(err_msg)
if not toolset_version:
@@ -799,7 +799,7 @@ def _msvc_script_argument_spectre(env, msvc, vc_dir, toolset, platform_def, argl
spectre_arg = 'spectre'
# spectre libs may not be installed for host/target
- argpair = (SortOrder.SPECTRE, '-vcvars_spectre_libs={}'.format(spectre_arg))
+ argpair = (SortOrder.SPECTRE, f'-vcvars_spectre_libs={spectre_arg}')
arglist.append(argpair)
return spectre_arg
@@ -812,7 +812,7 @@ def _user_script_argument_spectre(env, spectre, user_argstr):
if len(matches) > 1:
debug('multiple spectre declarations: MSVC_SCRIPT_ARGS=%s', repr(user_argstr))
- err_msg = "multiple spectre declarations: MSVC_SCRIPT_ARGS={}".format(repr(user_argstr))
+ err_msg = f"multiple spectre declarations: MSVC_SCRIPT_ARGS={user_argstr!r}"
raise MSVCArgumentError(err_msg)
if not spectre:
@@ -853,7 +853,7 @@ def _msvc_script_argument_user(env, msvc, arglist):
return script_args
-def _msvc_process_construction_variables(env):
+def _msvc_process_construction_variables(env) -> bool:
for cache_variable in [
_MSVC_FORCE_DEFAULT_TOOLSET,
@@ -982,7 +982,7 @@ def _msvc_toolset_internal(msvc_version, toolset_version, vc_dir):
return toolset_vcvars
-def _msvc_toolset_versions_internal(msvc_version, vc_dir, full=True, sxs=False):
+def _msvc_toolset_versions_internal(msvc_version, vc_dir, full: bool=True, sxs: bool=False):
msvc = _msvc_version(msvc_version)
@@ -1020,12 +1020,12 @@ def _msvc_toolset_versions_spectre_internal(msvc_version, vc_dir):
return spectre_toolset_versions
-def reset():
+def reset() -> None:
debug('')
_reset_have140_cache()
_reset_toolset_cache()
-def verify():
+def verify() -> None:
debug('')
_verify_re_sdk_dispatch_map()
diff --git a/scons/scons-local-4.5.2/SCons/Tool/MSCommon/MSVC/SetupEnvDefault.py b/scons/scons-local-4.7.0/SCons/Tool/MSCommon/MSVC/SetupEnvDefault.py
similarity index 87%
rename from scons/scons-local-4.5.2/SCons/Tool/MSCommon/MSVC/SetupEnvDefault.py
rename to scons/scons-local-4.7.0/SCons/Tool/MSCommon/MSVC/SetupEnvDefault.py
index e1c05bc1b..76b9ed654 100644
--- a/scons/scons-local-4.5.2/SCons/Tool/MSCommon/MSVC/SetupEnvDefault.py
+++ b/scons/scons-local-4.7.0/SCons/Tool/MSCommon/MSVC/SetupEnvDefault.py
@@ -54,7 +54,7 @@ class _Data:
need_init = True
@classmethod
- def reset(cls):
+ def reset(cls) -> None:
debug('msvc default:init')
cls.n_setup = 0 # number of calls to msvc_setup_env_once
cls.default_ismsvc = False # is msvc the default compiler
@@ -65,7 +65,7 @@ class _Data:
cls.msvc_nodefault = False # is there a default version of msvc
cls.need_init = True # reset initialization indicator
-def _initialize(env, msvc_exists_func):
+def _initialize(env, msvc_exists_func) -> None:
if _Data.need_init:
_Data.reset()
_Data.need_init = False
@@ -88,7 +88,7 @@ def register_tool(env, tool, msvc_exists_func):
_Data.msvc_tools.add(tool)
debug('msvc default:tool=%s, msvc_tools=%s', tool, _Data.msvc_tools)
-def register_setup(env, msvc_exists_func):
+def register_setup(env, msvc_exists_func) -> None:
if _Data.need_init:
_initialize(env, msvc_exists_func)
_Data.n_setup += 1
@@ -106,7 +106,7 @@ def register_setup(env, msvc_exists_func):
_Data.n_setup, _Data.msvc_installed, _Data.default_ismsvc
)
-def set_nodefault():
+def set_nodefault() -> None:
# default msvc version, msvc not installed
_Data.msvc_nodefault = True
debug('msvc default:msvc_nodefault=%s', _Data.msvc_nodefault)
@@ -188,19 +188,22 @@ def register_iserror(env, tool, msvc_exists_func):
debug('msvc default:check tools:nchar=%d, tools=%s', tools_nchar, tools)
# iteratively remove default tool sequences (longest to shortest)
- re_nchar_min, re_tools_min = _Data.default_tools_re_list[-1]
- if tools_nchar >= re_nchar_min and re_tools_min.search(tools):
- # minimum characters satisfied and minimum pattern exists
- for re_nchar, re_default_tool in _Data.default_tools_re_list:
- if tools_nchar < re_nchar:
- # not enough characters for pattern
- continue
- tools = re_default_tool.sub('', tools).strip(_Data.separator)
- tools_nchar = len(tools)
- debug('msvc default:check tools:nchar=%d, tools=%s', tools_nchar, tools)
- if tools_nchar < re_nchar_min or not re_tools_min.search(tools):
- # less than minimum characters or minimum pattern does not exist
- break
+ if not _Data.default_tools_re_list:
+ debug('default_tools_re_list=%s', _Data.default_tools_re_list)
+ else:
+ re_nchar_min, re_tools_min = _Data.default_tools_re_list[-1]
+ if tools_nchar >= re_nchar_min and re_tools_min.search(tools):
+ # minimum characters satisfied and minimum pattern exists
+ for re_nchar, re_default_tool in _Data.default_tools_re_list:
+ if tools_nchar < re_nchar:
+ # not enough characters for pattern
+ continue
+ tools = re_default_tool.sub('', tools).strip(_Data.separator)
+ tools_nchar = len(tools)
+ debug('msvc default:check tools:nchar=%d, tools=%s', tools_nchar, tools)
+ if tools_nchar < re_nchar_min or not re_tools_min.search(tools):
+ # less than minimum characters or minimum pattern does not exist
+ break
# construct non-default list(s) tools set
tools_set = {msvc_tool for msvc_tool in tools.split(_Data.separator) if msvc_tool}
@@ -227,7 +230,7 @@ def register_iserror(env, tool, msvc_exists_func):
# return tool list in order presented
return tools_found_list
-def reset():
+def reset() -> None:
debug('')
_Data.reset()
diff --git a/scons/scons-local-4.5.2/SCons/Tool/MSCommon/MSVC/Util.py b/scons/scons-local-4.7.0/SCons/Tool/MSCommon/MSVC/Util.py
similarity index 80%
rename from scons/scons-local-4.5.2/SCons/Tool/MSCommon/MSVC/Util.py
rename to scons/scons-local-4.7.0/SCons/Tool/MSCommon/MSVC/Util.py
index 4b487da0e..6fd188bc3 100644
--- a/scons/scons-local-4.5.2/SCons/Tool/MSCommon/MSVC/Util.py
+++ b/scons/scons-local-4.7.0/SCons/Tool/MSCommon/MSVC/Util.py
@@ -26,16 +26,25 @@ Helper functions for Microsoft Visual C/C++.
"""
import os
+import pathlib
import re
from collections import (
namedtuple,
)
+from ..common import debug
+
from . import Config
# path utilities
+# windows drive specification (e.g., 'C:')
+_RE_DRIVESPEC = re.compile(r'^[A-Za-z][:]$', re.IGNORECASE)
+
+# windows path separators
+_OS_PATH_SEPS = (os.path.sep, os.path.altsep) if os.path.altsep else (os.path.sep,)
+
def listdir_dirs(p):
"""
Return a list of tuples for each subdirectory of the given directory path.
@@ -57,22 +66,92 @@ def listdir_dirs(p):
dirs.append((dir_name, dir_path))
return dirs
-def process_path(p):
+def resolve_path(p, ignore_drivespec=True):
"""
- Normalize a system path
+ Make path absolute resolving any symlinks
Args:
p: str
system path
+ ignore_drivespec: bool
+ ignore drive specifications when True
Returns:
- str: normalized system path
+ str: absolute path with symlinks resolved
"""
+
if p:
+
+ if ignore_drivespec and _RE_DRIVESPEC.match(p):
+ # don't attempt to resolve drive specification (e.g., C:)
+ pass
+ else:
+ # both abspath and resolve necessary for an unqualified file name
+ # on a mapped network drive in order to return a mapped drive letter
+ # path rather than a UNC path.
+ p = os.path.abspath(p)
+ try:
+ p = str(pathlib.Path(p).resolve())
+ except OSError as e:
+ debug(
+ 'caught exception: path=%s, exception=%s(%s)',
+ repr(p), type(e).__name__, repr(str(e))
+ )
+
+ return p
+
+def normalize_path(
+ p,
+ strip=True,
+ preserve_trailing=False,
+ expand=False,
+ realpath=True,
+ ignore_drivespec=True,
+):
+ """
+ Normalize path
+
+ Args:
+ p: str
+ system path
+ strip: bool
+ remove leading and trailing whitespace when True
+ preserve_trailing: bool
+ preserve trailing path separator when True
+ expand: bool
+ apply expanduser and expandvars when True
+ realpath: bool
+ make the path absolute resolving any symlinks when True
+ ignore_drivespec: bool
+ ignore drive specifications for realpath when True
+
+ Returns:
+ str: normalized path
+
+ """
+
+ if p and strip:
+ p = p.strip()
+
+ if p:
+
+ trailing = bool(preserve_trailing and p.endswith(_OS_PATH_SEPS))
+
+ if expand:
+ p = os.path.expanduser(p)
+ p = os.path.expandvars(p)
+
p = os.path.normpath(p)
- p = os.path.realpath(p)
+
+ if realpath:
+ p = resolve_path(p, ignore_drivespec=ignore_drivespec)
+
p = os.path.normcase(p)
+
+ if trailing:
+ p += os.path.sep
+
return p
# msvc version and msvc toolset version regexes
@@ -157,21 +236,21 @@ def get_msvc_version_prefix(version):
# toolset version query utilities
-def is_toolset_full(toolset_version):
+def is_toolset_full(toolset_version) -> bool:
rval = False
if toolset_version:
if re_toolset_full.match(toolset_version):
rval = True
return rval
-def is_toolset_140(toolset_version):
+def is_toolset_140(toolset_version) -> bool:
rval = False
if toolset_version:
if re_toolset_140.match(toolset_version):
rval = True
return rval
-def is_toolset_sxs(toolset_version):
+def is_toolset_sxs(toolset_version) -> bool:
rval = False
if toolset_version:
if re_toolset_sxs.match(toolset_version):
@@ -228,7 +307,7 @@ def msvc_version_components(vcver):
msvc_vernum = float(msvc_verstr)
msvc_comps = tuple(msvc_verstr.split('.'))
- msvc_major, msvc_minor = [int(x) for x in msvc_comps]
+ msvc_major, msvc_minor = (int(x) for x in msvc_comps)
msvc_version_components_def = _MSVC_VERSION_COMPONENTS_DEFINITION(
msvc_version = msvc_version,
@@ -291,7 +370,7 @@ def msvc_extended_version_components(version):
msvc_vernum = float(msvc_verstr)
msvc_comps = tuple(msvc_verstr.split('.'))
- msvc_major, msvc_minor = [int(x) for x in msvc_comps]
+ msvc_major, msvc_minor = (int(x) for x in msvc_comps)
msvc_extended_version_components_def = _MSVC_EXTENDED_VERSION_COMPONENTS_DEFINITION(
msvc_version = msvc_version,
@@ -351,7 +430,7 @@ def msvc_sdk_version_components(version):
sdk_verstr = '.'.join(sdk_comps[:2])
sdk_vernum = float(sdk_verstr)
- sdk_major, sdk_minor = [int(x) for x in sdk_comps[:2]]
+ sdk_major, sdk_minor = (int(x) for x in sdk_comps[:2])
msvc_sdk_version_components_def = _MSVC_SDK_VERSION_COMPONENTS_DEFINITION(
sdk_version = sdk_version,
diff --git a/scons/scons-local-4.5.2/SCons/Tool/MSCommon/MSVC/Warnings.py b/scons/scons-local-4.7.0/SCons/Tool/MSCommon/MSVC/Warnings.py
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/MSCommon/MSVC/Warnings.py
rename to scons/scons-local-4.7.0/SCons/Tool/MSCommon/MSVC/Warnings.py
diff --git a/scons/scons-local-4.5.2/SCons/Tool/MSCommon/MSVC/WinSDK.py b/scons/scons-local-4.7.0/SCons/Tool/MSCommon/MSVC/WinSDK.py
similarity index 94%
rename from scons/scons-local-4.5.2/SCons/Tool/MSCommon/MSVC/WinSDK.py
rename to scons/scons-local-4.7.0/SCons/Tool/MSCommon/MSVC/WinSDK.py
index 6d18d0730..7115d505e 100644
--- a/scons/scons-local-4.5.2/SCons/Tool/MSCommon/MSVC/WinSDK.py
+++ b/scons/scons-local-4.7.0/SCons/Tool/MSCommon/MSVC/WinSDK.py
@@ -83,7 +83,7 @@ def _sdk_10_layout(version):
if not version_nbr.startswith(folder_prefix):
continue
- sdk_inc_path = Util.process_path(os.path.join(version_nbr_path, 'um'))
+ sdk_inc_path = Util.normalize_path(os.path.join(version_nbr_path, 'um'))
if not os.path.exists(sdk_inc_path):
continue
@@ -127,7 +127,7 @@ def _sdk_81_layout(version):
# msvc does not check for existence of root or other files
- sdk_inc_path = Util.process_path(os.path.join(sdk_root, r'include\um'))
+ sdk_inc_path = Util.normalize_path(os.path.join(sdk_root, r'include\um'))
if not os.path.exists(sdk_inc_path):
continue
@@ -154,7 +154,7 @@ def _sdk_81_layout(version):
_sdk_map_cache = {}
_sdk_cache = {}
-def _reset_sdk_cache():
+def _reset_sdk_cache() -> None:
global _sdk_map_cache
global _sdk_cache
debug('')
@@ -194,7 +194,7 @@ def _verify_sdk_dispatch_map():
for sdk_version in Config.MSVC_SDK_VERSIONS:
if sdk_version in _sdk_dispatch_map:
continue
- err_msg = 'sdk version {} not in sdk_dispatch_map'.format(sdk_version)
+ err_msg = f'sdk version {sdk_version} not in sdk_dispatch_map'
raise MSVCInternalError(err_msg)
return None
@@ -220,7 +220,7 @@ def _sdk_map(version_list):
_sdk_cache[key] = sdk_map
return sdk_map
-def get_msvc_platform(is_uwp=False):
+def get_msvc_platform(is_uwp: bool=False):
platform_def = _UWP if is_uwp else _DESKTOP
return platform_def
@@ -230,7 +230,7 @@ def get_sdk_version_list(vs_def, platform_def):
sdk_list = sdk_map.get(platform_def.vc_platform, [])
return sdk_list
-def get_msvc_sdk_version_list(msvc_version, msvc_uwp_app=False):
+def get_msvc_sdk_version_list(msvc_version, msvc_uwp_app: bool=False):
debug('msvc_version=%s, msvc_uwp_app=%s', repr(msvc_version), repr(msvc_uwp_app))
sdk_versions = []
@@ -254,11 +254,11 @@ def get_msvc_sdk_version_list(msvc_version, msvc_uwp_app=False):
return sdk_versions
-def reset():
+def reset() -> None:
debug('')
_reset_sdk_cache()
-def verify():
+def verify() -> None:
debug('')
_verify_sdk_dispatch_map()
diff --git a/scons/scons-local-4.5.2/SCons/Tool/MSCommon/MSVC/__init__.py b/scons/scons-local-4.7.0/SCons/Tool/MSCommon/MSVC/__init__.py
similarity index 97%
rename from scons/scons-local-4.5.2/SCons/Tool/MSCommon/MSVC/__init__.py
rename to scons/scons-local-4.7.0/SCons/Tool/MSCommon/MSVC/__init__.py
index 849c82d14..766894d9b 100644
--- a/scons/scons-local-4.5.2/SCons/Tool/MSCommon/MSVC/__init__.py
+++ b/scons/scons-local-4.7.0/SCons/Tool/MSCommon/MSVC/__init__.py
@@ -47,9 +47,9 @@ from . import ScriptArguments # noqa: F401
from . import Dispatcher as _Dispatcher
-def _reset():
+def _reset() -> None:
_Dispatcher.reset()
-def _verify():
+def _verify() -> None:
_Dispatcher.verify()
diff --git a/scons/scons-local-4.5.2/SCons/Tool/MSCommon/README.rst b/scons/scons-local-4.7.0/SCons/Tool/MSCommon/README.rst
similarity index 95%
rename from scons/scons-local-4.5.2/SCons/Tool/MSCommon/README.rst
rename to scons/scons-local-4.7.0/SCons/Tool/MSCommon/README.rst
index 36e58aad4..5ab07ad63 100644
--- a/scons/scons-local-4.5.2/SCons/Tool/MSCommon/README.rst
+++ b/scons/scons-local-4.7.0/SCons/Tool/MSCommon/README.rst
@@ -40,7 +40,7 @@ The following issues are known to exist:
* The code to suppress the "No versions of the MSVC compiler were found" warning for
the default environment was moved from ``MSCommon/vc.py`` to ``MSCommon/MSVC/SetupEnvDefault.py``.
- There very few, if any, existing unit tests. Now that the code is isolated in its own
+ There are very few, if any, existing unit tests. Now that the code is isolated in its own
module with a limited API, unit tests may be easier to implement.
@@ -59,6 +59,7 @@ This is a proxy for using the toolset version for selection until that functiona
Example usage:
::
+
for version in [
'14.3',
'14.2',
@@ -90,6 +91,7 @@ Example usage:
Example output fragment
::
+
Build: _build003 {'MSVC_VERSION': '14.3', 'MSVC_TOOLSET_VERSION': '14.29.30133'}
Where: C:\Software\MSVS-2022-143-Com\VC\Tools\MSVC\14.29.30133\bin\HostX64\x64\cl.exe
Where: C:\Software\MSVS-2022-143-Com\Common7\Tools\guidgen.exe
@@ -138,6 +140,7 @@ for build failures. Refer to the documentation for details.
Change the default policy:
::
+
from SCons.Tool.MSCommon import msvc_set_scripterror_policy
msvc_set_scripterror_policy('Warning')
@@ -169,6 +172,7 @@ detection of installed msvc instances.
Windows command-line sample invocations:
::
+
@rem 64-Bit Windows
"%ProgramFiles(x86)%\Microsoft Visual Studio\Installer\vswhere.exe" -all -sort -prerelease -products * -legacy -format json >MYVSWHEREOUTPUT.json
@@ -241,6 +245,7 @@ toolset specification should be omitted entirely.
Local installation and summary test results:
::
+
VS2022\VC\Auxiliary\Build\Microsoft.VCToolsVersion.v143.default.txt
14.31.31103
@@ -249,6 +254,7 @@ Local installation and summary test results:
Toolset version summary:
::
+
14.31.31103 Environment()
14.31.31103 Environment(MSVC_TOOLSET_VERSION=None)
@@ -263,6 +269,7 @@ Toolset version summary:
VS2022\\Common7\\Tools\\vsdevcmd\\ext\\vcvars.bat usage fragment:
::
+
@echo -vcvars_ver=version : Version of VC++ Toolset to select
@echo ** [Default] : If -vcvars_ver=version is NOT specified, the toolset specified by
@echo [VSInstallDir]\VC\Auxiliary\Build\Microsoft.VCToolsVersion.v143.default.txt will be used.
@@ -283,6 +290,7 @@ VS2022\\Common7\\Tools\\vsdevcmd\\ext\\vcvars.bat usage fragment:
VS2022 batch file fragment to determine the default toolset version:
::
+
@REM Add MSVC
set "__VCVARS_DEFAULT_CONFIG_FILE=%VCINSTALLDIR%Auxiliary\Build\Microsoft.VCToolsVersion.default.txt"
@@ -349,33 +357,33 @@ v60 6.0 12.0 60
Product Versions
----------------
-======== ===== ========= ============
+======== ===== ========= ======================
Product VSVER SDK BuildTools
-======== ===== ========= ============
-2022 17.0 10.0, 8.1 v143 .. v140
--------- ----- --------- ------------
-2019 16.0 10.0, 8.1 v142 .. v140
--------- ----- --------- ------------
-2017 15.0 10.0, 8.1 v141 .. v140
--------- ----- --------- ------------
+======== ===== ========= ======================
+2022 17.0 10.0, 8.1 v143, v142, v141, v140
+-------- ----- --------- ----------------------
+2019 16.0 10.0, 8.1 v142, v141, v140
+-------- ----- --------- ----------------------
+2017 15.0 10.0, 8.1 v141, v140
+-------- ----- --------- ----------------------
2015 14.0 10.0, 8.1 v140
--------- ----- --------- ------------
+-------- ----- --------- ----------------------
2013 12.0 v120
--------- ----- --------- ------------
+-------- ----- --------- ----------------------
2012 11.0 v110
--------- ----- --------- ------------
+-------- ----- --------- ----------------------
2010 10.0 v100
--------- ----- --------- ------------
+-------- ----- --------- ----------------------
2008 9.0 v90
--------- ----- --------- ------------
+-------- ----- --------- ----------------------
2005 8.0 v80
--------- ----- --------- ------------
+-------- ----- --------- ----------------------
2003.NET 7.1 v71
--------- ----- --------- ------------
+-------- ----- --------- ----------------------
2002.NET 7.0 v70
--------- ----- --------- ------------
+-------- ----- --------- ----------------------
6.0 6.0 v60
-======== ===== ========= ============
+======== ===== ========= ======================
SCons Implementation Notes
diff --git a/scons/scons-local-4.5.2/SCons/Tool/MSCommon/__init__.py b/scons/scons-local-4.7.0/SCons/Tool/MSCommon/__init__.py
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/MSCommon/__init__.py
rename to scons/scons-local-4.7.0/SCons/Tool/MSCommon/__init__.py
diff --git a/scons/scons-local-4.5.2/SCons/Tool/MSCommon/arch.py b/scons/scons-local-4.7.0/SCons/Tool/MSCommon/arch.py
similarity index 97%
rename from scons/scons-local-4.5.2/SCons/Tool/MSCommon/arch.py
rename to scons/scons-local-4.7.0/SCons/Tool/MSCommon/arch.py
index 6648bb6b6..e52687369 100644
--- a/scons/scons-local-4.5.2/SCons/Tool/MSCommon/arch.py
+++ b/scons/scons-local-4.7.0/SCons/Tool/MSCommon/arch.py
@@ -30,7 +30,7 @@ class ArchDefinition:
"""
A class for defining architecture-specific settings and logic.
"""
- def __init__(self, arch, synonyms=[]):
+ def __init__(self, arch, synonyms=[]) -> None:
self.arch = arch
self.synonyms = synonyms
diff --git a/scons/scons-local-4.5.2/SCons/Tool/MSCommon/common.py b/scons/scons-local-4.7.0/SCons/Tool/MSCommon/common.py
similarity index 62%
rename from scons/scons-local-4.5.2/SCons/Tool/MSCommon/common.py
rename to scons/scons-local-4.7.0/SCons/Tool/MSCommon/common.py
index ad4c827d3..af3afb515 100644
--- a/scons/scons-local-4.5.2/SCons/Tool/MSCommon/common.py
+++ b/scons/scons-local-4.7.0/SCons/Tool/MSCommon/common.py
@@ -29,9 +29,9 @@ import copy
import json
import os
import re
-import subprocess
import sys
from contextlib import suppress
+from subprocess import DEVNULL, PIPE
from pathlib import Path
import SCons.Util
@@ -46,63 +46,118 @@ LOGFILE = os.environ.get('SCONS_MSCOMMON_DEBUG')
if LOGFILE:
import logging
- modulelist = (
- # root module and parent/root module
- 'MSCommon', 'Tool',
- # python library and below: correct iff scons does not have a lib folder
- 'lib',
- # scons modules
- 'SCons', 'test', 'scons'
- )
-
- def get_relative_filename(filename, module_list):
- if not filename:
- return filename
- for module in module_list:
- try:
- ind = filename.rindex(module)
- return filename[ind:]
- except ValueError:
- pass
- return filename
-
class _Debug_Filter(logging.Filter):
# custom filter for module relative filename
- def filter(self, record):
- relfilename = get_relative_filename(record.pathname, modulelist)
+
+ modulelist = (
+ # root module and parent/root module
+ 'MSCommon', 'Tool',
+ # python library and below: correct iff scons does not have a lib folder
+ 'lib',
+ # scons modules
+ 'SCons', 'test', 'scons'
+ )
+
+ def get_relative_filename(self, filename, module_list):
+ if not filename:
+ return filename
+ for module in module_list:
+ try:
+ ind = filename.rindex(module)
+ return filename[ind:]
+ except ValueError:
+ pass
+ return filename
+
+ def filter(self, record) -> bool:
+ relfilename = self.get_relative_filename(record.pathname, self.modulelist)
relfilename = relfilename.replace('\\', '/')
record.relfilename = relfilename
return True
- # Log format looks like:
- # 00109ms:MSCommon/vc.py:find_vc_pdir#447: VC found '14.3' [file]
- # debug: 00109ms:MSCommon/vc.py:find_vc_pdir#447: VC found '14.3' [stdout]
- log_format=(
- '%(relativeCreated)05dms'
- ':%(relfilename)s'
- ':%(funcName)s'
- '#%(lineno)s'
- ': %(message)s'
- )
+ class _CustomFormatter(logging.Formatter):
+
+ # Log format looks like:
+ # 00109ms:MSCommon/vc.py:find_vc_pdir#447: VC found '14.3' [file]
+ # debug: 00109ms:MSCommon/vc.py:find_vc_pdir#447: VC found '14.3' [stdout]
+
+ log_format=(
+ '%(relativeCreated)05dms'
+ ':%(relfilename)s'
+ ':%(funcName)s'
+ '#%(lineno)s'
+ ': %(message)s'
+ )
+
+ log_format_classname=(
+ '%(relativeCreated)05dms'
+ ':%(relfilename)s'
+ ':%(classname)s'
+ '.%(funcName)s'
+ '#%(lineno)s'
+ ': %(message)s'
+ )
+
+ def __init__(self, log_prefix):
+ super().__init__()
+ if log_prefix:
+ self.log_format = log_prefix + self.log_format
+ self.log_format_classname = log_prefix + self.log_format_classname
+ log_record = logging.LogRecord(
+ '', # name (str)
+ 0, # level (int)
+ '', # pathname (str)
+ 0, # lineno (int)
+ None, # msg (Any)
+ {}, # args (tuple | dict[str, Any])
+ None # exc_info (tuple[type[BaseException], BaseException, types.TracebackType] | None)
+ )
+ self.default_attrs = set(log_record.__dict__.keys())
+ self.default_attrs.add('relfilename')
+
+ def format(self, record):
+ extras = set(record.__dict__.keys()) - self.default_attrs
+ if 'classname' in extras:
+ log_format = self.log_format_classname
+ else:
+ log_format = self.log_format
+ formatter = logging.Formatter(log_format)
+ return formatter.format(record)
+
if LOGFILE == '-':
- log_format = 'debug: ' + log_format
+ log_prefix = 'debug: '
log_handler = logging.StreamHandler(sys.stdout)
else:
+ log_prefix = ''
log_handler = logging.FileHandler(filename=LOGFILE)
- log_formatter = logging.Formatter(log_format)
+ log_formatter = _CustomFormatter(log_prefix)
log_handler.setFormatter(log_formatter)
logger = logging.getLogger(name=__name__)
logger.setLevel(level=logging.DEBUG)
logger.addHandler(log_handler)
logger.addFilter(_Debug_Filter())
debug = logger.debug
+
+ def debug_extra(cls=None):
+ if cls:
+ extra = {'classname': cls.__qualname__}
+ else:
+ extra = None
+ return extra
+
+ DEBUG_ENABLED = True
+
else:
- def debug(x, *args):
+ def debug(x, *args, **kwargs):
return None
+ def debug_extra(*args, **kwargs):
+ return None
+
+ DEBUG_ENABLED = False
# SCONS_CACHE_MSVC_CONFIG is public, and is documented.
-CONFIG_CACHE = os.environ.get('SCONS_CACHE_MSVC_CONFIG')
+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.json')
@@ -112,56 +167,69 @@ if CONFIG_CACHE:
if os.environ.get('SCONS_CACHE_MSVC_FORCE_DEFAULTS') in ('1', 'true', 'True'):
CONFIG_CACHE_FORCE_DEFAULT_ARGUMENTS = True
-def read_script_env_cache():
+def read_script_env_cache() -> dict:
""" fetch cached msvc env vars if requested, else return empty dict """
envcache = {}
- if CONFIG_CACHE:
+ p = Path(CONFIG_CACHE)
+ if not CONFIG_CACHE or not p.is_file():
+ return envcache
+ with SCons.Util.FileLock(CONFIG_CACHE, timeout=5, writer=False), p.open('r') as f:
+ # Convert the list of cache entry dictionaries read from
+ # json to the cache dictionary. Reconstruct the cache key
+ # tuple from the key list written to json.
+ # Note we need to take a write lock on the cachefile, as if there's
+ # an error and we try to remove it, that's "writing" on Windows.
try:
- p = Path(CONFIG_CACHE)
- with p.open('r') as f:
- # Convert the list of cache entry dictionaries read from
- # json to the cache dictionary. Reconstruct the cache key
- # tuple from the key list written to json.
- envcache_list = json.load(f)
- if isinstance(envcache_list, list):
- envcache = {tuple(d['key']): d['data'] for d in envcache_list}
- else:
- # don't fail if incompatible format, just proceed without it
- warn_msg = "Incompatible format for msvc cache file {}: file may be overwritten.".format(
- repr(CONFIG_CACHE)
- )
- SCons.Warnings.warn(MSVCCacheInvalidWarning, warn_msg)
- debug(warn_msg)
- except FileNotFoundError:
- # don't fail if no cache file, just proceed without it
- pass
+ envcache_list = json.load(f)
+ except json.JSONDecodeError:
+ # If we couldn't decode it, it could be corrupt. Toss.
+ with suppress(FileNotFoundError):
+ p.unlink()
+ warn_msg = "Could not decode msvc cache file %s: dropping."
+ SCons.Warnings.warn(MSVCCacheInvalidWarning, warn_msg % CONFIG_CACHE)
+ debug(warn_msg, CONFIG_CACHE)
+ else:
+ if isinstance(envcache_list, list):
+ envcache = {tuple(d['key']): d['data'] for d in envcache_list}
+ else:
+ # don't fail if incompatible format, just proceed without it
+ warn_msg = "Incompatible format for msvc cache file %s: file may be overwritten."
+ SCons.Warnings.warn(MSVCCacheInvalidWarning, warn_msg % CONFIG_CACHE)
+ debug(warn_msg, CONFIG_CACHE)
+
return envcache
-def write_script_env_cache(cache):
+def write_script_env_cache(cache) -> None:
""" write out cache of msvc env vars if requested """
- if CONFIG_CACHE:
- try:
- p = Path(CONFIG_CACHE)
- with p.open('w') as f:
- # Convert the cache dictionary to a list of cache entry
- # dictionaries. The cache key is converted from a tuple to
- # a list for compatibility with json.
- envcache_list = [{'key': list(key), 'data': data} for key, data in cache.items()]
- json.dump(envcache_list, f, indent=2)
- except TypeError:
- # data can't serialize to json, don't leave partial file
- with suppress(FileNotFoundError):
- p.unlink()
- except IOError:
- # can't write the file, just skip
- pass
+ if not CONFIG_CACHE:
+ return
+
+ p = Path(CONFIG_CACHE)
+ try:
+ with SCons.Util.FileLock(CONFIG_CACHE, timeout=5, writer=True), p.open('w') as f:
+ # Convert the cache dictionary to a list of cache entry
+ # dictionaries. The cache key is converted from a tuple to
+ # a list for compatibility with json.
+ envcache_list = [
+ {'key': list(key), 'data': data} for key, data in cache.items()
+ ]
+ json.dump(envcache_list, f, indent=2)
+ except TypeError:
+ # data can't serialize to json, don't leave partial file
+ with suppress(FileNotFoundError):
+ p.unlink()
+ except OSError:
+ # can't write the file, just skip
+ pass
+
+ return
_is_win64 = None
-def is_win64():
+def is_win64() -> bool:
"""Return true if running on windows 64 bits.
Works whether python itself runs in 64 bits or 32 bits."""
@@ -196,9 +264,8 @@ def read_reg(value, hkroot=SCons.Util.HKEY_LOCAL_MACHINE):
return SCons.Util.RegGetValue(hkroot, value)[0]
-def has_reg(value):
- """Return True if the given key exists in HKEY_LOCAL_MACHINE, False
- otherwise."""
+def has_reg(value) -> bool:
+ """Return True if the given key exists in HKEY_LOCAL_MACHINE."""
try:
SCons.Util.RegOpenKeyEx(SCons.Util.HKEY_LOCAL_MACHINE, value)
ret = True
@@ -209,7 +276,18 @@ def has_reg(value):
# Functions for fetching environment variable settings from batch files.
-def normalize_env(env, keys, force=False):
+def _force_vscmd_skip_sendtelemetry(env):
+
+ if 'VSCMD_SKIP_SENDTELEMETRY' in env['ENV']:
+ return False
+
+ env['ENV']['VSCMD_SKIP_SENDTELEMETRY'] = '1'
+ debug("force env['ENV']['VSCMD_SKIP_SENDTELEMETRY']=%s", env['ENV']['VSCMD_SKIP_SENDTELEMETRY'])
+
+ return True
+
+
+def normalize_env(env, keys, force: bool=False):
"""Given a dictionary representing a shell environment, add the variables
from os.environ needed for the processing of .bat files; the keys are
controlled by the keys argument.
@@ -257,7 +335,7 @@ def normalize_env(env, keys, force=False):
return normenv
-def get_output(vcbat, args=None, env=None):
+def get_output(vcbat, args=None, env=None, skip_sendtelemetry=False):
"""Parse the output of given bat file, with given args."""
if env is None:
@@ -296,51 +374,36 @@ def get_output(vcbat, args=None, env=None):
]
env['ENV'] = normalize_env(env['ENV'], vs_vc_vars, force=False)
+ if skip_sendtelemetry:
+ _force_vscmd_skip_sendtelemetry(env)
+
if args:
debug("Calling '%s %s'", vcbat, args)
- popen = SCons.Action._subproc(env,
- '"%s" %s & set' % (vcbat, args),
- stdin='devnull',
- stdout=subprocess.PIPE,
- stderr=subprocess.PIPE)
+ cmd_str = '"%s" %s & set' % (vcbat, args)
else:
debug("Calling '%s'", vcbat)
- popen = SCons.Action._subproc(env,
- '"%s" & set' % vcbat,
- stdin='devnull',
- stdout=subprocess.PIPE,
- stderr=subprocess.PIPE)
+ cmd_str = '"%s" & set' % vcbat
- # Use the .stdout and .stderr attributes directly because the
- # .communicate() method uses the threading module on Windows
- # and won't work under Pythons not built with threading.
- with popen.stdout:
- stdout = popen.stdout.read()
- with popen.stderr:
- stderr = popen.stderr.read()
+ cp = SCons.Action.scons_subproc_run(
+ env, cmd_str, stdin=DEVNULL, stdout=PIPE, stderr=PIPE,
+ )
# Extra debug logic, uncomment if necessary
- # debug('stdout:%s', stdout)
- # debug('stderr:%s', stderr)
+ # debug('stdout:%s', cp.stdout)
+ # debug('stderr:%s', cp.stderr)
# Ongoing problems getting non-corrupted text led to this
# changing to "oem" from "mbcs" - the scripts run presumably
# attached to a console, so some particular rules apply.
- # Unfortunately, "oem" not defined in Python 3.5, so get another way
- if sys.version_info.major == 3 and sys.version_info.minor < 6:
- from ctypes import windll
-
- OEM = "cp{}".format(windll.kernel32.GetConsoleOutputCP())
- else:
- OEM = "oem"
- if stderr:
+ OEM = "oem"
+ if cp.stderr:
# TODO: find something better to do with stderr;
# this at least prevents errors from getting swallowed.
- sys.stderr.write(stderr.decode(OEM))
- if popen.wait() != 0:
- raise IOError(stderr.decode(OEM))
+ sys.stderr.write(cp.stderr.decode(OEM))
+ if cp.returncode != 0:
+ raise OSError(cp.stderr.decode(OEM))
- return stdout.decode(OEM)
+ return cp.stdout.decode(OEM)
KEEPLIST = (
@@ -367,9 +430,9 @@ def parse_output(output, keep=KEEPLIST):
# rdk will keep the regex to match the .bat file output line starts
rdk = {}
for i in keep:
- rdk[i] = re.compile('%s=(.*)' % i, re.I)
+ rdk[i] = re.compile(r'%s=(.*)' % i, re.I)
- def add_env(rmatch, key, dkeep=dkeep):
+ def add_env(rmatch, key, dkeep=dkeep) -> None:
path_list = rmatch.group(1).split(os.pathsep)
for path in path_list:
# Do not add empty paths (when a var ends with ;)
diff --git a/scons/scons-local-4.5.2/SCons/Tool/MSCommon/netframework.py b/scons/scons-local-4.7.0/SCons/Tool/MSCommon/netframework.py
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/MSCommon/netframework.py
rename to scons/scons-local-4.7.0/SCons/Tool/MSCommon/netframework.py
diff --git a/scons/scons-local-4.5.2/SCons/Tool/MSCommon/sdk.py b/scons/scons-local-4.7.0/SCons/Tool/MSCommon/sdk.py
similarity index 97%
rename from scons/scons-local-4.5.2/SCons/Tool/MSCommon/sdk.py
rename to scons/scons-local-4.7.0/SCons/Tool/MSCommon/sdk.py
index aa94f4d65..c6600f3a5 100644
--- a/scons/scons-local-4.5.2/SCons/Tool/MSCommon/sdk.py
+++ b/scons/scons-local-4.7.0/SCons/Tool/MSCommon/sdk.py
@@ -45,10 +45,9 @@ from .common import debug, read_reg
# seem to be any sane registry key, so the precise location is hardcoded.
#
# For versions below 2003R1, it seems the PSDK is included with Visual Studio?
-#
-# Also, per the following:
-# http://benjamin.smedbergs.us/blog/tag/atl/
# VC++ Professional comes with the SDK, VC++ Express does not.
+#
+# Of course, all this changed again after Express was phased out (2005).
# Location of the SDK (checked for 6.1 only)
_CURINSTALLED_SDK_HKEY_ROOT = \
@@ -59,7 +58,7 @@ class SDKDefinition:
"""
An abstract base class for trying to find installed SDK directories.
"""
- def __init__(self, version, **kw):
+ def __init__(self, version, **kw) -> None:
self.version = version
self.__dict__.update(kw)
@@ -130,7 +129,7 @@ class WindowsSDK(SDKDefinition):
A subclass for trying to find installed Windows SDK directories.
"""
HKEY_FMT = r'Software\Microsoft\Microsoft SDKs\Windows\v%s\InstallationFolder'
- def __init__(self, *args, **kw):
+ def __init__(self, *args, **kw) -> None:
super().__init__(*args, **kw)
self.hkey_data = self.version
@@ -139,7 +138,7 @@ class PlatformSDK(SDKDefinition):
A subclass for trying to find installed Platform SDK directories.
"""
HKEY_FMT = r'Software\Microsoft\MicrosoftSDK\InstalledSDKS\%s\Install Dir'
- def __init__(self, *args, **kw):
+ def __init__(self, *args, **kw) -> None:
super().__init__(*args, **kw)
self.hkey_data = self.uuid
@@ -306,7 +305,7 @@ def get_installed_sdks():
SDKEnvironmentUpdates = {}
-def set_sdk_by_directory(env, sdk_dir):
+def set_sdk_by_directory(env, sdk_dir) -> None:
global SDKEnvironmentUpdates
debug('set_sdk_by_directory: Using dir:%s', sdk_dir)
try:
@@ -334,7 +333,7 @@ def set_sdk_by_directory(env, sdk_dir):
def get_sdk_by_version(mssdk):
if mssdk not in SupportedSDKMap:
- raise SCons.Errors.UserError("SDK version {} is not supported".format(repr(mssdk)))
+ raise SCons.Errors.UserError(f"SDK version {mssdk!r} is not supported")
get_installed_sdks()
return InstalledSDKMap.get(mssdk)
diff --git a/scons/scons-local-4.5.2/SCons/Tool/MSCommon/vc.py b/scons/scons-local-4.7.0/SCons/Tool/MSCommon/vc.py
similarity index 77%
rename from scons/scons-local-4.5.2/SCons/Tool/MSCommon/vc.py
rename to scons/scons-local-4.7.0/SCons/Tool/MSCommon/vc.py
index 787194062..e43c618cb 100644
--- a/scons/scons-local-4.5.2/SCons/Tool/MSCommon/vc.py
+++ b/scons/scons-local-4.7.0/SCons/Tool/MSCommon/vc.py
@@ -43,6 +43,7 @@ import SCons.compat
import subprocess
import os
import platform
+import sysconfig
from pathlib import Path
from string import digits as string_digits
from subprocess import PIPE
@@ -69,8 +70,7 @@ from .MSVC.Exceptions import (
MSVCToolsetVersionNotFound,
)
-class UnsupportedVersion(VisualCException):
- pass
+# external exceptions
class MSVCUnsupportedHostArch(VisualCException):
pass
@@ -78,21 +78,32 @@ class MSVCUnsupportedHostArch(VisualCException):
class MSVCUnsupportedTargetArch(VisualCException):
pass
-class MissingConfiguration(VisualCException):
- pass
-
-class NoVersionFound(VisualCException):
- pass
-
-class BatchFileExecutionError(VisualCException):
- pass
-
class MSVCScriptNotFound(MSVCUserError):
pass
class MSVCUseSettingsError(MSVCUserError):
pass
+# internal exceptions
+
+class UnsupportedVersion(VisualCException):
+ pass
+
+class BatchFileExecutionError(VisualCException):
+ pass
+
+# undefined object for dict.get() in case key exists and value is None
+UNDEFINED = object()
+
+# powershell error sending telemetry for arm32 process on arm64 host (VS2019+):
+# True: force VSCMD_SKIP_SENDTELEMETRY=1 (if necessary)
+# False: do nothing
+_ARM32_ON_ARM64_SKIP_SENDTELEMETRY = True
+
+# MSVC 9.0 preferred query order:
+# True: VCForPython, VisualStudio
+# FAlse: VisualStudio, VCForPython
+_VC90_Prefer_VCForPython = True
# Dict to 'canonalize' the arch
_ARCH_TO_CANONICAL = {
@@ -282,7 +293,9 @@ def _host_target_config_factory(*, label, host_all_hosts, host_all_targets, host
# The cl path fragment under the toolset version folder is the second value of
# the stored tuple.
-_GE2017_HOST_TARGET_BATCHFILE_CLPATHCOMPS = {
+# 14.3 (VS2022) and later
+
+_GE2022_HOST_TARGET_BATCHFILE_CLPATHCOMPS = {
('amd64', 'amd64') : ('vcvars64.bat', ('bin', 'Hostx64', 'x64')),
('amd64', 'x86') : ('vcvarsamd64_x86.bat', ('bin', 'Hostx64', 'x86')),
@@ -294,11 +307,66 @@ _GE2017_HOST_TARGET_BATCHFILE_CLPATHCOMPS = {
('x86', 'arm') : ('vcvarsx86_arm.bat', ('bin', 'Hostx86', 'arm')),
('x86', 'arm64') : ('vcvarsx86_arm64.bat', ('bin', 'Hostx86', 'arm64')),
+ ('arm64', 'amd64') : ('vcvarsarm64_amd64.bat', ('bin', 'Hostarm64', 'arm64_amd64')),
+ ('arm64', 'x86') : ('vcvarsarm64_x86.bat', ('bin', 'Hostarm64', 'arm64_x86')),
+ ('arm64', 'arm') : ('vcvarsarm64_arm.bat', ('bin', 'Hostarm64', 'arm64_arm')),
+ ('arm64', 'arm64') : ('vcvarsarm64.bat', ('bin', 'Hostarm64', 'arm64')),
+
}
-_GE2017_HOST_TARGET_CFG = _host_target_config_factory(
+_GE2022_HOST_TARGET_CFG = _host_target_config_factory(
- label = 'GE2017',
+ label = 'GE2022',
+
+ host_all_hosts = OrderedDict([
+ ('amd64', ['amd64', 'x86']),
+ ('x86', ['x86']),
+ ('arm64', ['arm64', 'amd64', 'x86']),
+ ('arm', ['x86']),
+ ]),
+
+ host_all_targets = {
+ 'amd64': ['amd64', 'x86', 'arm64', 'arm'],
+ 'x86': ['x86', 'amd64', 'arm', 'arm64'],
+ 'arm64': ['arm64', 'amd64', 'arm', 'x86'],
+ 'arm': [],
+ },
+
+ host_def_targets = {
+ 'amd64': ['amd64', 'x86'],
+ 'x86': ['x86'],
+ 'arm64': ['arm64', 'amd64', 'arm', 'x86'],
+ 'arm': ['arm'],
+ },
+
+)
+
+# debug("_GE2022_HOST_TARGET_CFG: %s", _GE2022_HOST_TARGET_CFG)
+
+# 14.2 (VS2019) to 14.1 (VS2017)
+
+_LE2019_HOST_TARGET_BATCHFILE_CLPATHCOMPS = {
+
+ ('amd64', 'amd64') : ('vcvars64.bat', ('bin', 'Hostx64', 'x64')),
+ ('amd64', 'x86') : ('vcvarsamd64_x86.bat', ('bin', 'Hostx64', 'x86')),
+ ('amd64', 'arm') : ('vcvarsamd64_arm.bat', ('bin', 'Hostx64', 'arm')),
+ ('amd64', 'arm64') : ('vcvarsamd64_arm64.bat', ('bin', 'Hostx64', 'arm64')),
+
+ ('x86', 'amd64') : ('vcvarsx86_amd64.bat', ('bin', 'Hostx86', 'x64')),
+ ('x86', 'x86') : ('vcvars32.bat', ('bin', 'Hostx86', 'x86')),
+ ('x86', 'arm') : ('vcvarsx86_arm.bat', ('bin', 'Hostx86', 'arm')),
+ ('x86', 'arm64') : ('vcvarsx86_arm64.bat', ('bin', 'Hostx86', 'arm64')),
+
+ ('arm64', 'amd64') : ('vcvars64.bat', ('bin', 'Hostx64', 'x64')),
+ ('arm64', 'x86') : ('vcvarsamd64_x86.bat', ('bin', 'Hostx64', 'x86')),
+ ('arm64', 'arm') : ('vcvarsamd64_arm.bat', ('bin', 'Hostx64', 'arm')),
+ ('arm64', 'arm64') : ('vcvarsamd64_arm64.bat', ('bin', 'Hostx64', 'arm64')),
+
+}
+
+_LE2019_HOST_TARGET_CFG = _host_target_config_factory(
+
+ label = 'LE2019',
host_all_hosts = OrderedDict([
('amd64', ['amd64', 'x86']),
@@ -310,20 +378,20 @@ _GE2017_HOST_TARGET_CFG = _host_target_config_factory(
host_all_targets = {
'amd64': ['amd64', 'x86', 'arm64', 'arm'],
'x86': ['x86', 'amd64', 'arm', 'arm64'],
- 'arm64': [],
+ 'arm64': ['arm64', 'amd64', 'arm', 'x86'],
'arm': [],
},
host_def_targets = {
'amd64': ['amd64', 'x86'],
'x86': ['x86'],
- 'arm64': ['arm64', 'arm'],
+ 'arm64': ['arm64', 'amd64', 'arm', 'x86'],
'arm': ['arm'],
},
)
-# debug("_GE2017_HOST_TARGET_CFG: %s", _GE2017_HOST_TARGET_CFG)
+# debug("_LE2019_HOST_TARGET_CFG: %s", _LE2019_HOST_TARGET_CFG)
# 14.0 (VS2015) to 8.0 (VS2005)
@@ -345,6 +413,10 @@ _LE2015_HOST_TARGET_BATCHARG_CLPATHCOMPS = {
('x86', 'arm') : ('x86_arm', ('bin', 'x86_arm')),
('x86', 'ia64') : ('x86_ia64', ('bin', 'x86_ia64')),
+ ('arm64', 'amd64') : ('amd64', ('bin', 'amd64')),
+ ('arm64', 'x86') : ('amd64_x86', ('bin', 'amd64_x86')),
+ ('arm64', 'arm') : ('amd64_arm', ('bin', 'amd64_arm')),
+
('arm', 'arm') : ('arm', ('bin', 'arm')),
('ia64', 'ia64') : ('ia64', ('bin', 'ia64')),
@@ -357,6 +429,7 @@ _LE2015_HOST_TARGET_CFG = _host_target_config_factory(
host_all_hosts = OrderedDict([
('amd64', ['amd64', 'x86']),
('x86', ['x86']),
+ ('arm64', ['amd64', 'x86']),
('arm', ['arm']),
('ia64', ['ia64']),
]),
@@ -364,6 +437,7 @@ _LE2015_HOST_TARGET_CFG = _host_target_config_factory(
host_all_targets = {
'amd64': ['amd64', 'x86', 'arm'],
'x86': ['x86', 'amd64', 'arm', 'ia64'],
+ 'arm64': ['amd64', 'x86', 'arm'],
'arm': ['arm'],
'ia64': ['ia64'],
},
@@ -371,6 +445,7 @@ _LE2015_HOST_TARGET_CFG = _host_target_config_factory(
host_def_targets = {
'amd64': ['amd64', 'x86'],
'x86': ['x86'],
+ 'arm64': ['amd64', 'arm', 'x86'],
'arm': ['arm'],
'ia64': ['ia64'],
},
@@ -391,16 +466,19 @@ _LE2003_HOST_TARGET_CFG = _host_target_config_factory(
host_all_hosts = OrderedDict([
('amd64', ['x86']),
('x86', ['x86']),
+ ('arm64', ['x86']),
]),
host_all_targets = {
'amd64': ['x86'],
'x86': ['x86'],
+ 'arm64': ['x86'],
},
host_def_targets = {
'amd64': ['x86'],
'x86': ['x86'],
+ 'arm64': ['x86'],
},
)
@@ -444,28 +522,54 @@ def get_host_platform(host_platform):
return host
+_native_host_architecture = None
+
+def get_native_host_architecture():
+ """Return the native host architecture."""
+ global _native_host_architecture
+
+ if _native_host_architecture is None:
+
+ try:
+ arch = common.read_reg(
+ r'SYSTEM\CurrentControlSet\Control\Session Manager\Environment\PROCESSOR_ARCHITECTURE'
+ )
+ except OSError:
+ arch = None
+
+ if not arch:
+ arch = platform.machine()
+
+ _native_host_architecture = arch
+
+ return _native_host_architecture
+
_native_host_platform = None
def get_native_host_platform():
global _native_host_platform
if _native_host_platform is None:
-
- _native_host_platform = get_host_platform(platform.machine())
+ arch = get_native_host_architecture()
+ _native_host_platform = get_host_platform(arch)
return _native_host_platform
-def get_host_target(env, msvc_version, all_host_targets=False):
+def get_host_target(env, msvc_version, all_host_targets: bool=False):
vernum = float(get_msvc_version_numeric(msvc_version))
+ vernum_int = int(vernum * 10)
- if vernum > 14:
- # 14.1 (VS2017) and later
- host_target_cfg = _GE2017_HOST_TARGET_CFG
- elif 14 >= vernum >= 8:
+ if vernum_int >= 143:
+ # 14.3 (VS2022) and later
+ host_target_cfg = _GE2022_HOST_TARGET_CFG
+ elif 143 > vernum_int >= 141:
+ # 14.2 (VS2019) to 14.1 (VS2017)
+ host_target_cfg = _LE2019_HOST_TARGET_CFG
+ elif 141 > vernum_int >= 80:
# 14.0 (VS2015) to 8.0 (VS2005)
host_target_cfg = _LE2015_HOST_TARGET_CFG
- else:
+ else: # 80 > vernum_int
# 7.1 (VS2003) and earlier
host_target_cfg = _LE2003_HOST_TARGET_CFG
@@ -520,6 +624,53 @@ def get_host_target(env, msvc_version, all_host_targets=False):
return host_platform, target_platform, host_target_list
+_arm32_process_arm64_host = None
+
+def is_arm32_process_arm64_host():
+ global _arm32_process_arm64_host
+
+ if _arm32_process_arm64_host is None:
+
+ host = get_native_host_architecture()
+ host = _ARCH_TO_CANONICAL.get(host.lower(),'')
+ host_isarm64 = host == 'arm64'
+
+ process = sysconfig.get_platform()
+ process_isarm32 = process == 'win-arm32'
+
+ _arm32_process_arm64_host = host_isarm64 and process_isarm32
+
+ return _arm32_process_arm64_host
+
+_check_skip_sendtelemetry = None
+
+def _skip_sendtelemetry(env):
+ global _check_skip_sendtelemetry
+
+ if _check_skip_sendtelemetry is None:
+
+ if _ARM32_ON_ARM64_SKIP_SENDTELEMETRY and is_arm32_process_arm64_host():
+ _check_skip_sendtelemetry = True
+ else:
+ _check_skip_sendtelemetry = False
+
+ if not _check_skip_sendtelemetry:
+ return False
+
+ msvc_version = env.get('MSVC_VERSION') if env else None
+ if not msvc_version:
+ msvc_version = msvc_default_version(env)
+
+ if not msvc_version:
+ return False
+
+ vernum = float(get_msvc_version_numeric(msvc_version))
+ if vernum < 14.2: # VS2019
+ return False
+
+ # arm32 process, arm64 host, VS2019+
+ return True
+
# If you update this, update SupportedVSList in Tool/MSCommon/vs.py, and the
# MSVC_VERSION documentation in Tool/msvc.xml.
_VCVER = [
@@ -567,6 +718,7 @@ _VCVER_TO_PRODUCT_DIR = {
'14.0': [
(SCons.Util.HKEY_LOCAL_MACHINE, r'Microsoft\VisualStudio\14.0\Setup\VC\ProductDir')],
'14.0Exp': [
+ (SCons.Util.HKEY_LOCAL_MACHINE, r'Microsoft\WDExpress\14.0\Setup\VS\ProductDir'),
(SCons.Util.HKEY_LOCAL_MACHINE, r'Microsoft\VCExpress\14.0\Setup\VC\ProductDir')],
'12.0': [
(SCons.Util.HKEY_LOCAL_MACHINE, r'Microsoft\VisualStudio\12.0\Setup\VC\ProductDir'),
@@ -589,6 +741,9 @@ _VCVER_TO_PRODUCT_DIR = {
'9.0': [
(SCons.Util.HKEY_CURRENT_USER, r'Microsoft\DevDiv\VCForPython\9.0\installdir',),
(SCons.Util.HKEY_LOCAL_MACHINE, r'Microsoft\VisualStudio\9.0\Setup\VC\ProductDir',),
+ ] if _VC90_Prefer_VCForPython else [
+ (SCons.Util.HKEY_LOCAL_MACHINE, r'Microsoft\VisualStudio\9.0\Setup\VC\ProductDir',),
+ (SCons.Util.HKEY_CURRENT_USER, r'Microsoft\DevDiv\VCForPython\9.0\installdir',),
],
'9.0Exp': [
(SCons.Util.HKEY_LOCAL_MACHINE, r'Microsoft\VCExpress\9.0\Setup\VC\ProductDir'),
@@ -716,9 +871,8 @@ def find_vc_pdir(env, msvc_version):
Raises:
UnsupportedVersion: if the version is not known by this file.
- MissingConfiguration: found version but the directory is missing.
- Both exceptions inherit from VisualCException.
+ UnsupportedVersion inherits from VisualCException.
"""
root = 'Software\\'
@@ -752,18 +906,22 @@ def find_vc_pdir(env, msvc_version):
except OSError:
debug('no VC registry key %s', repr(key))
else:
- if msvc_version == '9.0' and key.lower().endswith('\\vcforpython\\9.0\\installdir'):
- # Visual C++ for Python registry key is installdir (root) not productdir (vc)
- comps = os.path.join(comps, 'VC')
+ if msvc_version == '9.0':
+ if key.lower().endswith('\\vcforpython\\9.0\\installdir'):
+ # Visual C++ for Python registry key is installdir (root) not productdir (vc)
+ comps = os.path.join(comps, 'VC')
+ elif msvc_version == '14.0Exp':
+ if key.lower().endswith('\\setup\\vs\\productdir'):
+ # Visual Studio 14.0 Express registry key is installdir (root) not productdir (vc)
+ comps = os.path.join(comps, 'VC')
debug('found VC in registry: %s', comps)
if os.path.exists(comps):
return comps
else:
debug('reg says dir is %s, but it does not exist. (ignoring)', comps)
- raise MissingConfiguration("registry dir {} not found on the filesystem".format(comps))
return None
-def find_batch_file(env, msvc_version, host_arch, target_arch):
+def find_batch_file(msvc_version, host_arch, target_arch, pdir):
"""
Find the location of the batch script which should set up the compiler
for any TARGET_ARCH whose compilers were installed by Visual Studio/VCExpress
@@ -772,58 +930,79 @@ def find_batch_file(env, msvc_version, host_arch, target_arch):
scripts named with a host_target pair that calls vcvarsall.bat properly,
so use that and return an empty argument.
"""
- pdir = find_vc_pdir(env, msvc_version)
- if pdir is None:
- raise NoVersionFound("No version of Visual Studio found")
- debug('looking in %s', pdir)
# filter out e.g. "Exp" from the version name
- msvc_ver_numeric = get_msvc_version_numeric(msvc_version)
- vernum = float(msvc_ver_numeric)
+ vernum = float(get_msvc_version_numeric(msvc_version))
+ vernum_int = int(vernum * 10)
+
+ sdk_pdir = pdir
arg = ''
vcdir = None
+ clexe = None
- if vernum > 14:
- # 14.1 (VS2017) and later
+ if vernum_int >= 143:
+ # 14.3 (VS2022) and later
batfiledir = os.path.join(pdir, "Auxiliary", "Build")
- batfile, _ = _GE2017_HOST_TARGET_BATCHFILE_CLPATHCOMPS[(host_arch, target_arch)]
+ batfile, _ = _GE2022_HOST_TARGET_BATCHFILE_CLPATHCOMPS[(host_arch, target_arch)]
batfilename = os.path.join(batfiledir, batfile)
vcdir = pdir
- elif 14 >= vernum >= 8:
+ elif 143 > vernum_int >= 141:
+ # 14.2 (VS2019) to 14.1 (VS2017)
+ batfiledir = os.path.join(pdir, "Auxiliary", "Build")
+ batfile, _ = _LE2019_HOST_TARGET_BATCHFILE_CLPATHCOMPS[(host_arch, target_arch)]
+ batfilename = os.path.join(batfiledir, batfile)
+ vcdir = pdir
+ elif 141 > vernum_int >= 80:
# 14.0 (VS2015) to 8.0 (VS2005)
- arg, _ = _LE2015_HOST_TARGET_BATCHARG_CLPATHCOMPS[(host_arch, target_arch)]
+ arg, cl_path_comps = _LE2015_HOST_TARGET_BATCHARG_CLPATHCOMPS[(host_arch, target_arch)]
batfilename = os.path.join(pdir, "vcvarsall.bat")
if msvc_version == '9.0' and not os.path.exists(batfilename):
# Visual C++ for Python batch file is in installdir (root) not productdir (vc)
batfilename = os.path.normpath(os.path.join(pdir, os.pardir, "vcvarsall.bat"))
- else:
+ # Visual C++ for Python sdk batch files do not point to the VCForPython installation
+ sdk_pdir = None
+ clexe = os.path.join(pdir, *cl_path_comps, _CL_EXE_NAME)
+ else: # 80 > vernum_int
# 7.1 (VS2003) and earlier
pdir = os.path.join(pdir, "Bin")
batfilename = os.path.join(pdir, "vcvars32.bat")
+ clexe = os.path.join(pdir, _CL_EXE_NAME)
if not os.path.exists(batfilename):
- debug("Not found: %s", batfilename)
+ debug("batch file not found: %s", batfilename)
batfilename = None
+ if clexe and not os.path.exists(clexe):
+ debug("cl.exe not found: %s", clexe)
+ batfilename = None
+
+ return batfilename, arg, vcdir, sdk_pdir
+
+def find_batch_file_sdk(host_arch, target_arch, sdk_pdir):
+ """
+ Find the location of the sdk batch script which should set up the compiler
+ for any TARGET_ARCH whose compilers were installed by Visual Studio/VCExpress
+ """
+
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("batch file not found:%s", _sdk)
+ debug("sdk batch file not found:%s", _sdk)
else:
- sdk_bat_file_path = os.path.join(pdir, sdk_bat_file)
+ sdk_bat_file_path = os.path.join(sdk_pdir, sdk_bat_file)
if os.path.exists(sdk_bat_file_path):
debug('sdk_bat_file_path:%s', sdk_bat_file_path)
- return batfilename, arg, vcdir, sdk_bat_file_path
+ return sdk_bat_file_path
- return batfilename, arg, vcdir, None
+ return None
__INSTALLED_VCS_RUN = None
_VC_TOOLS_VERSION_FILE_PATH = ['Auxiliary', 'Build', 'Microsoft.VCToolsVersion.default.txt']
_VC_TOOLS_VERSION_FILE = os.sep.join(_VC_TOOLS_VERSION_FILE_PATH)
-def _check_cl_exists_in_vc_dir(env, vc_dir, msvc_version):
+def _check_cl_exists_in_vc_dir(env, vc_dir, msvc_version) -> bool:
"""Return status of finding a cl.exe to use.
Locates cl in the vc_dir depending on TARGET_ARCH, HOST_ARCH and the
@@ -852,9 +1031,10 @@ def _check_cl_exists_in_vc_dir(env, vc_dir, msvc_version):
host_platform, target_platform, host_target_list = platforms
vernum = float(get_msvc_version_numeric(msvc_version))
+ vernum_int = int(vernum * 10)
# make sure the cl.exe exists meaning the tool is installed
- if vernum > 14:
+ if vernum_int >= 141:
# 14.1 (VS2017) and later
# 2017 and newer allowed multiple versions of the VC toolset to be
# installed at the same time. This changes the layout.
@@ -864,18 +1044,25 @@ def _check_cl_exists_in_vc_dir(env, vc_dir, msvc_version):
try:
with open(default_toolset_file) as f:
vc_specific_version = f.readlines()[0].strip()
- except IOError:
+ except OSError:
debug('failed to read %s', default_toolset_file)
return False
except IndexError:
debug('failed to find MSVC version in %s', default_toolset_file)
return False
+ if vernum_int >= 143:
+ # 14.3 (VS2022) and later
+ host_target_batchfile_clpathcomps = _GE2022_HOST_TARGET_BATCHFILE_CLPATHCOMPS
+ else:
+ # 14.2 (VS2019) to 14.1 (VS2017)
+ host_target_batchfile_clpathcomps = _LE2019_HOST_TARGET_BATCHFILE_CLPATHCOMPS
+
for host_platform, target_platform in host_target_list:
debug('host platform %s, target platform %s for version %s', host_platform, target_platform, msvc_version)
- batchfile_clpathcomps = _GE2017_HOST_TARGET_BATCHFILE_CLPATHCOMPS.get((host_platform, target_platform), None)
+ batchfile_clpathcomps = host_target_batchfile_clpathcomps.get((host_platform, target_platform), None)
if batchfile_clpathcomps is None:
debug('unsupported host/target platform combo: (%s,%s)', host_platform, target_platform)
continue
@@ -888,7 +1075,7 @@ def _check_cl_exists_in_vc_dir(env, vc_dir, msvc_version):
debug('found %s!', _CL_EXE_NAME)
return True
- elif 14 >= vernum >= 8:
+ elif 141 > vernum_int >= 80:
# 14.0 (VS2015) to 8.0 (VS2005)
for host_platform, target_platform in host_target_list:
@@ -908,7 +1095,7 @@ def _check_cl_exists_in_vc_dir(env, vc_dir, msvc_version):
debug('found %s', _CL_EXE_NAME)
return True
- elif 8 > vernum >= 6:
+ elif 80 > vernum_int >= 60:
# 7.1 (VS2003) to 6.0 (VS6)
# quick check for vc_dir/bin and vc_dir/ before walk
@@ -928,7 +1115,7 @@ def _check_cl_exists_in_vc_dir(env, vc_dir, msvc_version):
return False
else:
- # version not support return false
+ # version not supported return false
debug('unsupported MSVC version: %s', str(vernum))
return False
@@ -939,6 +1126,13 @@ def get_installed_vcs(env=None):
if __INSTALLED_VCS_RUN is not None:
return __INSTALLED_VCS_RUN
+ save_target_arch = env.get('TARGET_ARCH', UNDEFINED) if env else None
+ force_target = env and save_target_arch and save_target_arch != UNDEFINED
+
+ if force_target:
+ del env['TARGET_ARCH']
+ debug("delete env['TARGET_ARCH']")
+
installed_versions = []
for ver in _VCVER:
@@ -960,10 +1154,15 @@ def get_installed_vcs(env=None):
except VisualCException as e:
debug('did not find VC %s: caught exception %s', ver, str(e))
+ if force_target:
+ env['TARGET_ARCH'] = save_target_arch
+ debug("restore env['TARGET_ARCH']=%s", save_target_arch)
+
__INSTALLED_VCS_RUN = installed_versions
+ debug("__INSTALLED_VCS_RUN=%s", __INSTALLED_VCS_RUN)
return __INSTALLED_VCS_RUN
-def reset_installed_vcs():
+def reset_installed_vcs() -> None:
"""Make it try again to find VC. This is just for the tests."""
global __INSTALLED_VCS_RUN
__INSTALLED_VCS_RUN = None
@@ -982,6 +1181,19 @@ def get_installed_vcs_components(env=None):
msvc_version_component_defs = [MSVC.Util.msvc_version_components(vcver) for vcver in vcs]
return msvc_version_component_defs
+def _check_cl_exists_in_script_env(data):
+ """Find cl.exe in the script environment path."""
+ cl_path = None
+ if data and 'PATH' in data:
+ for p in data['PATH']:
+ cl_exe = os.path.join(p, _CL_EXE_NAME)
+ if os.path.exists(cl_exe):
+ cl_path = cl_exe
+ break
+ have_cl = True if cl_path else False
+ debug('have_cl: %s, cl_path: %s', have_cl, cl_path)
+ return have_cl, cl_path
+
# Running these batch files isn't cheap: most of the time spent in
# msvs.generate() is due to vcvars*.bat. In a build that uses "tools='msvs'"
# in multiple environments, for example:
@@ -1027,7 +1239,8 @@ def script_env(env, script, args=None):
cache_data = None
if cache_data is None:
- stdout = common.get_output(script, args)
+ skip_sendtelemetry = _skip_sendtelemetry(env)
+ stdout = common.get_output(script, args, skip_sendtelemetry=skip_sendtelemetry)
cache_data = common.parse_output(stdout)
# debug(stdout)
@@ -1044,12 +1257,7 @@ def script_env(env, script, args=None):
if script_errlog:
script_errmsg = '\n'.join(script_errlog)
- have_cl = False
- if cache_data and 'PATH' in cache_data:
- for p in cache_data['PATH']:
- if os.path.exists(os.path.join(p, _CL_EXE_NAME)):
- have_cl = True
- break
+ have_cl, _ = _check_cl_exists_in_script_env(cache_data)
debug(
'script=%s args=%s have_cl=%s, errors=%s',
@@ -1099,7 +1307,7 @@ def get_default_version(env):
return msvc_version
-def msvc_setup_env_once(env, tool=None):
+def msvc_setup_env_once(env, tool=None) -> None:
try:
has_run = env["MSVC_SETUP_RUN"]
except KeyError:
@@ -1130,6 +1338,15 @@ def msvc_find_valid_batch_script(env, version):
get it right.
"""
+ # Find the product directory
+ pdir = None
+ try:
+ pdir = find_vc_pdir(env, version)
+ except UnsupportedVersion:
+ # Unsupported msvc version (raise MSVCArgumentError?)
+ pass
+ debug('product directory: version=%s, pdir=%s', version, pdir)
+
# Find the host, target, and all candidate (host, target) platform combinations:
platforms = get_host_target(env, version)
debug("host_platform %s, target_platform %s host_target_list %s", *platforms)
@@ -1137,48 +1354,81 @@ def msvc_find_valid_batch_script(env, version):
d = None
version_installed = False
- for host_arch, target_arch, in host_target_list:
- # Set to current arch.
- env['TARGET_ARCH'] = target_arch
- arg = ''
- # Try to locate a batch file for this host/target platform combo
- try:
- (vc_script, arg, vc_dir, sdk_script) = find_batch_file(env, version, host_arch, target_arch)
- debug('vc_script:%s vc_script_arg:%s sdk_script:%s', vc_script, arg, sdk_script)
- version_installed = True
- except VisualCException as e:
- msg = str(e)
- debug('Caught exception while looking for batch file (%s)', msg)
- version_installed = False
- continue
+ if pdir:
- # Try to use the located batch file for this host/target platform combo
- debug('use_script 2 %s, args:%s', repr(vc_script), arg)
- found = None
- if vc_script:
+ # Query all candidate sdk (host, target, sdk_pdir) after vc_script pass if necessary
+ sdk_queries = []
+
+ for host_arch, target_arch, in host_target_list:
+ # Set to current arch.
+ env['TARGET_ARCH'] = target_arch
+ arg = ''
+
+ # Try to locate a batch file for this host/target platform combo
+ try:
+ (vc_script, arg, vc_dir, sdk_pdir) = find_batch_file(version, host_arch, target_arch, pdir)
+ debug('vc_script:%s vc_script_arg:%s', vc_script, arg)
+ version_installed = True
+ except VisualCException as e:
+ msg = str(e)
+ debug('Caught exception while looking for batch file (%s)', msg)
+ version_installed = False
+ continue
+
+ # Save (host, target, sdk_pdir) platform combo for sdk queries
+ if sdk_pdir:
+ sdk_query = (host_arch, target_arch, sdk_pdir)
+ if sdk_query not in sdk_queries:
+ debug('save sdk_query host=%s, target=%s, sdk_pdir=%s', host_arch, target_arch, sdk_pdir)
+ sdk_queries.append(sdk_query)
+
+ if not vc_script:
+ continue
+
+ # Try to use the located batch file for this host/target platform combo
arg = MSVC.ScriptArguments.msvc_script_arguments(env, version, vc_dir, arg)
+ debug('trying vc_script:%s, vc_script_args:%s', repr(vc_script), arg)
try:
d = script_env(env, vc_script, args=arg)
- found = vc_script
except BatchFileExecutionError as e:
- debug('use_script 3: failed running VC script %s: %s: Error:%s', repr(vc_script), arg, e)
- vc_script=None
+ debug('failed vc_script:%s, vc_script_args:%s, error:%s', repr(vc_script), arg, e)
+ vc_script = None
continue
- if not vc_script and sdk_script:
- debug('use_script 4: trying sdk script: %s', sdk_script)
- try:
- d = script_env(env, sdk_script)
- found = sdk_script
- except BatchFileExecutionError as e:
- debug('use_script 5: failed running SDK script %s: Error:%s', repr(sdk_script), e)
- continue
- elif not vc_script and not sdk_script:
- debug('use_script 6: Neither VC script nor SDK script found')
- continue
- debug("Found a working script/target: %s/%s", repr(found), arg)
- break # We've found a working target_platform, so stop looking
+ have_cl, _ = _check_cl_exists_in_script_env(d)
+ if not have_cl:
+ debug('skip cl.exe not found vc_script:%s, vc_script_args:%s', repr(vc_script), arg)
+ continue
+
+ debug("Found a working script/target: %s/%s", repr(vc_script), arg)
+ break # We've found a working target_platform, so stop looking
+
+ if not d:
+ for host_arch, target_arch, sdk_pdir in sdk_queries:
+ # Set to current arch.
+ env['TARGET_ARCH'] = target_arch
+
+ sdk_script = find_batch_file_sdk(host_arch, target_arch, sdk_pdir)
+ if not sdk_script:
+ continue
+
+ # Try to use the sdk batch file for this (host, target, sdk_pdir) combo
+ debug('trying sdk_script:%s', repr(sdk_script))
+ try:
+ d = script_env(env, sdk_script)
+ version_installed = True
+ except BatchFileExecutionError as e:
+ debug('failed sdk_script:%s, error=%s', repr(sdk_script), e)
+ continue
+
+ have_cl, _ = _check_cl_exists_in_script_env(d)
+ if not have_cl:
+ debug('skip cl.exe not found sdk_script:%s', repr(sdk_script))
+ continue
+
+ debug("Found a working script/target: %s", repr(sdk_script))
+ break # We've found a working script, so stop looking
# If we cannot find a viable installed compiler, reset the TARGET_ARCH
# To it's initial value
@@ -1206,8 +1456,6 @@ def msvc_find_valid_batch_script(env, version):
return d
-_UNDEFINED = object()
-
def get_use_script_use_settings(env):
# use_script use_settings return values action
@@ -1217,9 +1465,9 @@ def get_use_script_use_settings(env):
# None (documentation) or evaluates False (code): bypass detection
# need to distinguish between undefined and None
- use_script = env.get('MSVC_USE_SCRIPT', _UNDEFINED)
+ use_script = env.get('MSVC_USE_SCRIPT', UNDEFINED)
- if use_script != _UNDEFINED:
+ if use_script != UNDEFINED:
# use_script defined, use_settings ignored (not type checked)
return use_script, None
@@ -1251,7 +1499,7 @@ def msvc_setup_env(env):
if SCons.Util.is_String(use_script):
use_script = use_script.strip()
if not os.path.exists(use_script):
- raise MSVCScriptNotFound('Script specified by MSVC_USE_SCRIPT not found: "{}"'.format(use_script))
+ raise MSVCScriptNotFound(f'Script specified by MSVC_USE_SCRIPT not found: "{use_script}"')
args = env.subst('$MSVC_USE_SCRIPT_ARGS')
debug('use_script 1 %s %s', repr(use_script), repr(args))
d = script_env(env, use_script, args)
@@ -1262,7 +1510,7 @@ def msvc_setup_env(env):
return d
elif use_settings is not None:
if not SCons.Util.is_Dict(use_settings):
- error_msg = 'MSVC_USE_SETTINGS type error: expected a dictionary, found {}'.format(type(use_settings).__name__)
+ error_msg = f'MSVC_USE_SETTINGS type error: expected a dictionary, found {type(use_settings).__name__}'
raise MSVCUseSettingsError(error_msg)
d = use_settings
debug('use_settings %s', d)
@@ -1273,18 +1521,30 @@ def msvc_setup_env(env):
SCons.Warnings.warn(SCons.Warnings.VisualCMissingWarning, warn_msg)
return None
+ found_cl_path = None
+ found_cl_envpath = None
+
+ seen_path = False
for k, v in d.items():
+ if not seen_path and k == 'PATH':
+ seen_path = True
+ found_cl_path = SCons.Util.WhereIs('cl', v)
+ found_cl_envpath = SCons.Util.WhereIs('cl', env['ENV'].get(k, []))
env.PrependENVPath(k, v, delete_existing=True)
debug("env['ENV']['%s'] = %s", k, env['ENV'][k])
- # final check to issue a warning if the compiler is not present
- if not find_program_path(env, 'cl'):
- debug("did not find %s", _CL_EXE_NAME)
+ debug("cl paths: d['PATH']=%s, ENV['PATH']=%s", repr(found_cl_path), repr(found_cl_envpath))
+
+ # final check to issue a warning if the requested compiler is not present
+ if not found_cl_path:
+ warn_msg = "Could not find requested MSVC compiler 'cl'."
if CONFIG_CACHE:
- propose = "SCONS_CACHE_MSVC_CONFIG caching enabled, remove cache file {} if out of date.".format(CONFIG_CACHE)
+ warn_msg += f" SCONS_CACHE_MSVC_CONFIG caching enabled, remove cache file {CONFIG_CACHE} if out of date."
else:
- propose = "It may need to be installed separately with Visual Studio."
- warn_msg = "Could not find MSVC compiler 'cl'. {}".format(propose)
+ warn_msg += " It may need to be installed separately with Visual Studio."
+ if found_cl_envpath:
+ warn_msg += " A 'cl' was found on the scons ENV path which may be erroneous."
+ debug(warn_msg)
SCons.Warnings.warn(SCons.Warnings.VisualCMissingWarning, warn_msg)
def msvc_exists(env=None, version=None):
@@ -1293,8 +1553,7 @@ def msvc_exists(env=None, version=None):
rval = len(vcs) > 0
else:
rval = version in vcs
- if not rval:
- debug('version=%s, return=%s', repr(version), rval)
+ debug('version=%s, return=%s', repr(version), rval)
return rval
def msvc_setup_env_user(env=None):
@@ -1340,7 +1599,7 @@ def msvc_setup_env_tool(env=None, version=None, tool=None):
rval = True
return rval
-def msvc_sdk_versions(version=None, msvc_uwp_app=False):
+def msvc_sdk_versions(version=None, msvc_uwp_app: bool=False):
debug('version=%s, msvc_uwp_app=%s', repr(version), repr(msvc_uwp_app))
rval = []
@@ -1354,13 +1613,13 @@ def msvc_sdk_versions(version=None, msvc_uwp_app=False):
version_def = MSVC.Util.msvc_extended_version_components(version)
if not version_def:
- msg = 'Unsupported version {}'.format(repr(version))
+ msg = f'Unsupported version {version!r}'
raise MSVCArgumentError(msg)
rval = MSVC.WinSDK.get_msvc_sdk_version_list(version, msvc_uwp_app)
return rval
-def msvc_toolset_versions(msvc_version=None, full=True, sxs=False):
+def msvc_toolset_versions(msvc_version=None, full: bool=True, sxs: bool=False):
debug('msvc_version=%s, full=%s, sxs=%s', repr(msvc_version), repr(full), repr(sxs))
env = None
@@ -1374,7 +1633,7 @@ def msvc_toolset_versions(msvc_version=None, full=True, sxs=False):
return rval
if msvc_version not in _VCVER:
- msg = 'Unsupported msvc version {}'.format(repr(msvc_version))
+ msg = f'Unsupported msvc version {msvc_version!r}'
raise MSVCArgumentError(msg)
vc_dir = find_vc_pdir(env, msvc_version)
@@ -1399,7 +1658,7 @@ def msvc_toolset_versions_spectre(msvc_version=None):
return rval
if msvc_version not in _VCVER:
- msg = 'Unsupported msvc version {}'.format(repr(msvc_version))
+ msg = f'Unsupported msvc version {msvc_version!r}'
raise MSVCArgumentError(msg)
vc_dir = find_vc_pdir(env, msvc_version)
@@ -1410,7 +1669,7 @@ def msvc_toolset_versions_spectre(msvc_version=None):
rval = MSVC.ScriptArguments._msvc_toolset_versions_spectre_internal(msvc_version, vc_dir)
return rval
-def msvc_query_version_toolset(version=None, prefer_newest=True):
+def msvc_query_version_toolset(version=None, prefer_newest: bool=True):
"""
Returns an msvc version and a toolset version given a version
specification.
@@ -1471,13 +1730,13 @@ def msvc_query_version_toolset(version=None, prefer_newest=True):
version_def = MSVC.Util.msvc_extended_version_components(version)
if not version_def:
- msg = 'Unsupported msvc version {}'.format(repr(version))
+ msg = f'Unsupported msvc version {version!r}'
raise MSVCArgumentError(msg)
if version_def.msvc_suffix:
if version_def.msvc_verstr != version_def.msvc_toolset_version:
# toolset version with component suffix
- msg = 'Unsupported toolset version {}'.format(repr(version))
+ msg = f'Unsupported toolset version {version!r}'
raise MSVCArgumentError(msg)
if version_def.msvc_vernum > 14.0:
@@ -1556,11 +1815,11 @@ def msvc_query_version_toolset(version=None, prefer_newest=True):
)
if version_def.msvc_verstr == msvc_toolset_version:
- msg = 'MSVC version {} was not found'.format(repr(version))
+ msg = f'MSVC version {version!r} was not found'
MSVC.Policy.msvc_notfound_handler(None, msg)
return msvc_version, msvc_toolset_version
- msg = 'MSVC toolset version {} not found'.format(repr(version))
+ msg = f'MSVC toolset version {version!r} not found'
raise MSVCToolsetVersionNotFound(msg)
diff --git a/scons/scons-local-4.5.2/SCons/Tool/MSCommon/vs.py b/scons/scons-local-4.7.0/SCons/Tool/MSCommon/vs.py
similarity index 97%
rename from scons/scons-local-4.5.2/SCons/Tool/MSCommon/vs.py
rename to scons/scons-local-4.7.0/SCons/Tool/MSCommon/vs.py
index 08c3cf5af..af0fd26e5 100644
--- a/scons/scons-local-4.5.2/SCons/Tool/MSCommon/vs.py
+++ b/scons/scons-local-4.7.0/SCons/Tool/MSCommon/vs.py
@@ -46,7 +46,7 @@ class VisualStudio:
An abstract base class for trying to find installed versions of
Visual Studio.
"""
- def __init__(self, version, **kw):
+ def __init__(self, version, **kw) -> None:
self.version = version
kw['vc_version'] = kw.get('vc_version', version)
kw['sdk_version'] = kw.get('sdk_version', version)
@@ -148,7 +148,7 @@ class VisualStudio:
self._cache['supported_arch'] = self.supported_arch
return self.supported_arch
- def reset(self):
+ def reset(self) -> None:
self._cache = {}
# The list of supported Visual Studio versions we know how to detect.
@@ -207,7 +207,7 @@ SupportedVSList = [
executable_path=r'Common7\IDE\devenv.com',
# should be a fallback, prefer use vswhere installationPath
batch_file_path=r'Common7\Tools\VsDevCmd.bat',
- supported_arch=['x86', 'amd64', "arm"],
+ supported_arch=['x86', 'amd64', "arm", 'arm64'],
),
# Visual Studio 2019
@@ -219,7 +219,7 @@ SupportedVSList = [
executable_path=r'Common7\IDE\devenv.com',
# should be a fallback, prefer use vswhere installationPath
batch_file_path=r'Common7\Tools\VsDevCmd.bat',
- supported_arch=['x86', 'amd64', "arm"],
+ supported_arch=['x86', 'amd64', "arm", 'arm64'],
),
# Visual Studio 2017
@@ -231,7 +231,7 @@ SupportedVSList = [
executable_path=r'Common7\IDE\devenv.com',
# should be a fallback, prefer use vswhere installationPath
batch_file_path=r'Common7\Tools\VsDevCmd.bat',
- supported_arch=['x86', 'amd64', "arm"],
+ supported_arch=['x86', 'amd64', "arm", 'arm64'],
),
# Visual C++ 2017 Express Edition (for Desktop)
@@ -243,7 +243,7 @@ SupportedVSList = [
executable_path=r'Common7\IDE\WDExpress.exe',
# should be a fallback, prefer use vswhere installationPath
batch_file_path=r'Common7\Tools\VsDevCmd.bat',
- supported_arch=['x86', 'amd64', "arm"],
+ supported_arch=['x86', 'amd64', "arm", 'arm64'],
),
# Visual Studio 2015
@@ -439,7 +439,7 @@ def get_installed_visual_studios(env=None):
InstalledVSMap[vs.version] = vs
return InstalledVSList
-def reset_installed_visual_studios():
+def reset_installed_visual_studios() -> None:
global InstalledVSList
global InstalledVSMap
InstalledVSList = None
@@ -564,12 +564,12 @@ def get_default_arch(env):
return arch
-def merge_default_version(env):
+def merge_default_version(env) -> None:
version = get_default_version(env)
arch = get_default_arch(env)
# TODO: refers to versions and arch which aren't defined; called nowhere. Drop?
-def msvs_setup_env(env):
+def msvs_setup_env(env) -> None:
msvs = get_vs_by_version(version)
if msvs is None:
return
diff --git a/scons/scons-local-4.5.2/SCons/Tool/PharLapCommon.py b/scons/scons-local-4.7.0/SCons/Tool/PharLapCommon.py
similarity index 98%
rename from scons/scons-local-4.5.2/SCons/Tool/PharLapCommon.py
rename to scons/scons-local-4.7.0/SCons/Tool/PharLapCommon.py
index 9ffafa9e5..034d9d807 100644
--- a/scons/scons-local-4.5.2/SCons/Tool/PharLapCommon.py
+++ b/scons/scons-local-4.7.0/SCons/Tool/PharLapCommon.py
@@ -79,14 +79,14 @@ def getPharLapVersion():
include_path = os.path.join(getPharLapPath(), os.path.normpath("include/embkern.h"))
if not os.path.exists(include_path):
raise SCons.Errors.UserError("Cannot find embkern.h in ETS include directory.\nIs Phar Lap ETS installed properly?")
- with open(include_path, 'r') as f:
+ with open(include_path) as f:
mo = REGEX_ETS_VER.search(f.read())
if mo:
return int(mo.group(1))
# Default return for Phar Lap 9.1
return 910
-def addPharLapPaths(env):
+def addPharLapPaths(env) -> None:
"""This function adds the path to the Phar Lap binaries, includes,
and libraries, if they are not already there."""
ph_path = getPharLapPath()
diff --git a/scons/scons-local-4.5.2/SCons/Tool/__init__.py b/scons/scons-local-4.7.0/SCons/Tool/__init__.py
similarity index 98%
rename from scons/scons-local-4.5.2/SCons/Tool/__init__.py
rename to scons/scons-local-4.7.0/SCons/Tool/__init__.py
index 33c1d33ab..3681235f6 100644
--- a/scons/scons-local-4.5.2/SCons/Tool/__init__.py
+++ b/scons/scons-local-4.7.0/SCons/Tool/__init__.py
@@ -105,7 +105,7 @@ TOOL_ALIASES = {
class Tool:
- def __init__(self, name, toolpath=None, **kwargs):
+ def __init__(self, name, toolpath=None, **kwargs) -> None:
if toolpath is None:
toolpath = []
@@ -241,7 +241,7 @@ class Tool:
msg = "No tool named '{self.name}': {e}"
raise SCons.Errors.SConsEnvironmentError(msg)
- def __call__(self, env, *args, **kw):
+ def __call__(self, env, *args, **kw) -> None:
if self.init_kw is not None:
# Merge call kws into init kws;
# but don't bash self.init_kw.
@@ -264,7 +264,7 @@ class Tool:
self.generate(env, *args, **kw)
- def __str__(self):
+ def __str__(self) -> str:
return self.name
@@ -324,7 +324,7 @@ def createStaticLibBuilder(env):
return static_lib
-def createSharedLibBuilder(env, shlib_suffix='$_SHLIBSUFFIX'):
+def createSharedLibBuilder(env, shlib_suffix: str='$_SHLIBSUFFIX'):
"""This is a utility function that creates the SharedLibrary
Builder in an Environment if it is not there already.
@@ -354,7 +354,7 @@ def createSharedLibBuilder(env, shlib_suffix='$_SHLIBSUFFIX'):
return shared_lib
-def createLoadableModuleBuilder(env, loadable_module_suffix='$_LDMODULESUFFIX'):
+def createLoadableModuleBuilder(env, loadable_module_suffix: str='$_LDMODULESUFFIX'):
"""This is a utility function that creates the LoadableModule
Builder in an Environment if it is not there already.
@@ -557,7 +557,7 @@ class ToolInitializerMethod:
environment in place of this particular instance.
"""
- def __init__(self, name, initializer):
+ def __init__(self, name, initializer) -> None:
"""
Note: we store the tool name as __name__ so it can be used by
the class that attaches this to a construction environment.
@@ -608,7 +608,7 @@ class ToolInitializer:
that we want to use to delay Tool searches until necessary.
"""
- def __init__(self, env, tools, names):
+ def __init__(self, env, tools, names) -> None:
if not SCons.Util.is_List(tools):
tools = [tools]
if not SCons.Util.is_List(names):
@@ -622,7 +622,7 @@ class ToolInitializer:
self.methods[name] = method
env.AddMethod(method)
- def remove_methods(self, env):
+ def remove_methods(self, env) -> None:
"""
Removes the methods that were added by the tool initialization
so we no longer copy and re-bind them when the construction
@@ -631,7 +631,7 @@ class ToolInitializer:
for method in self.methods.values():
env.RemoveMethod(method)
- def apply_tools(self, env):
+ def apply_tools(self, env) -> None:
"""
Searches the list of associated Tool modules for one that
exists, and applies that to the construction environment.
@@ -649,7 +649,7 @@ class ToolInitializer:
# the ToolInitializer class.
-def Initializers(env):
+def Initializers(env) -> None:
ToolInitializer(env, ['install'], ['_InternalInstall', '_InternalInstallAs', '_InternalInstallVersionedLib'])
def Install(self, *args, **kw):
@@ -824,7 +824,7 @@ def tool_list(platform, env):
return [x for x in tools if x]
-def find_program_path(env, key_program, default_paths=None, add_path=False) -> Optional[str]:
+def find_program_path(env, key_program, default_paths=None, add_path: bool=False) -> Optional[str]:
"""
Find the location of a tool using various means.
diff --git a/scons/scons-local-4.5.2/SCons/Tool/aixc++.py b/scons/scons-local-4.7.0/SCons/Tool/aixc++.py
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/aixc++.py
rename to scons/scons-local-4.7.0/SCons/Tool/aixc++.py
diff --git a/scons/scons-local-4.5.2/SCons/Tool/aixcc.py b/scons/scons-local-4.7.0/SCons/Tool/aixcc.py
similarity index 98%
rename from scons/scons-local-4.5.2/SCons/Tool/aixcc.py
rename to scons/scons-local-4.7.0/SCons/Tool/aixcc.py
index 09365b1df..ccde0a8fc 100644
--- a/scons/scons-local-4.5.2/SCons/Tool/aixcc.py
+++ b/scons/scons-local-4.7.0/SCons/Tool/aixcc.py
@@ -44,7 +44,7 @@ def get_xlc(env):
xlc = env.get('CC', 'xlc')
return SCons.Platform.aix.get_xlc(env, xlc, packages)
-def generate(env):
+def generate(env) -> None:
"""Add Builders and construction variables for xlc / Visual Age
suite to an Environment."""
path, _cc, version = get_xlc(env)
diff --git a/scons/scons-local-4.5.2/SCons/Tool/aixcxx.py b/scons/scons-local-4.7.0/SCons/Tool/aixcxx.py
similarity index 98%
rename from scons/scons-local-4.5.2/SCons/Tool/aixcxx.py
rename to scons/scons-local-4.7.0/SCons/Tool/aixcxx.py
index 58d9ecca9..7b478997b 100644
--- a/scons/scons-local-4.5.2/SCons/Tool/aixcxx.py
+++ b/scons/scons-local-4.7.0/SCons/Tool/aixcxx.py
@@ -47,7 +47,7 @@ def get_xlc(env):
xlc = env.get('CXX', 'xlC')
return SCons.Platform.aix.get_xlc(env, xlc, packages)
-def generate(env):
+def generate(env) -> None:
"""Add Builders and construction variables for xlC / Visual Age
suite to an Environment."""
path, _cxx, version = get_xlc(env)
diff --git a/scons/scons-local-4.5.2/SCons/Tool/aixf77.py b/scons/scons-local-4.7.0/SCons/Tool/aixf77.py
similarity index 98%
rename from scons/scons-local-4.5.2/SCons/Tool/aixf77.py
rename to scons/scons-local-4.7.0/SCons/Tool/aixf77.py
index 4cef908fa..33511ee9c 100644
--- a/scons/scons-local-4.5.2/SCons/Tool/aixf77.py
+++ b/scons/scons-local-4.7.0/SCons/Tool/aixf77.py
@@ -50,7 +50,7 @@ def get_xlf77(env):
#return SCons.Platform.aix.get_xlc(env, xlf77, xlf77_r, packages)
return (None, xlf77, xlf77_r, None)
-def generate(env):
+def generate(env) -> None:
"""
Add Builders and construction variables for the Visual Age FORTRAN
compiler to an Environment.
diff --git a/scons/scons-local-4.5.2/SCons/Tool/aixlink.py b/scons/scons-local-4.7.0/SCons/Tool/aixlink.py
similarity index 98%
rename from scons/scons-local-4.5.2/SCons/Tool/aixlink.py
rename to scons/scons-local-4.7.0/SCons/Tool/aixlink.py
index dc0de2a3d..03fc3b011 100644
--- a/scons/scons-local-4.5.2/SCons/Tool/aixlink.py
+++ b/scons/scons-local-4.7.0/SCons/Tool/aixlink.py
@@ -48,7 +48,7 @@ def smart_linkflags(source, target, env, for_signature):
return ''
-def generate(env):
+def generate(env) -> None:
"""
Add Builders and construction variables for Visual Age linker to
an Environment.
diff --git a/scons/scons-local-4.5.2/SCons/Tool/applelink.py b/scons/scons-local-4.7.0/SCons/Tool/applelink.py
similarity index 98%
rename from scons/scons-local-4.5.2/SCons/Tool/applelink.py
rename to scons/scons-local-4.7.0/SCons/Tool/applelink.py
index b81d2b3cd..3dc744d46 100644
--- a/scons/scons-local-4.5.2/SCons/Tool/applelink.py
+++ b/scons/scons-local-4.7.0/SCons/Tool/applelink.py
@@ -79,7 +79,7 @@ def _applelib_check_valid_version(version_string):
return True, ""
-def _applelib_currentVersionFromSoVersion(source, target, env, for_signature):
+def _applelib_currentVersionFromSoVersion(source, target, env, for_signature) -> str:
"""
A generator function to create the -Wl,-current_version flag if needed.
If env['APPLELINK_NO_CURRENT_VERSION'] contains a true value no flag will be generated
@@ -110,7 +110,7 @@ def _applelib_currentVersionFromSoVersion(source, target, env, for_signature):
return "-Wl,-current_version,%s" % version_string
-def _applelib_compatVersionFromSoVersion(source, target, env, for_signature):
+def _applelib_compatVersionFromSoVersion(source, target, env, for_signature) -> str:
"""
A generator function to create the -Wl,-compatibility_version flag if needed.
If env['APPLELINK_NO_COMPATIBILITY_VERSION'] contains a true value no flag will be generated
@@ -141,7 +141,7 @@ def _applelib_compatVersionFromSoVersion(source, target, env, for_signature):
return "-Wl,-compatibility_version,%s" % version_string
-def _applelib_soname(target, source, env, for_signature):
+def _applelib_soname(target, source, env, for_signature) -> str:
"""
Override default _soname() function from SCons.Tools.linkCommon.SharedLibrary.
Apple's file naming for versioned shared libraries puts the version string before
@@ -160,7 +160,7 @@ def _applelib_soname(target, source, env, for_signature):
return "$SHLIBPREFIX$_get_shlib_stem$_SHLIBSOVERSION${SHLIBSUFFIX}"
-def generate(env):
+def generate(env) -> None:
"""Add Builders and construction variables for applelink to an
Environment."""
link.generate(env)
diff --git a/scons/scons-local-4.5.2/SCons/Tool/ar.py b/scons/scons-local-4.7.0/SCons/Tool/ar.py
similarity index 98%
rename from scons/scons-local-4.5.2/SCons/Tool/ar.py
rename to scons/scons-local-4.7.0/SCons/Tool/ar.py
index 2cd15c844..e3709273b 100644
--- a/scons/scons-local-4.5.2/SCons/Tool/ar.py
+++ b/scons/scons-local-4.7.0/SCons/Tool/ar.py
@@ -38,7 +38,7 @@ import SCons.Tool
import SCons.Util
-def generate(env):
+def generate(env) -> None:
"""Add Builders and construction variables for ar to an Environment."""
SCons.Tool.createStaticLibBuilder(env)
diff --git a/scons/scons-local-4.5.2/SCons/Tool/as.py b/scons/scons-local-4.7.0/SCons/Tool/as.py
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/as.py
rename to scons/scons-local-4.7.0/SCons/Tool/as.py
diff --git a/scons/scons-local-4.5.2/SCons/Tool/asm.py b/scons/scons-local-4.7.0/SCons/Tool/asm.py
similarity index 99%
rename from scons/scons-local-4.5.2/SCons/Tool/asm.py
rename to scons/scons-local-4.7.0/SCons/Tool/asm.py
index c7482513b..2c9a915c9 100644
--- a/scons/scons-local-4.5.2/SCons/Tool/asm.py
+++ b/scons/scons-local-4.7.0/SCons/Tool/asm.py
@@ -46,7 +46,7 @@ if SCons.Util.case_sensitive_suffixes('.s', '.S'):
else:
ASSuffixes.extend(['.S'])
-def generate(env):
+def generate(env) -> None:
"""Add Builders and construction variables for as to an Environment."""
static_obj, shared_obj = SCons.Tool.createObjBuilders(env)
diff --git a/scons/scons-local-4.5.2/SCons/Tool/bcc32.py b/scons/scons-local-4.7.0/SCons/Tool/bcc32.py
similarity index 99%
rename from scons/scons-local-4.5.2/SCons/Tool/bcc32.py
rename to scons/scons-local-4.7.0/SCons/Tool/bcc32.py
index 55f871b75..5bd14f65f 100644
--- a/scons/scons-local-4.5.2/SCons/Tool/bcc32.py
+++ b/scons/scons-local-4.7.0/SCons/Tool/bcc32.py
@@ -44,7 +44,7 @@ def findIt(program, env):
env.PrependENVPath('PATH', dir)
return borwin
-def generate(env):
+def generate(env) -> None:
findIt('bcc32', env)
"""Add Builders and construction variables for bcc to an
Environment."""
diff --git a/scons/scons-local-4.5.2/SCons/Tool/c++.py b/scons/scons-local-4.7.0/SCons/Tool/c++.py
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/c++.py
rename to scons/scons-local-4.7.0/SCons/Tool/c++.py
diff --git a/scons/scons-local-4.5.2/SCons/Tool/cc.py b/scons/scons-local-4.7.0/SCons/Tool/cc.py
similarity index 98%
rename from scons/scons-local-4.5.2/SCons/Tool/cc.py
rename to scons/scons-local-4.7.0/SCons/Tool/cc.py
index 590ec5fd3..e9cbe530b 100644
--- a/scons/scons-local-4.5.2/SCons/Tool/cc.py
+++ b/scons/scons-local-4.7.0/SCons/Tool/cc.py
@@ -40,7 +40,7 @@ CSuffixes = ['.c', '.m']
if not SCons.Util.case_sensitive_suffixes('.c', '.C'):
CSuffixes.append('.C')
-def add_common_cc_variables(env):
+def add_common_cc_variables(env) -> None:
"""
Add underlying common "C compiler" variables that
are used by multiple tools (specifically, c++).
@@ -64,7 +64,7 @@ def add_common_cc_variables(env):
compilers = ['cc']
-def generate(env):
+def generate(env) -> None:
"""
Add Builders and construction variables for C compilers to an Environment.
"""
diff --git a/scons/scons-local-4.5.2/SCons/Tool/clang.py b/scons/scons-local-4.7.0/SCons/Tool/clang.py
similarity index 74%
rename from scons/scons-local-4.5.2/SCons/Tool/clang.py
rename to scons/scons-local-4.7.0/SCons/Tool/clang.py
index 518b09ed0..3b9488f9e 100644
--- a/scons/scons-local-4.5.2/SCons/Tool/clang.py
+++ b/scons/scons-local-4.7.0/SCons/Tool/clang.py
@@ -33,7 +33,7 @@ selection method.
import os
import re
-import subprocess
+from subprocess import DEVNULL, PIPE
import SCons.Util
import SCons.Tool.cc
@@ -44,17 +44,18 @@ from SCons.Tool.MSCommon import msvc_setup_env_once
compilers = ['clang']
-def generate(env):
+def generate(env) -> None:
"""Add Builders and construction variables for clang to an Environment."""
SCons.Tool.cc.generate(env)
if env['PLATFORM'] == 'win32':
# Ensure that we have a proper path for clang
- clang = SCons.Tool.find_program_path(env, compilers[0],
- default_paths=get_clang_install_dirs(env['PLATFORM']))
+ clang = SCons.Tool.find_program_path(
+ env, compilers[0], default_paths=get_clang_install_dirs(env['PLATFORM'])
+ )
if clang:
clang_bin_dir = os.path.dirname(clang)
- env.AppendENVPath('PATH', clang_bin_dir)
+ env.AppendENVPath("PATH", clang_bin_dir)
# Set-up ms tools paths
msvc_setup_env_once(env)
@@ -67,24 +68,19 @@ def generate(env):
# determine compiler version
if env['CC']:
- # pipe = SCons.Action._subproc(env, [env['CC'], '-dumpversion'],
- pipe = SCons.Action._subproc(env, [env['CC'], '--version'],
- stdin='devnull',
- stderr='devnull',
- stdout=subprocess.PIPE)
- if pipe.wait() != 0: return
- # clang -dumpversion is of no use
- with pipe.stdout:
- line = pipe.stdout.readline()
- line = line.decode()
- match = re.search(r'clang +version +([0-9]+(?:\.[0-9]+)+)', line)
- if match:
- env['CCVERSION'] = match.group(1)
+ kw = {
+ 'stdout': PIPE,
+ 'stderr': DEVNULL,
+ 'universal_newlines': True,
+ }
+ cp = SCons.Action.scons_subproc_run(env, [env['CC'], '-dumpversion'], **kw)
+ line = cp.stdout
+ if line:
+ env['CCVERSION'] = line
env['CCDEPFLAGS'] = '-MMD -MF ${TARGET}.d'
env["NINJA_DEPFILE_PARSE_FORMAT"] = 'clang'
-
def exists(env):
return env.Detect(compilers)
diff --git a/scons/scons-local-4.5.2/SCons/Tool/clangCommon/__init__.py b/scons/scons-local-4.7.0/SCons/Tool/clangCommon/__init__.py
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/clangCommon/__init__.py
rename to scons/scons-local-4.7.0/SCons/Tool/clangCommon/__init__.py
diff --git a/scons/scons-local-4.5.2/SCons/Tool/clangxx.py b/scons/scons-local-4.7.0/SCons/Tool/clangxx.py
similarity index 78%
rename from scons/scons-local-4.5.2/SCons/Tool/clangxx.py
rename to scons/scons-local-4.7.0/SCons/Tool/clangxx.py
index 07d8378e3..9659fe4df 100644
--- a/scons/scons-local-4.5.2/SCons/Tool/clangxx.py
+++ b/scons/scons-local-4.7.0/SCons/Tool/clangxx.py
@@ -33,7 +33,7 @@ selection method.
import os.path
import re
-import subprocess
+from subprocess import DEVNULL, PIPE
import SCons.Tool
import SCons.Util
@@ -44,13 +44,13 @@ from SCons.Tool.MSCommon import msvc_setup_env_once
compilers = ['clang++']
-def generate(env):
+def generate(env) -> None:
"""Add Builders and construction variables for clang++ to an Environment."""
static_obj, shared_obj = SCons.Tool.createObjBuilders(env)
SCons.Tool.cxx.generate(env)
- env['CXX'] = env.Detect(compilers) or 'clang++'
+ env['CXX'] = env.Detect(compilers) or 'clang++'
# platform specific settings
if env['PLATFORM'] == 'aix':
@@ -63,7 +63,9 @@ def generate(env):
env['SHOBJSUFFIX'] = '.pic.o'
elif env['PLATFORM'] == 'win32':
# Ensure that we have a proper path for clang++
- clangxx = SCons.Tool.find_program_path(env, compilers[0], default_paths=get_clang_install_dirs(env['PLATFORM']))
+ clangxx = SCons.Tool.find_program_path(
+ env, compilers[0], default_paths=get_clang_install_dirs(env['PLATFORM'])
+ )
if clangxx:
clangxx_bin_dir = os.path.dirname(clangxx)
env.AppendENVPath('PATH', clangxx_bin_dir)
@@ -71,23 +73,17 @@ def generate(env):
# Set-up ms tools paths
msvc_setup_env_once(env)
-
# determine compiler version
if env['CXX']:
- pipe = SCons.Action._subproc(env, [env['CXX'], '--version'],
- stdin='devnull',
- stderr='devnull',
- stdout=subprocess.PIPE)
- if pipe.wait() != 0:
- return
-
- # clang -dumpversion is of no use
- with pipe.stdout:
- line = pipe.stdout.readline()
- line = line.decode()
- match = re.search(r'clang +version +([0-9]+(?:\.[0-9]+)+)', line)
- if match:
- env['CXXVERSION'] = match.group(1)
+ kw = {
+ 'stdout': PIPE,
+ 'stderr': DEVNULL,
+ 'universal_newlines': True,
+ }
+ cp = SCons.Action.scons_subproc_run(env, [env['CXX'], '-dumpversion'], **kw)
+ line = cp.stdout
+ if line:
+ env['CXXVERSION'] = line
env['CCDEPFLAGS'] = '-MMD -MF ${TARGET}.d'
env["NINJA_DEPFILE_PARSE_FORMAT"] = 'clang'
diff --git a/scons/scons-local-4.5.2/SCons/Tool/compilation_db.py b/scons/scons-local-4.7.0/SCons/Tool/compilation_db.py
similarity index 91%
rename from scons/scons-local-4.5.2/SCons/Tool/compilation_db.py
rename to scons/scons-local-4.7.0/SCons/Tool/compilation_db.py
index a4954c1de..e17b5dc66 100644
--- a/scons/scons-local-4.5.2/SCons/Tool/compilation_db.py
+++ b/scons/scons-local-4.7.0/SCons/Tool/compilation_db.py
@@ -1,12 +1,5 @@
-"""
-Implements the ability for SCons to emit a compilation database for the MongoDB project. See
-http://clang.llvm.org/docs/JSONCompilationDatabase.html for details on what a compilation
-database is, and why you might want one. The only user visible entry point here is
-'env.CompilationDatabase'. This method takes an optional 'target' to name the file that
-should hold the compilation database, otherwise, the file defaults to compile_commands.json,
-which is the name that most clang tools search for by default.
-"""
-
+# MIT License
+#
# Copyright 2020 MongoDB Inc.
#
# Permission is hereby granted, free of charge, to any person obtaining
@@ -27,7 +20,17 @@ which is the name that most clang tools search for by default.
# 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.
-#
+
+"""Compilation Database
+
+Implements the ability for SCons to emit a compilation database for a
+project. See https://clang.llvm.org/docs/JSONCompilationDatabase.html
+for details on what a compilation database is, and why you might want one.
+The only user visible entry point here is ``env.CompilationDatabase``.
+This method takes an optional *target* to name the file that should hold
+the compilation database, otherwise, the file defaults to
+``compile_commands.json``, the name that most clang tools search for by default.
+"""
import json
import itertools
@@ -51,12 +54,12 @@ __COMPILATION_DB_ENTRIES = []
# We make no effort to avoid rebuilding the entries. Someday, perhaps we could and even
# integrate with the cache, but there doesn't seem to be much call for it.
class __CompilationDbNode(SCons.Node.Python.Value):
- def __init__(self, value):
+ def __init__(self, value) -> None:
SCons.Node.Python.Value.__init__(self, value)
self.Decider(changed_since_last_build_node)
-def changed_since_last_build_node(child, target, prev_ni, node):
+def changed_since_last_build_node(child, target, prev_ni, node) -> bool:
""" Dummy decider to force always building"""
return True
@@ -111,7 +114,7 @@ class CompDBTEMPFILE(TempFileMunge):
return self.cmd
-def compilation_db_entry_action(target, source, env, **kw):
+def compilation_db_entry_action(target, source, env, **kw) -> None:
"""
Create a dictionary with evaluated command line, target, source
and store that info as an attribute on the target
@@ -140,7 +143,7 @@ def compilation_db_entry_action(target, source, env, **kw):
target[0].write(entry)
-def write_compilation_db(target, source, env):
+def write_compilation_db(target, source, env) -> None:
entries = []
use_abspath = env['COMPILATIONDB_USE_ABSPATH'] in [True, 1, 'True', 'true']
@@ -197,7 +200,7 @@ def compilation_db_emitter(target, source, env):
return target, source
-def generate(env, **kwargs):
+def generate(env, **kwargs) -> None:
static_obj, shared_obj = SCons.Tool.createObjBuilders(env)
env["COMPILATIONDB_COMSTR"] = kwargs.get(
@@ -261,5 +264,5 @@ def generate(env, **kwargs):
env['COMPILATIONDB_PATH_FILTER'] = ''
-def exists(env):
+def exists(env) -> bool:
return True
diff --git a/scons/scons-local-4.5.2/SCons/Tool/cvf.py b/scons/scons-local-4.7.0/SCons/Tool/cvf.py
similarity index 98%
rename from scons/scons-local-4.5.2/SCons/Tool/cvf.py
rename to scons/scons-local-4.7.0/SCons/Tool/cvf.py
index 47e733ebd..0dc74ade3 100644
--- a/scons/scons-local-4.5.2/SCons/Tool/cvf.py
+++ b/scons/scons-local-4.7.0/SCons/Tool/cvf.py
@@ -33,7 +33,7 @@ from . import fortran
compilers = ['f90']
-def generate(env):
+def generate(env) -> None:
"""Add Builders and construction variables for compaq visual fortran to an Environment."""
fortran.generate(env)
diff --git a/scons/scons-local-4.5.2/SCons/Tool/cxx.py b/scons/scons-local-4.7.0/SCons/Tool/cxx.py
similarity index 92%
rename from scons/scons-local-4.5.2/SCons/Tool/cxx.py
rename to scons/scons-local-4.7.0/SCons/Tool/cxx.py
index 128cdc4f6..2cf3299fb 100644
--- a/scons/scons-local-4.5.2/SCons/Tool/cxx.py
+++ b/scons/scons-local-4.7.0/SCons/Tool/cxx.py
@@ -1,12 +1,6 @@
-"""SCons.Tool.c++
-
-Tool-specific initialization for generic Posix C++ compilers.
-
-There normally shouldn't be any need to import this module directly.
-It will usually be imported through the generic SCons.Tool.Tool()
-selection method.
-"""
-
+# 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
@@ -26,7 +20,13 @@ selection method.
# 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.
-#
+
+"""Tool-specific initialization for generic Posix C++ compilers.
+
+There normally shouldn't be any need to import this module directly.
+It will usually be imported through the generic SCons.Tool.Tool()
+selection method.
+"""
import os.path
@@ -39,18 +39,18 @@ CXXSuffixes = ['.cpp', '.cc', '.cxx', '.c++', '.C++', '.mm']
if SCons.Util.case_sensitive_suffixes('.c', '.C'):
CXXSuffixes.append('.C')
-def iscplusplus(source):
+def iscplusplus(source) -> bool:
if not source:
# Source might be None for unusual cases like SConf.
- return 0
+ return False
for s in source:
if s.sources:
ext = os.path.splitext(str(s.sources[0]))[1]
if ext in CXXSuffixes:
- return 1
- return 0
+ return True
+ return False
-def generate(env):
+def generate(env) -> None:
"""
Add Builders and construction variables for Visual Age C++ compilers
to an Environment.
diff --git a/scons/scons-local-4.5.2/SCons/Tool/cyglink.py b/scons/scons-local-4.7.0/SCons/Tool/cyglink.py
similarity index 81%
rename from scons/scons-local-4.5.2/SCons/Tool/cyglink.py
rename to scons/scons-local-4.7.0/SCons/Tool/cyglink.py
index bb5cd1035..6a5ca99cf 100644
--- a/scons/scons-local-4.5.2/SCons/Tool/cyglink.py
+++ b/scons/scons-local-4.7.0/SCons/Tool/cyglink.py
@@ -1,6 +1,29 @@
+# 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.
+
"""SCons.Tool.cyglink
-Customization of gnulink for Cygwin (http://www.cygwin.com/)
+Customization of gnulink for Cygwin (https://www.cygwin.com/)
There normally shouldn't be any need to import this module directly.
It will usually be imported through the generic SCons.Tool.Tool()
@@ -24,24 +47,24 @@ def cyglink_lib_emitter(target, source, env, **kw):
no_import_lib = env.get('no_import_lib', False)
if verbose:
- print("cyglink_lib_emitter: target[0]={!r}".format(target[0].get_path()))
+ print(f"cyglink_lib_emitter: target[0]={target[0].get_path()!r}")
if not no_import_lib:
# Specify import lib and add to targets
import_lib = env.subst('$%s_IMPLIBNAME' % var_prefix, target=target, source=source)
import_lib_target = env.fs.File(import_lib)
- import_lib_target.attributes.shared = 1
+ import_lib_target.attributes.shared = True
target.append(import_lib_target)
if verbose:
- print("cyglink_lib_emitter: import_lib={}".format(import_lib))
+ print(f"cyglink_lib_emitter: import_lib={import_lib}")
print("cyglink_lib_emitter: target=%s" % target)
for tgt in target:
if is_String(tgt):
tgt = env.File(tgt)
- tgt.attributes.shared = 1
+ tgt.attributes.shared = True
return target, source
@@ -134,7 +157,7 @@ def cyglink_ldmodule_version(target, source, env, for_signature):
return "." + version
-def _implib_pre_flags(target, source, env, for_signature):
+def _implib_pre_flags(target, source, env, for_signature) -> str:
no_import_lib = env.get('no_import_lib', False)
if no_import_lib in ['1', 'True', 'true', True]:
return ''
@@ -142,7 +165,7 @@ def _implib_pre_flags(target, source, env, for_signature):
return '-Wl,--out-implib=${TARGETS[1]} -Wl,--export-all-symbols -Wl,--enable-auto-import -Wl,--whole-archive'
-def _implib_post_flags(target, source, env, for_signature):
+def _implib_post_flags(target, source, env, for_signature) -> str:
no_import_lib = env.get('no_import_lib', False)
if no_import_lib in ['1', 'True', 'true', True]:
return ''
@@ -150,7 +173,7 @@ def _implib_post_flags(target, source, env, for_signature):
return '-Wl,--no-whole-archive'
-def generate(env):
+def generate(env) -> None:
"""Add Builders and construction variables for cyglink to an Environment."""
gnulink.generate(env)
diff --git a/scons/scons-local-4.5.2/SCons/Tool/default.py b/scons/scons-local-4.7.0/SCons/Tool/default.py
similarity index 88%
rename from scons/scons-local-4.5.2/SCons/Tool/default.py
rename to scons/scons-local-4.7.0/SCons/Tool/default.py
index a36e9ec1c..3ceefb1d9 100644
--- a/scons/scons-local-4.5.2/SCons/Tool/default.py
+++ b/scons/scons-local-4.7.0/SCons/Tool/default.py
@@ -1,15 +1,6 @@
-"""SCons.Tool.default
-
-Initialization with a default tool list.
-
-There normally shouldn't be any need to import this module directly.
-It will usually be imported through the generic SCons.Tool.Tool()
-selection method.
-
-"""
-
+# MIT License
#
-# __COPYRIGHT__
+# 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
@@ -29,19 +20,23 @@ selection method.
# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-#
-__revision__ = "__FILE__ __REVISION__ __DATE__ __DEVELOPER__"
+"""Initialization with a default tool list.
+
+There normally shouldn't be any need to import this module directly.
+It will usually be imported through the generic SCons.Tool.Tool()
+selection method.
+"""
import SCons.Tool
-def generate(env):
+def generate(env) -> None:
"""Add default tools."""
for t in SCons.Tool.tool_list(env['PLATFORM'], env):
SCons.Tool.Tool(t)(env)
-def exists(env):
- return 1
+def exists(env) -> bool:
+ return True
# Local Variables:
# tab-width:4
diff --git a/scons/scons-local-4.5.2/SCons/Tool/dmd.py b/scons/scons-local-4.7.0/SCons/Tool/dmd.py
similarity index 88%
rename from scons/scons-local-4.5.2/SCons/Tool/dmd.py
rename to scons/scons-local-4.7.0/SCons/Tool/dmd.py
index 67ed43eda..2ac84d0cf 100644
--- a/scons/scons-local-4.5.2/SCons/Tool/dmd.py
+++ b/scons/scons-local-4.7.0/SCons/Tool/dmd.py
@@ -24,7 +24,7 @@
"""SCons.Tool.dmd
Tool-specific initialization for the Digital Mars D compiler.
-(http://digitalmars.com/d)
+(https://digitalmars.com/d)
Originally coded by Andy Friesen (andy@ikagames.com)
15 November 2003
@@ -82,23 +82,26 @@ import SCons.Tool
import SCons.Tool.DCommon as DCommon
-def generate(env):
+def generate(env) -> None:
static_obj, shared_obj = SCons.Tool.createObjBuilders(env)
static_obj.add_action('.d', SCons.Defaults.DAction)
shared_obj.add_action('.d', SCons.Defaults.ShDAction)
- static_obj.add_emitter('.d', SCons.Defaults.StaticObjectEmitter)
- shared_obj.add_emitter('.d', SCons.Defaults.SharedObjectEmitter)
+ static_obj.add_emitter('.d', DCommon.DStaticObjectEmitter)
+ shared_obj.add_emitter('.d', DCommon.DSharedObjectEmitter)
env['DC'] = env.Detect(['dmd', 'ldmd2', 'gdmd']) or 'dmd'
- env['DCOM'] = '$DC $_DINCFLAGS $_DVERFLAGS $_DDEBUGFLAGS $_DFLAGS -c -of$TARGET $SOURCES'
+ env['DCOM'] = '$DC $_DINCFLAGS $_DVERFLAGS $_DDEBUGFLAGS $_DFLAGS $_DI_FLAGS -c -of$TARGET $SOURCES'
env['_DINCFLAGS'] = '${_concat(DINCPREFIX, DPATH, DINCSUFFIX, __env__, RDirs, TARGET, SOURCE)}'
env['_DVERFLAGS'] = '${_concat(DVERPREFIX, DVERSIONS, DVERSUFFIX, __env__)}'
env['_DDEBUGFLAGS'] = '${_concat(DDEBUGPREFIX, DDEBUG, DDEBUGSUFFIX, __env__)}'
+
+ env['_DI_FLAGS'] = "${DI_FILE_DIR and DI_FILE_DIR_PREFIX+DI_FILE_DIR+DI_FILE_DIR_SUFFFIX}"
+
env['_DFLAGS'] = '${_concat(DFLAGPREFIX, DFLAGS, DFLAGSUFFIX, __env__)}'
env['SHDC'] = '$DC'
- env['SHDCOM'] = '$DC $_DINCFLAGS $_DVERFLAGS $_DDEBUGFLAGS $_DFLAGS -c -fPIC -of$TARGET $SOURCES'
+ env['SHDCOM'] = '$DC $_DINCFLAGS $_DVERFLAGS $_DDEBUGFLAGS $_DFLAGS $_DI_FLAGS -c -fPIC -of$TARGET $SOURCES'
env['DPATH'] = ['#/']
env['DFLAGS'] = []
@@ -118,6 +121,12 @@ def generate(env):
env['DFLAGSUFFIX'] = ''
env['DFILESUFFIX'] = '.d'
+ env['DI_FILE_DIR'] = ''
+ env['DI_FILE_SUFFIX'] = '.di'
+
+ env['DI_FILE_DIR_PREFIX'] = '-Hd='
+ env['DI_FILE_DIR_SUFFFIX'] = ''
+
env['DLINK'] = '$DC'
env['DLINKFLAGS'] = SCons.Util.CLVar('')
env['DLINKCOM'] = '$DLINK -of$TARGET $DLINKFLAGS $__DRPATH $SOURCES $_DLIBDIRFLAGS $_DLIBFLAGS'
@@ -129,14 +138,14 @@ def generate(env):
env['DLIBLINKPREFIX'] = '' if env['PLATFORM'] == 'win32' else '-L-l'
env['DLIBLINKSUFFIX'] = '.lib' if env['PLATFORM'] == 'win32' else ''
- env['_DLIBFLAGS'] = '${_stripixes(DLIBLINKPREFIX, LIBS, DLIBLINKSUFFIX, LIBPREFIXES, LIBSUFFIXES, __env__)}'
+ env['_DLIBFLAGS'] = '${_stripixes(DLIBLINKPREFIX, LIBS, DLIBLINKSUFFIX, LIBPREFIXES, LIBSUFFIXES, __env__, LIBLITERALPREFIX)}'
env['DLIBDIRPREFIX'] = '-L-L'
env['DLIBDIRSUFFIX'] = ''
env['_DLIBDIRFLAGS'] = '${_concat(DLIBDIRPREFIX, LIBPATH, DLIBDIRSUFFIX, __env__, RDirs, TARGET, SOURCE)}'
env['DLIB'] = 'lib' if env['PLATFORM'] == 'win32' else 'ar cr'
- env['DLIBCOM'] = '$DLIB $_DLIBFLAGS {0}$TARGET $SOURCES $_DLIBFLAGS'.format(
+ env['DLIBCOM'] = '$DLIB $_DLIBFLAGS {}$TARGET $SOURCES $_DLIBFLAGS'.format(
'-c ' if env['PLATFORM'] == 'win32' else '')
# env['_DLIBFLAGS'] = '${_concat(DLIBFLAGPREFIX, DLIBFLAGS, DLIBFLAGSUFFIX, __env__)}'
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/__init__.py b/scons/scons-local-4.7.0/SCons/Tool/docbook/__init__.py
similarity index 94%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/__init__.py
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/__init__.py
index 52e291144..3adb3148b 100644
--- a/scons/scons-local-4.5.2/SCons/Tool/docbook/__init__.py
+++ b/scons/scons-local-4.7.0/SCons/Tool/docbook/__init__.py
@@ -1,16 +1,6 @@
-
-"""SCons.Tool.docbook
-
-Tool-specific initialization for Docbook.
-
-There normally shouldn't be any need to import this module directly.
-It will usually be imported through the generic SCons.Tool.Tool()
-selection method.
-
-"""
-
+# MIT License
#
-# __COPYRIGHT__
+# 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
@@ -30,7 +20,13 @@ selection method.
# 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.
-#
+
+"""Tool-specific initialization for Docbook.
+
+There normally shouldn't be any need to import this module directly.
+It will usually be imported through the generic SCons.Tool.Tool()
+selection method.
+"""
import os
import glob
@@ -43,7 +39,6 @@ import SCons.Script
import SCons.Tool
import SCons.Util
-
__debug_tool_location = False
# Get full path to this script
scriptpath = os.path.dirname(os.path.realpath(__file__))
@@ -72,7 +67,7 @@ re_refname = re.compile(r"([^<]*)")
lmxl_xslt_global_max_depth = 3600
if has_lxml and lmxl_xslt_global_max_depth:
- def __lxml_xslt_set_global_max_depth(max_depth):
+ def __lxml_xslt_set_global_max_depth(max_depth) -> None:
from lxml import etree
etree.XSLT.set_global_max_depth(max_depth)
__lxml_xslt_set_global_max_depth(lmxl_xslt_global_max_depth)
@@ -93,7 +88,7 @@ def __extend_targets_sources(target, source):
return target, source
-def __init_xsl_stylesheet(kw, env, user_xsl_var, default_path):
+def __init_xsl_stylesheet(kw, env, user_xsl_var, default_path) -> None:
if kw.get('DOCBOOK_XSL','') == '':
xsl_style = kw.get('xsl', env.subst(user_xsl_var))
if xsl_style == '':
@@ -137,7 +132,7 @@ def __get_xml_text(root):
txt += e.data
return txt
-def __create_output_dir(base_dir):
+def __create_output_dir(base_dir) -> None:
""" Ensure that the output directory base_dir exists. """
root, tail = os.path.split(base_dir)
dir = None
@@ -160,8 +155,8 @@ def __create_output_dir(base_dir):
xsltproc_com_priority = ['xsltproc', 'saxon', 'saxon-xslt', 'xalan']
# TODO: Set minimum version of saxon-xslt to be 8.x (lower than this only supports xslt 1.0.
-# see: http://saxon.sourceforge.net/saxon6.5.5/
-# see: http://saxon.sourceforge.net/
+# see: https://saxon.sourceforge.net/saxon6.5.5/
+# see: https://saxon.sourceforge.net/
xsltproc_com = {'xsltproc' : '$DOCBOOK_XSLTPROC $DOCBOOK_XSLTPROCFLAGS -o $TARGET $DOCBOOK_XSL $SOURCE',
'saxon' : '$DOCBOOK_XSLTPROC $DOCBOOK_XSLTPROCFLAGS -o $TARGET $DOCBOOK_XSL $SOURCE $DOCBOOK_XSLTPROCPARAMS',
# Note if saxon-xslt is version 5.5 the proper arguments are: (swap order of docbook_xsl and source)
@@ -173,7 +168,7 @@ fop_com = {'fop' : '$DOCBOOK_FOP $DOCBOOK_FOPFLAGS -fo $SOURCE -pdf $TARGET',
'xep' : '$DOCBOOK_FOP $DOCBOOK_FOPFLAGS -valid -fo $SOURCE -pdf $TARGET',
'jw' : '$DOCBOOK_FOP $DOCBOOK_FOPFLAGS -f docbook -b pdf $SOURCE -o $TARGET'}
-def __detect_cl_tool(env, chainkey, cdict, cpriority=None):
+def __detect_cl_tool(env, chainkey, cdict, cpriority=None) -> None:
"""
Helper function, picks a command line tool from the list
and initializes its environment variables.
@@ -195,7 +190,7 @@ def __detect_cl_tool(env, chainkey, cdict, cpriority=None):
env[chainkey + 'COM'] = cdict[cltool]
break
-def _detect(env):
+def _detect(env) -> None:
"""
Detect all the command line tools that we might need for creating
the requested output formats.
@@ -235,7 +230,6 @@ def __xml_scan(node, env, path, arg):
# Try to call xsltproc
xsltproc = env.subst("$DOCBOOK_XSLTPROC")
if xsltproc and xsltproc.endswith('xsltproc'):
- # TODO: switch to _subproc or subprocess.run call
result = env.backtick(' '.join([xsltproc, xsl_file, str(node)]))
depfiles = [x.strip() for x in str(result).splitlines() if x.strip() != "" and not x.startswith(" None:
"""Generate the *.epub file from intermediate outputs
Constructs the epub file according to the Open Container Format. This
@@ -444,7 +438,7 @@ def DocbookEpub(env, target, source=None, *args, **kw):
zf.write(path, os.path.relpath(path, str(env.get('ZIPROOT', ''))),
zipfile.ZIP_DEFLATED)
- def add_resources(target, source, env):
+ def add_resources(target, source, env) -> None:
"""Add missing resources to the OEBPS directory
Ensure all the resources in the manifest are present in the OEBPS directory.
@@ -490,7 +484,7 @@ def DocbookEpub(env, target, source=None, *args, **kw):
# Set the fixed base_dir
kw['base_dir'] = 'OEBPS/'
- tocncx = __builder.__call__(env, 'toc.ncx', source[0], **kw)
+ tocncx = __builder(env, 'toc.ncx', source[0], **kw)
cxml = env.File('META-INF/container.xml')
env.SideEffect(cxml, tocncx)
@@ -524,7 +518,7 @@ def DocbookHtml(env, target, source=None, *args, **kw):
# Create targets
result = []
for t,s in zip(target,source):
- r = __builder.__call__(env, __ensure_suffix(t,'.html'), s, **kw)
+ r = __builder(env, __ensure_suffix(t,'.html'), s, **kw)
env.Depends(r, kw['DOCBOOK_XSL'])
result.extend(r)
@@ -556,7 +550,7 @@ def DocbookHtmlChunked(env, target, source=None, *args, **kw):
# Create targets
result = []
- r = __builder.__call__(env, __ensure_suffix(str(target[0]), '.html'), source[0], **kw)
+ r = __builder(env, __ensure_suffix(str(target[0]), '.html'), source[0], **kw)
env.Depends(r, kw['DOCBOOK_XSL'])
result.extend(r)
# Add supporting files for cleanup
@@ -591,7 +585,7 @@ def DocbookHtmlhelp(env, target, source=None, *args, **kw):
# Create targets
result = []
- r = __builder.__call__(env, __ensure_suffix(str(target[0]), '.html'), source[0], **kw)
+ r = __builder(env, __ensure_suffix(str(target[0]), '.html'), source[0], **kw)
env.Depends(r, kw['DOCBOOK_XSL'])
result.extend(r)
# Add supporting files for cleanup
@@ -617,10 +611,10 @@ def DocbookPdf(env, target, source=None, *args, **kw):
result = []
for t,s in zip(target,source):
t, stem = __ensure_suffix_stem(t, '.pdf')
- xsl = __builder.__call__(env, stem+'.fo', s, **kw)
+ xsl = __builder(env, stem+'.fo', s, **kw)
result.extend(xsl)
env.Depends(xsl, kw['DOCBOOK_XSL'])
- result.extend(__fop_builder.__call__(env, t, xsl, **kw))
+ result.extend(__fop_builder(env, t, xsl, **kw))
return result
@@ -660,7 +654,7 @@ def DocbookMan(env, target, source=None, *args, **kw):
except Exception:
# Use simple regex parsing
- with open(__ensure_suffix(str(s),'.xml'), 'r') as f:
+ with open(__ensure_suffix(str(s), '.xml')) as f:
content = f.read()
for m in re_manvolnum.finditer(content):
@@ -681,7 +675,7 @@ def DocbookMan(env, target, source=None, *args, **kw):
# We have to completely rely on the given target name
outfiles.append(t)
- __builder.__call__(env, outfiles[0], s, **kw)
+ __builder(env, outfiles[0], s, **kw)
env.Depends(outfiles[0], kw['DOCBOOK_XSL'])
result.append(outfiles[0])
if len(outfiles) > 1:
@@ -707,10 +701,10 @@ def DocbookSlidesPdf(env, target, source=None, *args, **kw):
result = []
for t,s in zip(target,source):
t, stem = __ensure_suffix_stem(t, '.pdf')
- xsl = __builder.__call__(env, stem+'.fo', s, **kw)
+ xsl = __builder(env, stem+'.fo', s, **kw)
env.Depends(xsl, kw['DOCBOOK_XSL'])
result.extend(xsl)
- result.extend(__fop_builder.__call__(env, t, xsl, **kw))
+ result.extend(__fop_builder(env, t, xsl, **kw))
return result
@@ -740,7 +734,7 @@ def DocbookSlidesHtml(env, target, source=None, *args, **kw):
# Create targets
result = []
- r = __builder.__call__(env, __ensure_suffix(str(target[0]), '.html'), source[0], **kw)
+ r = __builder(env, __ensure_suffix(str(target[0]), '.html'), source[0], **kw)
env.Depends(r, kw['DOCBOOK_XSL'])
result.extend(r)
# Add supporting files for cleanup
@@ -762,7 +756,7 @@ def DocbookXInclude(env, target, source, *args, **kw):
# Create targets
result = []
for t,s in zip(target,source):
- result.extend(__builder.__call__(env, t, s, **kw))
+ result.extend(__builder(env, t, s, **kw))
return result
@@ -782,14 +776,14 @@ def DocbookXslt(env, target, source=None, *args, **kw):
# Create targets
result = []
for t,s in zip(target,source):
- r = __builder.__call__(env, t, s, **kw)
+ r = __builder(env, t, s, **kw)
env.Depends(r, kw['DOCBOOK_XSL'])
result.extend(r)
return result
-def generate(env):
+def generate(env) -> None:
"""Add Builders and construction variables for docbook to an Environment."""
env.SetDefault(
@@ -839,5 +833,5 @@ def generate(env):
env.AddMethod(DocbookXslt, "DocbookXslt")
-def exists(env):
- return 1
+def exists(env) -> bool:
+ return True
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/AUTHORS b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/AUTHORS
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/AUTHORS
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/AUTHORS
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/BUGS b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/BUGS
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/BUGS
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/BUGS
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/COPYING b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/COPYING
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/COPYING
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/COPYING
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/INSTALL b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/INSTALL
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/INSTALL
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/INSTALL
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/Makefile b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/Makefile
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/Makefile
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/Makefile
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/NEWS b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/NEWS
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/NEWS
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/NEWS
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/NEWS.html b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/NEWS.html
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/NEWS.html
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/NEWS.html
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/NEWS.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/NEWS.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/NEWS.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/NEWS.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/README b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/README
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/README
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/README
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/RELEASE-NOTES.html b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/RELEASE-NOTES.html
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/RELEASE-NOTES.html
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/RELEASE-NOTES.html
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/RELEASE-NOTES.txt b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/RELEASE-NOTES.txt
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/RELEASE-NOTES.txt
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/RELEASE-NOTES.txt
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/RELEASE-NOTES.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/RELEASE-NOTES.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/RELEASE-NOTES.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/RELEASE-NOTES.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/TODO b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/TODO
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/TODO
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/TODO
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/VERSION b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/VERSION
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/VERSION
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/VERSION
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/catalog.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/catalog.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/catalog.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/catalog.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/common/af.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/common/af.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/common/af.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/common/af.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/common/am.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/common/am.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/common/am.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/common/am.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/common/ar.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/common/ar.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/common/ar.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/common/ar.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/common/as.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/common/as.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/common/as.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/common/as.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/common/ast.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/common/ast.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/common/ast.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/common/ast.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/common/autoidx-kimber.xsl b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/common/autoidx-kimber.xsl
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/common/autoidx-kimber.xsl
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/common/autoidx-kimber.xsl
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/common/autoidx-kosek.xsl b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/common/autoidx-kosek.xsl
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/common/autoidx-kosek.xsl
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/common/autoidx-kosek.xsl
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/common/az.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/common/az.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/common/az.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/common/az.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/common/bg.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/common/bg.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/common/bg.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/common/bg.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/common/bn.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/common/bn.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/common/bn.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/common/bn.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/common/bn_in.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/common/bn_in.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/common/bn_in.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/common/bn_in.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/common/bs.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/common/bs.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/common/bs.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/common/bs.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/common/ca.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/common/ca.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/common/ca.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/common/ca.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/common/charmap.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/common/charmap.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/common/charmap.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/common/charmap.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/common/charmap.xsl b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/common/charmap.xsl
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/common/charmap.xsl
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/common/charmap.xsl
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/common/common.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/common/common.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/common/common.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/common/common.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/common/common.xsl b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/common/common.xsl
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/common/common.xsl
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/common/common.xsl
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/common/cs.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/common/cs.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/common/cs.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/common/cs.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/common/cy.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/common/cy.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/common/cy.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/common/cy.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/common/da.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/common/da.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/common/da.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/common/da.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/common/de.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/common/de.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/common/de.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/common/de.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/common/el.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/common/el.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/common/el.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/common/el.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/common/en.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/common/en.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/common/en.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/common/en.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/common/entities.ent b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/common/entities.ent
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/common/entities.ent
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/common/entities.ent
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/common/eo.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/common/eo.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/common/eo.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/common/eo.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/common/es.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/common/es.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/common/es.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/common/es.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/common/et.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/common/et.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/common/et.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/common/et.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/common/eu.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/common/eu.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/common/eu.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/common/eu.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/common/fa.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/common/fa.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/common/fa.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/common/fa.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/common/fi.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/common/fi.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/common/fi.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/common/fi.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/common/fr.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/common/fr.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/common/fr.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/common/fr.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/common/ga.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/common/ga.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/common/ga.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/common/ga.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/common/gentext.xsl b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/common/gentext.xsl
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/common/gentext.xsl
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/common/gentext.xsl
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/common/gl.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/common/gl.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/common/gl.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/common/gl.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/common/gu.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/common/gu.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/common/gu.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/common/gu.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/common/he.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/common/he.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/common/he.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/common/he.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/common/hi.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/common/hi.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/common/hi.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/common/hi.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/common/hr.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/common/hr.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/common/hr.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/common/hr.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/common/hu.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/common/hu.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/common/hu.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/common/hu.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/common/id.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/common/id.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/common/id.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/common/id.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/common/insertfile.xsl b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/common/insertfile.xsl
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/common/insertfile.xsl
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/common/insertfile.xsl
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/common/is.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/common/is.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/common/is.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/common/is.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/common/it.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/common/it.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/common/it.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/common/it.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/common/ja.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/common/ja.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/common/ja.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/common/ja.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/common/ka.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/common/ka.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/common/ka.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/common/ka.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/common/kn.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/common/kn.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/common/kn.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/common/kn.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/common/ko.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/common/ko.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/common/ko.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/common/ko.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/common/ky.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/common/ky.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/common/ky.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/common/ky.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/common/l10n.dtd b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/common/l10n.dtd
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/common/l10n.dtd
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/common/l10n.dtd
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/common/l10n.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/common/l10n.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/common/l10n.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/common/l10n.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/common/l10n.xsl b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/common/l10n.xsl
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/common/l10n.xsl
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/common/l10n.xsl
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/common/la.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/common/la.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/common/la.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/common/la.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/common/labels.xsl b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/common/labels.xsl
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/common/labels.xsl
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/common/labels.xsl
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/common/lt.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/common/lt.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/common/lt.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/common/lt.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/common/lv.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/common/lv.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/common/lv.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/common/lv.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/common/ml.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/common/ml.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/common/ml.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/common/ml.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/common/mn.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/common/mn.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/common/mn.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/common/mn.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/common/mr.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/common/mr.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/common/mr.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/common/mr.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/common/nb.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/common/nb.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/common/nb.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/common/nb.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/common/nds.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/common/nds.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/common/nds.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/common/nds.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/common/nl.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/common/nl.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/common/nl.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/common/nl.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/common/nn.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/common/nn.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/common/nn.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/common/nn.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/common/olink.xsl b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/common/olink.xsl
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/common/olink.xsl
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/common/olink.xsl
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/common/or.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/common/or.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/common/or.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/common/or.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/common/pa.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/common/pa.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/common/pa.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/common/pa.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/common/pi.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/common/pi.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/common/pi.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/common/pi.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/common/pi.xsl b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/common/pi.xsl
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/common/pi.xsl
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/common/pi.xsl
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/common/pl.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/common/pl.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/common/pl.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/common/pl.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/common/pt.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/common/pt.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/common/pt.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/common/pt.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/common/pt_br.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/common/pt_br.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/common/pt_br.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/common/pt_br.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/common/refentry.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/common/refentry.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/common/refentry.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/common/refentry.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/common/refentry.xsl b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/common/refentry.xsl
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/common/refentry.xsl
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/common/refentry.xsl
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/common/ro.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/common/ro.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/common/ro.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/common/ro.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/common/ru.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/common/ru.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/common/ru.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/common/ru.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/common/sk.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/common/sk.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/common/sk.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/common/sk.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/common/sl.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/common/sl.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/common/sl.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/common/sl.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/common/sq.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/common/sq.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/common/sq.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/common/sq.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/common/sr.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/common/sr.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/common/sr.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/common/sr.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/common/sr_Latn.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/common/sr_Latn.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/common/sr_Latn.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/common/sr_Latn.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/common/stripns.xsl b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/common/stripns.xsl
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/common/stripns.xsl
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/common/stripns.xsl
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/common/subtitles.xsl b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/common/subtitles.xsl
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/common/subtitles.xsl
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/common/subtitles.xsl
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/common/sv.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/common/sv.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/common/sv.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/common/sv.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/common/ta.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/common/ta.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/common/ta.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/common/ta.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/common/table.xsl b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/common/table.xsl
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/common/table.xsl
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/common/table.xsl
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/common/targetdatabase.dtd b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/common/targetdatabase.dtd
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/common/targetdatabase.dtd
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/common/targetdatabase.dtd
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/common/targets.xsl b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/common/targets.xsl
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/common/targets.xsl
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/common/targets.xsl
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/common/te.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/common/te.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/common/te.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/common/te.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/common/th.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/common/th.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/common/th.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/common/th.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/common/titles.xsl b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/common/titles.xsl
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/common/titles.xsl
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/common/titles.xsl
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/common/tl.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/common/tl.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/common/tl.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/common/tl.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/common/tr.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/common/tr.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/common/tr.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/common/tr.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/common/uk.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/common/uk.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/common/uk.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/common/uk.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/common/utility.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/common/utility.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/common/utility.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/common/utility.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/common/utility.xsl b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/common/utility.xsl
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/common/utility.xsl
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/common/utility.xsl
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/common/vi.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/common/vi.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/common/vi.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/common/vi.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/common/xh.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/common/xh.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/common/xh.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/common/xh.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/common/zh.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/common/zh.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/common/zh.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/common/zh.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/common/zh_cn.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/common/zh_cn.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/common/zh_cn.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/common/zh_cn.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/common/zh_tw.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/common/zh_tw.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/common/zh_tw.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/common/zh_tw.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/docsrc/authors.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/docsrc/authors.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/docsrc/authors.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/docsrc/authors.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/docsrc/copyright.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/docsrc/copyright.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/docsrc/copyright.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/docsrc/copyright.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/docsrc/license.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/docsrc/license.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/docsrc/license.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/docsrc/license.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/docsrc/reference.css b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/docsrc/reference.css
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/docsrc/reference.css
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/docsrc/reference.css
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/docsrc/reference.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/docsrc/reference.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/docsrc/reference.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/docsrc/reference.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/docsrc/reference.xml.included b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/docsrc/reference.xml.included
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/docsrc/reference.xml.included
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/docsrc/reference.xml.included
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/docsrc/warranty.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/docsrc/warranty.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/docsrc/warranty.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/docsrc/warranty.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/eclipse/eclipse.xsl b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/eclipse/eclipse.xsl
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/eclipse/eclipse.xsl
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/eclipse/eclipse.xsl
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/eclipse/eclipse3.xsl b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/eclipse/eclipse3.xsl
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/eclipse/eclipse3.xsl
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/eclipse/eclipse3.xsl
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/eclipse/profile-eclipse.xsl b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/eclipse/profile-eclipse.xsl
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/eclipse/profile-eclipse.xsl
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/eclipse/profile-eclipse.xsl
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/epub/README b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/epub/README
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/epub/README
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/epub/README
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/epub/bin/dbtoepub b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/epub/bin/dbtoepub
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/epub/bin/dbtoepub
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/epub/bin/dbtoepub
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/epub/bin/lib/docbook.rb b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/epub/bin/lib/docbook.rb
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/epub/bin/lib/docbook.rb
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/epub/bin/lib/docbook.rb
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/epub/bin/xslt/obfuscate.xsl b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/epub/bin/xslt/obfuscate.xsl
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/epub/bin/xslt/obfuscate.xsl
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/epub/bin/xslt/obfuscate.xsl
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/epub/docbook.xsl b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/epub/docbook.xsl
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/epub/docbook.xsl
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/epub/docbook.xsl
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/extensions/LICENSE.txt b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/extensions/LICENSE.txt
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/extensions/LICENSE.txt
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/extensions/LICENSE.txt
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/extensions/NOTICE.txt b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/extensions/NOTICE.txt
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/extensions/NOTICE.txt
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/extensions/NOTICE.txt
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/extensions/README.LIBXSLT b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/extensions/README.LIBXSLT
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/extensions/README.LIBXSLT
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/extensions/README.LIBXSLT
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/extensions/README.txt b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/extensions/README.txt
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/extensions/README.txt
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/extensions/README.txt
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/extensions/docbook.py b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/extensions/docbook.py
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/extensions/docbook.py
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/extensions/docbook.py
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/extensions/xslt.py b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/extensions/xslt.py
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/extensions/xslt.py
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/extensions/xslt.py
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/admon.xsl b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/admon.xsl
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/admon.xsl
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/admon.xsl
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/annotations.xsl b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/annotations.xsl
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/annotations.xsl
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/annotations.xsl
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/autoidx-kimber.xsl b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/autoidx-kimber.xsl
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/autoidx-kimber.xsl
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/autoidx-kimber.xsl
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/autoidx-kosek.xsl b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/autoidx-kosek.xsl
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/autoidx-kosek.xsl
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/autoidx-kosek.xsl
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/autoidx-ng.xsl b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/autoidx-ng.xsl
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/autoidx-ng.xsl
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/autoidx-ng.xsl
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/autoidx.xsl b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/autoidx.xsl
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/autoidx.xsl
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/autoidx.xsl
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/autotoc.xsl b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/autotoc.xsl
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/autotoc.xsl
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/autotoc.xsl
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/axf.xsl b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/axf.xsl
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/axf.xsl
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/axf.xsl
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/biblio-iso690.xsl b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/biblio-iso690.xsl
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/biblio-iso690.xsl
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/biblio-iso690.xsl
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/biblio.xsl b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/biblio.xsl
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/biblio.xsl
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/biblio.xsl
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/block.xsl b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/block.xsl
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/block.xsl
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/block.xsl
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/callout.xsl b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/callout.xsl
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/callout.xsl
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/callout.xsl
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/component.xsl b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/component.xsl
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/component.xsl
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/component.xsl
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/division.xsl b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/division.xsl
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/division.xsl
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/division.xsl
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/docbook.xsl b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/docbook.xsl
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/docbook.xsl
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/docbook.xsl
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/ebnf.xsl b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/ebnf.xsl
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/ebnf.xsl
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/ebnf.xsl
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/fo-rtf.xsl b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/fo-rtf.xsl
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/fo-rtf.xsl
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/fo-rtf.xsl
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/fo.xsl b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/fo.xsl
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/fo.xsl
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/fo.xsl
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/footnote.xsl b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/footnote.xsl
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/footnote.xsl
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/footnote.xsl
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/fop.xsl b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/fop.xsl
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/fop.xsl
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/fop.xsl
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/fop1.xsl b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/fop1.xsl
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/fop1.xsl
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/fop1.xsl
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/formal.xsl b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/formal.xsl
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/formal.xsl
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/formal.xsl
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/glossary.xsl b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/glossary.xsl
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/glossary.xsl
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/glossary.xsl
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/graphics.xsl b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/graphics.xsl
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/graphics.xsl
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/graphics.xsl
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/highlight.xsl b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/highlight.xsl
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/highlight.xsl
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/highlight.xsl
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/htmltbl.xsl b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/htmltbl.xsl
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/htmltbl.xsl
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/htmltbl.xsl
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/index.xsl b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/index.xsl
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/index.xsl
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/index.xsl
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/info.xsl b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/info.xsl
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/info.xsl
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/info.xsl
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/inline.xsl b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/inline.xsl
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/inline.xsl
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/inline.xsl
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/keywords.xsl b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/keywords.xsl
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/keywords.xsl
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/keywords.xsl
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/lists.xsl b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/lists.xsl
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/lists.xsl
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/lists.xsl
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/math.xsl b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/math.xsl
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/math.xsl
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/math.xsl
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/pagesetup.xsl b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/pagesetup.xsl
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/pagesetup.xsl
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/pagesetup.xsl
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/param.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/param.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/param.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/param.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/param.xsl b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/param.xsl
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/param.xsl
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/param.xsl
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/passivetex.xsl b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/passivetex.xsl
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/passivetex.xsl
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/passivetex.xsl
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/pdf2index b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/pdf2index
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/pdf2index
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/pdf2index
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/pi.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/pi.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/pi.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/pi.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/pi.xsl b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/pi.xsl
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/pi.xsl
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/pi.xsl
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/profile-docbook.xsl b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/profile-docbook.xsl
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/profile-docbook.xsl
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/profile-docbook.xsl
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/ptc.xsl b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/ptc.xsl
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/ptc.xsl
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/ptc.xsl
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/qandaset.xsl b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/qandaset.xsl
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/qandaset.xsl
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/qandaset.xsl
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/refentry.xsl b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/refentry.xsl
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/refentry.xsl
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/refentry.xsl
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/sections.xsl b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/sections.xsl
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/sections.xsl
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/sections.xsl
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/spaces.xsl b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/spaces.xsl
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/spaces.xsl
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/spaces.xsl
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/synop.xsl b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/synop.xsl
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/synop.xsl
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/synop.xsl
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/table.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/table.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/table.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/table.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/table.xsl b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/table.xsl
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/table.xsl
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/table.xsl
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/task.xsl b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/task.xsl
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/task.xsl
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/task.xsl
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/titlepage.templates.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/titlepage.templates.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/titlepage.templates.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/titlepage.templates.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/titlepage.templates.xsl b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/titlepage.templates.xsl
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/titlepage.templates.xsl
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/titlepage.templates.xsl
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/titlepage.xsl b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/titlepage.xsl
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/titlepage.xsl
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/titlepage.xsl
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/toc.xsl b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/toc.xsl
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/toc.xsl
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/toc.xsl
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/verbatim.xsl b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/verbatim.xsl
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/verbatim.xsl
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/verbatim.xsl
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/xep.xsl b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/xep.xsl
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/xep.xsl
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/xep.xsl
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/xref.xsl b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/xref.xsl
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/xref.xsl
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/xref.xsl
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/highlighting/README b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/highlighting/README
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/highlighting/README
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/highlighting/README
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/highlighting/c-hl.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/highlighting/c-hl.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/highlighting/c-hl.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/highlighting/c-hl.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/highlighting/common.xsl b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/highlighting/common.xsl
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/highlighting/common.xsl
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/highlighting/common.xsl
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/highlighting/cpp-hl.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/highlighting/cpp-hl.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/highlighting/cpp-hl.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/highlighting/cpp-hl.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/highlighting/csharp-hl.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/highlighting/csharp-hl.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/highlighting/csharp-hl.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/highlighting/csharp-hl.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/highlighting/delphi-hl.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/highlighting/delphi-hl.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/highlighting/delphi-hl.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/highlighting/delphi-hl.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/highlighting/ini-hl.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/highlighting/ini-hl.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/highlighting/ini-hl.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/highlighting/ini-hl.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/highlighting/java-hl.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/highlighting/java-hl.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/highlighting/java-hl.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/highlighting/java-hl.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/highlighting/javascript-hl.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/highlighting/javascript-hl.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/highlighting/javascript-hl.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/highlighting/javascript-hl.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/highlighting/m2-hl.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/highlighting/m2-hl.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/highlighting/m2-hl.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/highlighting/m2-hl.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/highlighting/myxml-hl.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/highlighting/myxml-hl.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/highlighting/myxml-hl.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/highlighting/myxml-hl.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/highlighting/perl-hl.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/highlighting/perl-hl.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/highlighting/perl-hl.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/highlighting/perl-hl.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/highlighting/php-hl.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/highlighting/php-hl.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/highlighting/php-hl.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/highlighting/php-hl.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/highlighting/python-hl.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/highlighting/python-hl.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/highlighting/python-hl.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/highlighting/python-hl.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/highlighting/ruby-hl.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/highlighting/ruby-hl.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/highlighting/ruby-hl.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/highlighting/ruby-hl.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/highlighting/tcl-hl.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/highlighting/tcl-hl.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/highlighting/tcl-hl.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/highlighting/tcl-hl.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/highlighting/xslthl-config.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/highlighting/xslthl-config.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/highlighting/xslthl-config.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/highlighting/xslthl-config.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/html/admon.xsl b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/html/admon.xsl
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/html/admon.xsl
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/html/admon.xsl
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/html/annotations.xsl b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/html/annotations.xsl
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/html/annotations.xsl
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/html/annotations.xsl
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/html/autoidx-kimber.xsl b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/html/autoidx-kimber.xsl
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/html/autoidx-kimber.xsl
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/html/autoidx-kimber.xsl
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/html/autoidx-kosek.xsl b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/html/autoidx-kosek.xsl
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/html/autoidx-kosek.xsl
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/html/autoidx-kosek.xsl
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/html/autoidx-ng.xsl b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/html/autoidx-ng.xsl
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/html/autoidx-ng.xsl
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/html/autoidx-ng.xsl
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/html/autoidx.xsl b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/html/autoidx.xsl
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/html/autoidx.xsl
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/html/autoidx.xsl
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/html/autotoc.xsl b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/html/autotoc.xsl
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/html/autotoc.xsl
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/html/autotoc.xsl
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/html/biblio-iso690.xsl b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/html/biblio-iso690.xsl
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/html/biblio-iso690.xsl
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/html/biblio-iso690.xsl
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/html/biblio.xsl b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/html/biblio.xsl
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/html/biblio.xsl
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/html/biblio.xsl
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/html/block.xsl b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/html/block.xsl
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/html/block.xsl
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/html/block.xsl
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/html/callout.xsl b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/html/callout.xsl
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/html/callout.xsl
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/html/callout.xsl
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/html/changebars.xsl b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/html/changebars.xsl
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/html/changebars.xsl
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/html/changebars.xsl
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/html/chunk-changebars.xsl b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/html/chunk-changebars.xsl
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/html/chunk-changebars.xsl
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/html/chunk-changebars.xsl
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/html/chunk-code.xsl b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/html/chunk-code.xsl
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/html/chunk-code.xsl
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/html/chunk-code.xsl
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/html/chunk-common.xsl b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/html/chunk-common.xsl
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/html/chunk-common.xsl
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/html/chunk-common.xsl
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/html/chunk.xsl b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/html/chunk.xsl
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/html/chunk.xsl
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/html/chunk.xsl
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/html/chunker.xsl b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/html/chunker.xsl
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/html/chunker.xsl
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/html/chunker.xsl
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/html/chunkfast.xsl b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/html/chunkfast.xsl
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/html/chunkfast.xsl
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/html/chunkfast.xsl
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/html/chunktoc.xsl b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/html/chunktoc.xsl
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/html/chunktoc.xsl
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/html/chunktoc.xsl
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/html/component.xsl b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/html/component.xsl
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/html/component.xsl
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/html/component.xsl
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/html/division.xsl b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/html/division.xsl
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/html/division.xsl
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/html/division.xsl
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/html/docbook.css.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/html/docbook.css.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/html/docbook.css.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/html/docbook.css.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/html/docbook.xsl b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/html/docbook.xsl
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/html/docbook.xsl
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/html/docbook.xsl
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/html/ebnf.xsl b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/html/ebnf.xsl
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/html/ebnf.xsl
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/html/ebnf.xsl
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/html/footnote.xsl b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/html/footnote.xsl
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/html/footnote.xsl
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/html/footnote.xsl
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/html/formal.xsl b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/html/formal.xsl
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/html/formal.xsl
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/html/formal.xsl
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/html/glossary.xsl b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/html/glossary.xsl
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/html/glossary.xsl
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/html/glossary.xsl
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/html/graphics.xsl b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/html/graphics.xsl
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/html/graphics.xsl
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/html/graphics.xsl
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/html/highlight.xsl b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/html/highlight.xsl
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/html/highlight.xsl
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/html/highlight.xsl
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/html/html-rtf.xsl b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/html/html-rtf.xsl
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/html/html-rtf.xsl
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/html/html-rtf.xsl
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/html/html.xsl b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/html/html.xsl
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/html/html.xsl
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/html/html.xsl
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/html/htmltbl.xsl b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/html/htmltbl.xsl
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/html/htmltbl.xsl
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/html/htmltbl.xsl
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/html/index.xsl b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/html/index.xsl
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/html/index.xsl
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/html/index.xsl
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/html/info.xsl b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/html/info.xsl
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/html/info.xsl
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/html/info.xsl
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/html/inline.xsl b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/html/inline.xsl
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/html/inline.xsl
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/html/inline.xsl
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/html/keywords.xsl b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/html/keywords.xsl
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/html/keywords.xsl
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/html/keywords.xsl
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/html/lists.xsl b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/html/lists.xsl
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/html/lists.xsl
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/html/lists.xsl
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/html/maketoc.xsl b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/html/maketoc.xsl
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/html/maketoc.xsl
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/html/maketoc.xsl
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/html/manifest.xsl b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/html/manifest.xsl
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/html/manifest.xsl
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/html/manifest.xsl
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/html/math.xsl b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/html/math.xsl
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/html/math.xsl
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/html/math.xsl
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/html/oldchunker.xsl b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/html/oldchunker.xsl
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/html/oldchunker.xsl
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/html/oldchunker.xsl
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/html/onechunk.xsl b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/html/onechunk.xsl
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/html/onechunk.xsl
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/html/onechunk.xsl
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/html/param.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/html/param.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/html/param.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/html/param.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/html/param.xsl b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/html/param.xsl
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/html/param.xsl
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/html/param.xsl
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/html/pi.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/html/pi.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/html/pi.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/html/pi.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/html/pi.xsl b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/html/pi.xsl
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/html/pi.xsl
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/html/pi.xsl
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/html/profile-chunk-code.xsl b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/html/profile-chunk-code.xsl
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/html/profile-chunk-code.xsl
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/html/profile-chunk-code.xsl
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/html/profile-chunk.xsl b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/html/profile-chunk.xsl
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/html/profile-chunk.xsl
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/html/profile-chunk.xsl
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/html/profile-docbook.xsl b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/html/profile-docbook.xsl
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/html/profile-docbook.xsl
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/html/profile-docbook.xsl
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/html/profile-onechunk.xsl b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/html/profile-onechunk.xsl
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/html/profile-onechunk.xsl
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/html/profile-onechunk.xsl
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/html/qandaset.xsl b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/html/qandaset.xsl
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/html/qandaset.xsl
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/html/qandaset.xsl
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/html/refentry.xsl b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/html/refentry.xsl
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/html/refentry.xsl
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/html/refentry.xsl
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/html/sections.xsl b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/html/sections.xsl
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/html/sections.xsl
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/html/sections.xsl
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/html/synop.xsl b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/html/synop.xsl
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/html/synop.xsl
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/html/synop.xsl
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/html/table.xsl b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/html/table.xsl
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/html/table.xsl
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/html/table.xsl
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/html/task.xsl b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/html/task.xsl
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/html/task.xsl
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/html/task.xsl
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/html/titlepage.templates.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/html/titlepage.templates.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/html/titlepage.templates.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/html/titlepage.templates.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/html/titlepage.templates.xsl b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/html/titlepage.templates.xsl
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/html/titlepage.templates.xsl
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/html/titlepage.templates.xsl
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/html/titlepage.xsl b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/html/titlepage.xsl
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/html/titlepage.xsl
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/html/titlepage.xsl
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/html/toc.xsl b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/html/toc.xsl
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/html/toc.xsl
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/html/toc.xsl
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/html/verbatim.xsl b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/html/verbatim.xsl
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/html/verbatim.xsl
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/html/verbatim.xsl
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/html/xref.xsl b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/html/xref.xsl
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/html/xref.xsl
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/html/xref.xsl
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/htmlhelp/htmlhelp-common.xsl b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/htmlhelp/htmlhelp-common.xsl
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/htmlhelp/htmlhelp-common.xsl
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/htmlhelp/htmlhelp-common.xsl
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/htmlhelp/htmlhelp.xsl b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/htmlhelp/htmlhelp.xsl
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/htmlhelp/htmlhelp.xsl
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/htmlhelp/htmlhelp.xsl
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/htmlhelp/profile-htmlhelp-common.xsl b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/htmlhelp/profile-htmlhelp-common.xsl
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/htmlhelp/profile-htmlhelp-common.xsl
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/htmlhelp/profile-htmlhelp-common.xsl
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/htmlhelp/profile-htmlhelp.xsl b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/htmlhelp/profile-htmlhelp.xsl
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/htmlhelp/profile-htmlhelp.xsl
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/htmlhelp/profile-htmlhelp.xsl
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/images/callouts/1.svg b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/images/callouts/1.svg
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/images/callouts/1.svg
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/images/callouts/1.svg
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/images/callouts/10.svg b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/images/callouts/10.svg
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/images/callouts/10.svg
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/images/callouts/10.svg
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/images/callouts/11.svg b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/images/callouts/11.svg
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/images/callouts/11.svg
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/images/callouts/11.svg
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/images/callouts/12.svg b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/images/callouts/12.svg
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/images/callouts/12.svg
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/images/callouts/12.svg
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/images/callouts/13.svg b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/images/callouts/13.svg
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/images/callouts/13.svg
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/images/callouts/13.svg
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/images/callouts/14.svg b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/images/callouts/14.svg
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/images/callouts/14.svg
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/images/callouts/14.svg
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/images/callouts/15.svg b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/images/callouts/15.svg
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/images/callouts/15.svg
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/images/callouts/15.svg
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/images/callouts/16.svg b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/images/callouts/16.svg
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/images/callouts/16.svg
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/images/callouts/16.svg
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/images/callouts/17.svg b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/images/callouts/17.svg
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/images/callouts/17.svg
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/images/callouts/17.svg
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/images/callouts/18.svg b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/images/callouts/18.svg
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/images/callouts/18.svg
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/images/callouts/18.svg
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/images/callouts/19.svg b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/images/callouts/19.svg
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/images/callouts/19.svg
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/images/callouts/19.svg
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/images/callouts/2.svg b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/images/callouts/2.svg
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/images/callouts/2.svg
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/images/callouts/2.svg
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/images/callouts/20.svg b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/images/callouts/20.svg
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/images/callouts/20.svg
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/images/callouts/20.svg
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/images/callouts/21.svg b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/images/callouts/21.svg
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/images/callouts/21.svg
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/images/callouts/21.svg
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/images/callouts/22.svg b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/images/callouts/22.svg
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/images/callouts/22.svg
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/images/callouts/22.svg
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/images/callouts/23.svg b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/images/callouts/23.svg
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/images/callouts/23.svg
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/images/callouts/23.svg
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/images/callouts/24.svg b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/images/callouts/24.svg
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/images/callouts/24.svg
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/images/callouts/24.svg
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/images/callouts/25.svg b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/images/callouts/25.svg
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/images/callouts/25.svg
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/images/callouts/25.svg
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/images/callouts/26.svg b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/images/callouts/26.svg
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/images/callouts/26.svg
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/images/callouts/26.svg
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/images/callouts/27.svg b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/images/callouts/27.svg
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/images/callouts/27.svg
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/images/callouts/27.svg
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/images/callouts/28.svg b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/images/callouts/28.svg
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/images/callouts/28.svg
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/images/callouts/28.svg
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/images/callouts/29.svg b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/images/callouts/29.svg
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/images/callouts/29.svg
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/images/callouts/29.svg
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/images/callouts/3.svg b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/images/callouts/3.svg
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/images/callouts/3.svg
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/images/callouts/3.svg
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/images/callouts/30.svg b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/images/callouts/30.svg
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/images/callouts/30.svg
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/images/callouts/30.svg
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/images/callouts/4.svg b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/images/callouts/4.svg
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/images/callouts/4.svg
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/images/callouts/4.svg
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/images/callouts/5.svg b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/images/callouts/5.svg
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/images/callouts/5.svg
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/images/callouts/5.svg
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/images/callouts/6.svg b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/images/callouts/6.svg
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/images/callouts/6.svg
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/images/callouts/6.svg
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/images/callouts/7.svg b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/images/callouts/7.svg
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/images/callouts/7.svg
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/images/callouts/7.svg
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/images/callouts/8.svg b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/images/callouts/8.svg
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/images/callouts/8.svg
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/images/callouts/8.svg
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/images/callouts/9.svg b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/images/callouts/9.svg
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/images/callouts/9.svg
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/images/callouts/9.svg
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/images/caution.svg b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/images/caution.svg
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/images/caution.svg
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/images/caution.svg
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/images/colorsvg/caution.svg b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/images/colorsvg/caution.svg
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/images/colorsvg/caution.svg
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/images/colorsvg/caution.svg
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/images/colorsvg/home.svg b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/images/colorsvg/home.svg
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/images/colorsvg/home.svg
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/images/colorsvg/home.svg
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/images/colorsvg/important.svg b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/images/colorsvg/important.svg
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/images/colorsvg/important.svg
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/images/colorsvg/important.svg
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/images/colorsvg/next.svg b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/images/colorsvg/next.svg
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/images/colorsvg/next.svg
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/images/colorsvg/next.svg
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/images/colorsvg/note.svg b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/images/colorsvg/note.svg
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/images/colorsvg/note.svg
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/images/colorsvg/note.svg
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/images/colorsvg/prev.svg b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/images/colorsvg/prev.svg
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/images/colorsvg/prev.svg
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/images/colorsvg/prev.svg
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/images/colorsvg/tip.svg b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/images/colorsvg/tip.svg
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/images/colorsvg/tip.svg
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/images/colorsvg/tip.svg
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/images/colorsvg/up.svg b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/images/colorsvg/up.svg
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/images/colorsvg/up.svg
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/images/colorsvg/up.svg
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/images/colorsvg/warning.svg b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/images/colorsvg/warning.svg
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/images/colorsvg/warning.svg
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/images/colorsvg/warning.svg
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/images/home.svg b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/images/home.svg
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/images/home.svg
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/images/home.svg
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/images/important.svg b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/images/important.svg
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/images/important.svg
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/images/important.svg
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/images/next.svg b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/images/next.svg
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/images/next.svg
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/images/next.svg
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/images/note.svg b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/images/note.svg
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/images/note.svg
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/images/note.svg
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/images/prev.svg b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/images/prev.svg
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/images/prev.svg
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/images/prev.svg
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/images/tip.svg b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/images/tip.svg
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/images/tip.svg
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/images/tip.svg
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/images/up.svg b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/images/up.svg
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/images/up.svg
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/images/up.svg
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/images/warning.svg b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/images/warning.svg
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/images/warning.svg
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/images/warning.svg
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/install.sh b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/install.sh
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/install.sh
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/install.sh
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/javahelp/javahelp.xsl b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/javahelp/javahelp.xsl
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/javahelp/javahelp.xsl
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/javahelp/javahelp.xsl
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/javahelp/profile-javahelp.xsl b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/javahelp/profile-javahelp.xsl
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/javahelp/profile-javahelp.xsl
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/javahelp/profile-javahelp.xsl
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/lib/lib.xsl b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/lib/lib.xsl
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/lib/lib.xsl
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/lib/lib.xsl
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/manpages/ChangeLog.20020917 b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/manpages/ChangeLog.20020917
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/manpages/ChangeLog.20020917
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/manpages/ChangeLog.20020917
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/manpages/block.xsl b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/manpages/block.xsl
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/manpages/block.xsl
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/manpages/block.xsl
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/manpages/charmap.groff.xsl b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/manpages/charmap.groff.xsl
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/manpages/charmap.groff.xsl
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/manpages/charmap.groff.xsl
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/manpages/docbook.xsl b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/manpages/docbook.xsl
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/manpages/docbook.xsl
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/manpages/docbook.xsl
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/manpages/endnotes.xsl b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/manpages/endnotes.xsl
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/manpages/endnotes.xsl
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/manpages/endnotes.xsl
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/manpages/html-synop.xsl b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/manpages/html-synop.xsl
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/manpages/html-synop.xsl
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/manpages/html-synop.xsl
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/manpages/info.xsl b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/manpages/info.xsl
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/manpages/info.xsl
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/manpages/info.xsl
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/manpages/inline.xsl b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/manpages/inline.xsl
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/manpages/inline.xsl
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/manpages/inline.xsl
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/manpages/lists.xsl b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/manpages/lists.xsl
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/manpages/lists.xsl
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/manpages/lists.xsl
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/manpages/other.xsl b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/manpages/other.xsl
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/manpages/other.xsl
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/manpages/other.xsl
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/manpages/param.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/manpages/param.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/manpages/param.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/manpages/param.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/manpages/param.xsl b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/manpages/param.xsl
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/manpages/param.xsl
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/manpages/param.xsl
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/manpages/pi.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/manpages/pi.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/manpages/pi.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/manpages/pi.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/manpages/pi.xsl b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/manpages/pi.xsl
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/manpages/pi.xsl
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/manpages/pi.xsl
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/manpages/profile-docbook.xsl b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/manpages/profile-docbook.xsl
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/manpages/profile-docbook.xsl
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/manpages/profile-docbook.xsl
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/manpages/refentry.xsl b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/manpages/refentry.xsl
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/manpages/refentry.xsl
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/manpages/refentry.xsl
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/manpages/synop.xsl b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/manpages/synop.xsl
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/manpages/synop.xsl
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/manpages/synop.xsl
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/manpages/table.xsl b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/manpages/table.xsl
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/manpages/table.xsl
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/manpages/table.xsl
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/manpages/utility.xsl b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/manpages/utility.xsl
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/manpages/utility.xsl
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/manpages/utility.xsl
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/abstract.notitle.enabled.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/abstract.notitle.enabled.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/abstract.notitle.enabled.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/abstract.notitle.enabled.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/abstract.properties.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/abstract.properties.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/abstract.properties.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/abstract.properties.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/abstract.title.properties.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/abstract.title.properties.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/abstract.title.properties.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/abstract.title.properties.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/active.toc.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/active.toc.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/active.toc.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/active.toc.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/ade.extensions.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/ade.extensions.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/ade.extensions.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/ade.extensions.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/admon.graphics.extension.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/admon.graphics.extension.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/admon.graphics.extension.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/admon.graphics.extension.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/admon.graphics.path.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/admon.graphics.path.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/admon.graphics.path.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/admon.graphics.path.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/admon.graphics.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/admon.graphics.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/admon.graphics.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/admon.graphics.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/admon.style.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/admon.style.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/admon.style.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/admon.style.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/admon.textlabel.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/admon.textlabel.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/admon.textlabel.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/admon.textlabel.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/admonition.properties.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/admonition.properties.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/admonition.properties.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/admonition.properties.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/admonition.title.properties.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/admonition.title.properties.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/admonition.title.properties.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/admonition.title.properties.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/alignment.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/alignment.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/alignment.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/alignment.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/annotate.toc.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/annotate.toc.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/annotate.toc.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/annotate.toc.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/annotation.css.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/annotation.css.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/annotation.css.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/annotation.css.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/annotation.graphic.close.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/annotation.graphic.close.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/annotation.graphic.close.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/annotation.graphic.close.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/annotation.graphic.open.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/annotation.graphic.open.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/annotation.graphic.open.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/annotation.graphic.open.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/annotation.js.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/annotation.js.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/annotation.js.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/annotation.js.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/annotation.support.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/annotation.support.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/annotation.support.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/annotation.support.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/appendix.autolabel.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/appendix.autolabel.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/appendix.autolabel.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/appendix.autolabel.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/arbortext.extensions.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/arbortext.extensions.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/arbortext.extensions.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/arbortext.extensions.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/article.appendix.title.properties.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/article.appendix.title.properties.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/article.appendix.title.properties.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/article.appendix.title.properties.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/author.othername.in.middle.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/author.othername.in.middle.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/author.othername.in.middle.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/author.othername.in.middle.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/autolayout-file.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/autolayout-file.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/autolayout-file.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/autolayout-file.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/autotoc.label.in.hyperlink.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/autotoc.label.in.hyperlink.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/autotoc.label.in.hyperlink.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/autotoc.label.in.hyperlink.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/autotoc.label.separator.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/autotoc.label.separator.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/autotoc.label.separator.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/autotoc.label.separator.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/axf.extensions.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/axf.extensions.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/axf.extensions.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/axf.extensions.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/banner.before.navigation.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/banner.before.navigation.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/banner.before.navigation.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/banner.before.navigation.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/base.dir.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/base.dir.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/base.dir.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/base.dir.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/biblioentry.item.separator.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/biblioentry.item.separator.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/biblioentry.item.separator.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/biblioentry.item.separator.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/biblioentry.properties.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/biblioentry.properties.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/biblioentry.properties.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/biblioentry.properties.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/bibliography.collection.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/bibliography.collection.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/bibliography.collection.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/bibliography.collection.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/bibliography.numbered.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/bibliography.numbered.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/bibliography.numbered.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/bibliography.numbered.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/bibliography.style.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/bibliography.style.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/bibliography.style.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/bibliography.style.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/blockquote.properties.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/blockquote.properties.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/blockquote.properties.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/blockquote.properties.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/blurb.on.titlepage.enabled.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/blurb.on.titlepage.enabled.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/blurb.on.titlepage.enabled.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/blurb.on.titlepage.enabled.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/body.attributes.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/body.attributes.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/body.attributes.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/body.attributes.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/body.bg.color.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/body.bg.color.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/body.bg.color.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/body.bg.color.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/body.end.indent.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/body.end.indent.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/body.end.indent.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/body.end.indent.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/body.font.family.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/body.font.family.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/body.font.family.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/body.font.family.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/body.font.master.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/body.font.master.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/body.font.master.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/body.font.master.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/body.font.size.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/body.font.size.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/body.font.size.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/body.font.size.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/body.margin.bottom.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/body.margin.bottom.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/body.margin.bottom.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/body.margin.bottom.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/body.margin.top.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/body.margin.top.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/body.margin.top.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/body.margin.top.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/body.start.indent.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/body.start.indent.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/body.start.indent.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/body.start.indent.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/bookmarks.collapse.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/bookmarks.collapse.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/bookmarks.collapse.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/bookmarks.collapse.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/bridgehead.in.toc.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/bridgehead.in.toc.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/bridgehead.in.toc.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/bridgehead.in.toc.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/bullet.image.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/bullet.image.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/bullet.image.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/bullet.image.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/callout.defaultcolumn.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/callout.defaultcolumn.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/callout.defaultcolumn.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/callout.defaultcolumn.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/callout.graphics.extension.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/callout.graphics.extension.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/callout.graphics.extension.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/callout.graphics.extension.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/callout.graphics.number.limit.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/callout.graphics.number.limit.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/callout.graphics.number.limit.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/callout.graphics.number.limit.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/callout.graphics.path.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/callout.graphics.path.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/callout.graphics.path.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/callout.graphics.path.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/callout.graphics.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/callout.graphics.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/callout.graphics.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/callout.graphics.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/callout.icon.size.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/callout.icon.size.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/callout.icon.size.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/callout.icon.size.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/callout.list.table.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/callout.list.table.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/callout.list.table.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/callout.list.table.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/callout.unicode.font.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/callout.unicode.font.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/callout.unicode.font.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/callout.unicode.font.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/callout.unicode.number.limit.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/callout.unicode.number.limit.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/callout.unicode.number.limit.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/callout.unicode.number.limit.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/callout.unicode.start.character.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/callout.unicode.start.character.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/callout.unicode.start.character.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/callout.unicode.start.character.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/callout.unicode.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/callout.unicode.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/callout.unicode.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/callout.unicode.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/callouts.extension.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/callouts.extension.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/callouts.extension.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/callouts.extension.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/chapter.autolabel.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/chapter.autolabel.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/chapter.autolabel.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/chapter.autolabel.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/chunk.append.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/chunk.append.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/chunk.append.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/chunk.append.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/chunk.first.sections.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/chunk.first.sections.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/chunk.first.sections.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/chunk.first.sections.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/chunk.quietly.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/chunk.quietly.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/chunk.quietly.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/chunk.quietly.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/chunk.section.depth.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/chunk.section.depth.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/chunk.section.depth.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/chunk.section.depth.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/chunk.sections.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/chunk.sections.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/chunk.sections.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/chunk.sections.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/chunk.separate.lots.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/chunk.separate.lots.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/chunk.separate.lots.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/chunk.separate.lots.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/chunk.toc.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/chunk.toc.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/chunk.toc.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/chunk.toc.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/chunk.tocs.and.lots.has.title.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/chunk.tocs.and.lots.has.title.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/chunk.tocs.and.lots.has.title.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/chunk.tocs.and.lots.has.title.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/chunk.tocs.and.lots.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/chunk.tocs.and.lots.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/chunk.tocs.and.lots.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/chunk.tocs.and.lots.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/chunker.output.cdata-section-elements.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/chunker.output.cdata-section-elements.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/chunker.output.cdata-section-elements.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/chunker.output.cdata-section-elements.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/chunker.output.doctype-public.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/chunker.output.doctype-public.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/chunker.output.doctype-public.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/chunker.output.doctype-public.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/chunker.output.doctype-system.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/chunker.output.doctype-system.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/chunker.output.doctype-system.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/chunker.output.doctype-system.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/chunker.output.encoding.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/chunker.output.encoding.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/chunker.output.encoding.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/chunker.output.encoding.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/chunker.output.indent.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/chunker.output.indent.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/chunker.output.indent.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/chunker.output.indent.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/chunker.output.media-type.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/chunker.output.media-type.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/chunker.output.media-type.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/chunker.output.media-type.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/chunker.output.method.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/chunker.output.method.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/chunker.output.method.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/chunker.output.method.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/chunker.output.omit-xml-declaration.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/chunker.output.omit-xml-declaration.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/chunker.output.omit-xml-declaration.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/chunker.output.omit-xml-declaration.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/chunker.output.standalone.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/chunker.output.standalone.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/chunker.output.standalone.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/chunker.output.standalone.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/citerefentry.link.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/citerefentry.link.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/citerefentry.link.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/citerefentry.link.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/collect.xref.targets.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/collect.xref.targets.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/collect.xref.targets.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/collect.xref.targets.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/column.count.back.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/column.count.back.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/column.count.back.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/column.count.back.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/column.count.body.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/column.count.body.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/column.count.body.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/column.count.body.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/column.count.front.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/column.count.front.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/column.count.front.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/column.count.front.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/column.count.index.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/column.count.index.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/column.count.index.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/column.count.index.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/column.count.lot.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/column.count.lot.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/column.count.lot.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/column.count.lot.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/column.count.titlepage.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/column.count.titlepage.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/column.count.titlepage.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/column.count.titlepage.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/column.gap.back.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/column.gap.back.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/column.gap.back.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/column.gap.back.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/column.gap.body.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/column.gap.body.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/column.gap.body.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/column.gap.body.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/column.gap.front.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/column.gap.front.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/column.gap.front.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/column.gap.front.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/column.gap.index.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/column.gap.index.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/column.gap.index.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/column.gap.index.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/column.gap.lot.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/column.gap.lot.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/column.gap.lot.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/column.gap.lot.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/column.gap.titlepage.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/column.gap.titlepage.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/column.gap.titlepage.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/column.gap.titlepage.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/compact.list.item.spacing.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/compact.list.item.spacing.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/compact.list.item.spacing.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/compact.list.item.spacing.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/component.label.includes.part.label.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/component.label.includes.part.label.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/component.label.includes.part.label.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/component.label.includes.part.label.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/component.title.properties.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/component.title.properties.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/component.title.properties.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/component.title.properties.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/component.titlepage.properties.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/component.titlepage.properties.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/component.titlepage.properties.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/component.titlepage.properties.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/contrib.inline.enabled.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/contrib.inline.enabled.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/contrib.inline.enabled.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/contrib.inline.enabled.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/crop.mark.bleed.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/crop.mark.bleed.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/crop.mark.bleed.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/crop.mark.bleed.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/crop.mark.offset.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/crop.mark.offset.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/crop.mark.offset.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/crop.mark.offset.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/crop.mark.width.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/crop.mark.width.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/crop.mark.width.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/crop.mark.width.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/crop.marks.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/crop.marks.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/crop.marks.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/crop.marks.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/css.decoration.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/css.decoration.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/css.decoration.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/css.decoration.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/css.stylesheet.dir.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/css.stylesheet.dir.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/css.stylesheet.dir.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/css.stylesheet.dir.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/css.stylesheet.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/css.stylesheet.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/css.stylesheet.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/css.stylesheet.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/current.docid.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/current.docid.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/current.docid.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/current.docid.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/currentpage.marker.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/currentpage.marker.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/currentpage.marker.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/currentpage.marker.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/custom.css.source.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/custom.css.source.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/custom.css.source.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/custom.css.source.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/default.float.class.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/default.float.class.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/default.float.class.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/default.float.class.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/default.image.width.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/default.image.width.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/default.image.width.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/default.image.width.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/default.table.frame.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/default.table.frame.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/default.table.frame.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/default.table.frame.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/default.table.rules.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/default.table.rules.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/default.table.rules.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/default.table.rules.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/default.table.width.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/default.table.width.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/default.table.width.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/default.table.width.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/default.units.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/default.units.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/default.units.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/default.units.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/dingbat.font.family.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/dingbat.font.family.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/dingbat.font.family.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/dingbat.font.family.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/docbook.css.link.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/docbook.css.link.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/docbook.css.link.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/docbook.css.link.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/docbook.css.source.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/docbook.css.source.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/docbook.css.source.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/docbook.css.source.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/double.sided.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/double.sided.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/double.sided.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/double.sided.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/draft.mode.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/draft.mode.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/draft.mode.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/draft.mode.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/draft.watermark.image.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/draft.watermark.image.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/draft.watermark.image.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/draft.watermark.image.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/dry-run.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/dry-run.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/dry-run.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/dry-run.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/dynamic.toc.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/dynamic.toc.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/dynamic.toc.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/dynamic.toc.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/ebnf.assignment.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/ebnf.assignment.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/ebnf.assignment.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/ebnf.assignment.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/ebnf.statement.terminator.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/ebnf.statement.terminator.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/ebnf.statement.terminator.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/ebnf.statement.terminator.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/ebnf.table.bgcolor.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/ebnf.table.bgcolor.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/ebnf.table.bgcolor.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/ebnf.table.bgcolor.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/ebnf.table.border.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/ebnf.table.border.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/ebnf.table.border.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/ebnf.table.border.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/eclipse.autolabel.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/eclipse.autolabel.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/eclipse.autolabel.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/eclipse.autolabel.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/eclipse.plugin.id.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/eclipse.plugin.id.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/eclipse.plugin.id.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/eclipse.plugin.id.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/eclipse.plugin.name.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/eclipse.plugin.name.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/eclipse.plugin.name.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/eclipse.plugin.name.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/eclipse.plugin.provider.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/eclipse.plugin.provider.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/eclipse.plugin.provider.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/eclipse.plugin.provider.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/editedby.enabled.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/editedby.enabled.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/editedby.enabled.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/editedby.enabled.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/email.delimiters.enabled.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/email.delimiters.enabled.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/email.delimiters.enabled.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/email.delimiters.enabled.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/email.mailto.enabled.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/email.mailto.enabled.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/email.mailto.enabled.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/email.mailto.enabled.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/emphasis.propagates.style.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/emphasis.propagates.style.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/emphasis.propagates.style.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/emphasis.propagates.style.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/entry.propagates.style.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/entry.propagates.style.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/entry.propagates.style.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/entry.propagates.style.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/epub.autolabel.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/epub.autolabel.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/epub.autolabel.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/epub.autolabel.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/equation.number.properties.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/equation.number.properties.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/equation.number.properties.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/equation.number.properties.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/equation.properties.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/equation.properties.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/equation.properties.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/equation.properties.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/example.properties.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/example.properties.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/example.properties.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/example.properties.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/exsl.node.set.available.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/exsl.node.set.available.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/exsl.node.set.available.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/exsl.node.set.available.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/feedback.href.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/feedback.href.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/feedback.href.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/feedback.href.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/feedback.link.text.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/feedback.link.text.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/feedback.link.text.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/feedback.link.text.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/feedback.with.ids.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/feedback.with.ids.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/feedback.with.ids.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/feedback.with.ids.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/figure.properties.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/figure.properties.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/figure.properties.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/figure.properties.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/filename-prefix.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/filename-prefix.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/filename-prefix.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/filename-prefix.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/firstterm.only.link.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/firstterm.only.link.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/firstterm.only.link.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/firstterm.only.link.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/foil.properties.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/foil.properties.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/foil.properties.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/foil.properties.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/foil.subtitle.properties.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/foil.subtitle.properties.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/foil.subtitle.properties.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/foil.subtitle.properties.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/foil.title.master.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/foil.title.master.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/foil.title.master.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/foil.title.master.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/foil.title.size.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/foil.title.size.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/foil.title.size.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/foil.title.size.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/foilgroup.properties.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/foilgroup.properties.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/foilgroup.properties.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/foilgroup.properties.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/foilgroup.toc.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/foilgroup.toc.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/foilgroup.toc.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/foilgroup.toc.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/footer.column.widths.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/footer.column.widths.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/footer.column.widths.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/footer.column.widths.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/footer.content.properties.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/footer.content.properties.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/footer.content.properties.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/footer.content.properties.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/footer.hr.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/footer.hr.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/footer.hr.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/footer.hr.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/footer.rule.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/footer.rule.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/footer.rule.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/footer.rule.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/footer.table.height.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/footer.table.height.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/footer.table.height.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/footer.table.height.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/footer.table.properties.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/footer.table.properties.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/footer.table.properties.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/footer.table.properties.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/footers.on.blank.pages.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/footers.on.blank.pages.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/footers.on.blank.pages.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/footers.on.blank.pages.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/footnote.font.size.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/footnote.font.size.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/footnote.font.size.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/footnote.font.size.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/footnote.mark.properties.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/footnote.mark.properties.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/footnote.mark.properties.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/footnote.mark.properties.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/footnote.number.format.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/footnote.number.format.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/footnote.number.format.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/footnote.number.format.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/footnote.number.symbols.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/footnote.number.symbols.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/footnote.number.symbols.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/footnote.number.symbols.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/footnote.properties.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/footnote.properties.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/footnote.properties.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/footnote.properties.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/footnote.sep.leader.properties.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/footnote.sep.leader.properties.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/footnote.sep.leader.properties.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/footnote.sep.leader.properties.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/fop.extensions.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/fop.extensions.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/fop.extensions.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/fop.extensions.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/fop1.extensions.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/fop1.extensions.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/fop1.extensions.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/fop1.extensions.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/formal.object.properties.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/formal.object.properties.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/formal.object.properties.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/formal.object.properties.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/formal.procedures.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/formal.procedures.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/formal.procedures.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/formal.procedures.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/formal.title.placement.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/formal.title.placement.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/formal.title.placement.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/formal.title.placement.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/formal.title.properties.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/formal.title.properties.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/formal.title.properties.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/formal.title.properties.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/funcsynopsis.decoration.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/funcsynopsis.decoration.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/funcsynopsis.decoration.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/funcsynopsis.decoration.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/funcsynopsis.style.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/funcsynopsis.style.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/funcsynopsis.style.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/funcsynopsis.style.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/function.parens.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/function.parens.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/function.parens.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/function.parens.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/generate.css.header.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/generate.css.header.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/generate.css.header.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/generate.css.header.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/generate.id.attributes.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/generate.id.attributes.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/generate.id.attributes.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/generate.id.attributes.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/generate.index.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/generate.index.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/generate.index.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/generate.index.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/generate.legalnotice.link.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/generate.legalnotice.link.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/generate.legalnotice.link.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/generate.legalnotice.link.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/generate.manifest.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/generate.manifest.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/generate.manifest.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/generate.manifest.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/generate.meta.abstract.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/generate.meta.abstract.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/generate.meta.abstract.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/generate.meta.abstract.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/generate.revhistory.link.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/generate.revhistory.link.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/generate.revhistory.link.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/generate.revhistory.link.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/generate.section.toc.level.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/generate.section.toc.level.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/generate.section.toc.level.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/generate.section.toc.level.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/generate.toc.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/generate.toc.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/generate.toc.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/generate.toc.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/glossary.as.blocks.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/glossary.as.blocks.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/glossary.as.blocks.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/glossary.as.blocks.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/glossary.collection.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/glossary.collection.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/glossary.collection.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/glossary.collection.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/glossary.sort.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/glossary.sort.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/glossary.sort.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/glossary.sort.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/glossdef.block.properties.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/glossdef.block.properties.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/glossdef.block.properties.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/glossdef.block.properties.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/glossdef.list.properties.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/glossdef.list.properties.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/glossdef.list.properties.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/glossdef.list.properties.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/glossentry.list.item.properties.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/glossentry.list.item.properties.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/glossentry.list.item.properties.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/glossentry.list.item.properties.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/glossentry.show.acronym.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/glossentry.show.acronym.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/glossentry.show.acronym.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/glossentry.show.acronym.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/glosslist.as.blocks.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/glosslist.as.blocks.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/glosslist.as.blocks.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/glosslist.as.blocks.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/glossterm.auto.link.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/glossterm.auto.link.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/glossterm.auto.link.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/glossterm.auto.link.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/glossterm.block.properties.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/glossterm.block.properties.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/glossterm.block.properties.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/glossterm.block.properties.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/glossterm.list.properties.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/glossterm.list.properties.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/glossterm.list.properties.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/glossterm.list.properties.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/glossterm.separation.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/glossterm.separation.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/glossterm.separation.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/glossterm.separation.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/glossterm.width.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/glossterm.width.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/glossterm.width.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/glossterm.width.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/graphic.default.extension.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/graphic.default.extension.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/graphic.default.extension.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/graphic.default.extension.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/graphical.admonition.properties.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/graphical.admonition.properties.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/graphical.admonition.properties.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/graphical.admonition.properties.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/graphics.dir.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/graphics.dir.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/graphics.dir.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/graphics.dir.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/graphicsize.extension.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/graphicsize.extension.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/graphicsize.extension.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/graphicsize.extension.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/graphicsize.use.img.src.path.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/graphicsize.use.img.src.path.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/graphicsize.use.img.src.path.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/graphicsize.use.img.src.path.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/header.column.widths.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/header.column.widths.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/header.column.widths.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/header.column.widths.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/header.content.properties.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/header.content.properties.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/header.content.properties.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/header.content.properties.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/header.hr.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/header.hr.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/header.hr.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/header.hr.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/header.rule.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/header.rule.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/header.rule.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/header.rule.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/header.table.height.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/header.table.height.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/header.table.height.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/header.table.height.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/header.table.properties.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/header.table.properties.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/header.table.properties.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/header.table.properties.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/headers.on.blank.pages.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/headers.on.blank.pages.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/headers.on.blank.pages.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/headers.on.blank.pages.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/hidetoc.image.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/hidetoc.image.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/hidetoc.image.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/hidetoc.image.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/highlight.default.language.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/highlight.default.language.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/highlight.default.language.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/highlight.default.language.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/highlight.source.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/highlight.source.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/highlight.source.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/highlight.source.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/highlight.xslthl.config.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/highlight.xslthl.config.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/highlight.xslthl.config.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/highlight.xslthl.config.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/home.image.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/home.image.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/home.image.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/home.image.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/html.append.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/html.append.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/html.append.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/html.append.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/html.base.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/html.base.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/html.base.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/html.base.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/html.cellpadding.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/html.cellpadding.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/html.cellpadding.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/html.cellpadding.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/html.cellspacing.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/html.cellspacing.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/html.cellspacing.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/html.cellspacing.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/html.cleanup.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/html.cleanup.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/html.cleanup.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/html.cleanup.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/html.ext.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/html.ext.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/html.ext.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/html.ext.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/html.extra.head.links.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/html.extra.head.links.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/html.extra.head.links.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/html.extra.head.links.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/html.head.legalnotice.link.multiple.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/html.head.legalnotice.link.multiple.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/html.head.legalnotice.link.multiple.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/html.head.legalnotice.link.multiple.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/html.head.legalnotice.link.types.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/html.head.legalnotice.link.types.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/html.head.legalnotice.link.types.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/html.head.legalnotice.link.types.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/html.longdesc.link.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/html.longdesc.link.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/html.longdesc.link.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/html.longdesc.link.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/html.longdesc.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/html.longdesc.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/html.longdesc.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/html.longdesc.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/html.stylesheet.type.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/html.stylesheet.type.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/html.stylesheet.type.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/html.stylesheet.type.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/html.stylesheet.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/html.stylesheet.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/html.stylesheet.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/html.stylesheet.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.alias.file.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.alias.file.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.alias.file.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.alias.file.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.autolabel.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.autolabel.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.autolabel.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.autolabel.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.button.back.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.button.back.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.button.back.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.button.back.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.button.forward.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.button.forward.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.button.forward.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.button.forward.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.button.hideshow.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.button.hideshow.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.button.hideshow.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.button.hideshow.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.button.home.url.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.button.home.url.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.button.home.url.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.button.home.url.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.button.home.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.button.home.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.button.home.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.button.home.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.button.jump1.title.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.button.jump1.title.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.button.jump1.title.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.button.jump1.title.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.button.jump1.url.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.button.jump1.url.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.button.jump1.url.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.button.jump1.url.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.button.jump1.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.button.jump1.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.button.jump1.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.button.jump1.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.button.jump2.title.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.button.jump2.title.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.button.jump2.title.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.button.jump2.title.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.button.jump2.url.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.button.jump2.url.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.button.jump2.url.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.button.jump2.url.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.button.jump2.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.button.jump2.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.button.jump2.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.button.jump2.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.button.locate.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.button.locate.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.button.locate.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.button.locate.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.button.next.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.button.next.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.button.next.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.button.next.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.button.options.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.button.options.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.button.options.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.button.options.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.button.prev.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.button.prev.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.button.prev.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.button.prev.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.button.print.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.button.print.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.button.print.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.button.print.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.button.refresh.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.button.refresh.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.button.refresh.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.button.refresh.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.button.stop.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.button.stop.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.button.stop.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.button.stop.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.button.zoom.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.button.zoom.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.button.zoom.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.button.zoom.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.chm.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.chm.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.chm.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.chm.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.default.topic.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.default.topic.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.default.topic.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.default.topic.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.display.progress.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.display.progress.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.display.progress.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.display.progress.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.encoding.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.encoding.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.encoding.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.encoding.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.enhanced.decompilation.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.enhanced.decompilation.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.enhanced.decompilation.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.enhanced.decompilation.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.enumerate.images.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.enumerate.images.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.enumerate.images.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.enumerate.images.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.force.map.and.alias.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.force.map.and.alias.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.force.map.and.alias.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.force.map.and.alias.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.hhc.binary.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.hhc.binary.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.hhc.binary.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.hhc.binary.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.hhc.folders.instead.books.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.hhc.folders.instead.books.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.hhc.folders.instead.books.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.hhc.folders.instead.books.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.hhc.section.depth.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.hhc.section.depth.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.hhc.section.depth.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.hhc.section.depth.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.hhc.show.root.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.hhc.show.root.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.hhc.show.root.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.hhc.show.root.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.hhc.width.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.hhc.width.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.hhc.width.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.hhc.width.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.hhc.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.hhc.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.hhc.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.hhc.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.hhk.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.hhk.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.hhk.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.hhk.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.hhp.tail.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.hhp.tail.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.hhp.tail.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.hhp.tail.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.hhp.window.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.hhp.window.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.hhp.window.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.hhp.window.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.hhp.windows.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.hhp.windows.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.hhp.windows.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.hhp.windows.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.hhp.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.hhp.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.hhp.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.hhp.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.map.file.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.map.file.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.map.file.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.map.file.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.only.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.only.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.only.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.only.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.remember.window.position.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.remember.window.position.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.remember.window.position.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.remember.window.position.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.show.advanced.search.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.show.advanced.search.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.show.advanced.search.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.show.advanced.search.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.show.favorities.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.show.favorities.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.show.favorities.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.show.favorities.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.show.menu.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.show.menu.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.show.menu.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.show.menu.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.show.toolbar.text.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.show.toolbar.text.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.show.toolbar.text.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.show.toolbar.text.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.title.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.title.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.title.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.title.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.use.hhk.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.use.hhk.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.use.hhk.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.use.hhk.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.window.geometry.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.window.geometry.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.window.geometry.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.window.geometry.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/hyphenate.verbatim.characters.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/hyphenate.verbatim.characters.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/hyphenate.verbatim.characters.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/hyphenate.verbatim.characters.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/hyphenate.verbatim.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/hyphenate.verbatim.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/hyphenate.verbatim.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/hyphenate.verbatim.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/hyphenate.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/hyphenate.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/hyphenate.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/hyphenate.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/id.warnings.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/id.warnings.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/id.warnings.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/id.warnings.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/ignore.image.scaling.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/ignore.image.scaling.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/ignore.image.scaling.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/ignore.image.scaling.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/img.src.path.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/img.src.path.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/img.src.path.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/img.src.path.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/index.div.title.properties.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/index.div.title.properties.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/index.div.title.properties.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/index.div.title.properties.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/index.entry.properties.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/index.entry.properties.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/index.entry.properties.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/index.entry.properties.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/index.links.to.section.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/index.links.to.section.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/index.links.to.section.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/index.links.to.section.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/index.method.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/index.method.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/index.method.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/index.method.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/index.number.separator.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/index.number.separator.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/index.number.separator.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/index.number.separator.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/index.on.role.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/index.on.role.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/index.on.role.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/index.on.role.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/index.on.type.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/index.on.type.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/index.on.type.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/index.on.type.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/index.page.number.properties.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/index.page.number.properties.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/index.page.number.properties.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/index.page.number.properties.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/index.prefer.titleabbrev.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/index.prefer.titleabbrev.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/index.prefer.titleabbrev.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/index.prefer.titleabbrev.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/index.preferred.page.properties.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/index.preferred.page.properties.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/index.preferred.page.properties.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/index.preferred.page.properties.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/index.range.separator.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/index.range.separator.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/index.range.separator.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/index.range.separator.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/index.term.separator.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/index.term.separator.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/index.term.separator.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/index.term.separator.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/informal.object.properties.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/informal.object.properties.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/informal.object.properties.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/informal.object.properties.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/informalequation.properties.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/informalequation.properties.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/informalequation.properties.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/informalequation.properties.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/informalexample.properties.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/informalexample.properties.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/informalexample.properties.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/informalexample.properties.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/informalfigure.properties.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/informalfigure.properties.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/informalfigure.properties.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/informalfigure.properties.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/informaltable.properties.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/informaltable.properties.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/informaltable.properties.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/informaltable.properties.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/inherit.keywords.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/inherit.keywords.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/inherit.keywords.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/inherit.keywords.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/insert.link.page.number.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/insert.link.page.number.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/insert.link.page.number.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/insert.link.page.number.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/insert.olink.page.number.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/insert.olink.page.number.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/insert.olink.page.number.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/insert.olink.page.number.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/insert.olink.pdf.frag.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/insert.olink.pdf.frag.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/insert.olink.pdf.frag.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/insert.olink.pdf.frag.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/insert.xref.page.number.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/insert.xref.page.number.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/insert.xref.page.number.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/insert.xref.page.number.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/itemizedlist.label.properties.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/itemizedlist.label.properties.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/itemizedlist.label.properties.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/itemizedlist.label.properties.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/itemizedlist.label.width.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/itemizedlist.label.width.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/itemizedlist.label.width.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/itemizedlist.label.width.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/itemizedlist.properties.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/itemizedlist.properties.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/itemizedlist.properties.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/itemizedlist.properties.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/javahelp.encoding.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/javahelp.encoding.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/javahelp.encoding.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/javahelp.encoding.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/keep.relative.image.uris.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/keep.relative.image.uris.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/keep.relative.image.uris.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/keep.relative.image.uris.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/keyboard.nav.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/keyboard.nav.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/keyboard.nav.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/keyboard.nav.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/l10n.gentext.default.language.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/l10n.gentext.default.language.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/l10n.gentext.default.language.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/l10n.gentext.default.language.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/l10n.gentext.language.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/l10n.gentext.language.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/l10n.gentext.language.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/l10n.gentext.language.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/l10n.gentext.use.xref.language.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/l10n.gentext.use.xref.language.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/l10n.gentext.use.xref.language.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/l10n.gentext.use.xref.language.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/l10n.lang.value.rfc.compliant.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/l10n.lang.value.rfc.compliant.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/l10n.lang.value.rfc.compliant.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/l10n.lang.value.rfc.compliant.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/label.from.part.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/label.from.part.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/label.from.part.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/label.from.part.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/line-height.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/line-height.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/line-height.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/line-height.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/linenumbering.everyNth.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/linenumbering.everyNth.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/linenumbering.everyNth.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/linenumbering.everyNth.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/linenumbering.extension.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/linenumbering.extension.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/linenumbering.extension.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/linenumbering.extension.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/linenumbering.separator.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/linenumbering.separator.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/linenumbering.separator.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/linenumbering.separator.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/linenumbering.width.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/linenumbering.width.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/linenumbering.width.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/linenumbering.width.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/link.mailto.url.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/link.mailto.url.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/link.mailto.url.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/link.mailto.url.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/list.block.properties.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/list.block.properties.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/list.block.properties.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/list.block.properties.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/list.block.spacing.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/list.block.spacing.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/list.block.spacing.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/list.block.spacing.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/list.item.spacing.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/list.item.spacing.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/list.item.spacing.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/list.item.spacing.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/make.clean.html.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/make.clean.html.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/make.clean.html.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/make.clean.html.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/make.graphic.viewport.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/make.graphic.viewport.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/make.graphic.viewport.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/make.graphic.viewport.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/make.index.markup.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/make.index.markup.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/make.index.markup.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/make.index.markup.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/make.single.year.ranges.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/make.single.year.ranges.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/make.single.year.ranges.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/make.single.year.ranges.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/make.valid.html.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/make.valid.html.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/make.valid.html.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/make.valid.html.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/make.year.ranges.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/make.year.ranges.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/make.year.ranges.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/make.year.ranges.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.authors.section.enabled.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.authors.section.enabled.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.authors.section.enabled.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.authors.section.enabled.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.base.url.for.relative.links.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.base.url.for.relative.links.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.base.url.for.relative.links.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.base.url.for.relative.links.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.break.after.slash.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.break.after.slash.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.break.after.slash.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.break.after.slash.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.charmap.enabled.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.charmap.enabled.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.charmap.enabled.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.charmap.enabled.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.charmap.subset.profile.english.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.charmap.subset.profile.english.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.charmap.subset.profile.english.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.charmap.subset.profile.english.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.charmap.subset.profile.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.charmap.subset.profile.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.charmap.subset.profile.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.charmap.subset.profile.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.charmap.uri.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.charmap.uri.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.charmap.uri.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.charmap.uri.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.charmap.use.subset.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.charmap.use.subset.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.charmap.use.subset.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.charmap.use.subset.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.copyright.section.enabled.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.copyright.section.enabled.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.copyright.section.enabled.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.copyright.section.enabled.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.endnotes.are.numbered.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.endnotes.are.numbered.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.endnotes.are.numbered.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.endnotes.are.numbered.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.endnotes.list.enabled.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.endnotes.list.enabled.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.endnotes.list.enabled.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.endnotes.list.enabled.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.endnotes.list.heading.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.endnotes.list.heading.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.endnotes.list.heading.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.endnotes.list.heading.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.font.funcprototype.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.font.funcprototype.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.font.funcprototype.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.font.funcprototype.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.font.funcsynopsisinfo.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.font.funcsynopsisinfo.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.font.funcsynopsisinfo.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.font.funcsynopsisinfo.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.font.links.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.font.links.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.font.links.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.font.links.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.font.table.headings.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.font.table.headings.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.font.table.headings.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.font.table.headings.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.font.table.title.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.font.table.title.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.font.table.title.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.font.table.title.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.funcsynopsis.style.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.funcsynopsis.style.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.funcsynopsis.style.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.funcsynopsis.style.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.hyphenate.computer.inlines.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.hyphenate.computer.inlines.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.hyphenate.computer.inlines.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.hyphenate.computer.inlines.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.hyphenate.filenames.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.hyphenate.filenames.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.hyphenate.filenames.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.hyphenate.filenames.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.hyphenate.urls.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.hyphenate.urls.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.hyphenate.urls.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.hyphenate.urls.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.hyphenate.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.hyphenate.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.hyphenate.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.hyphenate.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.indent.blurbs.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.indent.blurbs.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.indent.blurbs.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.indent.blurbs.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.indent.lists.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.indent.lists.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.indent.lists.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.indent.lists.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.indent.refsect.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.indent.refsect.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.indent.refsect.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.indent.refsect.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.indent.verbatims.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.indent.verbatims.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.indent.verbatims.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.indent.verbatims.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.indent.width.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.indent.width.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.indent.width.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.indent.width.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.justify.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.justify.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.justify.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.justify.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.output.base.dir.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.output.base.dir.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.output.base.dir.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.output.base.dir.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.output.better.ps.enabled.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.output.better.ps.enabled.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.output.better.ps.enabled.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.output.better.ps.enabled.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.output.encoding.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.output.encoding.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.output.encoding.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.output.encoding.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.output.in.separate.dir.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.output.in.separate.dir.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.output.in.separate.dir.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.output.in.separate.dir.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.output.lang.in.name.enabled.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.output.lang.in.name.enabled.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.output.lang.in.name.enabled.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.output.lang.in.name.enabled.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.output.manifest.enabled.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.output.manifest.enabled.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.output.manifest.enabled.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.output.manifest.enabled.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.output.manifest.filename.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.output.manifest.filename.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.output.manifest.filename.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.output.manifest.filename.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.output.quietly.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.output.quietly.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.output.quietly.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.output.quietly.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.output.subdirs.enabled.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.output.subdirs.enabled.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.output.subdirs.enabled.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.output.subdirs.enabled.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.segtitle.suppress.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.segtitle.suppress.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.segtitle.suppress.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.segtitle.suppress.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.string.subst.map.local.post.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.string.subst.map.local.post.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.string.subst.map.local.post.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.string.subst.map.local.post.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.string.subst.map.local.pre.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.string.subst.map.local.pre.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.string.subst.map.local.pre.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.string.subst.map.local.pre.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.string.subst.map.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.string.subst.map.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.string.subst.map.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.string.subst.map.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.subheading.divider.enabled.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.subheading.divider.enabled.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.subheading.divider.enabled.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.subheading.divider.enabled.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.subheading.divider.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.subheading.divider.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.subheading.divider.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.subheading.divider.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.table.footnotes.divider.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.table.footnotes.divider.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.table.footnotes.divider.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.table.footnotes.divider.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.th.extra1.suppress.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.th.extra1.suppress.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.th.extra1.suppress.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.th.extra1.suppress.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.th.extra2.max.length.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.th.extra2.max.length.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.th.extra2.max.length.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.th.extra2.max.length.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.th.extra2.suppress.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.th.extra2.suppress.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.th.extra2.suppress.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.th.extra2.suppress.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.th.extra3.max.length.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.th.extra3.max.length.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.th.extra3.max.length.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.th.extra3.max.length.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.th.extra3.suppress.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.th.extra3.suppress.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.th.extra3.suppress.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.th.extra3.suppress.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.th.title.max.length.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.th.title.max.length.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.th.title.max.length.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.th.title.max.length.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/manifest.in.base.dir.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/manifest.in.base.dir.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/manifest.in.base.dir.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/manifest.in.base.dir.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/manifest.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/manifest.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/manifest.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/manifest.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/manual.toc.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/manual.toc.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/manual.toc.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/manual.toc.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/margin.note.float.type.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/margin.note.float.type.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/margin.note.float.type.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/margin.note.float.type.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/margin.note.properties.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/margin.note.properties.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/margin.note.properties.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/margin.note.properties.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/margin.note.title.properties.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/margin.note.title.properties.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/margin.note.title.properties.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/margin.note.title.properties.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/margin.note.width.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/margin.note.width.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/margin.note.width.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/margin.note.width.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/marker.section.level.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/marker.section.level.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/marker.section.level.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/marker.section.level.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/menuchoice.menu.separator.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/menuchoice.menu.separator.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/menuchoice.menu.separator.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/menuchoice.menu.separator.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/menuchoice.separator.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/menuchoice.separator.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/menuchoice.separator.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/menuchoice.separator.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/minus.image.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/minus.image.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/minus.image.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/minus.image.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/monospace.font.family.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/monospace.font.family.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/monospace.font.family.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/monospace.font.family.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/monospace.properties.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/monospace.properties.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/monospace.properties.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/monospace.properties.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/monospace.verbatim.font.width.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/monospace.verbatim.font.width.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/monospace.verbatim.font.width.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/monospace.verbatim.font.width.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/monospace.verbatim.properties.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/monospace.verbatim.properties.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/monospace.verbatim.properties.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/monospace.verbatim.properties.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/multiframe.bottom.bgcolor.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/multiframe.bottom.bgcolor.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/multiframe.bottom.bgcolor.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/multiframe.bottom.bgcolor.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/multiframe.navigation.height.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/multiframe.navigation.height.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/multiframe.navigation.height.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/multiframe.navigation.height.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/multiframe.top.bgcolor.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/multiframe.top.bgcolor.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/multiframe.top.bgcolor.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/multiframe.top.bgcolor.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/multiframe.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/multiframe.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/multiframe.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/multiframe.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/nav.separator.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/nav.separator.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/nav.separator.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/nav.separator.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/nav.table.summary.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/nav.table.summary.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/nav.table.summary.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/nav.table.summary.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/navbgcolor.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/navbgcolor.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/navbgcolor.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/navbgcolor.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/navbodywidth.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/navbodywidth.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/navbodywidth.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/navbodywidth.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/navig.graphics.extension.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/navig.graphics.extension.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/navig.graphics.extension.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/navig.graphics.extension.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/navig.graphics.path.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/navig.graphics.path.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/navig.graphics.path.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/navig.graphics.path.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/navig.graphics.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/navig.graphics.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/navig.graphics.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/navig.graphics.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/navig.showtitles.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/navig.showtitles.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/navig.showtitles.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/navig.showtitles.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/navtocwidth.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/navtocwidth.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/navtocwidth.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/navtocwidth.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/next.image.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/next.image.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/next.image.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/next.image.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/no.home.image.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/no.home.image.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/no.home.image.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/no.home.image.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/no.next.image.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/no.next.image.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/no.next.image.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/no.next.image.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/no.prev.image.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/no.prev.image.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/no.prev.image.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/no.prev.image.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/no.toc.image.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/no.toc.image.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/no.toc.image.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/no.toc.image.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/no.up.image.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/no.up.image.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/no.up.image.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/no.up.image.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/nominal.image.depth.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/nominal.image.depth.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/nominal.image.depth.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/nominal.image.depth.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/nominal.image.width.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/nominal.image.width.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/nominal.image.width.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/nominal.image.width.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/nominal.table.width.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/nominal.table.width.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/nominal.table.width.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/nominal.table.width.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/nongraphical.admonition.properties.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/nongraphical.admonition.properties.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/nongraphical.admonition.properties.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/nongraphical.admonition.properties.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/normal.para.spacing.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/normal.para.spacing.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/normal.para.spacing.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/normal.para.spacing.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/olink.base.uri.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/olink.base.uri.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/olink.base.uri.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/olink.base.uri.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/olink.debug.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/olink.debug.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/olink.debug.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/olink.debug.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/olink.doctitle.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/olink.doctitle.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/olink.doctitle.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/olink.doctitle.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/olink.fragid.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/olink.fragid.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/olink.fragid.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/olink.fragid.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/olink.lang.fallback.sequence.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/olink.lang.fallback.sequence.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/olink.lang.fallback.sequence.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/olink.lang.fallback.sequence.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/olink.outline.ext.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/olink.outline.ext.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/olink.outline.ext.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/olink.outline.ext.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/olink.properties.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/olink.properties.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/olink.properties.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/olink.properties.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/olink.pubid.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/olink.pubid.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/olink.pubid.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/olink.pubid.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/olink.resolver.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/olink.resolver.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/olink.resolver.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/olink.resolver.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/olink.sysid.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/olink.sysid.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/olink.sysid.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/olink.sysid.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/orderedlist.label.properties.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/orderedlist.label.properties.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/orderedlist.label.properties.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/orderedlist.label.properties.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/orderedlist.label.width.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/orderedlist.label.width.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/orderedlist.label.width.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/orderedlist.label.width.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/orderedlist.properties.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/orderedlist.properties.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/orderedlist.properties.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/orderedlist.properties.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/othercredit.like.author.enabled.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/othercredit.like.author.enabled.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/othercredit.like.author.enabled.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/othercredit.like.author.enabled.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/output-root.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/output-root.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/output-root.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/output-root.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/output.indent.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/output.indent.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/output.indent.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/output.indent.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/overlay.js.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/overlay.js.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/overlay.js.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/overlay.js.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/overlay.logo.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/overlay.logo.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/overlay.logo.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/overlay.logo.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/overlay.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/overlay.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/overlay.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/overlay.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/page.height.portrait.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/page.height.portrait.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/page.height.portrait.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/page.height.portrait.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/page.height.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/page.height.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/page.height.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/page.height.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/page.margin.bottom.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/page.margin.bottom.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/page.margin.bottom.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/page.margin.bottom.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/page.margin.inner.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/page.margin.inner.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/page.margin.inner.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/page.margin.inner.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/page.margin.outer.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/page.margin.outer.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/page.margin.outer.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/page.margin.outer.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/page.margin.top.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/page.margin.top.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/page.margin.top.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/page.margin.top.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/page.orientation.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/page.orientation.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/page.orientation.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/page.orientation.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/page.width.portrait.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/page.width.portrait.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/page.width.portrait.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/page.width.portrait.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/page.width.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/page.width.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/page.width.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/page.width.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/pages.template.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/pages.template.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/pages.template.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/pages.template.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/paper.type.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/paper.type.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/paper.type.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/paper.type.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/para.propagates.style.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/para.propagates.style.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/para.propagates.style.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/para.propagates.style.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/part.autolabel.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/part.autolabel.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/part.autolabel.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/part.autolabel.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/passivetex.extensions.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/passivetex.extensions.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/passivetex.extensions.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/passivetex.extensions.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/pgwide.properties.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/pgwide.properties.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/pgwide.properties.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/pgwide.properties.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/phrase.propagates.style.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/phrase.propagates.style.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/phrase.propagates.style.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/phrase.propagates.style.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/pixels.per.inch.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/pixels.per.inch.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/pixels.per.inch.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/pixels.per.inch.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/plus.image.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/plus.image.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/plus.image.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/plus.image.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/points.per.em.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/points.per.em.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/points.per.em.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/points.per.em.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/preface.autolabel.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/preface.autolabel.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/preface.autolabel.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/preface.autolabel.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/prefer.internal.olink.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/prefer.internal.olink.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/prefer.internal.olink.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/prefer.internal.olink.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/preferred.mediaobject.role.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/preferred.mediaobject.role.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/preferred.mediaobject.role.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/preferred.mediaobject.role.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/prev.image.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/prev.image.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/prev.image.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/prev.image.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/procedure.properties.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/procedure.properties.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/procedure.properties.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/procedure.properties.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/process.empty.source.toc.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/process.empty.source.toc.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/process.empty.source.toc.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/process.empty.source.toc.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/process.source.toc.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/process.source.toc.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/process.source.toc.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/process.source.toc.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/profile.arch.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/profile.arch.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/profile.arch.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/profile.arch.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/profile.attribute.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/profile.attribute.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/profile.attribute.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/profile.attribute.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/profile.audience.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/profile.audience.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/profile.audience.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/profile.audience.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/profile.condition.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/profile.condition.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/profile.condition.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/profile.condition.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/profile.conformance.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/profile.conformance.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/profile.conformance.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/profile.conformance.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/profile.lang.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/profile.lang.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/profile.lang.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/profile.lang.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/profile.os.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/profile.os.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/profile.os.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/profile.os.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/profile.revision.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/profile.revision.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/profile.revision.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/profile.revision.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/profile.revisionflag.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/profile.revisionflag.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/profile.revisionflag.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/profile.revisionflag.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/profile.role.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/profile.role.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/profile.role.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/profile.role.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/profile.security.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/profile.security.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/profile.security.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/profile.security.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/profile.separator.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/profile.separator.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/profile.separator.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/profile.separator.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/profile.status.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/profile.status.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/profile.status.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/profile.status.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/profile.userlevel.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/profile.userlevel.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/profile.userlevel.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/profile.userlevel.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/profile.value.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/profile.value.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/profile.value.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/profile.value.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/profile.vendor.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/profile.vendor.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/profile.vendor.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/profile.vendor.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/profile.wordsize.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/profile.wordsize.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/profile.wordsize.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/profile.wordsize.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/punct.honorific.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/punct.honorific.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/punct.honorific.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/punct.honorific.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/qanda.defaultlabel.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/qanda.defaultlabel.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/qanda.defaultlabel.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/qanda.defaultlabel.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/qanda.in.toc.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/qanda.in.toc.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/qanda.in.toc.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/qanda.in.toc.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/qanda.inherit.numeration.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/qanda.inherit.numeration.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/qanda.inherit.numeration.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/qanda.inherit.numeration.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/qanda.nested.in.toc.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/qanda.nested.in.toc.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/qanda.nested.in.toc.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/qanda.nested.in.toc.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/qanda.title.level1.properties.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/qanda.title.level1.properties.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/qanda.title.level1.properties.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/qanda.title.level1.properties.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/qanda.title.level2.properties.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/qanda.title.level2.properties.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/qanda.title.level2.properties.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/qanda.title.level2.properties.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/qanda.title.level3.properties.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/qanda.title.level3.properties.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/qanda.title.level3.properties.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/qanda.title.level3.properties.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/qanda.title.level4.properties.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/qanda.title.level4.properties.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/qanda.title.level4.properties.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/qanda.title.level4.properties.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/qanda.title.level5.properties.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/qanda.title.level5.properties.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/qanda.title.level5.properties.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/qanda.title.level5.properties.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/qanda.title.level6.properties.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/qanda.title.level6.properties.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/qanda.title.level6.properties.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/qanda.title.level6.properties.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/qanda.title.properties.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/qanda.title.properties.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/qanda.title.properties.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/qanda.title.properties.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/qandadiv.autolabel.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/qandadiv.autolabel.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/qandadiv.autolabel.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/qandadiv.autolabel.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/refclass.suppress.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/refclass.suppress.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/refclass.suppress.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/refclass.suppress.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/refentry.date.profile.enabled.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/refentry.date.profile.enabled.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/refentry.date.profile.enabled.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/refentry.date.profile.enabled.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/refentry.date.profile.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/refentry.date.profile.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/refentry.date.profile.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/refentry.date.profile.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/refentry.generate.name.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/refentry.generate.name.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/refentry.generate.name.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/refentry.generate.name.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/refentry.generate.title.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/refentry.generate.title.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/refentry.generate.title.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/refentry.generate.title.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/refentry.manual.fallback.profile.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/refentry.manual.fallback.profile.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/refentry.manual.fallback.profile.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/refentry.manual.fallback.profile.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/refentry.manual.profile.enabled.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/refentry.manual.profile.enabled.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/refentry.manual.profile.enabled.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/refentry.manual.profile.enabled.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/refentry.manual.profile.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/refentry.manual.profile.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/refentry.manual.profile.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/refentry.manual.profile.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/refentry.meta.get.quietly.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/refentry.meta.get.quietly.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/refentry.meta.get.quietly.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/refentry.meta.get.quietly.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/refentry.pagebreak.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/refentry.pagebreak.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/refentry.pagebreak.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/refentry.pagebreak.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/refentry.separator.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/refentry.separator.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/refentry.separator.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/refentry.separator.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/refentry.source.fallback.profile.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/refentry.source.fallback.profile.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/refentry.source.fallback.profile.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/refentry.source.fallback.profile.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/refentry.source.name.profile.enabled.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/refentry.source.name.profile.enabled.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/refentry.source.name.profile.enabled.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/refentry.source.name.profile.enabled.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/refentry.source.name.profile.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/refentry.source.name.profile.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/refentry.source.name.profile.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/refentry.source.name.profile.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/refentry.source.name.suppress.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/refentry.source.name.suppress.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/refentry.source.name.suppress.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/refentry.source.name.suppress.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/refentry.title.properties.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/refentry.title.properties.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/refentry.title.properties.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/refentry.title.properties.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/refentry.version.profile.enabled.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/refentry.version.profile.enabled.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/refentry.version.profile.enabled.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/refentry.version.profile.enabled.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/refentry.version.profile.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/refentry.version.profile.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/refentry.version.profile.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/refentry.version.profile.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/refentry.version.suppress.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/refentry.version.suppress.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/refentry.version.suppress.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/refentry.version.suppress.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/refentry.xref.manvolnum.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/refentry.xref.manvolnum.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/refentry.xref.manvolnum.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/refentry.xref.manvolnum.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/reference.autolabel.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/reference.autolabel.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/reference.autolabel.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/reference.autolabel.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/region.after.extent.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/region.after.extent.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/region.after.extent.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/region.after.extent.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/region.before.extent.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/region.before.extent.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/region.before.extent.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/region.before.extent.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/revhistory.table.cell.properties.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/revhistory.table.cell.properties.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/revhistory.table.cell.properties.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/revhistory.table.cell.properties.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/revhistory.table.properties.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/revhistory.table.properties.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/revhistory.table.properties.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/revhistory.table.properties.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/revhistory.title.properties.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/revhistory.title.properties.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/revhistory.title.properties.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/revhistory.title.properties.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/root.filename.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/root.filename.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/root.filename.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/root.filename.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/root.properties.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/root.properties.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/root.properties.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/root.properties.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/rootid.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/rootid.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/rootid.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/rootid.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/runinhead.default.title.end.punct.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/runinhead.default.title.end.punct.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/runinhead.default.title.end.punct.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/runinhead.default.title.end.punct.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/runinhead.title.end.punct.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/runinhead.title.end.punct.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/runinhead.title.end.punct.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/runinhead.title.end.punct.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/running.foot.properties.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/running.foot.properties.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/running.foot.properties.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/running.foot.properties.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/sans.font.family.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/sans.font.family.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/sans.font.family.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/sans.font.family.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/saxon.callouts.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/saxon.callouts.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/saxon.callouts.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/saxon.callouts.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/saxon.character.representation.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/saxon.character.representation.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/saxon.character.representation.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/saxon.character.representation.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/saxon.linenumbering.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/saxon.linenumbering.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/saxon.linenumbering.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/saxon.linenumbering.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/saxon.tablecolumns.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/saxon.tablecolumns.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/saxon.tablecolumns.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/saxon.tablecolumns.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/script.dir.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/script.dir.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/script.dir.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/script.dir.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/section.autolabel.max.depth.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/section.autolabel.max.depth.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/section.autolabel.max.depth.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/section.autolabel.max.depth.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/section.autolabel.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/section.autolabel.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/section.autolabel.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/section.autolabel.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/section.container.element.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/section.container.element.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/section.container.element.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/section.container.element.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/section.label.includes.component.label.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/section.label.includes.component.label.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/section.label.includes.component.label.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/section.label.includes.component.label.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/section.level1.properties.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/section.level1.properties.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/section.level1.properties.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/section.level1.properties.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/section.level2.properties.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/section.level2.properties.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/section.level2.properties.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/section.level2.properties.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/section.level3.properties.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/section.level3.properties.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/section.level3.properties.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/section.level3.properties.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/section.level4.properties.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/section.level4.properties.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/section.level4.properties.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/section.level4.properties.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/section.level5.properties.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/section.level5.properties.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/section.level5.properties.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/section.level5.properties.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/section.level6.properties.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/section.level6.properties.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/section.level6.properties.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/section.level6.properties.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/section.properties.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/section.properties.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/section.properties.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/section.properties.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/section.title.level1.properties.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/section.title.level1.properties.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/section.title.level1.properties.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/section.title.level1.properties.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/section.title.level2.properties.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/section.title.level2.properties.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/section.title.level2.properties.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/section.title.level2.properties.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/section.title.level3.properties.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/section.title.level3.properties.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/section.title.level3.properties.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/section.title.level3.properties.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/section.title.level4.properties.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/section.title.level4.properties.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/section.title.level4.properties.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/section.title.level4.properties.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/section.title.level5.properties.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/section.title.level5.properties.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/section.title.level5.properties.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/section.title.level5.properties.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/section.title.level6.properties.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/section.title.level6.properties.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/section.title.level6.properties.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/section.title.level6.properties.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/section.title.properties.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/section.title.properties.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/section.title.properties.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/section.title.properties.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/segmentedlist.as.table.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/segmentedlist.as.table.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/segmentedlist.as.table.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/segmentedlist.as.table.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/sequential.links.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/sequential.links.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/sequential.links.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/sequential.links.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/shade.verbatim.style.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/shade.verbatim.style.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/shade.verbatim.style.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/shade.verbatim.style.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/shade.verbatim.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/shade.verbatim.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/shade.verbatim.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/shade.verbatim.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/show.comments.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/show.comments.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/show.comments.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/show.comments.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/show.foil.number.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/show.foil.number.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/show.foil.number.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/show.foil.number.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/show.revisionflag.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/show.revisionflag.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/show.revisionflag.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/show.revisionflag.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/showtoc.image.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/showtoc.image.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/showtoc.image.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/showtoc.image.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/side.float.properties.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/side.float.properties.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/side.float.properties.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/side.float.properties.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/sidebar.float.type.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/sidebar.float.type.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/sidebar.float.type.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/sidebar.float.type.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/sidebar.float.width.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/sidebar.float.width.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/sidebar.float.width.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/sidebar.float.width.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/sidebar.properties.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/sidebar.properties.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/sidebar.properties.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/sidebar.properties.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/sidebar.title.properties.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/sidebar.title.properties.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/sidebar.title.properties.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/sidebar.title.properties.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/simplesect.in.toc.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/simplesect.in.toc.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/simplesect.in.toc.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/simplesect.in.toc.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/slide.font.family.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/slide.font.family.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/slide.font.family.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/slide.font.family.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/slide.title.font.family.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/slide.title.font.family.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/slide.title.font.family.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/slide.title.font.family.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/slides.js.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/slides.js.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/slides.js.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/slides.js.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/slides.properties.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/slides.properties.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/slides.properties.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/slides.properties.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/spacing.paras.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/spacing.paras.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/spacing.paras.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/spacing.paras.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/speakernote.properties.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/speakernote.properties.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/speakernote.properties.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/speakernote.properties.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/subscript.properties.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/subscript.properties.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/subscript.properties.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/subscript.properties.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/superscript.properties.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/superscript.properties.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/superscript.properties.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/superscript.properties.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/suppress.footer.navigation.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/suppress.footer.navigation.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/suppress.footer.navigation.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/suppress.footer.navigation.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/suppress.header.navigation.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/suppress.header.navigation.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/suppress.header.navigation.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/suppress.header.navigation.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/suppress.homepage.title.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/suppress.homepage.title.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/suppress.homepage.title.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/suppress.homepage.title.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/suppress.navigation.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/suppress.navigation.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/suppress.navigation.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/suppress.navigation.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/symbol.font.family.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/symbol.font.family.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/symbol.font.family.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/symbol.font.family.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/table.borders.with.css.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/table.borders.with.css.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/table.borders.with.css.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/table.borders.with.css.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/table.cell.border.color.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/table.cell.border.color.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/table.cell.border.color.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/table.cell.border.color.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/table.cell.border.style.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/table.cell.border.style.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/table.cell.border.style.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/table.cell.border.style.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/table.cell.border.thickness.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/table.cell.border.thickness.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/table.cell.border.thickness.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/table.cell.border.thickness.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/table.cell.padding.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/table.cell.padding.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/table.cell.padding.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/table.cell.padding.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/table.entry.padding.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/table.entry.padding.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/table.entry.padding.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/table.entry.padding.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/table.footnote.number.format.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/table.footnote.number.format.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/table.footnote.number.format.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/table.footnote.number.format.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/table.footnote.number.symbols.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/table.footnote.number.symbols.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/table.footnote.number.symbols.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/table.footnote.number.symbols.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/table.footnote.properties.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/table.footnote.properties.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/table.footnote.properties.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/table.footnote.properties.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/table.frame.border.color.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/table.frame.border.color.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/table.frame.border.color.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/table.frame.border.color.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/table.frame.border.style.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/table.frame.border.style.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/table.frame.border.style.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/table.frame.border.style.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/table.frame.border.thickness.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/table.frame.border.thickness.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/table.frame.border.thickness.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/table.frame.border.thickness.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/table.properties.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/table.properties.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/table.properties.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/table.properties.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/table.spacer.image.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/table.spacer.image.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/table.spacer.image.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/table.spacer.image.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/table.table.properties.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/table.table.properties.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/table.table.properties.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/table.table.properties.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/tablecolumns.extension.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/tablecolumns.extension.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/tablecolumns.extension.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/tablecolumns.extension.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/target.database.document.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/target.database.document.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/target.database.document.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/target.database.document.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/targets.filename.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/targets.filename.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/targets.filename.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/targets.filename.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/template.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/template.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/template.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/template.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/tex.math.delims.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/tex.math.delims.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/tex.math.delims.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/tex.math.delims.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/tex.math.file.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/tex.math.file.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/tex.math.file.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/tex.math.file.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/tex.math.in.alt.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/tex.math.in.alt.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/tex.math.in.alt.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/tex.math.in.alt.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/text.home.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/text.home.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/text.home.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/text.home.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/text.next.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/text.next.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/text.next.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/text.next.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/text.prev.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/text.prev.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/text.prev.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/text.prev.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/text.toc.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/text.toc.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/text.toc.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/text.toc.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/text.up.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/text.up.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/text.up.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/text.up.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/textbgcolor.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/textbgcolor.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/textbgcolor.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/textbgcolor.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/textdata.default.encoding.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/textdata.default.encoding.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/textdata.default.encoding.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/textdata.default.encoding.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/textinsert.extension.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/textinsert.extension.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/textinsert.extension.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/textinsert.extension.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/title.font.family.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/title.font.family.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/title.font.family.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/title.font.family.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/title.margin.left.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/title.margin.left.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/title.margin.left.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/title.margin.left.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/titlefoil.html.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/titlefoil.html.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/titlefoil.html.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/titlefoil.html.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/toc.bg.color.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/toc.bg.color.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/toc.bg.color.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/toc.bg.color.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/toc.blank.graphic.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/toc.blank.graphic.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/toc.blank.graphic.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/toc.blank.graphic.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/toc.blank.image.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/toc.blank.image.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/toc.blank.image.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/toc.blank.image.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/toc.blank.text.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/toc.blank.text.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/toc.blank.text.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/toc.blank.text.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/toc.hide.show.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/toc.hide.show.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/toc.hide.show.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/toc.hide.show.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/toc.html.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/toc.html.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/toc.html.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/toc.html.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/toc.image.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/toc.image.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/toc.image.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/toc.image.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/toc.indent.width.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/toc.indent.width.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/toc.indent.width.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/toc.indent.width.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/toc.line.properties.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/toc.line.properties.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/toc.line.properties.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/toc.line.properties.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/toc.list.type.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/toc.list.type.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/toc.list.type.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/toc.list.type.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/toc.margin.properties.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/toc.margin.properties.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/toc.margin.properties.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/toc.margin.properties.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/toc.max.depth.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/toc.max.depth.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/toc.max.depth.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/toc.max.depth.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/toc.pointer.graphic.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/toc.pointer.graphic.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/toc.pointer.graphic.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/toc.pointer.graphic.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/toc.pointer.image.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/toc.pointer.image.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/toc.pointer.image.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/toc.pointer.image.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/toc.pointer.text.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/toc.pointer.text.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/toc.pointer.text.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/toc.pointer.text.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/toc.row.height.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/toc.row.height.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/toc.row.height.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/toc.row.height.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/toc.section.depth.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/toc.section.depth.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/toc.section.depth.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/toc.section.depth.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/toc.spacer.graphic.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/toc.spacer.graphic.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/toc.spacer.graphic.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/toc.spacer.graphic.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/toc.spacer.image.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/toc.spacer.image.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/toc.spacer.image.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/toc.spacer.image.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/toc.spacer.text.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/toc.spacer.text.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/toc.spacer.text.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/toc.spacer.text.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/toc.width.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/toc.width.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/toc.width.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/toc.width.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/ua.js.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/ua.js.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/ua.js.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/ua.js.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/ulink.footnotes.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/ulink.footnotes.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/ulink.footnotes.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/ulink.footnotes.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/ulink.hyphenate.chars.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/ulink.hyphenate.chars.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/ulink.hyphenate.chars.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/ulink.hyphenate.chars.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/ulink.hyphenate.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/ulink.hyphenate.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/ulink.hyphenate.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/ulink.hyphenate.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/ulink.show.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/ulink.show.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/ulink.show.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/ulink.show.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/ulink.target.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/ulink.target.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/ulink.target.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/ulink.target.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/up.image.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/up.image.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/up.image.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/up.image.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/use.embed.for.svg.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/use.embed.for.svg.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/use.embed.for.svg.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/use.embed.for.svg.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/use.extensions.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/use.extensions.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/use.extensions.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/use.extensions.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/use.id.as.filename.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/use.id.as.filename.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/use.id.as.filename.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/use.id.as.filename.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/use.id.function.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/use.id.function.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/use.id.function.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/use.id.function.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/use.local.olink.style.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/use.local.olink.style.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/use.local.olink.style.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/use.local.olink.style.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/use.role.as.xrefstyle.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/use.role.as.xrefstyle.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/use.role.as.xrefstyle.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/use.role.as.xrefstyle.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/use.role.for.mediaobject.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/use.role.for.mediaobject.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/use.role.for.mediaobject.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/use.role.for.mediaobject.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/use.svg.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/use.svg.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/use.svg.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/use.svg.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/variablelist.as.blocks.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/variablelist.as.blocks.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/variablelist.as.blocks.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/variablelist.as.blocks.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/variablelist.as.table.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/variablelist.as.table.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/variablelist.as.table.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/variablelist.as.table.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/variablelist.max.termlength.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/variablelist.max.termlength.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/variablelist.max.termlength.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/variablelist.max.termlength.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/variablelist.term.break.after.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/variablelist.term.break.after.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/variablelist.term.break.after.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/variablelist.term.break.after.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/variablelist.term.properties.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/variablelist.term.properties.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/variablelist.term.properties.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/variablelist.term.properties.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/variablelist.term.separator.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/variablelist.term.separator.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/variablelist.term.separator.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/variablelist.term.separator.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/verbatim.properties.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/verbatim.properties.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/verbatim.properties.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/verbatim.properties.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/wordml.template.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/wordml.template.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/wordml.template.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/wordml.template.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/writing.mode.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/writing.mode.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/writing.mode.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/writing.mode.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/xbCollapsibleLists.js.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/xbCollapsibleLists.js.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/xbCollapsibleLists.js.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/xbCollapsibleLists.js.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/xbDOM.js.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/xbDOM.js.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/xbDOM.js.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/xbDOM.js.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/xbLibrary.js.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/xbLibrary.js.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/xbLibrary.js.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/xbLibrary.js.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/xbStyle.js.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/xbStyle.js.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/xbStyle.js.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/xbStyle.js.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/xep.extensions.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/xep.extensions.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/xep.extensions.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/xep.extensions.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/xep.index.item.properties.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/xep.index.item.properties.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/xep.index.item.properties.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/xep.index.item.properties.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/xref.label-page.separator.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/xref.label-page.separator.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/xref.label-page.separator.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/xref.label-page.separator.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/xref.label-title.separator.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/xref.label-title.separator.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/xref.label-title.separator.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/xref.label-title.separator.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/xref.properties.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/xref.properties.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/xref.properties.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/xref.properties.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/xref.title-page.separator.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/xref.title-page.separator.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/xref.title-page.separator.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/xref.title-page.separator.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/xref.with.number.and.title.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/xref.with.number.and.title.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/params/xref.with.number.and.title.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/params/xref.with.number.and.title.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/profiling/profile-mode.xsl b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/profiling/profile-mode.xsl
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/profiling/profile-mode.xsl
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/profiling/profile-mode.xsl
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/profiling/profile.xsl b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/profiling/profile.xsl
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/profiling/profile.xsl
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/profiling/profile.xsl
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/profiling/strip-attributes.xsl b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/profiling/strip-attributes.xsl
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/profiling/strip-attributes.xsl
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/profiling/strip-attributes.xsl
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/profiling/xsl2profile.xsl b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/profiling/xsl2profile.xsl
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/profiling/xsl2profile.xsl
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/profiling/xsl2profile.xsl
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/roundtrip/blocks-spec.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/roundtrip/blocks-spec.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/roundtrip/blocks-spec.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/roundtrip/blocks-spec.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/roundtrip/blocks2dbk.dtd b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/roundtrip/blocks2dbk.dtd
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/roundtrip/blocks2dbk.dtd
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/roundtrip/blocks2dbk.dtd
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/roundtrip/blocks2dbk.xsl b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/roundtrip/blocks2dbk.xsl
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/roundtrip/blocks2dbk.xsl
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/roundtrip/blocks2dbk.xsl
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/roundtrip/dbk2ooo.xsl b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/roundtrip/dbk2ooo.xsl
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/roundtrip/dbk2ooo.xsl
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/roundtrip/dbk2ooo.xsl
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/roundtrip/dbk2pages.xsl b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/roundtrip/dbk2pages.xsl
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/roundtrip/dbk2pages.xsl
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/roundtrip/dbk2pages.xsl
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/roundtrip/dbk2wordml.xsl b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/roundtrip/dbk2wordml.xsl
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/roundtrip/dbk2wordml.xsl
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/roundtrip/dbk2wordml.xsl
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/roundtrip/dbk2wp.xsl b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/roundtrip/dbk2wp.xsl
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/roundtrip/dbk2wp.xsl
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/roundtrip/dbk2wp.xsl
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/roundtrip/normalise-common.xsl b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/roundtrip/normalise-common.xsl
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/roundtrip/normalise-common.xsl
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/roundtrip/normalise-common.xsl
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/roundtrip/normalise2sections.xsl b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/roundtrip/normalise2sections.xsl
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/roundtrip/normalise2sections.xsl
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/roundtrip/normalise2sections.xsl
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/roundtrip/pages2normalise.xsl b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/roundtrip/pages2normalise.xsl
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/roundtrip/pages2normalise.xsl
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/roundtrip/pages2normalise.xsl
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/roundtrip/param.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/roundtrip/param.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/roundtrip/param.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/roundtrip/param.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/roundtrip/param.xsl b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/roundtrip/param.xsl
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/roundtrip/param.xsl
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/roundtrip/param.xsl
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/roundtrip/sections-spec.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/roundtrip/sections-spec.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/roundtrip/sections-spec.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/roundtrip/sections-spec.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/roundtrip/sections2blocks.xsl b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/roundtrip/sections2blocks.xsl
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/roundtrip/sections2blocks.xsl
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/roundtrip/sections2blocks.xsl
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/roundtrip/specifications.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/roundtrip/specifications.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/roundtrip/specifications.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/roundtrip/specifications.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/roundtrip/template-pages.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/roundtrip/template-pages.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/roundtrip/template-pages.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/roundtrip/template-pages.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/roundtrip/template.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/roundtrip/template.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/roundtrip/template.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/roundtrip/template.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/roundtrip/wordml2normalise.xsl b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/roundtrip/wordml2normalise.xsl
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/roundtrip/wordml2normalise.xsl
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/roundtrip/wordml2normalise.xsl
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/browser/CTOCWidget.js b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/browser/CTOCWidget.js
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/browser/CTOCWidget.js
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/browser/CTOCWidget.js
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/browser/overlay.js b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/browser/overlay.js
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/browser/overlay.js
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/browser/overlay.js
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/browser/slides-default.css b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/browser/slides-default.css
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/browser/slides-default.css
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/browser/slides-default.css
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/browser/slides-frames.css b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/browser/slides-frames.css
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/browser/slides-frames.css
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/browser/slides-frames.css
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/browser/slides-plain.css b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/browser/slides-plain.css
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/browser/slides-plain.css
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/browser/slides-plain.css
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/browser/slides-table.css b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/browser/slides-table.css
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/browser/slides-table.css
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/browser/slides-table.css
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/browser/slides-w3c.css b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/browser/slides-w3c.css
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/browser/slides-w3c.css
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/browser/slides-w3c.css
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/browser/slides.css b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/browser/slides.css
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/browser/slides.css
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/browser/slides.css
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/browser/slides.js b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/browser/slides.js
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/browser/slides.js
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/browser/slides.js
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/browser/ua.js b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/browser/ua.js
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/browser/ua.js
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/browser/ua.js
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/browser/xbCollapsibleLists.js b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/browser/xbCollapsibleLists.js
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/browser/xbCollapsibleLists.js
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/browser/xbCollapsibleLists.js
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/browser/xbDOM.js b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/browser/xbDOM.js
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/browser/xbDOM.js
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/browser/xbDOM.js
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/browser/xbDebug.js b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/browser/xbDebug.js
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/browser/xbDebug.js
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/browser/xbDebug.js
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/browser/xbLibrary.js b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/browser/xbLibrary.js
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/browser/xbLibrary.js
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/browser/xbLibrary.js
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/browser/xbStyle-css.js b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/browser/xbStyle-css.js
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/browser/xbStyle-css.js
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/browser/xbStyle-css.js
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/browser/xbStyle-nn4.js b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/browser/xbStyle-nn4.js
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/browser/xbStyle-nn4.js
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/browser/xbStyle-nn4.js
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/browser/xbStyle-not-supported.js b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/browser/xbStyle-not-supported.js
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/browser/xbStyle-not-supported.js
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/browser/xbStyle-not-supported.js
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/browser/xbStyle.js b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/browser/xbStyle.js
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/browser/xbStyle.js
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/browser/xbStyle.js
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/fo/param.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/fo/param.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/fo/param.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/fo/param.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/fo/param.xsl b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/fo/param.xsl
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/fo/param.xsl
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/fo/param.xsl
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/fo/plain-titlepage.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/fo/plain-titlepage.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/fo/plain-titlepage.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/fo/plain-titlepage.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/fo/plain-titlepage.xsl b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/fo/plain-titlepage.xsl
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/fo/plain-titlepage.xsl
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/fo/plain-titlepage.xsl
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/fo/plain.xsl b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/fo/plain.xsl
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/fo/plain.xsl
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/fo/plain.xsl
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/html/css.xsl b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/html/css.xsl
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/html/css.xsl
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/html/css.xsl
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/html/default.xsl b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/html/default.xsl
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/html/default.xsl
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/html/default.xsl
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/html/flat.xsl b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/html/flat.xsl
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/html/flat.xsl
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/html/flat.xsl
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/html/frames.xsl b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/html/frames.xsl
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/html/frames.xsl
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/html/frames.xsl
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/html/graphics.xsl b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/html/graphics.xsl
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/html/graphics.xsl
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/html/graphics.xsl
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/html/jscript.xsl b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/html/jscript.xsl
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/html/jscript.xsl
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/html/jscript.xsl
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/html/param.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/html/param.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/html/param.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/html/param.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/html/param.xsl b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/html/param.xsl
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/html/param.xsl
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/html/param.xsl
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/html/plain.xsl b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/html/plain.xsl
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/html/plain.xsl
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/html/plain.xsl
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/html/slides-common.xsl b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/html/slides-common.xsl
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/html/slides-common.xsl
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/html/slides-common.xsl
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/html/tables.xsl b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/html/tables.xsl
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/html/tables.xsl
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/html/tables.xsl
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/html/vslides.xsl b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/html/vslides.xsl
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/html/vslides.xsl
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/html/vslides.xsl
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/html/w3c.xsl b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/html/w3c.xsl
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/html/w3c.xsl
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/html/w3c.xsl
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/htmlhelp/htmlhelp.xsl b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/htmlhelp/htmlhelp.xsl
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/htmlhelp/htmlhelp.xsl
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/htmlhelp/htmlhelp.xsl
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/keynote/default.xsl b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/keynote/default.xsl
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/keynote/default.xsl
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/keynote/default.xsl
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/keynote/xsltsl/cmp.xsl b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/keynote/xsltsl/cmp.xsl
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/keynote/xsltsl/cmp.xsl
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/keynote/xsltsl/cmp.xsl
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/keynote/xsltsl/date-time.xsl b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/keynote/xsltsl/date-time.xsl
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/keynote/xsltsl/date-time.xsl
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/keynote/xsltsl/date-time.xsl
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/keynote/xsltsl/example.xsl b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/keynote/xsltsl/example.xsl
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/keynote/xsltsl/example.xsl
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/keynote/xsltsl/example.xsl
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/keynote/xsltsl/markup.xsl b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/keynote/xsltsl/markup.xsl
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/keynote/xsltsl/markup.xsl
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/keynote/xsltsl/markup.xsl
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/keynote/xsltsl/math.xsl b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/keynote/xsltsl/math.xsl
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/keynote/xsltsl/math.xsl
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/keynote/xsltsl/math.xsl
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/keynote/xsltsl/node.xsl b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/keynote/xsltsl/node.xsl
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/keynote/xsltsl/node.xsl
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/keynote/xsltsl/node.xsl
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/keynote/xsltsl/stdlib.xsl b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/keynote/xsltsl/stdlib.xsl
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/keynote/xsltsl/stdlib.xsl
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/keynote/xsltsl/stdlib.xsl
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/keynote/xsltsl/string.xsl b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/keynote/xsltsl/string.xsl
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/keynote/xsltsl/string.xsl
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/keynote/xsltsl/string.xsl
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/keynote/xsltsl/svg.xsl b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/keynote/xsltsl/svg.xsl
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/keynote/xsltsl/svg.xsl
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/keynote/xsltsl/svg.xsl
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/keynote/xsltsl/uri.xsl b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/keynote/xsltsl/uri.xsl
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/keynote/xsltsl/uri.xsl
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/keynote/xsltsl/uri.xsl
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/svg/default.xsl b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/svg/default.xsl
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/svg/default.xsl
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/svg/default.xsl
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/xhtml/css.xsl b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/xhtml/css.xsl
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/xhtml/css.xsl
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/xhtml/css.xsl
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/xhtml/default.xsl b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/xhtml/default.xsl
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/xhtml/default.xsl
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/xhtml/default.xsl
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/xhtml/flat.xsl b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/xhtml/flat.xsl
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/xhtml/flat.xsl
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/xhtml/flat.xsl
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/xhtml/frames.xsl b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/xhtml/frames.xsl
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/xhtml/frames.xsl
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/xhtml/frames.xsl
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/xhtml/graphics.xsl b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/xhtml/graphics.xsl
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/xhtml/graphics.xsl
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/xhtml/graphics.xsl
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/xhtml/jscript.xsl b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/xhtml/jscript.xsl
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/xhtml/jscript.xsl
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/xhtml/jscript.xsl
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/xhtml/param.xsl b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/xhtml/param.xsl
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/xhtml/param.xsl
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/xhtml/param.xsl
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/xhtml/plain.xsl b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/xhtml/plain.xsl
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/xhtml/plain.xsl
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/xhtml/plain.xsl
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/xhtml/slides-common.xsl b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/xhtml/slides-common.xsl
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/xhtml/slides-common.xsl
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/xhtml/slides-common.xsl
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/xhtml/tables.xsl b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/xhtml/tables.xsl
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/xhtml/tables.xsl
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/xhtml/tables.xsl
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/xhtml/vslides.xsl b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/xhtml/vslides.xsl
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/xhtml/vslides.xsl
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/xhtml/vslides.xsl
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/xhtml/w3c.xsl b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/xhtml/w3c.xsl
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/xhtml/w3c.xsl
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/xhtml/w3c.xsl
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/template/titlepage.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/template/titlepage.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/template/titlepage.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/template/titlepage.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/template/titlepage.xsl b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/template/titlepage.xsl
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/template/titlepage.xsl
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/template/titlepage.xsl
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/tests/refentry.007.ns.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/tests/refentry.007.ns.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/tests/refentry.007.ns.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/tests/refentry.007.ns.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/tests/refentry.007.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/tests/refentry.007.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/tests/refentry.007.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/tests/refentry.007.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/tools/bin/docbook-xsl-update b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/tools/bin/docbook-xsl-update
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/tools/bin/docbook-xsl-update
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/tools/bin/docbook-xsl-update
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/tools/make/Makefile.DocBook b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/tools/make/Makefile.DocBook
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/tools/make/Makefile.DocBook
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/tools/make/Makefile.DocBook
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/tools/make/Makefile.combine b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/tools/make/Makefile.combine
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/tools/make/Makefile.combine
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/tools/make/Makefile.combine
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/tools/make/Makefile.docParam b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/tools/make/Makefile.docParam
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/tools/make/Makefile.docParam
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/tools/make/Makefile.docParam
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/LICENSE b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/LICENSE
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/LICENSE
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/LICENSE
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/docs/common/css/positioning.css b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/docs/common/css/positioning.css
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/docs/common/css/positioning.css
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/docs/common/css/positioning.css
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/docs/common/jquery/jquery-1.4.2.min.js b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/docs/common/jquery/jquery-1.4.2.min.js
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/docs/common/jquery/jquery-1.4.2.min.js
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/docs/common/jquery/jquery-1.4.2.min.js
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/docs/common/jquery/jquery-ui-1.8.2.custom.min.js b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/docs/common/jquery/jquery-ui-1.8.2.custom.min.js
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/docs/common/jquery/jquery-ui-1.8.2.custom.min.js
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/docs/common/jquery/jquery-ui-1.8.2.custom.min.js
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/docs/common/jquery/jquery.cookie.js b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/docs/common/jquery/jquery.cookie.js
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/docs/common/jquery/jquery.cookie.js
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/docs/common/jquery/jquery.cookie.js
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/docs/common/jquery/theme-redmond/jquery-ui-1.8.2.custom.css b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/docs/common/jquery/theme-redmond/jquery-ui-1.8.2.custom.css
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/docs/common/jquery/theme-redmond/jquery-ui-1.8.2.custom.css
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/docs/common/jquery/theme-redmond/jquery-ui-1.8.2.custom.css
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/docs/common/jquery/treeview/jquery.treeview.async.js b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/docs/common/jquery/treeview/jquery.treeview.async.js
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/docs/common/jquery/treeview/jquery.treeview.async.js
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/docs/common/jquery/treeview/jquery.treeview.async.js
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/docs/common/jquery/treeview/jquery.treeview.css b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/docs/common/jquery/treeview/jquery.treeview.css
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/docs/common/jquery/treeview/jquery.treeview.css
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/docs/common/jquery/treeview/jquery.treeview.css
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/docs/common/jquery/treeview/jquery.treeview.js b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/docs/common/jquery/treeview/jquery.treeview.js
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/docs/common/jquery/treeview/jquery.treeview.js
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/docs/common/jquery/treeview/jquery.treeview.js
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/docs/common/jquery/treeview/jquery.treeview.min.js b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/docs/common/jquery/treeview/jquery.treeview.min.js
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/docs/common/jquery/treeview/jquery.treeview.min.js
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/docs/common/jquery/treeview/jquery.treeview.min.js
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/docs/common/jquery/treeview/jquery.treeview.pack.js b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/docs/common/jquery/treeview/jquery.treeview.pack.js
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/docs/common/jquery/treeview/jquery.treeview.pack.js
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/docs/common/jquery/treeview/jquery.treeview.pack.js
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/docs/common/main.js b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/docs/common/main.js
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/docs/common/main.js
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/docs/common/main.js
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/docs/content/ch01.html b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/docs/content/ch01.html
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/docs/content/ch01.html
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/docs/content/ch01.html
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/docs/content/ch02.html b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/docs/content/ch02.html
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/docs/content/ch02.html
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/docs/content/ch02.html
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/docs/content/ch02s01.html b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/docs/content/ch02s01.html
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/docs/content/ch02s01.html
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/docs/content/ch02s01.html
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/docs/content/ch02s02.html b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/docs/content/ch02s02.html
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/docs/content/ch02s02.html
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/docs/content/ch02s02.html
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/docs/content/ch02s03.html b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/docs/content/ch02s03.html
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/docs/content/ch02s03.html
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/docs/content/ch02s03.html
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/docs/content/ch02s04.html b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/docs/content/ch02s04.html
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/docs/content/ch02s04.html
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/docs/content/ch02s04.html
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/docs/content/ch03.html b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/docs/content/ch03.html
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/docs/content/ch03.html
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/docs/content/ch03.html
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/docs/content/ch03s01.html b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/docs/content/ch03s01.html
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/docs/content/ch03s01.html
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/docs/content/ch03s01.html
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/docs/content/ch03s02.html b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/docs/content/ch03s02.html
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/docs/content/ch03s02.html
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/docs/content/ch03s02.html
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/docs/content/index.html b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/docs/content/index.html
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/docs/content/index.html
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/docs/content/index.html
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/docs/content/search/htmlFileInfoList.js b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/docs/content/search/htmlFileInfoList.js
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/docs/content/search/htmlFileInfoList.js
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/docs/content/search/htmlFileInfoList.js
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/docs/content/search/htmlFileList.js b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/docs/content/search/htmlFileList.js
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/docs/content/search/htmlFileList.js
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/docs/content/search/htmlFileList.js
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/docs/content/search/index-1.js b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/docs/content/search/index-1.js
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/docs/content/search/index-1.js
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/docs/content/search/index-1.js
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/docs/content/search/index-2.js b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/docs/content/search/index-2.js
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/docs/content/search/index-2.js
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/docs/content/search/index-2.js
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/docs/content/search/index-3.js b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/docs/content/search/index-3.js
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/docs/content/search/index-3.js
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/docs/content/search/index-3.js
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/docs/content/search/nwSearchFnt.js b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/docs/content/search/nwSearchFnt.js
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/docs/content/search/nwSearchFnt.js
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/docs/content/search/nwSearchFnt.js
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/docs/content/search/stemmers/en_stemmer.js b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/docs/content/search/stemmers/en_stemmer.js
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/docs/content/search/stemmers/en_stemmer.js
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/docs/content/search/stemmers/en_stemmer.js
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/docs/index.html b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/docs/index.html
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/docs/index.html
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/docs/index.html
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/docsrc/readme.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/docsrc/readme.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/docsrc/readme.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/docsrc/readme.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/template/common/css/positioning.css b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/template/common/css/positioning.css
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/template/common/css/positioning.css
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/template/common/css/positioning.css
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/template/common/jquery/jquery-1.4.2.min.js b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/template/common/jquery/jquery-1.4.2.min.js
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/template/common/jquery/jquery-1.4.2.min.js
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/template/common/jquery/jquery-1.4.2.min.js
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/template/common/jquery/jquery-ui-1.8.2.custom.min.js b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/template/common/jquery/jquery-ui-1.8.2.custom.min.js
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/template/common/jquery/jquery-ui-1.8.2.custom.min.js
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/template/common/jquery/jquery-ui-1.8.2.custom.min.js
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/template/common/jquery/jquery.cookie.js b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/template/common/jquery/jquery.cookie.js
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/template/common/jquery/jquery.cookie.js
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/template/common/jquery/jquery.cookie.js
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/template/common/jquery/theme-redmond/jquery-ui-1.8.2.custom.css b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/template/common/jquery/theme-redmond/jquery-ui-1.8.2.custom.css
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/template/common/jquery/theme-redmond/jquery-ui-1.8.2.custom.css
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/template/common/jquery/theme-redmond/jquery-ui-1.8.2.custom.css
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/template/common/jquery/treeview/jquery.treeview.async.js b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/template/common/jquery/treeview/jquery.treeview.async.js
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/template/common/jquery/treeview/jquery.treeview.async.js
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/template/common/jquery/treeview/jquery.treeview.async.js
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/template/common/jquery/treeview/jquery.treeview.css b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/template/common/jquery/treeview/jquery.treeview.css
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/template/common/jquery/treeview/jquery.treeview.css
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/template/common/jquery/treeview/jquery.treeview.css
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/template/common/jquery/treeview/jquery.treeview.js b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/template/common/jquery/treeview/jquery.treeview.js
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/template/common/jquery/treeview/jquery.treeview.js
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/template/common/jquery/treeview/jquery.treeview.js
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/template/common/jquery/treeview/jquery.treeview.min.js b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/template/common/jquery/treeview/jquery.treeview.min.js
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/template/common/jquery/treeview/jquery.treeview.min.js
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/template/common/jquery/treeview/jquery.treeview.min.js
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/template/common/jquery/treeview/jquery.treeview.pack.js b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/template/common/jquery/treeview/jquery.treeview.pack.js
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/template/common/jquery/treeview/jquery.treeview.pack.js
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/template/common/jquery/treeview/jquery.treeview.pack.js
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/template/common/main.js b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/template/common/main.js
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/template/common/main.js
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/template/common/main.js
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/template/content/search/default.props b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/template/content/search/default.props
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/template/content/search/default.props
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/template/content/search/default.props
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/template/content/search/en-us.props b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/template/content/search/en-us.props
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/template/content/search/en-us.props
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/template/content/search/en-us.props
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/template/content/search/es-es.props b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/template/content/search/es-es.props
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/template/content/search/es-es.props
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/template/content/search/es-es.props
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/template/content/search/ja-jp.props b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/template/content/search/ja-jp.props
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/template/content/search/ja-jp.props
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/template/content/search/ja-jp.props
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/template/content/search/nwSearchFnt.js b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/template/content/search/nwSearchFnt.js
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/template/content/search/nwSearchFnt.js
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/template/content/search/nwSearchFnt.js
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/template/content/search/punctuation.props b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/template/content/search/punctuation.props
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/template/content/search/punctuation.props
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/template/content/search/punctuation.props
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/template/content/search/stemmers/de_stemmer.js b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/template/content/search/stemmers/de_stemmer.js
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/template/content/search/stemmers/de_stemmer.js
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/template/content/search/stemmers/de_stemmer.js
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/template/content/search/stemmers/en_stemmer.js b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/template/content/search/stemmers/en_stemmer.js
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/template/content/search/stemmers/en_stemmer.js
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/template/content/search/stemmers/en_stemmer.js
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/template/content/search/stemmers/fr_stemmer.js b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/template/content/search/stemmers/fr_stemmer.js
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/template/content/search/stemmers/fr_stemmer.js
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/template/content/search/stemmers/fr_stemmer.js
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/xsl/webhelp.xsl b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/xsl/webhelp.xsl
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/xsl/webhelp.xsl
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/xsl/webhelp.xsl
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/website/autolayout.xsl b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/website/autolayout.xsl
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/website/autolayout.xsl
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/website/autolayout.xsl
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/website/chunk-common.xsl b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/website/chunk-common.xsl
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/website/chunk-common.xsl
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/website/chunk-common.xsl
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/website/chunk-tabular.xsl b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/website/chunk-tabular.xsl
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/website/chunk-tabular.xsl
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/website/chunk-tabular.xsl
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/website/chunk-website.xsl b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/website/chunk-website.xsl
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/website/chunk-website.xsl
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/website/chunk-website.xsl
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/website/head.xsl b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/website/head.xsl
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/website/head.xsl
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/website/head.xsl
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/website/makefile-dep.xsl b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/website/makefile-dep.xsl
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/website/makefile-dep.xsl
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/website/makefile-dep.xsl
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/website/olink.xsl b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/website/olink.xsl
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/website/olink.xsl
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/website/olink.xsl
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/website/param.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/website/param.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/website/param.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/website/param.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/website/param.xsl b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/website/param.xsl
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/website/param.xsl
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/website/param.xsl
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/website/rss.xsl b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/website/rss.xsl
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/website/rss.xsl
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/website/rss.xsl
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/website/tabular.xsl b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/website/tabular.xsl
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/website/tabular.xsl
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/website/tabular.xsl
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/website/toc-tabular.xsl b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/website/toc-tabular.xsl
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/website/toc-tabular.xsl
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/website/toc-tabular.xsl
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/website/toc.xsl b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/website/toc.xsl
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/website/toc.xsl
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/website/toc.xsl
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/website/website-common.xsl b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/website/website-common.xsl
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/website/website-common.xsl
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/website/website-common.xsl
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/website/website-targets.xsl b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/website/website-targets.xsl
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/website/website-targets.xsl
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/website/website-targets.xsl
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/website/website.xsl b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/website/website.xsl
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/website/website.xsl
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/website/website.xsl
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/website/xbel.xsl b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/website/xbel.xsl
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/website/xbel.xsl
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/website/xbel.xsl
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/admon.xsl b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/admon.xsl
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/admon.xsl
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/admon.xsl
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/annotations.xsl b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/annotations.xsl
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/annotations.xsl
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/annotations.xsl
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/autoidx-kimber.xsl b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/autoidx-kimber.xsl
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/autoidx-kimber.xsl
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/autoidx-kimber.xsl
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/autoidx-kosek.xsl b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/autoidx-kosek.xsl
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/autoidx-kosek.xsl
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/autoidx-kosek.xsl
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/autoidx-ng.xsl b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/autoidx-ng.xsl
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/autoidx-ng.xsl
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/autoidx-ng.xsl
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/autoidx.xsl b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/autoidx.xsl
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/autoidx.xsl
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/autoidx.xsl
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/autotoc.xsl b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/autotoc.xsl
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/autotoc.xsl
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/autotoc.xsl
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/biblio-iso690.xsl b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/biblio-iso690.xsl
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/biblio-iso690.xsl
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/biblio-iso690.xsl
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/biblio.xsl b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/biblio.xsl
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/biblio.xsl
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/biblio.xsl
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/block.xsl b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/block.xsl
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/block.xsl
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/block.xsl
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/callout.xsl b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/callout.xsl
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/callout.xsl
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/callout.xsl
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/changebars.xsl b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/changebars.xsl
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/changebars.xsl
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/changebars.xsl
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/chunk-changebars.xsl b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/chunk-changebars.xsl
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/chunk-changebars.xsl
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/chunk-changebars.xsl
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/chunk-code.xsl b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/chunk-code.xsl
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/chunk-code.xsl
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/chunk-code.xsl
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/chunk-common.xsl b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/chunk-common.xsl
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/chunk-common.xsl
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/chunk-common.xsl
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/chunk.xsl b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/chunk.xsl
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/chunk.xsl
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/chunk.xsl
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/chunker.xsl b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/chunker.xsl
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/chunker.xsl
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/chunker.xsl
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/chunkfast.xsl b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/chunkfast.xsl
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/chunkfast.xsl
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/chunkfast.xsl
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/chunktoc.xsl b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/chunktoc.xsl
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/chunktoc.xsl
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/chunktoc.xsl
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/component.xsl b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/component.xsl
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/component.xsl
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/component.xsl
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/division.xsl b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/division.xsl
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/division.xsl
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/division.xsl
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/docbook.css.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/docbook.css.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/docbook.css.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/docbook.css.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/docbook.xsl b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/docbook.xsl
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/docbook.xsl
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/docbook.xsl
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/ebnf.xsl b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/ebnf.xsl
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/ebnf.xsl
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/ebnf.xsl
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/footnote.xsl b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/footnote.xsl
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/footnote.xsl
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/footnote.xsl
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/formal.xsl b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/formal.xsl
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/formal.xsl
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/formal.xsl
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/glossary.xsl b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/glossary.xsl
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/glossary.xsl
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/glossary.xsl
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/graphics.xsl b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/graphics.xsl
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/graphics.xsl
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/graphics.xsl
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/highlight.xsl b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/highlight.xsl
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/highlight.xsl
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/highlight.xsl
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/html-rtf.xsl b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/html-rtf.xsl
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/html-rtf.xsl
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/html-rtf.xsl
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/html.xsl b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/html.xsl
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/html.xsl
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/html.xsl
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/htmltbl.xsl b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/htmltbl.xsl
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/htmltbl.xsl
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/htmltbl.xsl
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/index.xsl b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/index.xsl
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/index.xsl
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/index.xsl
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/info.xsl b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/info.xsl
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/info.xsl
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/info.xsl
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/inline.xsl b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/inline.xsl
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/inline.xsl
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/inline.xsl
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/keywords.xsl b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/keywords.xsl
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/keywords.xsl
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/keywords.xsl
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/lists.xsl b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/lists.xsl
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/lists.xsl
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/lists.xsl
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/maketoc.xsl b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/maketoc.xsl
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/maketoc.xsl
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/maketoc.xsl
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/manifest.xsl b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/manifest.xsl
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/manifest.xsl
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/manifest.xsl
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/math.xsl b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/math.xsl
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/math.xsl
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/math.xsl
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/oldchunker.xsl b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/oldchunker.xsl
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/oldchunker.xsl
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/oldchunker.xsl
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/onechunk.xsl b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/onechunk.xsl
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/onechunk.xsl
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/onechunk.xsl
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/param.xsl b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/param.xsl
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/param.xsl
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/param.xsl
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/pi.xsl b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/pi.xsl
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/pi.xsl
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/pi.xsl
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/profile-chunk-code.xsl b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/profile-chunk-code.xsl
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/profile-chunk-code.xsl
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/profile-chunk-code.xsl
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/profile-chunk.xsl b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/profile-chunk.xsl
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/profile-chunk.xsl
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/profile-chunk.xsl
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/profile-docbook.xsl b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/profile-docbook.xsl
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/profile-docbook.xsl
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/profile-docbook.xsl
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/profile-onechunk.xsl b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/profile-onechunk.xsl
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/profile-onechunk.xsl
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/profile-onechunk.xsl
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/qandaset.xsl b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/qandaset.xsl
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/qandaset.xsl
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/qandaset.xsl
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/refentry.xsl b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/refentry.xsl
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/refentry.xsl
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/refentry.xsl
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/sections.xsl b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/sections.xsl
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/sections.xsl
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/sections.xsl
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/synop.xsl b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/synop.xsl
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/synop.xsl
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/synop.xsl
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/table.xsl b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/table.xsl
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/table.xsl
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/table.xsl
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/task.xsl b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/task.xsl
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/task.xsl
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/task.xsl
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/titlepage.templates.xsl b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/titlepage.templates.xsl
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/titlepage.templates.xsl
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/titlepage.templates.xsl
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/titlepage.xsl b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/titlepage.xsl
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/titlepage.xsl
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/titlepage.xsl
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/toc.xsl b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/toc.xsl
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/toc.xsl
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/toc.xsl
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/verbatim.xsl b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/verbatim.xsl
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/verbatim.xsl
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/verbatim.xsl
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/xref.xsl b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/xref.xsl
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/xref.xsl
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/xref.xsl
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/admon.xsl b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/admon.xsl
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/admon.xsl
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/admon.xsl
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/annotations.xsl b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/annotations.xsl
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/annotations.xsl
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/annotations.xsl
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/autoidx-kimber.xsl b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/autoidx-kimber.xsl
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/autoidx-kimber.xsl
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/autoidx-kimber.xsl
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/autoidx-kosek.xsl b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/autoidx-kosek.xsl
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/autoidx-kosek.xsl
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/autoidx-kosek.xsl
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/autoidx-ng.xsl b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/autoidx-ng.xsl
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/autoidx-ng.xsl
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/autoidx-ng.xsl
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/autoidx.xsl b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/autoidx.xsl
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/autoidx.xsl
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/autoidx.xsl
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/autotoc.xsl b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/autotoc.xsl
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/autotoc.xsl
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/autotoc.xsl
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/biblio-iso690.xsl b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/biblio-iso690.xsl
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/biblio-iso690.xsl
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/biblio-iso690.xsl
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/biblio.xsl b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/biblio.xsl
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/biblio.xsl
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/biblio.xsl
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/block.xsl b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/block.xsl
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/block.xsl
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/block.xsl
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/callout.xsl b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/callout.xsl
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/callout.xsl
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/callout.xsl
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/changebars.xsl b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/changebars.xsl
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/changebars.xsl
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/changebars.xsl
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/chunk-changebars.xsl b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/chunk-changebars.xsl
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/chunk-changebars.xsl
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/chunk-changebars.xsl
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/chunk-code.xsl b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/chunk-code.xsl
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/chunk-code.xsl
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/chunk-code.xsl
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/chunk-common.xsl b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/chunk-common.xsl
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/chunk-common.xsl
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/chunk-common.xsl
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/chunk.xsl b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/chunk.xsl
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/chunk.xsl
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/chunk.xsl
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/chunker.xsl b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/chunker.xsl
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/chunker.xsl
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/chunker.xsl
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/chunkfast.xsl b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/chunkfast.xsl
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/chunkfast.xsl
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/chunkfast.xsl
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/chunktoc.xsl b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/chunktoc.xsl
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/chunktoc.xsl
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/chunktoc.xsl
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/component.xsl b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/component.xsl
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/component.xsl
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/component.xsl
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/division.xsl b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/division.xsl
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/division.xsl
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/division.xsl
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/docbook.css.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/docbook.css.xml
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/docbook.css.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/docbook.css.xml
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/docbook.xsl b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/docbook.xsl
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/docbook.xsl
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/docbook.xsl
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/ebnf.xsl b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/ebnf.xsl
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/ebnf.xsl
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/ebnf.xsl
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/footnote.xsl b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/footnote.xsl
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/footnote.xsl
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/footnote.xsl
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/formal.xsl b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/formal.xsl
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/formal.xsl
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/formal.xsl
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/glossary.xsl b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/glossary.xsl
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/glossary.xsl
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/glossary.xsl
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/graphics.xsl b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/graphics.xsl
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/graphics.xsl
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/graphics.xsl
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/highlight.xsl b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/highlight.xsl
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/highlight.xsl
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/highlight.xsl
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/html-rtf.xsl b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/html-rtf.xsl
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/html-rtf.xsl
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/html-rtf.xsl
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/html.xsl b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/html.xsl
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/html.xsl
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/html.xsl
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/htmltbl.xsl b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/htmltbl.xsl
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/htmltbl.xsl
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/htmltbl.xsl
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/index.xsl b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/index.xsl
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/index.xsl
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/index.xsl
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/info.xsl b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/info.xsl
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/info.xsl
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/info.xsl
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/inline.xsl b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/inline.xsl
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/inline.xsl
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/inline.xsl
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/keywords.xsl b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/keywords.xsl
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/keywords.xsl
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/keywords.xsl
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/lists.xsl b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/lists.xsl
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/lists.xsl
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/lists.xsl
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/maketoc.xsl b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/maketoc.xsl
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/maketoc.xsl
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/maketoc.xsl
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/manifest.xsl b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/manifest.xsl
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/manifest.xsl
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/manifest.xsl
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/math.xsl b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/math.xsl
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/math.xsl
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/math.xsl
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/oldchunker.xsl b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/oldchunker.xsl
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/oldchunker.xsl
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/oldchunker.xsl
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/onechunk.xsl b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/onechunk.xsl
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/onechunk.xsl
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/onechunk.xsl
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/param.xsl b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/param.xsl
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/param.xsl
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/param.xsl
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/pi.xsl b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/pi.xsl
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/pi.xsl
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/pi.xsl
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/profile-chunk-code.xsl b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/profile-chunk-code.xsl
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/profile-chunk-code.xsl
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/profile-chunk-code.xsl
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/profile-chunk.xsl b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/profile-chunk.xsl
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/profile-chunk.xsl
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/profile-chunk.xsl
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/profile-docbook.xsl b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/profile-docbook.xsl
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/profile-docbook.xsl
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/profile-docbook.xsl
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/profile-onechunk.xsl b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/profile-onechunk.xsl
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/profile-onechunk.xsl
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/profile-onechunk.xsl
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/qandaset.xsl b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/qandaset.xsl
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/qandaset.xsl
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/qandaset.xsl
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/refentry.xsl b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/refentry.xsl
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/refentry.xsl
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/refentry.xsl
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/sections.xsl b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/sections.xsl
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/sections.xsl
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/sections.xsl
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/synop.xsl b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/synop.xsl
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/synop.xsl
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/synop.xsl
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/table.xsl b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/table.xsl
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/table.xsl
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/table.xsl
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/task.xsl b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/task.xsl
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/task.xsl
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/task.xsl
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/titlepage.templates.xsl b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/titlepage.templates.xsl
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/titlepage.templates.xsl
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/titlepage.templates.xsl
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/titlepage.xsl b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/titlepage.xsl
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/titlepage.xsl
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/titlepage.xsl
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/toc.xsl b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/toc.xsl
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/toc.xsl
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/toc.xsl
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/verbatim.xsl b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/verbatim.xsl
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/verbatim.xsl
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/verbatim.xsl
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/xref.xsl b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/xref.xsl
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/xref.xsl
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/xref.xsl
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook.xml
similarity index 99%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docbook.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docbook.xml
index b0de8594d..c367520ae 100644
--- a/scons/scons-local-4.5.2/SCons/Tool/docbook/docbook.xml
+++ b/scons/scons-local-4.7.0/SCons/Tool/docbook/docbook.xml
@@ -1,6 +1,8 @@
+
+
+
+
+
+
+
+
+/appendix toc,title
+article/appendix nop
+/article toc,title
+book toc,title,figure,table,example,equation
+/chapter toc,title
+part toc,title
+/preface toc,title
+reference toc,title
+/sect1 toc
+/sect2 toc
+/sect3 toc
+/sect4 toc
+/sect5 toc
+/section toc
+set toc,title
+
+
+
+
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/docs/manual.xml b/scons/scons-local-4.7.0/SCons/Tool/docbook/docs/manual.xml
similarity index 86%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/docs/manual.xml
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/docs/manual.xml
index 64ee9257c..642b8bdff 100644
--- a/scons/scons-local-4.5.2/SCons/Tool/docbook/docs/manual.xml
+++ b/scons/scons-local-4.7.0/SCons/Tool/docbook/docs/manual.xml
@@ -1,27 +1,8 @@
@@ -49,7 +30,7 @@ stylesheet utils/xmldepend.xsl by Paul DuBois is used for thi
Note, that there is no support for XML catalog resolving offered! This tool calls
the XSLT processors and PDF renderers with the stylesheets you specified, that's it.
The rest lies in your hands and you still have to know what you're doing when
-resolving names via a catalog.
+resolving names via a catalog.
Install
Installing it, requires you to copy (or, even better: checkout) the contents of the
@@ -62,7 +43,7 @@ package's docbook folder to
-For more infos about this, please refer to
+For more infos about this, please refer to
the SCons User's Guide, chap. 19.7 "Where to put your custom Builders and Tools" and
@@ -131,7 +112,7 @@ Tool uses the given names as file stems, and adds the suffixes for target and so
accordingly.
-The rules given above are valid for the Builders DocbookHtml, DocbookPdf,
+The rules given above are valid for the Builders DocbookHtml, DocbookPdf,
DocbookSlidePdf and DocbookXInclude. For the DocbookMan transformation you
can specify a target name, but the actual output names are automatically set from
the refname entries in your XML source.
@@ -149,13 +130,13 @@ Builder call as follows:
e.g. html.xsl for HTML and pdf.xsl for PDF output, a set of variables for setting the
default XSL name is provided. These are:
-DOCBOOK_DEFAULT_XSL_HTML
-DOCBOOK_DEFAULT_XSL_HTMLCHUNKED
-DOCBOOK_DEFAULT_XSL_HTMLHELP
-DOCBOOK_DEFAULT_XSL_PDF
-DOCBOOK_DEFAULT_XSL_MAN
-DOCBOOK_DEFAULT_XSL_SLIDESPDF
-DOCBOOK_DEFAULT_XSL_SLIDESHTML
+DOCBOOK_DEFAULT_XSL_HTML
+DOCBOOK_DEFAULT_XSL_HTMLCHUNKED
+DOCBOOK_DEFAULT_XSL_HTMLHELP
+DOCBOOK_DEFAULT_XSL_PDF
+DOCBOOK_DEFAULT_XSL_MAN
+DOCBOOK_DEFAULT_XSL_SLIDESPDF
+DOCBOOK_DEFAULT_XSL_SLIDESHTML
and you can set them when constructing your environment:
@@ -178,7 +159,7 @@ XSL transformation is not picked up by the stylesheets.
-As a result, there is simply no use in specifying a target HTML name.
+As a result, there is simply no use in specifying a target HTML name.
So the basic syntax for these builders is:
env = Environment(tools=['docbook'])
@@ -199,7 +180,7 @@ call, and the given prefix gets prepended to all the created filenames:
env.DocbookHtmlhelp('manual', xsl='htmlhelp.xsl', base_dir='output/')
Make sure that you don't forget the trailing slash for the base folder, else
-your files get renamed only!
+your files get renamed only!
All builders
diff --git a/scons/scons-local-4.7.0/SCons/Tool/docbook/docs/pdf.xsl b/scons/scons-local-4.7.0/SCons/Tool/docbook/docs/pdf.xsl
new file mode 100644
index 000000000..63008d567
--- /dev/null
+++ b/scons/scons-local-4.7.0/SCons/Tool/docbook/docs/pdf.xsl
@@ -0,0 +1,42 @@
+
+
+
+
+
+
+
+
+
+0pt
+
+
+/appendix toc,title
+article/appendix nop
+/article toc,title
+book toc,title,figure,table,example,equation
+/chapter toc,title
+part toc,title
+/preface toc,title
+reference toc,title
+/sect1 toc
+/sect2 toc
+/sect3 toc
+/sect4 toc
+/sect5 toc
+/section toc
+set toc,title
+
+
+
+
+
+
+
+
diff --git a/scons/scons-local-4.5.2/SCons/Tool/docbook/utils/xmldepend.xsl b/scons/scons-local-4.7.0/SCons/Tool/docbook/utils/xmldepend.xsl
similarity index 97%
rename from scons/scons-local-4.5.2/SCons/Tool/docbook/utils/xmldepend.xsl
rename to scons/scons-local-4.7.0/SCons/Tool/docbook/utils/xmldepend.xsl
index e70e1b5fd..b2f4ee2f0 100644
--- a/scons/scons-local-4.5.2/SCons/Tool/docbook/utils/xmldepend.xsl
+++ b/scons/scons-local-4.7.0/SCons/Tool/docbook/utils/xmldepend.xsl
@@ -1,7 +1,10 @@
-
@@ -153,4 +156,4 @@ TODO:
-
\ No newline at end of file
+
diff --git a/scons/scons-local-4.5.2/SCons/Tool/dvi.py b/scons/scons-local-4.7.0/SCons/Tool/dvi.py
similarity index 93%
rename from scons/scons-local-4.5.2/SCons/Tool/dvi.py
rename to scons/scons-local-4.7.0/SCons/Tool/dvi.py
index 4067b2a1e..044f62cce 100644
--- a/scons/scons-local-4.5.2/SCons/Tool/dvi.py
+++ b/scons/scons-local-4.7.0/SCons/Tool/dvi.py
@@ -1,11 +1,6 @@
-"""SCons.Tool.dvi
-
-Common DVI Builder definition for various other Tool modules that use it.
-
-"""
-
+# MIT License
#
-# __COPYRIGHT__
+# 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
@@ -25,16 +20,17 @@ Common DVI Builder definition for various other Tool modules that use it.
# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-#
-__revision__ = "__FILE__ __REVISION__ __DATE__ __DEVELOPER__"
+"""
+Common DVI Builder definition for various other Tool modules that use it.
+"""
import SCons.Builder
import SCons.Tool
DVIBuilder = None
-def generate(env):
+def generate(env) -> None:
try:
env['BUILDERS']['DVI']
except KeyError:
@@ -52,10 +48,10 @@ def generate(env):
env['BUILDERS']['DVI'] = DVIBuilder
-def exists(env):
+def exists(env) -> bool:
# This only puts a skeleton Builder in place, so if someone
# references this Tool directly, it's always "available."
- return 1
+ return True
# Local Variables:
# tab-width:4
diff --git a/scons/scons-local-4.5.2/SCons/Tool/dvipdf.py b/scons/scons-local-4.7.0/SCons/Tool/dvipdf.py
similarity index 98%
rename from scons/scons-local-4.5.2/SCons/Tool/dvipdf.py
rename to scons/scons-local-4.7.0/SCons/Tool/dvipdf.py
index e0622072d..c08bf07f6 100644
--- a/scons/scons-local-4.5.2/SCons/Tool/dvipdf.py
+++ b/scons/scons-local-4.7.0/SCons/Tool/dvipdf.py
@@ -85,12 +85,12 @@ def PDFEmitter(target, source, env):
used to generate the .dvi file we're using as input, and we only
care about the .dvi file.
"""
- def strip_suffixes(n):
+ def strip_suffixes(n) -> bool:
return not SCons.Util.splitext(str(n))[1] in ['.aux', '.log']
source = [src for src in source if strip_suffixes(src)]
return (target, source)
-def generate(env):
+def generate(env) -> None:
"""Add Builders and construction variables for dvipdf to an Environment."""
global PDFAction
if PDFAction is None:
diff --git a/scons/scons-local-4.5.2/SCons/Tool/dvips.py b/scons/scons-local-4.7.0/SCons/Tool/dvips.py
similarity index 99%
rename from scons/scons-local-4.5.2/SCons/Tool/dvips.py
rename to scons/scons-local-4.7.0/SCons/Tool/dvips.py
index 198bda038..7cf717b8d 100644
--- a/scons/scons-local-4.5.2/SCons/Tool/dvips.py
+++ b/scons/scons-local-4.7.0/SCons/Tool/dvips.py
@@ -55,7 +55,7 @@ PSAction = None
DVIPSAction = None
PSBuilder = None
-def generate(env):
+def generate(env) -> None:
"""Add Builders and construction variables for dvips to an Environment."""
global PSAction
if PSAction is None:
diff --git a/scons/scons-local-4.5.2/SCons/Tool/f03.py b/scons/scons-local-4.7.0/SCons/Tool/f03.py
similarity index 98%
rename from scons/scons-local-4.5.2/SCons/Tool/f03.py
rename to scons/scons-local-4.7.0/SCons/Tool/f03.py
index 142c1278b..7c2f029a5 100644
--- a/scons/scons-local-4.5.2/SCons/Tool/f03.py
+++ b/scons/scons-local-4.7.0/SCons/Tool/f03.py
@@ -32,7 +32,7 @@ from SCons.Tool.FortranCommon import add_all_to_env, add_f03_to_env
compilers = ['f03']
-def generate(env):
+def generate(env) -> None:
add_all_to_env(env)
add_f03_to_env(env)
diff --git a/scons/scons-local-4.5.2/SCons/Tool/f08.py b/scons/scons-local-4.7.0/SCons/Tool/f08.py
similarity index 98%
rename from scons/scons-local-4.5.2/SCons/Tool/f08.py
rename to scons/scons-local-4.7.0/SCons/Tool/f08.py
index eb367c53e..30c2d72bd 100644
--- a/scons/scons-local-4.5.2/SCons/Tool/f08.py
+++ b/scons/scons-local-4.7.0/SCons/Tool/f08.py
@@ -32,7 +32,7 @@ from SCons.Tool.FortranCommon import add_all_to_env, add_f08_to_env
compilers = ['f08']
-def generate(env):
+def generate(env) -> None:
add_all_to_env(env)
add_f08_to_env(env)
diff --git a/scons/scons-local-4.5.2/SCons/Tool/f77.py b/scons/scons-local-4.7.0/SCons/Tool/f77.py
similarity index 98%
rename from scons/scons-local-4.5.2/SCons/Tool/f77.py
rename to scons/scons-local-4.7.0/SCons/Tool/f77.py
index 5ff15ae45..c065f6cd2 100644
--- a/scons/scons-local-4.5.2/SCons/Tool/f77.py
+++ b/scons/scons-local-4.7.0/SCons/Tool/f77.py
@@ -32,7 +32,7 @@ from SCons.Tool.FortranCommon import add_all_to_env, add_f77_to_env
compilers = ['f77']
-def generate(env):
+def generate(env) -> None:
add_all_to_env(env)
add_f77_to_env(env)
diff --git a/scons/scons-local-4.5.2/SCons/Tool/f90.py b/scons/scons-local-4.7.0/SCons/Tool/f90.py
similarity index 98%
rename from scons/scons-local-4.5.2/SCons/Tool/f90.py
rename to scons/scons-local-4.7.0/SCons/Tool/f90.py
index cbf3947c1..b3dde59b8 100644
--- a/scons/scons-local-4.5.2/SCons/Tool/f90.py
+++ b/scons/scons-local-4.7.0/SCons/Tool/f90.py
@@ -32,7 +32,7 @@ from SCons.Tool.FortranCommon import add_all_to_env, add_f90_to_env
compilers = ['f90']
-def generate(env):
+def generate(env) -> None:
add_all_to_env(env)
add_f90_to_env(env)
diff --git a/scons/scons-local-4.5.2/SCons/Tool/f95.py b/scons/scons-local-4.7.0/SCons/Tool/f95.py
similarity index 98%
rename from scons/scons-local-4.5.2/SCons/Tool/f95.py
rename to scons/scons-local-4.7.0/SCons/Tool/f95.py
index 4830ee03f..b707a115f 100644
--- a/scons/scons-local-4.5.2/SCons/Tool/f95.py
+++ b/scons/scons-local-4.7.0/SCons/Tool/f95.py
@@ -32,7 +32,7 @@ from SCons.Tool.FortranCommon import add_all_to_env, add_f95_to_env
compilers = ['f95']
-def generate(env):
+def generate(env) -> None:
add_all_to_env(env)
add_f95_to_env(env)
diff --git a/scons/scons-local-4.5.2/SCons/Tool/filesystem.py b/scons/scons-local-4.7.0/SCons/Tool/filesystem.py
similarity index 92%
rename from scons/scons-local-4.5.2/SCons/Tool/filesystem.py
rename to scons/scons-local-4.7.0/SCons/Tool/filesystem.py
index 3b8ee4c8f..d90f24043 100644
--- a/scons/scons-local-4.5.2/SCons/Tool/filesystem.py
+++ b/scons/scons-local-4.7.0/SCons/Tool/filesystem.py
@@ -1,14 +1,6 @@
-"""SCons.Tool.filesystem
-
-Tool-specific initialization for the filesystem tools.
-
-There normally shouldn't be any need to import this module directly.
-It will usually be imported through the generic SCons.Tool.Tool()
-selection method.
-"""
-
+# MIT License
#
-# __COPYRIGHT__
+# 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
@@ -28,9 +20,13 @@ selection method.
# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-#
-__revision__ = "__FILE__ __REVISION__ __DATE__ __DEVELOPER__"
+"""Tool-specific initialization for the filesystem tools.
+
+There normally shouldn't be any need to import this module directly.
+It will usually be imported through the generic SCons.Tool.Tool()
+selection method.
+"""
import SCons
from SCons.Tool.install import copyFunc
@@ -48,7 +44,7 @@ def copyto_emitter(target, source, env):
return (n_target, source)
-def copy_action_func(target, source, env):
+def copy_action_func(target, source, env) -> int:
assert( len(target) == len(source) ), "\ntarget: %s\nsource: %s" %(list(map(str, target)),list(map(str, source)))
for t, s in zip(target, source):
@@ -62,7 +58,7 @@ def copy_action_str(target, source, env):
copy_action = SCons.Action.Action( copy_action_func, copy_action_str )
-def generate(env):
+def generate(env) -> None:
try:
env['BUILDERS']['CopyTo']
env['BUILDERS']['CopyAs']
@@ -88,8 +84,8 @@ def generate(env):
env['COPYSTR'] = 'Copy file(s): "$SOURCES" to "$TARGETS"'
-def exists(env):
- return 1
+def exists(env) -> bool:
+ return True
# Local Variables:
# tab-width:4
diff --git a/scons/scons-local-4.5.2/SCons/Tool/fortran.py b/scons/scons-local-4.7.0/SCons/Tool/fortran.py
similarity index 98%
rename from scons/scons-local-4.5.2/SCons/Tool/fortran.py
rename to scons/scons-local-4.7.0/SCons/Tool/fortran.py
index d21b93087..4463085f7 100644
--- a/scons/scons-local-4.5.2/SCons/Tool/fortran.py
+++ b/scons/scons-local-4.7.0/SCons/Tool/fortran.py
@@ -33,7 +33,7 @@ from SCons.Tool.FortranCommon import add_all_to_env, add_fortran_to_env
compilers = ['f95', 'f90', 'f77']
-def generate(env):
+def generate(env) -> None:
add_all_to_env(env)
add_fortran_to_env(env)
diff --git a/scons/scons-local-4.5.2/SCons/Tool/g++.py b/scons/scons-local-4.7.0/SCons/Tool/g++.py
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/g++.py
rename to scons/scons-local-4.7.0/SCons/Tool/g++.py
diff --git a/scons/scons-local-4.5.2/SCons/Tool/g77.py b/scons/scons-local-4.7.0/SCons/Tool/g77.py
similarity index 98%
rename from scons/scons-local-4.5.2/SCons/Tool/g77.py
rename to scons/scons-local-4.7.0/SCons/Tool/g77.py
index aea419a2f..8c69d8532 100644
--- a/scons/scons-local-4.5.2/SCons/Tool/g77.py
+++ b/scons/scons-local-4.7.0/SCons/Tool/g77.py
@@ -35,7 +35,7 @@ from SCons.Tool.FortranCommon import add_all_to_env, add_f77_to_env
compilers = ['g77', 'f77']
-def generate(env):
+def generate(env) -> None:
"""Add Builders and construction variables for g77 to an Environment."""
add_all_to_env(env)
add_f77_to_env(env)
diff --git a/scons/scons-local-4.5.2/SCons/Tool/gas.py b/scons/scons-local-4.7.0/SCons/Tool/gas.py
similarity index 98%
rename from scons/scons-local-4.5.2/SCons/Tool/gas.py
rename to scons/scons-local-4.7.0/SCons/Tool/gas.py
index d01bd60cc..04c9a2ed8 100644
--- a/scons/scons-local-4.5.2/SCons/Tool/gas.py
+++ b/scons/scons-local-4.7.0/SCons/Tool/gas.py
@@ -40,7 +40,7 @@ except:
assemblers = ['as', 'gas']
-def generate(env):
+def generate(env) -> None:
"""Add Builders and construction variables for as to an Environment."""
as_module.generate(env)
diff --git a/scons/scons-local-4.5.2/SCons/Tool/gcc.py b/scons/scons-local-4.7.0/SCons/Tool/gcc.py
similarity index 75%
rename from scons/scons-local-4.5.2/SCons/Tool/gcc.py
rename to scons/scons-local-4.7.0/SCons/Tool/gcc.py
index 1a25cb44d..1ccbefcf9 100644
--- a/scons/scons-local-4.5.2/SCons/Tool/gcc.py
+++ b/scons/scons-local-4.7.0/SCons/Tool/gcc.py
@@ -33,14 +33,14 @@ selection method.
from . import cc
import re
-import subprocess
+from subprocess import PIPE
import SCons.Util
compilers = ['gcc', 'cc']
-def generate(env):
+def generate(env) -> None:
"""Add Builders and construction variables for gcc to an Environment."""
if 'CC' not in env:
@@ -77,28 +77,23 @@ def detect_version(env, cc):
# -dumpversion was added in GCC 3.0. As long as we're supporting
# GCC versions older than that, we should use --version and a
# regular expression.
- # pipe = SCons.Action._subproc(env, SCons.Util.CLVar(cc) + ['-dumpversion'],
- with SCons.Action._subproc(env, SCons.Util.CLVar(cc) + ['--version'],
- stdin='devnull',
- stderr='devnull',
- stdout=subprocess.PIPE) as pipe:
- if pipe.wait() != 0:
- return version
-
- # -dumpversion variant:
- # line = pipe.stdout.read().strip()
- # --version variant:
- line = SCons.Util.to_str(pipe.stdout.readline())
- # Non-GNU compiler's output (like AIX xlc's) may exceed the stdout buffer:
- # So continue with reading to let the child process actually terminate.
- # We don't need to know the rest of the data, so don't bother decoding.
- while pipe.stdout.readline():
- pass
-
+ # pipe = SCons.Action.scons_subproc_run(env, SCons.Util.CLVar(cc) + ['-dumpversion'],
+ cp = SCons.Action.scons_subproc_run(
+ env, SCons.Util.CLVar(cc) + ['--version'], stdout=PIPE
+ )
+ if cp.returncode:
+ return version
# -dumpversion variant:
- # if line:
- # version = line
+ # line = cp.stdout.strip()
+ # --version variant:
+ try:
+ line = SCons.Util.to_str(cp.stdout.splitlines()[0])
+ except IndexError:
+ return version
+
+ # -dumpversion variant:
+ # version = line
# --version variant:
match = re.search(r'[0-9]+(\.[0-9]+)+', line)
if match:
diff --git a/scons/scons-local-4.5.2/SCons/Tool/gdc.py b/scons/scons-local-4.7.0/SCons/Tool/gdc.py
similarity index 87%
rename from scons/scons-local-4.5.2/SCons/Tool/gdc.py
rename to scons/scons-local-4.7.0/SCons/Tool/gdc.py
index 0728c6fec..96748b901 100644
--- a/scons/scons-local-4.5.2/SCons/Tool/gdc.py
+++ b/scons/scons-local-4.7.0/SCons/Tool/gdc.py
@@ -54,23 +54,24 @@ import SCons.Tool.DCommon as DCommon
import SCons.Tool.linkCommon
-def generate(env):
+def generate(env) -> None:
static_obj, shared_obj = SCons.Tool.createObjBuilders(env)
static_obj.add_action('.d', SCons.Defaults.DAction)
shared_obj.add_action('.d', SCons.Defaults.ShDAction)
- static_obj.add_emitter('.d', SCons.Defaults.StaticObjectEmitter)
- shared_obj.add_emitter('.d', SCons.Defaults.SharedObjectEmitter)
+ static_obj.add_emitter('.d', DCommon.DStaticObjectEmitter)
+ shared_obj.add_emitter('.d', DCommon.DSharedObjectEmitter)
env['DC'] = env.Detect('gdc') or 'gdc'
- env['DCOM'] = '$DC $_DINCFLAGS $_DVERFLAGS $_DDEBUGFLAGS $_DFLAGS -c -o $TARGET $SOURCES'
+ env['DCOM'] = '$DC $_DINCFLAGS $_DVERFLAGS $_DDEBUGFLAGS $_DFLAGS $_DI_FLAGS -c -o $TARGET $SOURCES'
env['_DINCFLAGS'] = '${_concat(DINCPREFIX, DPATH, DINCSUFFIX, __env__, RDirs, TARGET, SOURCE)}'
env['_DVERFLAGS'] = '${_concat(DVERPREFIX, DVERSIONS, DVERSUFFIX, __env__)}'
env['_DDEBUGFLAGS'] = '${_concat(DDEBUGPREFIX, DDEBUG, DDEBUGSUFFIX, __env__)}'
+ env['_DI_FLAGS'] = "${DI_FILE_DIR and DI_FILE_DIR_PREFIX+DI_FILE_DIR+DI_FILE_DIR_SUFFFIX}"
env['_DFLAGS'] = '${_concat(DFLAGPREFIX, DFLAGS, DFLAGSUFFIX, __env__)}'
env['SHDC'] = '$DC'
- env['SHDCOM'] = '$SHDC $_DINCFLAGS $_DVERFLAGS $_DDEBUGFLAGS $_DFLAGS -fPIC -c -o $TARGET $SOURCES'
+ env['SHDCOM'] = '$SHDC $_DINCFLAGS $_DVERFLAGS $_DDEBUGFLAGS $_DFLAGS $_DI_FLAGS -fPIC -c -o $TARGET $SOURCES'
env['DPATH'] = ['#/']
env['DFLAGS'] = []
@@ -82,14 +83,19 @@ def generate(env):
env['DINCPREFIX'] = '-I'
env['DINCSUFFIX'] = ''
- env['DVERPREFIX'] = '-version='
+ env['DVERPREFIX'] = '-fversion='
env['DVERSUFFIX'] = ''
- env['DDEBUGPREFIX'] = '-debug='
+ env['DDEBUGPREFIX'] = '-fdebug='
env['DDEBUGSUFFIX'] = ''
env['DFLAGPREFIX'] = '-'
env['DFLAGSUFFIX'] = ''
env['DFILESUFFIX'] = '.d'
+ env['DI_FILE_DIR'] = ''
+ env['DI_FILE_SUFFIX'] = '.di'
+ env['DI_FILE_DIR_PREFIX'] = '-Hd'
+ env['DI_FILE_DIR_SUFFFIX'] = ''
+
env['DLINK'] = '$DC'
env['DLINKFLAGS'] = SCons.Util.CLVar('')
env['DLINKCOM'] = '$DLINK -o $TARGET $DLINKFLAGS $__RPATH $SOURCES $_LIBDIRFLAGS $_LIBFLAGS'
@@ -99,7 +105,7 @@ def generate(env):
env['SHDLINKCOM'] = '$DLINK -o $TARGET $SHDLINKFLAGS $__SHDLIBVERSIONFLAGS $__RPATH $SOURCES $_LIBDIRFLAGS $_LIBFLAGS'
env['DLIB'] = 'lib' if env['PLATFORM'] == 'win32' else 'ar cr'
- env['DLIBCOM'] = '$DLIB $_DLIBFLAGS {0}$TARGET $SOURCES $_DLINKLIBFLAGS'.format('-c ' if env['PLATFORM'] == 'win32' else '')
+ env['DLIBCOM'] = '$DLIB $_DLIBFLAGS {}$TARGET $SOURCES $_DLINKLIBFLAGS'.format('-c ' if env['PLATFORM'] == 'win32' else '')
env['_DLIBFLAGS'] = '${_concat(DLIBFLAGPREFIX, DLIBFLAGS, DLIBFLAGSUFFIX, __env__)}'
diff --git a/scons/scons-local-4.5.2/SCons/Tool/gettext_tool.py b/scons/scons-local-4.7.0/SCons/Tool/gettext_tool.py
similarity index 98%
rename from scons/scons-local-4.5.2/SCons/Tool/gettext_tool.py
rename to scons/scons-local-4.7.0/SCons/Tool/gettext_tool.py
index a1407b362..18c7c0eef 100644
--- a/scons/scons-local-4.5.2/SCons/Tool/gettext_tool.py
+++ b/scons/scons-local-4.7.0/SCons/Tool/gettext_tool.py
@@ -40,7 +40,7 @@ from SCons.Tool.GettextCommon import (
_xgettext_exists,
)
-def generate(env, **kw):
+def generate(env, **kw) -> None:
for t in tool_list(env['PLATFORM'], env):
if sys.platform == 'win32':
tool = SCons.Tool.find_program_path(
diff --git a/scons/scons-local-4.5.2/SCons/Tool/gfortran.py b/scons/scons-local-4.7.0/SCons/Tool/gfortran.py
similarity index 86%
rename from scons/scons-local-4.5.2/SCons/Tool/gfortran.py
rename to scons/scons-local-4.7.0/SCons/Tool/gfortran.py
index f9c0a4535..f438b9171 100644
--- a/scons/scons-local-4.5.2/SCons/Tool/gfortran.py
+++ b/scons/scons-local-4.7.0/SCons/Tool/gfortran.py
@@ -30,19 +30,24 @@ selection method.
"""
from SCons.Util import CLVar
+from SCons.Tool.FortranCommon import add_all_to_env, add_fortran_to_env
-from . import fortran
+compilers = ['gfortran']
-def generate(env):
+def generate(env) -> None:
"""Add Builders and construction variables for gfortran."""
- fortran.generate(env)
+
+ add_all_to_env(env)
+ add_fortran_to_env(env)
+
+ compiler = env.Detect(compilers) or 'gfortran'
# fill in other dialects (FORTRAN dialect set by fortran.generate(),
# but don't overwrite if they have been set manually.
- for dialect in ['F77', 'F90', 'F95', 'F03', 'F08']:
+ for dialect in ['FORTRAN', 'F77', 'F90', 'F95', 'F03', 'F08']:
if dialect not in env:
- env[f'{dialect}'] = 'gfortran'
+ env[f'{dialect}'] = compiler
if f'SH{dialect}' not in env:
env[f'SH{dialect}'] = f'${dialect}'
diff --git a/scons/scons-local-4.5.2/SCons/Tool/gnulink.py b/scons/scons-local-4.7.0/SCons/Tool/gnulink.py
similarity index 97%
rename from scons/scons-local-4.5.2/SCons/Tool/gnulink.py
rename to scons/scons-local-4.7.0/SCons/Tool/gnulink.py
index e8b668fa3..c636c11d2 100644
--- a/scons/scons-local-4.5.2/SCons/Tool/gnulink.py
+++ b/scons/scons-local-4.7.0/SCons/Tool/gnulink.py
@@ -39,7 +39,7 @@ import SCons.Tool
from . import link
-def generate(env):
+def generate(env) -> None:
"""Add Builders and construction variables for gnulink to an Environment."""
link.generate(env)
@@ -52,6 +52,9 @@ def generate(env):
env['RPATHSUFFIX'] = ''
env['_RPATH'] = '${_concat(RPATHPREFIX, RPATH, RPATHSUFFIX, __env__)}'
+ env['LIBLITERALPREFIX'] = ':'
+
+
def exists(env):
# TODO: sync with link.smart_link() to choose a linker
diff --git a/scons/scons-local-4.5.2/SCons/Tool/gs.py b/scons/scons-local-4.7.0/SCons/Tool/gs.py
similarity index 99%
rename from scons/scons-local-4.5.2/SCons/Tool/gs.py
rename to scons/scons-local-4.7.0/SCons/Tool/gs.py
index 25359a858..8955bfd58 100644
--- a/scons/scons-local-4.5.2/SCons/Tool/gs.py
+++ b/scons/scons-local-4.7.0/SCons/Tool/gs.py
@@ -50,7 +50,7 @@ else:
GhostscriptAction = None
-def generate(env):
+def generate(env) -> None:
"""Add Builders and construction variables for Ghostscript to an
Environment."""
global GhostscriptAction
diff --git a/scons/scons-local-4.5.2/SCons/Tool/gxx.py b/scons/scons-local-4.7.0/SCons/Tool/gxx.py
similarity index 98%
rename from scons/scons-local-4.5.2/SCons/Tool/gxx.py
rename to scons/scons-local-4.7.0/SCons/Tool/gxx.py
index 1272997be..e788381b7 100644
--- a/scons/scons-local-4.5.2/SCons/Tool/gxx.py
+++ b/scons/scons-local-4.7.0/SCons/Tool/gxx.py
@@ -41,7 +41,7 @@ from . import cxx
compilers = ['g++']
-def generate(env):
+def generate(env) -> None:
"""Add Builders and construction variables for g++ to an Environment."""
static_obj, shared_obj = SCons.Tool.createObjBuilders(env)
diff --git a/scons/scons-local-4.5.2/SCons/Tool/hpc++.py b/scons/scons-local-4.7.0/SCons/Tool/hpc++.py
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/hpc++.py
rename to scons/scons-local-4.7.0/SCons/Tool/hpc++.py
diff --git a/scons/scons-local-4.5.2/SCons/Tool/hpcc.py b/scons/scons-local-4.7.0/SCons/Tool/hpcc.py
similarity index 98%
rename from scons/scons-local-4.5.2/SCons/Tool/hpcc.py
rename to scons/scons-local-4.7.0/SCons/Tool/hpcc.py
index 51d2e3802..f893686a8 100644
--- a/scons/scons-local-4.5.2/SCons/Tool/hpcc.py
+++ b/scons/scons-local-4.7.0/SCons/Tool/hpcc.py
@@ -36,7 +36,7 @@ import SCons.Util
from . import cc
-def generate(env):
+def generate(env) -> None:
"""Add Builders and construction variables for aCC & cc to an Environment."""
cc.generate(env)
diff --git a/scons/scons-local-4.5.2/SCons/Tool/hpcxx.py b/scons/scons-local-4.7.0/SCons/Tool/hpcxx.py
similarity index 98%
rename from scons/scons-local-4.5.2/SCons/Tool/hpcxx.py
rename to scons/scons-local-4.7.0/SCons/Tool/hpcxx.py
index 7113fa222..1f5e3195b 100644
--- a/scons/scons-local-4.5.2/SCons/Tool/hpcxx.py
+++ b/scons/scons-local-4.7.0/SCons/Tool/hpcxx.py
@@ -48,7 +48,7 @@ acc = None
try:
dirs = os.listdir('/opt')
-except (IOError, OSError):
+except OSError:
# Not being able to read the directory because it doesn't exist
# (IOError) or isn't readable (OSError) is okay.
dirs = []
@@ -60,7 +60,7 @@ for dir in dirs:
break
-def generate(env):
+def generate(env) -> None:
"""Add Builders and construction variables for g++ to an Environment."""
cplusplus.generate(env)
diff --git a/scons/scons-local-4.5.2/SCons/Tool/hplink.py b/scons/scons-local-4.7.0/SCons/Tool/hplink.py
similarity index 97%
rename from scons/scons-local-4.5.2/SCons/Tool/hplink.py
rename to scons/scons-local-4.7.0/SCons/Tool/hplink.py
index ba182f1d3..ab2154a40 100644
--- a/scons/scons-local-4.5.2/SCons/Tool/hplink.py
+++ b/scons/scons-local-4.7.0/SCons/Tool/hplink.py
@@ -40,7 +40,7 @@ ccLinker = None
try:
dirs = os.listdir('/opt')
-except (IOError, OSError):
+except OSError:
# Not being able to read the directory because it doesn't exist
# (IOError) or isn't readable (OSError) is okay.
dirs = []
@@ -51,7 +51,7 @@ for dir in dirs:
ccLinker = linker
break
-def generate(env):
+def generate(env) -> None:
"""
Add Builders and construction variables for Visual Age linker to
an Environment.
diff --git a/scons/scons-local-4.5.2/SCons/Tool/icc.py b/scons/scons-local-4.7.0/SCons/Tool/icc.py
similarity index 98%
rename from scons/scons-local-4.5.2/SCons/Tool/icc.py
rename to scons/scons-local-4.7.0/SCons/Tool/icc.py
index adf24e9ab..63c7fd0ff 100644
--- a/scons/scons-local-4.5.2/SCons/Tool/icc.py
+++ b/scons/scons-local-4.7.0/SCons/Tool/icc.py
@@ -35,7 +35,7 @@ __revision__ = "__FILE__ __REVISION__ __DATE__ __DEVELOPER__"
from . import cc
-def generate(env):
+def generate(env) -> None:
"""Add Builders and construction variables for the OS/2 to an Environment."""
cc.generate(env)
diff --git a/scons/scons-local-4.5.2/SCons/Tool/icl.py b/scons/scons-local-4.7.0/SCons/Tool/icl.py
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/icl.py
rename to scons/scons-local-4.7.0/SCons/Tool/icl.py
diff --git a/scons/scons-local-4.5.2/SCons/Tool/ifl.py b/scons/scons-local-4.7.0/SCons/Tool/ifl.py
similarity index 98%
rename from scons/scons-local-4.5.2/SCons/Tool/ifl.py
rename to scons/scons-local-4.7.0/SCons/Tool/ifl.py
index 574695072..dac8179fa 100644
--- a/scons/scons-local-4.5.2/SCons/Tool/ifl.py
+++ b/scons/scons-local-4.7.0/SCons/Tool/ifl.py
@@ -32,7 +32,7 @@ import SCons.Defaults
from SCons.Scanner.Fortran import FortranScan
from .FortranCommon import add_all_to_env
-def generate(env):
+def generate(env) -> None:
"""Add Builders and construction variables for ifl to an Environment."""
fscan = FortranScan("FORTRANPATH")
SCons.Tool.SourceFileScanner.add_scanner('.i', fscan)
diff --git a/scons/scons-local-4.5.2/SCons/Tool/ifort.py b/scons/scons-local-4.7.0/SCons/Tool/ifort.py
similarity index 99%
rename from scons/scons-local-4.5.2/SCons/Tool/ifort.py
rename to scons/scons-local-4.7.0/SCons/Tool/ifort.py
index bf39b7f49..92109234d 100644
--- a/scons/scons-local-4.5.2/SCons/Tool/ifort.py
+++ b/scons/scons-local-4.7.0/SCons/Tool/ifort.py
@@ -35,7 +35,7 @@ from SCons.Scanner.Fortran import FortranScan
from .FortranCommon import add_all_to_env
-def generate(env):
+def generate(env) -> None:
"""Add Builders and construction variables for ifort to an Environment."""
# ifort supports Fortran 90 and Fortran 95
# Additionally, ifort recognizes more file extensions.
diff --git a/scons/scons-local-4.5.2/SCons/Tool/ilink.py b/scons/scons-local-4.7.0/SCons/Tool/ilink.py
similarity index 98%
rename from scons/scons-local-4.5.2/SCons/Tool/ilink.py
rename to scons/scons-local-4.7.0/SCons/Tool/ilink.py
index 4112825b8..6be62d3c7 100644
--- a/scons/scons-local-4.5.2/SCons/Tool/ilink.py
+++ b/scons/scons-local-4.7.0/SCons/Tool/ilink.py
@@ -33,7 +33,7 @@ import SCons.Defaults
import SCons.Tool
import SCons.Util
-def generate(env):
+def generate(env) -> None:
"""Add Builders and construction variables for ilink to an Environment."""
SCons.Tool.createProgBuilder(env)
diff --git a/scons/scons-local-4.5.2/SCons/Tool/ilink32.py b/scons/scons-local-4.7.0/SCons/Tool/ilink32.py
similarity index 98%
rename from scons/scons-local-4.5.2/SCons/Tool/ilink32.py
rename to scons/scons-local-4.7.0/SCons/Tool/ilink32.py
index 1452fd555..1bdc6d0a6 100644
--- a/scons/scons-local-4.5.2/SCons/Tool/ilink32.py
+++ b/scons/scons-local-4.7.0/SCons/Tool/ilink32.py
@@ -33,7 +33,7 @@ import SCons.Tool
import SCons.Tool.bcc32
import SCons.Util
-def generate(env):
+def generate(env) -> None:
"""Add Builders and construction variables for Borland ilink to an
Environment."""
SCons.Tool.createSharedLibBuilder(env)
diff --git a/scons/scons-local-4.5.2/SCons/Tool/install.py b/scons/scons-local-4.7.0/SCons/Tool/install.py
similarity index 97%
rename from scons/scons-local-4.5.2/SCons/Tool/install.py
rename to scons/scons-local-4.7.0/SCons/Tool/install.py
index d6870c398..d553e31af 100644
--- a/scons/scons-local-4.5.2/SCons/Tool/install.py
+++ b/scons/scons-local-4.7.0/SCons/Tool/install.py
@@ -50,8 +50,8 @@ class CopytreeError(OSError):
pass
-def scons_copytree(src, dst, symlinks=False, ignore=None, copy_function=copy2,
- ignore_dangling_symlinks=False, dirs_exist_ok=False):
+def scons_copytree(src, dst, symlinks: bool=False, ignore=None, copy_function=copy2,
+ ignore_dangling_symlinks: bool=False, dirs_exist_ok: bool=False):
"""Recursively copy a directory tree, SCons version.
This is a modified copy of the Python 3.7 shutil.copytree function.
@@ -225,12 +225,12 @@ def listShlibLinksToInstall(dest, source, env):
install_links.append((install_link, install_linktgt))
return install_links
-def installShlibLinks(dest, source, env):
+def installShlibLinks(dest, source, env) -> None:
"""If we are installing a versioned shared library create the required links."""
Verbose = False
symlinks = listShlibLinksToInstall(dest, source, env)
if Verbose:
- print('installShlibLinks: symlinks={!r}'.format(StringizeLibSymlinks(symlinks)))
+ print(f'installShlibLinks: symlinks={StringizeLibSymlinks(symlinks)!r}')
if symlinks:
CreateLibSymlinks(env, symlinks)
return
@@ -326,7 +326,7 @@ def add_versioned_targets_to_INSTALLED_FILES(target, source, env):
Verbose = False
_INSTALLED_FILES.extend(target)
if Verbose:
- print("add_versioned_targets_to_INSTALLED_FILES: target={!r}".format(list(map(str, target))))
+ print(f"add_versioned_targets_to_INSTALLED_FILES: target={list(map(str, target))!r}")
symlinks = listShlibLinksToInstall(target[0], source, env)
if symlinks:
EmitLibSymlinks(env, symlinks, target[0])
@@ -337,7 +337,7 @@ class DESTDIR_factory:
""" A node factory, where all files will be relative to the dir supplied
in the constructor.
"""
- def __init__(self, env, dir):
+ def __init__(self, env, dir) -> None:
self.env = env
self.dir = env.arg2nodes( dir, env.fs.Dir )[0]
@@ -429,7 +429,7 @@ def InstallVersionedBuilderWrapper(env, target=None, source=None, dir=None, **kw
added = None
-def generate(env):
+def generate(env) -> None:
from SCons.Script import AddOption, GetOption
global added
@@ -500,8 +500,8 @@ def generate(env):
except KeyError:
env['INSTALLVERSIONEDLIB'] = copyFuncVersionedLib
-def exists(env):
- return 1
+def exists(env) -> bool:
+ return True
# Local Variables:
# tab-width:4
diff --git a/scons/scons-local-4.5.2/SCons/Tool/intelc.py b/scons/scons-local-4.7.0/SCons/Tool/intelc.py
similarity index 99%
rename from scons/scons-local-4.5.2/SCons/Tool/intelc.py
rename to scons/scons-local-4.7.0/SCons/Tool/intelc.py
index ac6fa6077..1fcadca13 100644
--- a/scons/scons-local-4.5.2/SCons/Tool/intelc.py
+++ b/scons/scons-local-4.7.0/SCons/Tool/intelc.py
@@ -250,7 +250,7 @@ def get_all_compiler_versions():
print("scons: *** Ignoring "+str(value))
i = i + 1
- except EnvironmentError:
+ except OSError:
# no more subkeys
pass
elif is_linux or is_mac:
@@ -384,7 +384,7 @@ def get_intel_compiler_top(version, abi):
return top
-def generate(env, version=None, abi=None, topdir=None, verbose=0):
+def generate(env, version=None, abi=None, topdir=None, verbose: int=0):
r"""Add Builders and construction variables for Intel C/C++ compiler
to an Environment.
diff --git a/scons/scons-local-4.5.2/SCons/Tool/ipkg.py b/scons/scons-local-4.7.0/SCons/Tool/ipkg.py
similarity index 98%
rename from scons/scons-local-4.5.2/SCons/Tool/ipkg.py
rename to scons/scons-local-4.7.0/SCons/Tool/ipkg.py
index 8e01dd26d..b295c121e 100644
--- a/scons/scons-local-4.5.2/SCons/Tool/ipkg.py
+++ b/scons/scons-local-4.7.0/SCons/Tool/ipkg.py
@@ -39,7 +39,7 @@ import os
import SCons.Builder
-def generate(env):
+def generate(env) -> None:
"""Add Builders and construction variables for ipkg to an Environment."""
try:
bld = env['BUILDERS']['Ipkg']
diff --git a/scons/scons-local-4.5.2/SCons/Tool/jar.py b/scons/scons-local-4.7.0/SCons/Tool/jar.py
similarity index 99%
rename from scons/scons-local-4.5.2/SCons/Tool/jar.py
rename to scons/scons-local-4.7.0/SCons/Tool/jar.py
index ae44ff3bd..1967294f0 100644
--- a/scons/scons-local-4.5.2/SCons/Tool/jar.py
+++ b/scons/scons-local-4.7.0/SCons/Tool/jar.py
@@ -240,7 +240,7 @@ def generate(env) -> None:
env['JARCOM'] = "${TEMPFILE('$_JARCOM','$JARCOMSTR')}"
env['JARSUFFIX'] = '.jar'
-def exists(env):
+def exists(env) -> bool:
# As reported by Jan Nijtmans in issue #2730, the simple
# return env.Detect('jar')
# doesn't always work during initialization. For now, we
diff --git a/scons/scons-local-4.5.2/SCons/Tool/javac.py b/scons/scons-local-4.7.0/SCons/Tool/javac.py
similarity index 97%
rename from scons/scons-local-4.5.2/SCons/Tool/javac.py
rename to scons/scons-local-4.7.0/SCons/Tool/javac.py
index 1b331253b..a805937bc 100644
--- a/scons/scons-local-4.5.2/SCons/Tool/javac.py
+++ b/scons/scons-local-4.7.0/SCons/Tool/javac.py
@@ -21,17 +21,13 @@
# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-"""SCons.Tool.javac
-
-Tool-specific initialization for javac.
+"""Tool-specific initialization for javac.
There normally shouldn't be any need to import this module directly.
It will usually be imported through the generic SCons.Tool.Tool()
selection method.
-
"""
-
import os
import os.path
from collections import OrderedDict
@@ -73,7 +69,7 @@ def emit_java_classes(target, source, env):
elif isinstance(entry, SCons.Node.FS.Dir):
result = OrderedDict()
dirnode = entry.rdir()
- def find_java_files(arg, dirpath, filenames):
+ def find_java_files(arg, dirpath, filenames) -> None:
java_files = sorted([n for n in filenames
if _my_normcase(n).endswith(js)])
mydir = dirnode.Dir(dirpath)
@@ -141,7 +137,7 @@ class pathopt:
Callable object for generating javac-style path options from
a construction variable (e.g. -classpath, -sourcepath).
"""
- def __init__(self, opt, var, default=None):
+ def __init__(self, opt, var, default=None) -> None:
self.opt = opt
self.var = var
self.default = default
@@ -198,7 +194,7 @@ def Java(env, target, source, *args, **kw):
return result
-def generate(env):
+def generate(env) -> None:
"""Add Builders and construction variables for javac to an Environment."""
java_file = SCons.Tool.CreateJavaFileBuilder(env)
java_class = SCons.Tool.CreateJavaClassFileBuilder(env)
@@ -242,8 +238,8 @@ def generate(env):
env['_JAVACCOM'] = '$JAVAC $JAVACFLAGS $_JAVABOOTCLASSPATH $_JAVAPROCESSORPATH $_JAVACLASSPATH -d ${TARGET.attributes.java_classdir} $_JAVASOURCEPATH $SOURCES'
env['JAVACCOM'] = "${TEMPFILE('$_JAVACCOM','$JAVACCOMSTR')}"
-def exists(env):
- return 1
+def exists(env) -> bool:
+ return True
# Local Variables:
# tab-width:4
diff --git a/scons/scons-local-4.5.2/SCons/Tool/javah.py b/scons/scons-local-4.7.0/SCons/Tool/javah.py
similarity index 98%
rename from scons/scons-local-4.5.2/SCons/Tool/javah.py
rename to scons/scons-local-4.7.0/SCons/Tool/javah.py
index c5a75646e..4b688152e 100644
--- a/scons/scons-local-4.5.2/SCons/Tool/javah.py
+++ b/scons/scons-local-4.7.0/SCons/Tool/javah.py
@@ -109,13 +109,13 @@ def JavaHOutFlagGenerator(target, source, env, for_signature):
except AttributeError:
return '-o ' + str(t)
-def getJavaHClassPath(env,target, source, for_signature):
+def getJavaHClassPath(env,target, source, for_signature) -> str:
path = "${SOURCE.attributes.java_classdir}"
if 'JAVACLASSPATH' in env and env['JAVACLASSPATH']:
path = SCons.Util.AppendPath(path, env['JAVACLASSPATH'])
return "-classpath %s" % path
-def generate(env):
+def generate(env) -> None:
"""Add Builders and construction variables for javah to an Environment."""
java_javah = SCons.Tool.CreateJavaHBuilder(env)
java_javah.emitter = emit_java_headers
diff --git a/scons/scons-local-4.5.2/SCons/Tool/latex.py b/scons/scons-local-4.7.0/SCons/Tool/latex.py
similarity index 98%
rename from scons/scons-local-4.5.2/SCons/Tool/latex.py
rename to scons/scons-local-4.7.0/SCons/Tool/latex.py
index f30356b23..ddbcdf998 100644
--- a/scons/scons-local-4.5.2/SCons/Tool/latex.py
+++ b/scons/scons-local-4.7.0/SCons/Tool/latex.py
@@ -50,7 +50,7 @@ def LaTeXAuxFunction(target = None, source= None, env=None):
LaTeXAuxAction = SCons.Action.Action(LaTeXAuxFunction,
strfunction=SCons.Tool.tex.TeXLaTeXStrFunction)
-def generate(env):
+def generate(env) -> None:
"""Add Builders and construction variables for LaTeX to an Environment."""
env.AppendUnique(LATEXSUFFIXES=SCons.Tool.LaTeXSuffixes)
diff --git a/scons/scons-local-4.5.2/SCons/Tool/ldc.py b/scons/scons-local-4.7.0/SCons/Tool/ldc.py
similarity index 88%
rename from scons/scons-local-4.5.2/SCons/Tool/ldc.py
rename to scons/scons-local-4.7.0/SCons/Tool/ldc.py
index fa02bf873..6ee022aa3 100644
--- a/scons/scons-local-4.5.2/SCons/Tool/ldc.py
+++ b/scons/scons-local-4.7.0/SCons/Tool/ldc.py
@@ -58,23 +58,26 @@ import SCons.Tool
import SCons.Tool.DCommon as DCommon
-def generate(env):
+def generate(env) -> None:
static_obj, shared_obj = SCons.Tool.createObjBuilders(env)
static_obj.add_action('.d', SCons.Defaults.DAction)
shared_obj.add_action('.d', SCons.Defaults.ShDAction)
- static_obj.add_emitter('.d', SCons.Defaults.StaticObjectEmitter)
- shared_obj.add_emitter('.d', SCons.Defaults.SharedObjectEmitter)
+ static_obj.add_emitter('.d', DCommon.DStaticObjectEmitter)
+ shared_obj.add_emitter('.d', DCommon.DSharedObjectEmitter)
env['DC'] = env.Detect('ldc2') or 'ldc2'
- env['DCOM'] = '$DC $_DINCFLAGS $_DVERFLAGS $_DDEBUGFLAGS $_DFLAGS -c -of=$TARGET $SOURCES'
+ env['DCOM'] = '$DC $_DINCFLAGS $_DVERFLAGS $_DDEBUGFLAGS $_DFLAGS $_DI_FLAGS -c -of=$TARGET $SOURCES'
env['_DINCFLAGS'] = '${_concat(DINCPREFIX, DPATH, DINCSUFFIX, __env__, RDirs, TARGET, SOURCE)}'
env['_DVERFLAGS'] = '${_concat(DVERPREFIX, DVERSIONS, DVERSUFFIX, __env__)}'
env['_DDEBUGFLAGS'] = '${_concat(DDEBUGPREFIX, DDEBUG, DDEBUGSUFFIX, __env__)}'
+
+ env['_DI_FLAGS'] = "${DI_FILE_DIR and DI_FILE_DIR_PREFIX+DI_FILE_DIR+DI_FILE_DIR_SUFFFIX}"
+
env['_DFLAGS'] = '${_concat(DFLAGPREFIX, DFLAGS, DFLAGSUFFIX, __env__)}'
env['SHDC'] = '$DC'
- env['SHDCOM'] = '$DC $_DINCFLAGS $_DVERFLAGS $_DDEBUGFLAGS $_DFLAGS -c -relocation-model=pic -of=$TARGET $SOURCES'
+ env['SHDCOM'] = '$DC $_DINCFLAGS $_DVERFLAGS $_DDEBUGFLAGS $_DFLAGS $_DI_FLAGS -c -relocation-model=pic -of=$TARGET $SOURCES'
env['DPATH'] = ['#/']
env['DFLAGS'] = []
@@ -94,6 +97,12 @@ def generate(env):
env['DFLAGSUFFIX'] = ''
env['DFILESUFFIX'] = '.d'
+ env['DI_FILE_DIR'] = ''
+ env['DI_FILE_SUFFIX'] = '.di'
+
+ env['DI_FILE_DIR_PREFIX'] = '-Hd='
+ env['DI_FILE_DIR_SUFFFIX'] = ''
+
env['DLINK'] = '$DC'
env['DLINKFLAGS'] = SCons.Util.CLVar('')
env['DLINKCOM'] = '$DLINK -of=$TARGET $DLINKFLAGS $__DRPATH $SOURCES $_DLIBDIRFLAGS $_DLIBFLAGS'
@@ -106,14 +115,14 @@ def generate(env):
env['DLIBLINKPREFIX'] = '' if env['PLATFORM'] == 'win32' else '-L-l'
env['DLIBLINKSUFFIX'] = '.lib' if env['PLATFORM'] == 'win32' else ''
# env['_DLIBFLAGS'] = '${_concat(DLIBLINKPREFIX, LIBS, DLIBLINKSUFFIX, __env__, RDirs, TARGET, SOURCE)}'
- env['_DLIBFLAGS'] = '${_stripixes(DLIBLINKPREFIX, LIBS, DLIBLINKSUFFIX, LIBPREFIXES, LIBSUFFIXES, __env__)}'
+ env['_DLIBFLAGS'] = '${_stripixes(DLIBLINKPREFIX, LIBS, DLIBLINKSUFFIX, LIBPREFIXES, LIBSUFFIXES, __env__, LIBLITERALPREFIX)}'
env['DLIBDIRPREFIX'] = '-L-L'
env['DLIBDIRSUFFIX'] = ''
env['_DLIBDIRFLAGS'] = '${_concat(DLIBDIRPREFIX, LIBPATH, DLIBDIRSUFFIX, __env__, RDirs, TARGET, SOURCE)}'
env['DLIB'] = 'lib' if env['PLATFORM'] == 'win32' else 'ar cr'
- env['DLIBCOM'] = '$DLIB $_DLIBFLAGS {0}$TARGET $SOURCES $_DLIBFLAGS'.format('-c ' if env['PLATFORM'] == 'win32' else '')
+ env['DLIBCOM'] = '$DLIB $_DLIBFLAGS {}$TARGET $SOURCES $_DLIBFLAGS'.format('-c ' if env['PLATFORM'] == 'win32' else '')
# env['_DLIBFLAGS'] = '${_concat(DLIBFLAGPREFIX, DLIBFLAGS, DLIBFLAGSUFFIX, __env__)}'
diff --git a/scons/scons-local-4.5.2/SCons/Tool/lex.py b/scons/scons-local-4.7.0/SCons/Tool/lex.py
similarity index 98%
rename from scons/scons-local-4.5.2/SCons/Tool/lex.py
rename to scons/scons-local-4.7.0/SCons/Tool/lex.py
index 3f1a3ade1..527f91c29 100644
--- a/scons/scons-local-4.5.2/SCons/Tool/lex.py
+++ b/scons/scons-local-4.7.0/SCons/Tool/lex.py
@@ -95,7 +95,7 @@ def lexEmitter(target, source, env) -> tuple:
return target, source
-def get_lex_path(env, append_paths=False) -> Optional[str]:
+def get_lex_path(env, append_paths: bool=False) -> Optional[str]:
"""
Returns the path to the lex tool, searching several possible names.
diff --git a/scons/scons-local-4.5.2/SCons/Tool/link.py b/scons/scons-local-4.7.0/SCons/Tool/link.py
similarity index 96%
rename from scons/scons-local-4.5.2/SCons/Tool/link.py
rename to scons/scons-local-4.7.0/SCons/Tool/link.py
index 24d17a31f..cd8b2f88b 100644
--- a/scons/scons-local-4.5.2/SCons/Tool/link.py
+++ b/scons/scons-local-4.7.0/SCons/Tool/link.py
@@ -40,7 +40,7 @@ from SCons.Tool.linkCommon.LoadableModule import setup_loadable_module_logic
from SCons.Tool.linkCommon.SharedLibrary import setup_shared_lib_logic
-def generate(env):
+def generate(env) -> None:
"""Add Builders and construction variables for gnulink to an Environment."""
createProgBuilder(env)
@@ -55,7 +55,7 @@ def generate(env):
env['LINKCOM'] = '$LINK -o $TARGET $LINKFLAGS $__RPATH $SOURCES $_LIBDIRFLAGS $_LIBFLAGS'
env['LIBDIRPREFIX'] = '-L'
env['LIBDIRSUFFIX'] = ''
- env['_LIBFLAGS'] = '${_stripixes(LIBLINKPREFIX, LIBS, LIBLINKSUFFIX, LIBPREFIXES, LIBSUFFIXES, __env__)}'
+ env['_LIBFLAGS'] = '${_stripixes(LIBLINKPREFIX, LIBS, LIBLINKSUFFIX, LIBPREFIXES, LIBSUFFIXES, __env__, LIBLITERALPREFIX)}'
env['LIBLINKPREFIX'] = '-l'
env['LIBLINKSUFFIX'] = ''
diff --git a/scons/scons-local-4.5.2/SCons/Tool/linkCommon/LoadableModule.py b/scons/scons-local-4.7.0/SCons/Tool/linkCommon/LoadableModule.py
similarity index 97%
rename from scons/scons-local-4.5.2/SCons/Tool/linkCommon/LoadableModule.py
rename to scons/scons-local-4.7.0/SCons/Tool/linkCommon/LoadableModule.py
index c8124a088..77a06eddd 100644
--- a/scons/scons-local-4.5.2/SCons/Tool/linkCommon/LoadableModule.py
+++ b/scons/scons-local-4.7.0/SCons/Tool/linkCommon/LoadableModule.py
@@ -65,7 +65,7 @@ def _ldmodule_soversion(target, source, env, for_signature):
return ''
-def _ldmodule_soname(target, source, env, for_signature):
+def _ldmodule_soname(target, source, env, for_signature) -> str:
if 'SONAME' in env:
return '$SONAME'
else:
@@ -82,7 +82,7 @@ def _LDMODULEVERSION(target, source, env, for_signature):
else:
return ""
-def setup_loadable_module_logic(env):
+def setup_loadable_module_logic(env) -> None:
"""
Just the logic for loadable modules
diff --git a/scons/scons-local-4.5.2/SCons/Tool/linkCommon/README.md b/scons/scons-local-4.7.0/SCons/Tool/linkCommon/README.md
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/linkCommon/README.md
rename to scons/scons-local-4.7.0/SCons/Tool/linkCommon/README.md
diff --git a/scons/scons-local-4.5.2/SCons/Tool/linkCommon/SharedLibrary.py b/scons/scons-local-4.7.0/SCons/Tool/linkCommon/SharedLibrary.py
similarity index 98%
rename from scons/scons-local-4.5.2/SCons/Tool/linkCommon/SharedLibrary.py
rename to scons/scons-local-4.7.0/SCons/Tool/linkCommon/SharedLibrary.py
index d18aa6b4b..30170f8bb 100644
--- a/scons/scons-local-4.5.2/SCons/Tool/linkCommon/SharedLibrary.py
+++ b/scons/scons-local-4.7.0/SCons/Tool/linkCommon/SharedLibrary.py
@@ -100,7 +100,7 @@ def _soversion(target, source, env, for_signature):
return ""
-def _soname(target, source, env, for_signature):
+def _soname(target, source, env, for_signature) -> str:
if "SONAME" in env:
# Now verify that SOVERSION is not also set as that is not allowed
if "SOVERSION" in env:
@@ -177,7 +177,7 @@ def _get_shlib_dir(target, source, env, for_signature: bool) -> str:
return ""
-def setup_shared_lib_logic(env):
+def setup_shared_lib_logic(env) -> None:
"""Initialize an environment for shared library building.
Args:
diff --git a/scons/scons-local-4.5.2/SCons/Tool/linkCommon/__init__.py b/scons/scons-local-4.7.0/SCons/Tool/linkCommon/__init__.py
similarity index 94%
rename from scons/scons-local-4.5.2/SCons/Tool/linkCommon/__init__.py
rename to scons/scons-local-4.7.0/SCons/Tool/linkCommon/__init__.py
index 5461ad3db..6a558d81c 100644
--- a/scons/scons-local-4.5.2/SCons/Tool/linkCommon/__init__.py
+++ b/scons/scons-local-4.7.0/SCons/Tool/linkCommon/__init__.py
@@ -45,7 +45,7 @@ def StringizeLibSymlinks(symlinks):
return symlinks
-def EmitLibSymlinks(env, symlinks, libnode, **kw):
+def EmitLibSymlinks(env, symlinks, libnode, **kw) -> None:
"""Used by emitters to handle (shared/versioned) library symlinks"""
Verbose = False
@@ -66,7 +66,7 @@ def EmitLibSymlinks(env, symlinks, libnode, **kw):
print("EmitLibSymlinks: Clean(%r,%r)" % (linktgt.get_path(), [x.get_path() for x in clean_list]))
-def CreateLibSymlinks(env, symlinks):
+def CreateLibSymlinks(env, symlinks) -> int:
"""Physically creates symlinks. The symlinks argument must be a list in
form [ (link, linktarget), ... ], where link and linktarget are SCons
nodes.
@@ -92,7 +92,7 @@ def CreateLibSymlinks(env, symlinks):
return 0
-def LibSymlinksActionFunction(target, source, env):
+def LibSymlinksActionFunction(target, source, env) -> int:
for tgt in target:
symlinks = getattr(getattr(tgt, 'attributes', None), 'shliblinks', None)
if symlinks:
@@ -127,7 +127,7 @@ def _call_env_subst(env, string, *args, **kw):
return env.subst(string, *args, **kw2)
-def smart_link(source, target, env, for_signature):
+def smart_link(source, target, env, for_signature) -> str:
import SCons.Tool.cxx
import SCons.Tool.FortranCommon
@@ -161,10 +161,10 @@ def smart_link(source, target, env, for_signature):
def lib_emitter(target, source, env, **kw):
verbose = False
if verbose:
- print("_lib_emitter: target[0]={!r}".format(target[0].get_path()))
+ print(f"_lib_emitter: target[0]={target[0].get_path()!r}")
for tgt in target:
if SCons.Util.is_String(tgt):
tgt = env.File(tgt)
- tgt.attributes.shared = 1
+ tgt.attributes.shared = True
return target, source
diff --git a/scons/scons-local-4.5.2/SCons/Tool/linkloc.py b/scons/scons-local-4.7.0/SCons/Tool/linkloc.py
similarity index 96%
rename from scons/scons-local-4.5.2/SCons/Tool/linkloc.py
rename to scons/scons-local-4.7.0/SCons/Tool/linkloc.py
index 6ee5d6192..6f7a7324a 100644
--- a/scons/scons-local-4.5.2/SCons/Tool/linkloc.py
+++ b/scons/scons-local-4.7.0/SCons/Tool/linkloc.py
@@ -51,9 +51,9 @@ def repl_linker_command(m):
# Replaces any linker command file directives (e.g. "@foo.lnk") with
# the actual contents of the file.
try:
- with open(m.group(2), "r") as f:
+ with open(m.group(2)) as f:
return m.group(1) + f.read()
- except IOError:
+ except OSError:
# the linker should return an error if it can't
# find the linker command file so we will remain quiet.
# However, we will replace the @ with a # so we will not continue
@@ -61,7 +61,7 @@ def repl_linker_command(m):
return m.group(1) + '#' + m.group(2)
class LinklocGenerator:
- def __init__(self, cmdline):
+ def __init__(self, cmdline) -> None:
self.cmdline = cmdline
def __call__(self, env, target, source, for_signature):
@@ -75,7 +75,7 @@ class LinklocGenerator:
else:
return "${TEMPFILE('" + self.cmdline + "')}"
-def generate(env):
+def generate(env) -> None:
"""Add Builders and construction variables for ar to an Environment."""
SCons.Tool.createSharedLibBuilder(env)
SCons.Tool.createProgBuilder(env)
diff --git a/scons/scons-local-4.5.2/SCons/Tool/m4.py b/scons/scons-local-4.7.0/SCons/Tool/m4.py
similarity index 98%
rename from scons/scons-local-4.5.2/SCons/Tool/m4.py
rename to scons/scons-local-4.7.0/SCons/Tool/m4.py
index 8506784de..341d93dfa 100644
--- a/scons/scons-local-4.5.2/SCons/Tool/m4.py
+++ b/scons/scons-local-4.7.0/SCons/Tool/m4.py
@@ -37,7 +37,7 @@ import SCons.Action
import SCons.Builder
import SCons.Util
-def generate(env):
+def generate(env) -> None:
"""Add Builders and construction variables for m4 to an Environment."""
M4Action = SCons.Action.Action('$M4COM', '$M4COMSTR')
bld = SCons.Builder.Builder(action = M4Action, src_suffix = '.m4')
diff --git a/scons/scons-local-4.5.2/SCons/Tool/masm.py b/scons/scons-local-4.7.0/SCons/Tool/masm.py
similarity index 99%
rename from scons/scons-local-4.5.2/SCons/Tool/masm.py
rename to scons/scons-local-4.7.0/SCons/Tool/masm.py
index b9d88cd19..f8fae2019 100644
--- a/scons/scons-local-4.5.2/SCons/Tool/masm.py
+++ b/scons/scons-local-4.7.0/SCons/Tool/masm.py
@@ -44,7 +44,7 @@ if SCons.Util.case_sensitive_suffixes('.s', '.S'):
else:
ASSuffixes.extend(['.S'])
-def generate(env):
+def generate(env) -> None:
"""Add Builders and construction variables for masm to an Environment."""
static_obj, shared_obj = SCons.Tool.createObjBuilders(env)
diff --git a/scons/scons-local-4.5.2/SCons/Tool/midl.py b/scons/scons-local-4.7.0/SCons/Tool/midl.py
similarity index 97%
rename from scons/scons-local-4.5.2/SCons/Tool/midl.py
rename to scons/scons-local-4.7.0/SCons/Tool/midl.py
index c25ce69ad..2ae3f73d0 100644
--- a/scons/scons-local-4.5.2/SCons/Tool/midl.py
+++ b/scons/scons-local-4.7.0/SCons/Tool/midl.py
@@ -37,7 +37,7 @@ import SCons.Defaults
import SCons.Scanner.IDL
import SCons.Util
-from .MSCommon import msvc_setup_env_tool
+from SCons.Tool.MSCommon import msvc_setup_env_tool
tool_name = 'midl'
@@ -73,7 +73,7 @@ midl_builder = SCons.Builder.Builder(action=midl_action,
source_scanner=idl_scanner)
-def generate(env):
+def generate(env) -> None:
"""Add Builders and construction variables for midl to an Environment."""
env['MIDL'] = 'MIDL.EXE'
diff --git a/scons/scons-local-4.5.2/SCons/Tool/mingw.py b/scons/scons-local-4.7.0/SCons/Tool/mingw.py
similarity index 93%
rename from scons/scons-local-4.5.2/SCons/Tool/mingw.py
rename to scons/scons-local-4.7.0/SCons/Tool/mingw.py
index 8e7ac2df9..824f20daa 100644
--- a/scons/scons-local-4.5.2/SCons/Tool/mingw.py
+++ b/scons/scons-local-4.7.0/SCons/Tool/mingw.py
@@ -23,7 +23,7 @@
"""SCons.Tool.gcc
-Tool-specific initialization for MinGW (http://www.mingw.org/)
+Tool-specific initialization for MinGW (https://www.mingw.org/)
There normally shouldn't be any need to import this module directly.
It will usually be imported through the generic SCons.Tool.Tool()
@@ -41,6 +41,8 @@ import SCons.Defaults
import SCons.Tool
import SCons.Util
+# TODO: should this be synced with SCons/Platform/mingw.py:MINGW_DEFAULTPATHS
+# i.e. either keep the same, or make sure there's only one?
mingw_base_paths = [
r'c:\MinGW\bin',
r'C:\cygwin64\bin',
@@ -48,8 +50,14 @@ mingw_base_paths = [
r'C:\msys64\mingw64\bin',
r'C:\cygwin\bin',
r'C:\msys',
- r'C:\ProgramData\chocolatey\lib\mingw\tools\install\mingw64\bin'
+ # Chocolatey mingw (pkg name for MinGW-w64) does not use ChocolateyToolsLocation
+ r'C:\ProgramData\chocolatey\lib\mingw\tools\install\mingw64\bin',
]
+# Chocolatey msys2 uses envvar ChocolateyToolsLocation to base the install
+# location (unless the user supplied additional params). Try to reproduce:
+choco = os.environ.get('ChocolateyToolsLocation')
+if choco:
+ mingw_base_paths.append(choco + r'\msys64\bin')
def shlib_generator(target, source, env, for_signature):
@@ -142,7 +150,7 @@ def get_mingw_paths():
_mingw_all_paths = mingw_base_paths + find_version_specific_mingw_paths()
return _mingw_all_paths
-def generate(env):
+def generate(env) -> None:
# Check for reasoanble mingw default paths
mingw_paths = get_mingw_paths()
diff --git a/scons/scons-local-4.5.2/SCons/Tool/msgfmt.py b/scons/scons-local-4.7.0/SCons/Tool/msgfmt.py
similarity index 99%
rename from scons/scons-local-4.5.2/SCons/Tool/msgfmt.py
rename to scons/scons-local-4.7.0/SCons/Tool/msgfmt.py
index a15c1dcc0..334e0580e 100644
--- a/scons/scons-local-4.5.2/SCons/Tool/msgfmt.py
+++ b/scons/scons-local-4.7.0/SCons/Tool/msgfmt.py
@@ -86,7 +86,7 @@ def _create_mo_file_builder(env, **kw):
return _MOFileBuilder(**kw)
-def generate(env, **kw):
+def generate(env, **kw) -> None:
""" Generate `msgfmt` tool """
if sys.platform == 'win32':
diff --git a/scons/scons-local-4.5.2/SCons/Tool/msginit.py b/scons/scons-local-4.7.0/SCons/Tool/msginit.py
similarity index 99%
rename from scons/scons-local-4.5.2/SCons/Tool/msginit.py
rename to scons/scons-local-4.7.0/SCons/Tool/msginit.py
index 9635f5710..19aaccb4e 100644
--- a/scons/scons-local-4.5.2/SCons/Tool/msginit.py
+++ b/scons/scons-local-4.7.0/SCons/Tool/msginit.py
@@ -79,7 +79,7 @@ def _POInitBuilderWrapper(env, target=None, source=_null, **kw):
source = [domain] # NOTE: Suffix shall be appended automatically
return env._POInitBuilder(target, source, **kw)
-def generate(env, **kw):
+def generate(env, **kw) -> None:
""" Generate the `msginit` tool """
if sys.platform == 'win32':
diff --git a/scons/scons-local-4.5.2/SCons/Tool/msgmerge.py b/scons/scons-local-4.7.0/SCons/Tool/msgmerge.py
similarity index 99%
rename from scons/scons-local-4.5.2/SCons/Tool/msgmerge.py
rename to scons/scons-local-4.7.0/SCons/Tool/msgmerge.py
index 69508ebbf..292e75d6d 100644
--- a/scons/scons-local-4.5.2/SCons/Tool/msgmerge.py
+++ b/scons/scons-local-4.7.0/SCons/Tool/msgmerge.py
@@ -77,7 +77,7 @@ def _POUpdateBuilderWrapper(env, target=None, source=_null, **kw):
return env._POUpdateBuilder(target, source, **kw)
-def generate(env, **kw):
+def generate(env, **kw) -> None:
""" Generate the `msgmerge` tool """
if sys.platform == 'win32':
diff --git a/scons/scons-local-4.5.2/SCons/Tool/mslib.py b/scons/scons-local-4.7.0/SCons/Tool/mslib.py
similarity index 95%
rename from scons/scons-local-4.5.2/SCons/Tool/mslib.py
rename to scons/scons-local-4.7.0/SCons/Tool/mslib.py
index be4088b15..bdce135f8 100644
--- a/scons/scons-local-4.5.2/SCons/Tool/mslib.py
+++ b/scons/scons-local-4.7.0/SCons/Tool/mslib.py
@@ -41,11 +41,14 @@ import SCons.Tool.msvs
import SCons.Tool.msvc
import SCons.Util
-from .MSCommon import msvc_setup_env_tool, msvc_setup_env_once
+from SCons.Tool.MSCommon import (
+ msvc_setup_env_tool,
+ msvc_setup_env_once,
+)
tool_name = 'mslib'
-def generate(env):
+def generate(env) -> None:
"""Add Builders and construction variables for lib to an Environment."""
SCons.Tool.createStaticLibBuilder(env)
diff --git a/scons/scons-local-4.5.2/SCons/Tool/mslink.py b/scons/scons-local-4.7.0/SCons/Tool/mslink.py
similarity index 98%
rename from scons/scons-local-4.5.2/SCons/Tool/mslink.py
rename to scons/scons-local-4.7.0/SCons/Tool/mslink.py
index 2a90e174e..74ceaa857 100644
--- a/scons/scons-local-4.5.2/SCons/Tool/mslink.py
+++ b/scons/scons-local-4.7.0/SCons/Tool/mslink.py
@@ -43,8 +43,11 @@ import SCons.Tool.msvc
import SCons.Tool.msvs
import SCons.Util
-from .MSCommon import msvc_setup_env_once, msvc_setup_env_tool
-from .MSCommon.common import get_pch_node
+from SCons.Tool.MSCommon import (
+ msvc_setup_env_once,
+ msvc_setup_env_tool,
+)
+from SCons.Tool.MSCommon.common import get_pch_node
tool_name = 'mslink'
@@ -256,7 +259,7 @@ compositeLdmodAction = ldmodLinkAction + regServerCheck + embedManifestDllCheckA
exeLinkAction = SCons.Action.Action('${TEMPFILE("$LINK $LINKFLAGS /OUT:$TARGET.windows $_LIBDIRFLAGS $_LIBFLAGS $_PDB $SOURCES.windows", "$LINKCOMSTR")}', '$LINKCOMSTR')
compositeLinkAction = exeLinkAction + embedManifestExeCheckAction
-def generate(env):
+def generate(env) -> None:
"""Add Builders and construction variables for ar to an Environment."""
SCons.Tool.createSharedLibBuilder(env, shlib_suffix='$SHLIBSUFFIX')
SCons.Tool.createProgBuilder(env)
diff --git a/scons/scons-local-4.5.2/SCons/Tool/mssdk.py b/scons/scons-local-4.7.0/SCons/Tool/mssdk.py
similarity index 94%
rename from scons/scons-local-4.5.2/SCons/Tool/mssdk.py
rename to scons/scons-local-4.7.0/SCons/Tool/mssdk.py
index b94f105f0..ef272c033 100644
--- a/scons/scons-local-4.5.2/SCons/Tool/mssdk.py
+++ b/scons/scons-local-4.7.0/SCons/Tool/mssdk.py
@@ -33,10 +33,12 @@ It will usually be imported through the generic SCons.Tool.Tool()
selection method.
"""
-from .MSCommon import mssdk_exists, \
- mssdk_setup_env
+from SCons.Tool.MSCommon import (
+ mssdk_exists,
+ mssdk_setup_env,
+)
-def generate(env):
+def generate(env) -> None:
"""Add construction variables for an MS SDK to an Environment."""
mssdk_setup_env(env)
diff --git a/scons/scons-local-4.5.2/SCons/Tool/msvc.py b/scons/scons-local-4.7.0/SCons/Tool/msvc.py
similarity index 98%
rename from scons/scons-local-4.5.2/SCons/Tool/msvc.py
rename to scons/scons-local-4.7.0/SCons/Tool/msvc.py
index 191d2cc7c..6afa171c9 100644
--- a/scons/scons-local-4.5.2/SCons/Tool/msvc.py
+++ b/scons/scons-local-4.7.0/SCons/Tool/msvc.py
@@ -44,8 +44,13 @@ import SCons.Util
import SCons.Warnings
import SCons.Scanner.RC
-from .MSCommon import msvc_setup_env_tool, msvc_setup_env_once, msvc_version_to_maj_min, msvc_find_vswhere
-from .MSCommon.common import get_pch_node
+from SCons.Tool.MSCommon import (
+ msvc_setup_env_tool,
+ msvc_setup_env_once,
+ msvc_version_to_maj_min,
+ msvc_find_vswhere,
+)
+from SCons.Tool.MSCommon.common import get_pch_node
tool_name = 'msvc'
@@ -60,7 +65,7 @@ def validate_vars(env):
if not SCons.Util.is_String(env['PCHSTOP']):
raise SCons.Errors.UserError("The PCHSTOP construction variable must be a string: %r"%env['PCHSTOP'])
-def msvc_set_PCHPDBFLAGS(env):
+def msvc_set_PCHPDBFLAGS(env) -> None:
"""
Set appropriate PCHPDBFLAGS for the MSVC version being used.
"""
@@ -229,7 +234,7 @@ ShCXXAction = SCons.Action.Action("$SHCXXCOM", "$SHCXXCOMSTR",
-def generate(env):
+def generate(env) -> None:
"""Add Builders and construction variables for MSVC++ to an Environment."""
static_obj, shared_obj = SCons.Tool.createObjBuilders(env)
diff --git a/scons/scons-local-4.5.2/SCons/Tool/msvs.py b/scons/scons-local-4.7.0/SCons/Tool/msvs.py
similarity index 97%
rename from scons/scons-local-4.5.2/SCons/Tool/msvs.py
rename to scons/scons-local-4.7.0/SCons/Tool/msvs.py
index 86df1ef66..12974489a 100644
--- a/scons/scons-local-4.5.2/SCons/Tool/msvs.py
+++ b/scons/scons-local-4.7.0/SCons/Tool/msvs.py
@@ -45,7 +45,10 @@ import SCons.Util
import SCons.Warnings
from SCons.Defaults import processDefines
from SCons.compat import PICKLE_PROTOCOL
-from .MSCommon import msvc_setup_env_tool, msvc_setup_env_once
+from SCons.Tool.MSCommon import (
+ msvc_setup_env_tool,
+ msvc_setup_env_once,
+)
tool_name = 'msvs'
@@ -142,6 +145,8 @@ def msvs_parse_version(s):
# the MSVS Project file invoke SCons the same way that scons.bat does,
# which works regardless of how we were invoked.
def getExecScriptMain(env, xml=None):
+ if 'SCONS_HOME' not in env:
+ env['SCONS_HOME'] = os.environ.get('SCONS_HOME')
scons_home = env.get('SCONS_HOME')
if not scons_home and 'SCONS_LIB_DIR' in os.environ:
scons_home = os.environ['SCONS_LIB_DIR']
@@ -207,7 +212,7 @@ class _UserGenerator:
usrdebg = None
usrconf = None
createfile = False
- def __init__(self, dspfile, source, env):
+ def __init__(self, dspfile, source, env) -> None:
# DebugSettings should be a list of debug dictionary sorted in the same order
# as the target list and variants
if 'variant' not in env:
@@ -249,12 +254,12 @@ class _UserGenerator:
trg[key] = str(src[key])
self.configs[var].debug = trg
- def UserHeader(self):
+ def UserHeader(self) -> None:
encoding = self.env.subst('$MSVSENCODING')
versionstr = self.versionstr
self.usrfile.write(self.usrhead % locals())
- def UserProject(self):
+ def UserProject(self) -> None:
pass
def Build(self):
@@ -263,7 +268,7 @@ class _UserGenerator:
try:
filename = self.dspabs +'.user'
self.usrfile = open(filename, 'w')
- except IOError as detail:
+ except OSError as detail:
raise SCons.Errors.InternalError('Unable to open "' + filename + '" for writing:' + str(detail))
else:
self.UserHeader()
@@ -317,14 +322,14 @@ V9DebugSettings = {
class _GenerateV7User(_UserGenerator):
"""Generates a Project file for MSVS .NET"""
- def __init__(self, dspfile, source, env):
+ def __init__(self, dspfile, source, env) -> None:
if self.version_num >= 9.0:
self.usrhead = V9UserHeader
self.usrconf = V9UserConfiguration
self.usrdebg = V9DebugSettings
super().__init__(dspfile, source, env)
- def UserProject(self):
+ def UserProject(self) -> None:
confkeys = sorted(self.configs.keys())
for kind in confkeys:
variant = self.configs[kind].variant
@@ -379,7 +384,7 @@ V10DebugSettings = {
class _GenerateV10User(_UserGenerator):
"""Generates a Project'user file for MSVS 2010 or later"""
- def __init__(self, dspfile, source, env):
+ def __init__(self, dspfile, source, env) -> None:
version_num, suite = msvs_parse_version(env['MSVS_VERSION'])
if version_num >= 14.3:
# Visual Studio 2022 is considered to be version 17.
@@ -399,7 +404,7 @@ class _GenerateV10User(_UserGenerator):
self.usrdebg = V10DebugSettings
super().__init__(dspfile, source, env)
- def UserProject(self):
+ def UserProject(self) -> None:
confkeys = sorted(self.configs.keys())
for kind in confkeys:
variant = self.configs[kind].variant
@@ -422,7 +427,7 @@ class _DSPGenerator:
'resources',
'misc']
- def __init__(self, dspfile, source, env):
+ def __init__(self, dspfile, source, env) -> None:
self.dspfile = str(dspfile)
try:
get_abspath = dspfile.get_abspath
@@ -585,7 +590,7 @@ class _DSPGenerator:
for n in sourcenames:
self.sources[n].sort(key=lambda a: a.lower())
- def AddConfig(self, variant, buildtarget, outdir, runfile, cmdargs, cppdefines, cpppaths, cppflags, dspfile=dspfile, env=env):
+ def AddConfig(self, variant, buildtarget, outdir, runfile, cmdargs, cppdefines, cpppaths, cppflags, dspfile=dspfile, env=env) -> None:
config = Config()
config.buildtarget = buildtarget
config.outdir = outdir
@@ -617,7 +622,7 @@ class _DSPGenerator:
if not (p.platform in seen or seen.add(p.platform))]
- def Build(self):
+ def Build(self) -> None:
pass
V6DSPHeader = """\
@@ -645,7 +650,7 @@ CFG=%(name)s - Win32 %(confkey)s
class _GenerateV6DSP(_DSPGenerator):
"""Generates a Project file for MSVS 6.0"""
- def PrintHeader(self):
+ def PrintHeader(self) -> None:
# pick a default config
confkeys = sorted(self.configs.keys())
@@ -659,7 +664,7 @@ class _GenerateV6DSP(_DSPGenerator):
self.file.write('!MESSAGE\n\n')
- def PrintProject(self):
+ def PrintProject(self) -> None:
name = self.name
self.file.write('# Begin Project\n'
'# PROP AllowPerConfigDependencies 0\n'
@@ -728,7 +733,7 @@ class _GenerateV6DSP(_DSPGenerator):
pdata = base64.b64encode(pdata).decode()
self.file.write(pdata + '\n')
- def PrintSourceFiles(self):
+ def PrintSourceFiles(self) -> None:
categories = {'Source Files': 'cpp|c|cxx|l|y|def|odl|idl|hpj|bat',
'Header Files': 'h|hpp|hxx|hm|inl',
'Local Headers': 'h|hpp|hxx|hm|inl',
@@ -757,8 +762,8 @@ class _GenerateV6DSP(_DSPGenerator):
def Parse(self):
try:
- dspfile = open(self.dspabs,'r')
- except IOError:
+ dspfile = open(self.dspabs)
+ except OSError:
return # doesn't exist yet, so can't add anything to configs.
line = dspfile.readline()
@@ -777,7 +782,7 @@ class _GenerateV6DSP(_DSPGenerator):
# OK, we've found our little pickled cache of data.
try:
- datas = base64.decodestring(datas)
+ datas = base64.decodebytes(datas)
data = pickle.loads(datas)
except KeyboardInterrupt:
raise
@@ -798,7 +803,7 @@ class _GenerateV6DSP(_DSPGenerator):
# OK, we've found our little pickled cache of data.
# it has a "# " in front of it, so we strip that.
try:
- datas = base64.decodestring(datas)
+ datas = base64.decodebytes(datas)
data = pickle.loads(datas)
except KeyboardInterrupt:
raise
@@ -810,7 +815,7 @@ class _GenerateV6DSP(_DSPGenerator):
def Build(self):
try:
self.file = open(self.dspabs,'w')
- except IOError as detail:
+ except OSError as detail:
raise SCons.Errors.InternalError('Unable to open "' + self.dspabs + '" for writing:' + str(detail))
else:
self.PrintHeader()
@@ -882,7 +887,7 @@ V8DSPConfiguration = """\
class _GenerateV7DSP(_DSPGenerator, _GenerateV7User):
"""Generates a Project file for MSVS .NET"""
- def __init__(self, dspfile, source, env):
+ def __init__(self, dspfile, source, env) -> None:
_DSPGenerator.__init__(self, dspfile, source, env)
self.version = env['MSVS_VERSION']
self.version_num, self.suite = msvs_parse_version(self.version)
@@ -905,7 +910,7 @@ class _GenerateV7DSP(_DSPGenerator, _GenerateV7User):
_GenerateV7User.__init__(self, dspfile, source, env)
- def PrintHeader(self):
+ def PrintHeader(self) -> None:
env = self.env
versionstr = self.versionstr
name = self.name
@@ -948,7 +953,7 @@ class _GenerateV7DSP(_DSPGenerator, _GenerateV7User):
self.file.write('\t\n'
'\t\n')
- def PrintProject(self):
+ def PrintProject(self) -> None:
self.file.write('\t\n')
confkeys = sorted(self.configs.keys())
@@ -1005,7 +1010,7 @@ class _GenerateV7DSP(_DSPGenerator, _GenerateV7User):
pdata = base64.b64encode(pdata).decode()
self.file.write(pdata + '-->\n')
- def printSources(self, hierarchy, commonprefix):
+ def printSources(self, hierarchy, commonprefix) -> None:
sorteditems = sorted(hierarchy.items(), key=lambda a: a[0].lower())
# First folders, then files
@@ -1027,7 +1032,7 @@ class _GenerateV7DSP(_DSPGenerator, _GenerateV7User):
'\t\t\t\tRelativePath="%s">\n'
'\t\t\t\n' % file)
- def PrintSourceFiles(self):
+ def PrintSourceFiles(self) -> None:
categories = {'Source Files': 'cpp;c;cxx;l;y;def;odl;idl;hpj;bat',
'Header Files': 'h;hpp;hxx;hm;inl',
'Local Headers': 'h;hpp;hxx;hm;inl',
@@ -1075,8 +1080,8 @@ class _GenerateV7DSP(_DSPGenerator, _GenerateV7User):
def Parse(self):
try:
- dspfile = open(self.dspabs,'r')
- except IOError:
+ dspfile = open(self.dspabs)
+ except OSError:
return # doesn't exist yet, so can't add anything to configs.
line = dspfile.readline()
@@ -1095,7 +1100,7 @@ class _GenerateV7DSP(_DSPGenerator, _GenerateV7User):
# OK, we've found our little pickled cache of data.
try:
- datas = base64.decodestring(datas)
+ datas = base64.decodebytes(datas)
data = pickle.loads(datas)
except KeyboardInterrupt:
raise
@@ -1115,7 +1120,7 @@ class _GenerateV7DSP(_DSPGenerator, _GenerateV7User):
# OK, we've found our little pickled cache of data.
try:
- datas = base64.decodestring(datas)
+ datas = base64.decodebytes(datas)
data = pickle.loads(datas)
except KeyboardInterrupt:
raise
@@ -1127,7 +1132,7 @@ class _GenerateV7DSP(_DSPGenerator, _GenerateV7User):
def Build(self):
try:
self.file = open(self.dspabs,'w')
- except IOError as detail:
+ except OSError as detail:
raise SCons.Errors.InternalError('Unable to open "' + self.dspabs + '" for writing:' + str(detail))
else:
self.PrintHeader()
@@ -1192,7 +1197,7 @@ V15DSPHeader = """\
class _GenerateV10DSP(_DSPGenerator, _GenerateV10User):
"""Generates a Project file for MSVS 2010"""
- def __init__(self, dspfile, source, env):
+ def __init__(self, dspfile, source, env) -> None:
_DSPGenerator.__init__(self, dspfile, source, env)
self.dspheader = V10DSPHeader
self.dspconfiguration = V10DSPProjectConfiguration
@@ -1200,7 +1205,7 @@ class _GenerateV10DSP(_DSPGenerator, _GenerateV10User):
_GenerateV10User.__init__(self, dspfile, source, env)
- def PrintHeader(self):
+ def PrintHeader(self) -> None:
env = self.env
name = self.name
versionstr = self.versionstr
@@ -1314,7 +1319,7 @@ class _GenerateV10DSP(_DSPGenerator, _GenerateV10User):
self.filtersabs = self.dspabs + '.filters'
try:
self.filters_file = open(self.filtersabs, 'w')
- except IOError as detail:
+ except OSError as detail:
raise SCons.Errors.InternalError('Unable to open "' + self.filtersabs + '" for writing:' + str(detail))
self.filters_file.write('\n'
@@ -1340,7 +1345,7 @@ class _GenerateV10DSP(_DSPGenerator, _GenerateV10User):
pdata = base64.b64encode(pdata).decode()
self.file.write(pdata + '-->\n')
- def printFilters(self, hierarchy, name):
+ def printFilters(self, hierarchy, name) -> None:
sorteditems = sorted(hierarchy.items(), key = lambda a: a[0].lower())
for key, value in sorteditems:
@@ -1351,7 +1356,7 @@ class _GenerateV10DSP(_DSPGenerator, _GenerateV10User):
'\t\t\n' % (filter_name, _generateGUID(self.dspabs, filter_name)))
self.printFilters(value, filter_name)
- def printSources(self, hierarchy, kind, commonprefix, filter_name):
+ def printSources(self, hierarchy, kind, commonprefix, filter_name) -> None:
keywords = {'Source Files': 'ClCompile',
'Header Files': 'ClInclude',
'Local Headers': 'ClInclude',
@@ -1377,7 +1382,7 @@ class _GenerateV10DSP(_DSPGenerator, _GenerateV10User):
'\t\t\t%s\n'
'\t\t%s>\n' % (keywords[kind], file, filter_name, keywords[kind]))
- def PrintSourceFiles(self):
+ def PrintSourceFiles(self) -> None:
categories = {'Source Files': 'cpp;c;cxx;l;y;def;odl;idl;hpj;bat',
'Header Files': 'h;hpp;hxx;hm;inl',
'Local Headers': 'h;hpp;hxx;hm;inl',
@@ -1443,7 +1448,7 @@ class _GenerateV10DSP(_DSPGenerator, _GenerateV10User):
#'\t\t\n'
'\t\n' % str(self.sconscript))
- def Parse(self):
+ def Parse(self) -> None:
# DEBUG
# print("_GenerateV10DSP.Parse()")
pass
@@ -1451,7 +1456,7 @@ class _GenerateV10DSP(_DSPGenerator, _GenerateV10User):
def Build(self):
try:
self.file = open(self.dspabs, 'w')
- except IOError as detail:
+ except OSError as detail:
raise SCons.Errors.InternalError('Unable to open "' + self.dspabs + '" for writing:' + str(detail))
else:
self.PrintHeader()
@@ -1462,7 +1467,7 @@ class _GenerateV10DSP(_DSPGenerator, _GenerateV10User):
class _DSWGenerator:
""" Base class for DSW generators """
- def __init__(self, dswfile, source, env):
+ def __init__(self, dswfile, source, env) -> None:
self.dswfile = os.path.normpath(str(dswfile))
self.dsw_folder_path = os.path.dirname(os.path.abspath(self.dswfile))
self.env = env
@@ -1483,12 +1488,12 @@ class _DSWGenerator:
self.name = os.path.basename(SCons.Util.splitext(self.dswfile)[0])
self.name = self.env.subst(self.name)
- def Build(self):
+ def Build(self) -> None:
pass
class _GenerateV7DSW(_DSWGenerator):
"""Generates a Solution file for MSVS .NET"""
- def __init__(self, dswfile, source, env):
+ def __init__(self, dswfile, source, env) -> None:
super().__init__(dswfile, source, env)
self.file = None
@@ -1520,7 +1525,7 @@ class _GenerateV7DSW(_DSWGenerator):
if self.nokeep == 0 and os.path.exists(self.dswfile):
self.Parse()
- def AddConfig(self, variant, dswfile=dswfile):
+ def AddConfig(self, variant, dswfile=dswfile) -> None:
config = Config()
match = re.match(r'(.*)\|(.*)', variant)
@@ -1548,7 +1553,7 @@ class _GenerateV7DSW(_DSWGenerator):
self.platforms = [p.platform for p in self.configs.values()
if not (p.platform in seen or seen.add(p.platform))]
- def GenerateProjectFilesInfo(self):
+ def GenerateProjectFilesInfo(self) -> None:
for dspfile in self.dspfiles:
dsp_folder_path, name = os.path.split(dspfile)
dsp_folder_path = os.path.abspath(dsp_folder_path)
@@ -1573,8 +1578,8 @@ class _GenerateV7DSW(_DSWGenerator):
def Parse(self):
try:
- dswfile = open(self.dswfile,'r')
- except IOError:
+ dswfile = open(self.dswfile)
+ except OSError:
return # doesn't exist yet, so can't add anything to configs.
line = dswfile.readline()
@@ -1592,7 +1597,7 @@ class _GenerateV7DSW(_DSWGenerator):
# OK, we've found our little pickled cache of data.
try:
- datas = base64.decodestring(datas)
+ datas = base64.decodebytes(datas)
data = pickle.loads(datas)
except KeyboardInterrupt:
raise
@@ -1601,7 +1606,7 @@ class _GenerateV7DSW(_DSWGenerator):
self.configs.update(data)
- def PrintSolution(self):
+ def PrintSolution(self) -> None:
"""Writes a solution file"""
self.file.write('Microsoft Visual Studio Solution File, Format Version %s\n' % self.versionstr)
if self.version_num >= 14.3:
@@ -1729,7 +1734,7 @@ class _GenerateV7DSW(_DSWGenerator):
def Build(self):
try:
self.file = open(self.dswfile,'w')
- except IOError as detail:
+ except OSError as detail:
raise SCons.Errors.InternalError('Unable to open "' + self.dswfile + '" for writing:' + str(detail))
else:
self.PrintSolution()
@@ -1769,7 +1774,7 @@ Package=<3>
class _GenerateV6DSW(_DSWGenerator):
"""Generates a Workspace file for MSVS 6.0"""
- def PrintWorkspace(self):
+ def PrintWorkspace(self) -> None:
""" writes a DSW file """
name = self.name
dspfile = os.path.relpath(self.dspfiles[0], self.dsw_folder_path)
@@ -1778,14 +1783,14 @@ class _GenerateV6DSW(_DSWGenerator):
def Build(self):
try:
self.file = open(self.dswfile,'w')
- except IOError as detail:
+ except OSError as detail:
raise SCons.Errors.InternalError('Unable to open "' + self.dswfile + '" for writing:' + str(detail))
else:
self.PrintWorkspace()
self.file.close()
-def GenerateDSP(dspfile, source, env):
+def GenerateDSP(dspfile, source, env) -> None:
"""Generates a Project file based on the version of MSVS that is being used"""
version_num = 6.0
@@ -1801,7 +1806,7 @@ def GenerateDSP(dspfile, source, env):
g = _GenerateV6DSP(dspfile, source, env)
g.Build()
-def GenerateDSW(dswfile, source, env):
+def GenerateDSW(dswfile, source, env) -> None:
"""Generates a Solution/Workspace file based on the version of MSVS that is being used"""
version_num = 6.0
@@ -1835,7 +1840,7 @@ def GenerateProject(target, source, env):
if dspfile is not builddspfile:
try:
bdsp = open(str(builddspfile), "w+")
- except IOError as detail:
+ except OSError as detail:
print('Unable to open "' + str(dspfile) + '" for writing:',detail,'\n')
raise
@@ -1852,7 +1857,7 @@ def GenerateProject(target, source, env):
try:
bdsw = open(str(builddswfile), "w+")
- except IOError as detail:
+ except OSError as detail:
print('Unable to open "' + str(dspfile) + '" for writing:',detail,'\n')
raise
@@ -1861,7 +1866,7 @@ def GenerateProject(target, source, env):
GenerateDSW(dswfile, source, env)
-def GenerateSolution(target, source, env):
+def GenerateSolution(target, source, env) -> None:
GenerateDSW(target[0], source, env)
def projectEmitter(target, source, env):
@@ -2039,7 +2044,7 @@ solutionBuilder = SCons.Builder.Builder(action = '$MSVSSOLUTIONCOM',
default_MSVS_SConscript = None
-def generate(env):
+def generate(env) -> None:
"""Add Builders and construction variables for Microsoft Visual
Studio project files to an Environment."""
try:
@@ -2106,7 +2111,9 @@ def generate(env):
env['GET_MSVSSOLUTIONSUFFIX'] = GetMSVSSolutionSuffix
env['MSVSPROJECTSUFFIX'] = '${GET_MSVSPROJECTSUFFIX}'
env['MSVSSOLUTIONSUFFIX'] = '${GET_MSVSSOLUTIONSUFFIX}'
- env['SCONS_HOME'] = os.environ.get('SCONS_HOME')
+
+ if 'SCONS_HOME' not in env:
+ env['SCONS_HOME'] = os.environ.get('SCONS_HOME')
def exists(env):
return msvc_setup_env_tool(env, tool=tool_name)
diff --git a/scons/scons-local-4.5.2/SCons/Tool/mwcc.py b/scons/scons-local-4.7.0/SCons/Tool/mwcc.py
similarity index 97%
rename from scons/scons-local-4.5.2/SCons/Tool/mwcc.py
rename to scons/scons-local-4.7.0/SCons/Tool/mwcc.py
index 8f1201a02..22b610a9f 100644
--- a/scons/scons-local-4.5.2/SCons/Tool/mwcc.py
+++ b/scons/scons-local-4.7.0/SCons/Tool/mwcc.py
@@ -37,7 +37,7 @@ import os.path
import SCons.Util
-def set_vars(env):
+def set_vars(env) -> int:
"""Set MWCW_VERSION, MWCW_VERSIONS, and some codewarrior environment vars
MWCW_VERSIONS is set to a list of objects representing installed versions
@@ -120,7 +120,7 @@ def find_versions():
class MWVersion:
- def __init__(self, version, path, platform):
+ def __init__(self, version, path, platform) -> None:
self.version = version
self.path = path
self.platform = platform
@@ -144,7 +144,7 @@ class MWVersion:
self.includes = [msl, support]
self.libs = [msl, support]
- def __str__(self):
+ def __str__(self) -> str:
return self.version
@@ -152,7 +152,7 @@ CSuffixes = ['.c', '.C']
CXXSuffixes = ['.cc', '.cpp', '.cxx', '.c++', '.C++']
-def generate(env):
+def generate(env) -> None:
"""Add Builders and construction variables for the mwcc to an Environment."""
import SCons.Defaults
import SCons.Tool
diff --git a/scons/scons-local-4.5.2/SCons/Tool/mwld.py b/scons/scons-local-4.7.0/SCons/Tool/mwld.py
similarity index 99%
rename from scons/scons-local-4.5.2/SCons/Tool/mwld.py
rename to scons/scons-local-4.7.0/SCons/Tool/mwld.py
index 20676606e..9824c01b5 100644
--- a/scons/scons-local-4.5.2/SCons/Tool/mwld.py
+++ b/scons/scons-local-4.7.0/SCons/Tool/mwld.py
@@ -35,7 +35,7 @@ __revision__ = "__FILE__ __REVISION__ __DATE__ __DEVELOPER__"
import SCons.Tool
-def generate(env):
+def generate(env) -> None:
"""Add Builders and construction variables for lib to an Environment."""
SCons.Tool.createStaticLibBuilder(env)
SCons.Tool.createSharedLibBuilder(env)
diff --git a/scons/scons-local-4.5.2/SCons/Tool/nasm.py b/scons/scons-local-4.7.0/SCons/Tool/nasm.py
similarity index 98%
rename from scons/scons-local-4.5.2/SCons/Tool/nasm.py
rename to scons/scons-local-4.7.0/SCons/Tool/nasm.py
index ff0bc612f..253ad1cf6 100644
--- a/scons/scons-local-4.5.2/SCons/Tool/nasm.py
+++ b/scons/scons-local-4.7.0/SCons/Tool/nasm.py
@@ -44,7 +44,7 @@ if SCons.Util.case_sensitive_suffixes('.s', '.S'):
else:
ASSuffixes.extend(['.S'])
-def generate(env):
+def generate(env) -> None:
"""Add Builders and construction variables for nasm to an Environment."""
static_obj, shared_obj = SCons.Tool.createObjBuilders(env)
diff --git a/scons/scons-local-4.5.2/SCons/Tool/ninja/Globals.py b/scons/scons-local-4.7.0/SCons/Tool/ninja/Globals.py
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/ninja/Globals.py
rename to scons/scons-local-4.7.0/SCons/Tool/ninja/Globals.py
diff --git a/scons/scons-local-4.5.2/SCons/Tool/ninja/Methods.py b/scons/scons-local-4.7.0/SCons/Tool/ninja/Methods.py
similarity index 93%
rename from scons/scons-local-4.5.2/SCons/Tool/ninja/Methods.py
rename to scons/scons-local-4.7.0/SCons/Tool/ninja/Methods.py
index c0afab80b..5c56e4908 100644
--- a/scons/scons-local-4.5.2/SCons/Tool/ninja/Methods.py
+++ b/scons/scons-local-4.7.0/SCons/Tool/ninja/Methods.py
@@ -24,6 +24,7 @@
import os
import shlex
import textwrap
+from typing import Optional
import SCons
from SCons.Subst import SUBST_CMD
@@ -31,23 +32,24 @@ from SCons.Tool.ninja import NINJA_CUSTOM_HANDLERS, NINJA_RULES, NINJA_POOLS
from SCons.Tool.ninja.Globals import __NINJA_RULE_MAPPING
from SCons.Tool.ninja.Utils import get_targets_sources, get_dependencies, get_order_only, get_outputs, get_inputs, \
get_rule, get_path, generate_command, get_command_env, get_comstr
+from SCons.Util.sctyping import ExecutorType
-def register_custom_handler(env, name, handler):
+def register_custom_handler(env, name, handler) -> None:
"""Register a custom handler for SCons function actions."""
env[NINJA_CUSTOM_HANDLERS][name] = handler
-def register_custom_rule_mapping(env, pre_subst_string, rule):
+def register_custom_rule_mapping(env, pre_subst_string, rule) -> None:
"""Register a function to call for a given rule."""
SCons.Tool.ninja.Globals.__NINJA_RULE_MAPPING[pre_subst_string] = rule
-def register_custom_rule(env, rule, command, description="", deps=None, pool=None, use_depfile=False, use_response_file=False, response_file_content="$rspc"):
+def register_custom_rule(env, rule, command, description: str="", deps=None, pool=None, use_depfile: bool=False, use_response_file: bool=False, response_file_content: str="$rspc") -> None:
"""Allows specification of Ninja rules from inside SCons files."""
rule_obj = {
"command": command,
- "description": description if description else "{} $out".format(rule),
+ "description": description if description else f"{rule} $out",
}
if use_depfile:
@@ -66,17 +68,17 @@ def register_custom_rule(env, rule, command, description="", deps=None, pool=Non
env[NINJA_RULES][rule] = rule_obj
-def register_custom_pool(env, pool, size):
+def register_custom_pool(env, pool, size) -> None:
"""Allows the creation of custom Ninja pools"""
env[NINJA_POOLS][pool] = size
-def set_build_node_callback(env, node, callback):
+def set_build_node_callback(env, node, callback) -> None:
if not node.is_conftest():
node.attributes.ninja_build_callback = callback
-def get_generic_shell_command(env, node, action, targets, sources, executor=None):
+def get_generic_shell_command(env, node, action, targets, sources, executor: Optional[ExecutorType] = None):
return (
"GENERATED_CMD",
{
@@ -215,7 +217,7 @@ def get_command(env, node, action): # pylint: disable=too-many-branches
return ninja_build
-def gen_get_response_file_command(env, rule, tool, tool_is_dynamic=False, custom_env={}):
+def gen_get_response_file_command(env, rule, tool, tool_is_dynamic: bool=False, custom_env={}):
"""Generate a response file command provider for rule name."""
# If win32 using the environment with a response file command will cause
@@ -229,7 +231,7 @@ def gen_get_response_file_command(env, rule, tool, tool_is_dynamic=False, custom
if "$" in tool:
tool_is_dynamic = True
- def get_response_file_command(env, node, action, targets, sources, executor=None):
+ def get_response_file_command(env, node, action, targets, sources, executor: Optional[ExecutorType] = None):
if hasattr(action, "process"):
cmd_list, _, _ = action.process(targets, sources, env, executor=executor)
cmd_list = [str(c).replace("$", "$$") for c in cmd_list[0]]
diff --git a/scons/scons-local-4.5.2/SCons/Tool/ninja/NinjaState.py b/scons/scons-local-4.7.0/SCons/Tool/ninja/NinjaState.py
similarity index 99%
rename from scons/scons-local-4.5.2/SCons/Tool/ninja/NinjaState.py
rename to scons/scons-local-4.7.0/SCons/Tool/ninja/NinjaState.py
index 5e7c28919..549af7855 100644
--- a/scons/scons-local-4.5.2/SCons/Tool/ninja/NinjaState.py
+++ b/scons/scons-local-4.7.0/SCons/Tool/ninja/NinjaState.py
@@ -52,7 +52,7 @@ from .Methods import get_command
class NinjaState:
"""Maintains state of Ninja build system as it's translated from SCons."""
- def __init__(self, env, ninja_file, ninja_syntax):
+ def __init__(self, env, ninja_file, ninja_syntax) -> None:
self.env = env
self.ninja_file = ninja_file
@@ -303,7 +303,7 @@ class NinjaState:
}
self.pools = {"scons_pool": 1}
- def add_build(self, node):
+ def add_build(self, node) -> bool:
if not node.has_builder():
return False
@@ -342,18 +342,18 @@ class NinjaState:
self.builds[node_string] = tmp_build
print(warn_msg)
else:
- raise InternalError("Node {} added to ninja build state more than once".format(node_string))
+ raise InternalError(f"Node {node_string} added to ninja build state more than once")
self.builds[node_string] = build
return True
# TODO: rely on SCons to tell us what is generated source
# or some form of user scanner maybe (Github Issue #3624)
- def is_generated_source(self, output):
+ def is_generated_source(self, output) -> bool:
"""Check if output ends with a known generated suffix."""
_, suffix = splitext(output)
return suffix in self.generated_suffixes
- def has_generated_sources(self, output):
+ def has_generated_sources(self, output) -> bool:
"""
Determine if output indicates this is a generated header file.
"""
@@ -710,7 +710,7 @@ class NinjaState:
class SConsToNinjaTranslator:
"""Translates SCons Actions into Ninja build objects."""
- def __init__(self, env):
+ def __init__(self, env) -> None:
self.env = env
self.func_handlers = {
# Skip conftest builders
diff --git a/scons/scons-local-4.5.2/SCons/Tool/ninja/Overrides.py b/scons/scons-local-4.7.0/SCons/Tool/ninja/Overrides.py
similarity index 95%
rename from scons/scons-local-4.5.2/SCons/Tool/ninja/Overrides.py
rename to scons/scons-local-4.7.0/SCons/Tool/ninja/Overrides.py
index e98ec4036..83d2efb11 100644
--- a/scons/scons-local-4.5.2/SCons/Tool/ninja/Overrides.py
+++ b/scons/scons-local-4.7.0/SCons/Tool/ninja/Overrides.py
@@ -27,7 +27,7 @@ ninja file generation
import SCons
-def ninja_hack_linkcom(env):
+def ninja_hack_linkcom(env) -> None:
# TODO: change LINKCOM and SHLINKCOM to handle embedding manifest exe checks
# without relying on the SCons hacks that SCons uses by default.
if env["PLATFORM"] == "win32":
@@ -42,7 +42,7 @@ def ninja_hack_linkcom(env):
] = '${TEMPFILE("$SHLINK $SHLINKFLAGS $_SHLINK_TARGETS $_LIBDIRFLAGS $_LIBFLAGS $_PDB $_SHLINK_SOURCES", "$SHLINKCOMSTR")}'
-def ninja_hack_arcom(env):
+def ninja_hack_arcom(env) -> None:
"""
Force ARCOM so use 's' flag on ar instead of separately running ranlib
"""
@@ -68,12 +68,12 @@ class NinjaNoResponseFiles(SCons.Platform.TempFileMunge):
def __call__(self, target, source, env, for_signature):
return self.cmd
- def _print_cmd_str(*_args, **_kwargs):
+ def _print_cmd_str(*_args, **_kwargs) -> None:
"""Disable this method"""
pass
-def ninja_always_serial(self, num, taskmaster):
+def ninja_always_serial(self, num, taskmaster) -> None:
"""Replacement for SCons.Job.Jobs constructor which always uses the Serial Job class."""
# We still set self.num_jobs to num even though it's a lie. The
# only consumer of this attribute is the Parallel Job class AND
diff --git a/scons/scons-local-4.5.2/SCons/Tool/ninja/Rules.py b/scons/scons-local-4.7.0/SCons/Tool/ninja/Rules.py
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/ninja/Rules.py
rename to scons/scons-local-4.7.0/SCons/Tool/ninja/Rules.py
diff --git a/scons/scons-local-4.5.2/SCons/Tool/ninja/Utils.py b/scons/scons-local-4.7.0/SCons/Tool/ninja/Utils.py
similarity index 95%
rename from scons/scons-local-4.5.2/SCons/Tool/ninja/Utils.py
rename to scons/scons-local-4.7.0/SCons/Tool/ninja/Utils.py
index 7269fb2e5..126d5de0a 100644
--- a/scons/scons-local-4.5.2/SCons/Tool/ninja/Utils.py
+++ b/scons/scons-local-4.7.0/SCons/Tool/ninja/Utils.py
@@ -24,17 +24,19 @@ import os
import shutil
from os.path import join as joinpath
from collections import OrderedDict
+from typing import Optional
import SCons
from SCons.Action import get_default_ENV, _string_from_cmd_list
from SCons.Script import AddOption
from SCons.Util import is_List, flatten_sequence
+from SCons.Util.sctyping import ExecutorType
class NinjaExperimentalWarning(SCons.Warnings.WarningOnByDefault):
pass
-def ninja_add_command_line_options():
+def ninja_add_command_line_options() -> None:
"""
Add additional command line arguments to SCons specific to the ninja tool
"""
@@ -59,11 +61,11 @@ def ninja_add_command_line_options():
action="store_true",
default=False,
help='Allow scons to skip regeneration of the ninja file and restarting of the daemon. ' +
- 'Care should be taken in cases where Glob is in use or SCons generated files are used in ' +
+ 'Care should be taken in cases where Glob is in use or SCons generated files are used in ' +
'command lines.')
-def is_valid_dependent_node(node):
+def is_valid_dependent_node(node) -> bool:
"""
Return True if node is not an alias or is an alias that has children
@@ -76,7 +78,7 @@ def is_valid_dependent_node(node):
are valid implicit dependencies.
"""
if isinstance(node, SCons.Node.Alias.Alias):
- return node.children()
+ return bool(node.children())
return not node.get_env().get("NINJA_SKIP")
@@ -92,7 +94,7 @@ def alias_to_ninja_build(node):
}
-def check_invalid_ninja_node(node):
+def check_invalid_ninja_node(node) -> bool:
return not isinstance(node, (SCons.Node.FS.Base, SCons.Node.Alias.Alias))
@@ -129,7 +131,7 @@ def get_order_only(node):
return [get_path(src_file(prereq)) for prereq in filter_ninja_nodes(node.prerequisites)]
-def get_dependencies(node, skip_sources=False):
+def get_dependencies(node, skip_sources: bool=False):
"""Return a list of dependencies for node."""
if skip_sources:
return [
@@ -236,7 +238,7 @@ def to_escaped_list(env, lst):
return sorted([dep.escape(env.get("ESCAPE", lambda x: x)) for dep in deps_list])
-def generate_depfile(env, node, dependencies):
+def generate_depfile(env, node, dependencies) -> None:
"""
Ninja tool function for writing a depfile. The depfile should include
the node path followed by all the dependent files in a makefile format.
@@ -250,7 +252,7 @@ def generate_depfile(env, node, dependencies):
need_rewrite = False
try:
- with open(depfile, 'r') as f:
+ with open(depfile) as f:
need_rewrite = (f.read() != depfile_contents)
except FileNotFoundError:
need_rewrite = True
@@ -281,7 +283,7 @@ def ninja_recursive_sorted_dict(build):
return sorted_dict
-def ninja_sorted_build(ninja, **build):
+def ninja_sorted_build(ninja, **build) -> None:
sorted_dict = ninja_recursive_sorted_dict(build)
ninja.build(**sorted_dict)
@@ -315,7 +317,7 @@ def get_command_env(env, target, source):
scons_specified_env = SCons.Util.sanitize_shell_env(scons_specified_env)
for key, value in scons_specified_env.items():
if windows:
- command_env += "set '{}={}' && ".format(key, value)
+ command_env += f"set '{key}={value}' && "
else:
# We address here *only* the specific case that a user might have
# an environment variable which somehow gets included and has
@@ -323,7 +325,7 @@ def get_command_env(env, target, source):
# doesn't make builds on paths with spaces (Ninja and SCons issues)
# nor expanding response file paths with spaces (Ninja issue) work.
value = value.replace(r' ', r'$ ')
- command_env += "export {}='{}';".format(key, value)
+ command_env += f"export {key}='{value}';"
env["NINJA_ENV_VAR_CACHE"] = command_env
return command_env
@@ -344,7 +346,7 @@ def get_comstr(env, action, targets, sources):
return action.genstring(targets, sources, env)
-def generate_command(env, node, action, targets, sources, executor=None):
+def generate_command(env, node, action, targets, sources, executor: Optional[ExecutorType] = None):
# Actions like CommandAction have a method called process that is
# used by SCons to generate the cmd_line they need to run. So
# check if it's a thing like CommandAction and call it if we can.
@@ -437,7 +439,7 @@ def ninja_whereis(thing, *_args, **_kwargs):
return path
-def ninja_print_conf_log(s, target, source, env):
+def ninja_print_conf_log(s, target, source, env) -> None:
"""Command line print only for conftest to generate a correct conf log."""
if target and target[0].is_conftest():
action = SCons.Action._ActionAction()
diff --git a/scons/scons-local-4.5.2/SCons/Tool/ninja/__init__.py b/scons/scons-local-4.7.0/SCons/Tool/ninja/__init__.py
similarity index 98%
rename from scons/scons-local-4.5.2/SCons/Tool/ninja/__init__.py
rename to scons/scons-local-4.7.0/SCons/Tool/ninja/__init__.py
index 2622641d9..7320d0385 100644
--- a/scons/scons-local-4.5.2/SCons/Tool/ninja/__init__.py
+++ b/scons/scons-local-4.7.0/SCons/Tool/ninja/__init__.py
@@ -85,7 +85,7 @@ def ninja_builder(env, target, source):
with open('run_ninja_env.bat', 'w') as f:
for key in env['ENV']:
f.write('set {}={}\n'.format(key, env['ENV'][key]))
- f.write('{} -f {} %*\n'.format(NINJA_STATE.ninja_bin_path, generated_build_ninja))
+ f.write(f'{NINJA_STATE.ninja_bin_path} -f {generated_build_ninja} %*\n')
cmd = ['run_ninja_env.bat']
else:
@@ -112,8 +112,7 @@ def ninja_builder(env, target, source):
universal_newlines=True,
env=spawn_env
)
- for stdout_line in iter(proc.stdout.readline, ""):
- yield stdout_line
+ yield from iter(proc.stdout.readline, "")
proc.stdout.close()
return_code = proc.wait()
if return_code:
@@ -136,7 +135,7 @@ def ninja_builder(env, target, source):
sys.stdout.write("\n")
-def options(opts):
+def options(opts) -> None:
"""
Add command line Variables for Ninja builder.
"""
@@ -302,7 +301,7 @@ def generate(env):
# instead return something that looks more expanded. So to
# continue working even if a user has done this we map both the
# "bracketted" and semi-expanded versions.
- def robust_rule_mapping(var, rule, tool):
+ def robust_rule_mapping(var, rule, tool) -> None:
provider = gen_get_response_file_command(env, rule, tool)
env.NinjaRuleMapping("${" + var + "}", provider)
@@ -459,7 +458,7 @@ def generate(env):
# In the future we may be able to use this to actually cache the build.ninja
# file once we have the upstream support for referencing SConscripts as File
# nodes.
- def ninja_execute(self):
+ def ninja_execute(self) -> None:
target = self.targets[0]
if target.get_env().get('NINJA_SKIP'):
@@ -475,7 +474,7 @@ def generate(env):
# date-ness.
SCons.Script.Main.BuildTask.needs_execute = lambda x: True
- def ninja_Set_Default_Targets(env, tlist):
+ def ninja_Set_Default_Targets(env, tlist) -> None:
"""
Record the default targets if they were ever set by the user. Ninja
will need to write the default targets and make sure not to include
diff --git a/scons/scons-local-4.5.2/SCons/Tool/ninja/ninja_daemon_build.py b/scons/scons-local-4.7.0/SCons/Tool/ninja/ninja_daemon_build.py
similarity index 99%
rename from scons/scons-local-4.5.2/SCons/Tool/ninja/ninja_daemon_build.py
rename to scons/scons-local-4.7.0/SCons/Tool/ninja/ninja_daemon_build.py
index 32c375dfd..f198d773c 100644
--- a/scons/scons-local-4.5.2/SCons/Tool/ninja/ninja_daemon_build.py
+++ b/scons/scons-local-4.7.0/SCons/Tool/ninja/ninja_daemon_build.py
@@ -55,7 +55,7 @@ logging.basicConfig(
)
-def log_error(msg):
+def log_error(msg) -> None:
logging.debug(msg)
sys.stderr.write(msg)
diff --git a/scons/scons-local-4.5.2/SCons/Tool/ninja/ninja_run_daemon.py b/scons/scons-local-4.7.0/SCons/Tool/ninja/ninja_run_daemon.py
similarity index 99%
rename from scons/scons-local-4.5.2/SCons/Tool/ninja/ninja_run_daemon.py
rename to scons/scons-local-4.7.0/SCons/Tool/ninja/ninja_run_daemon.py
index 08029a29f..666be0f71 100644
--- a/scons/scons-local-4.5.2/SCons/Tool/ninja/ninja_run_daemon.py
+++ b/scons/scons-local-4.7.0/SCons/Tool/ninja/ninja_run_daemon.py
@@ -61,7 +61,7 @@ logging.basicConfig(
level=logging.DEBUG,
)
-def log_error(msg):
+def log_error(msg) -> None:
logging.debug(msg)
sys.stderr.write(msg)
diff --git a/scons/scons-local-4.5.2/SCons/Tool/ninja/ninja_scons_daemon.py b/scons/scons-local-4.7.0/SCons/Tool/ninja/ninja_scons_daemon.py
similarity index 96%
rename from scons/scons-local-4.5.2/SCons/Tool/ninja/ninja_scons_daemon.py
rename to scons/scons-local-4.7.0/SCons/Tool/ninja/ninja_scons_daemon.py
index 6802af293..8e297d3a9 100644
--- a/scons/scons-local-4.5.2/SCons/Tool/ninja/ninja_scons_daemon.py
+++ b/scons/scons-local-4.7.0/SCons/Tool/ninja/ninja_scons_daemon.py
@@ -77,11 +77,11 @@ logging.basicConfig(
)
-def daemon_log(message):
+def daemon_log(message) -> None:
logging.debug(message)
-def custom_readlines(handle, line_separator="\n", chunk_size=1):
+def custom_readlines(handle, line_separator: str="\n", chunk_size: int=1):
buf = ""
while not handle.closed:
data = handle.read(chunk_size)
@@ -98,7 +98,7 @@ def custom_readlines(handle, line_separator="\n", chunk_size=1):
buf = ""
-def custom_readerr(handle, line_separator="\n", chunk_size=1):
+def custom_readerr(handle, line_separator: str="\n", chunk_size: int=1):
buf = ""
while not handle.closed:
data = handle.read(chunk_size)
@@ -112,13 +112,13 @@ def custom_readerr(handle, line_separator="\n", chunk_size=1):
yield chunk + line_separator
-def enqueue_output(out, queue):
+def enqueue_output(out, queue) -> None:
for line in iter(custom_readlines(out)):
queue.put(line)
out.close()
-def enqueue_error(err, queue):
+def enqueue_error(err, queue) -> None:
for line in iter(custom_readerr(err)):
queue.put(line)
err.close()
@@ -143,7 +143,7 @@ class StateInfo:
shared_state = StateInfo()
-def sigint_func(signum, frame):
+def sigint_func(signum, frame) -> None:
global shared_state
shared_state.daemon_needs_to_shutdown = True
@@ -220,7 +220,7 @@ def daemon_thread_func():
break
if "exit" in building_node:
daemon_log("input: " + "exit")
- p.stdin.write("exit\n".encode("utf-8"))
+ p.stdin.write(b"exit\n")
p.stdin.flush()
with building_cv:
shared_state.finished_building += [building_node]
@@ -264,7 +264,7 @@ logging.debug(
keep_alive_timer = timer()
-def server_thread_func():
+def server_thread_func() -> None:
global shared_state
class S(http.server.BaseHTTPRequestHandler):
def do_GET(self):
@@ -284,7 +284,7 @@ def server_thread_func():
daemon_log(f"Got request: {build[0]}")
input_q.put(build[0])
- def pred():
+ def pred() -> bool:
return build[0] in shared_state.finished_building
with building_cv:
@@ -329,7 +329,7 @@ def server_thread_func():
daemon_log("SERVER ERROR: " + traceback.format_exc())
raise
- def log_message(self, format, *args):
+ def log_message(self, format, *args) -> None:
return
socketserver.TCPServer.allow_reuse_address = True
diff --git a/scons/scons-local-4.5.2/SCons/Tool/packaging/__init__.py b/scons/scons-local-4.7.0/SCons/Tool/packaging/__init__.py
similarity index 98%
rename from scons/scons-local-4.5.2/SCons/Tool/packaging/__init__.py
rename to scons/scons-local-4.7.0/SCons/Tool/packaging/__init__.py
index 6fe01c190..ea2f429a1 100644
--- a/scons/scons-local-4.5.2/SCons/Tool/packaging/__init__.py
+++ b/scons/scons-local-4.7.0/SCons/Tool/packaging/__init__.py
@@ -199,7 +199,7 @@ def Package(env, target=None, source=None, **kw):
#
added = False
-def generate(env):
+def generate(env) -> None:
global added
if not added:
added = True
@@ -218,11 +218,11 @@ def generate(env):
env['BUILDERS']['Tag'] = Tag
-def exists(env):
- return 1
+def exists(env) -> bool:
+ return True
-def options(opts):
+def options(opts) -> None:
opts.AddVariables(
EnumVariable('PACKAGETYPE',
'the type of package to create.',
@@ -235,7 +235,7 @@ def options(opts):
# Internal utility functions
#
-def copy_attr(f1, f2):
+def copy_attr(f1, f2) -> None:
""" Copies the special packaging file attributes from f1 to f2.
"""
if f1._tags:
@@ -247,7 +247,7 @@ def copy_attr(f1, f2):
for attr in pattrs:
f2.Tag(attr, f1.GetTag(attr))
-def putintopackageroot(target, source, env, pkgroot, honor_install_location=1):
+def putintopackageroot(target, source, env, pkgroot, honor_install_location: int=1):
""" Copies all source files to the directory given in pkgroot.
If honor_install_location is set and the copied source file has an
@@ -298,7 +298,7 @@ def stripinstallbuilder(target, source, env):
It also warns about files which have no install builder attached.
"""
- def has_no_install_location(file):
+ def has_no_install_location(file) -> bool:
return not (file.has_builder() and hasattr(file.builder, 'name')
and file.builder.name in ["InstallBuilder", "InstallAsBuilder"])
diff --git a/scons/scons-local-4.5.2/SCons/Tool/packaging/ipk.py b/scons/scons-local-4.7.0/SCons/Tool/packaging/ipk.py
similarity index 99%
rename from scons/scons-local-4.5.2/SCons/Tool/packaging/ipk.py
rename to scons/scons-local-4.7.0/SCons/Tool/packaging/ipk.py
index ac8b992bb..930eacbec 100644
--- a/scons/scons-local-4.5.2/SCons/Tool/packaging/ipk.py
+++ b/scons/scons-local-4.7.0/SCons/Tool/packaging/ipk.py
@@ -105,7 +105,7 @@ def gen_ipk_dir(proot, source, env, kw):
# the packageroot directory does now contain the specfiles.
return proot
-def build_specfiles(source, target, env):
+def build_specfiles(source, target, env) -> int:
""" Filter the targets for the needed files and use the variables in env
to create the specfile.
"""
diff --git a/scons/scons-local-4.5.2/SCons/Tool/packaging/msi.py b/scons/scons-local-4.7.0/SCons/Tool/packaging/msi.py
similarity index 96%
rename from scons/scons-local-4.5.2/SCons/Tool/packaging/msi.py
rename to scons/scons-local-4.7.0/SCons/Tool/packaging/msi.py
index 458e81f83..6746db8f4 100644
--- a/scons/scons-local-4.5.2/SCons/Tool/packaging/msi.py
+++ b/scons/scons-local-4.7.0/SCons/Tool/packaging/msi.py
@@ -1,11 +1,7 @@
-"""SCons.Tool.packaging.msi
-
-The msi packager.
-"""
-
+# MIT License
+#
+# Copyright The SCons Foundation
#
-# __COPYRIGHT__
-#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
# "Software"), to deal in the Software without restriction, including
@@ -25,7 +21,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__ = "__FILE__ __REVISION__ __DATE__ __DEVELOPER__"
+"""The msi packager."""
import os
import SCons
@@ -78,9 +74,8 @@ def convert_to_id(s, id_set):
return id_set[id][s]
-def is_dos_short_file_name(file):
- """ Examine if the given file is in the 8.3 form.
- """
+def is_dos_short_file_name(file) -> bool:
+ """Examine if the given file is in the 8.3 form."""
fname, ext = os.path.splitext(file)
proper_ext = len(ext) == 0 or (2 <= len(ext) <= 4) # the ext contains the dot
proper_fname = file.isupper() and len(fname) <= 8
@@ -88,9 +83,11 @@ def is_dos_short_file_name(file):
return proper_ext and proper_fname
def gen_dos_short_file_name(file, filename_set):
- """ See http://support.microsoft.com/default.aspx?scid=kb;en-us;Q142982
+ """Return a filename in the 8.3 form.
- These are no complete 8.3 dos short names. The ~ char is missing and
+ See http://support.microsoft.com/default.aspx?scid=kb;en-us;Q142982
+
+ These are no complete 8.3 dos short names. The ~ char is missing and
replaced with one character from the filename. WiX warns about such
filenames, since a collision might occur. Google for "CNDL1014" for
more information.
@@ -130,7 +127,7 @@ def create_feature_dict(files):
"""
dict = {}
- def add_to_dict( feature, file ):
+ def add_to_dict( feature, file ) -> None:
if not SCons.Util.is_List( feature ):
feature = [ feature ]
@@ -150,7 +147,7 @@ def create_feature_dict(files):
return dict
-def generate_guids(root):
+def generate_guids(root) -> None:
""" generates globally unique identifiers for parts of the xml which need
them.
@@ -179,7 +176,7 @@ def generate_guids(root):
node.attributes[attribute] = str(hash)
-def string_wxsfile(target, source, env):
+def string_wxsfile(target, source, env) -> str:
return "building WiX file %s" % target[0].path
def build_wxsfile(target, source, env):
@@ -266,7 +263,7 @@ def create_default_directory_layout(root, NAME, VERSION, VENDOR, filename_set):
#
# mandatory and optional file tags
#
-def build_wxsfile_file_section(root, files, NAME, VERSION, VENDOR, filename_set, id_set):
+def build_wxsfile_file_section(root, files, NAME, VERSION, VENDOR, filename_set, id_set) -> None:
""" Builds the Component sections of the wxs file with their included files.
Files need to be specified in 8.3 format and in the long name format, long
@@ -298,7 +295,7 @@ def build_wxsfile_file_section(root, files, NAME, VERSION, VENDOR, filename_set,
for d in dir_parts[:]:
already_created = [c for c in Directory.childNodes
if c.nodeName == 'Directory'
- and c.attributes['LongName'].value == escape(d)]
+ and c.attributes['LongName'].value == escape(d)]
if already_created:
Directory = already_created[0]
@@ -358,7 +355,7 @@ def build_wxsfile_file_section(root, files, NAME, VERSION, VENDOR, filename_set,
#
# additional functions
#
-def build_wxsfile_features_section(root, files, NAME, VERSION, SUMMARY, id_set):
+def build_wxsfile_features_section(root, files, NAME, VERSION, SUMMARY, id_set) -> None:
""" This function creates the tag based on the supplied xml tree.
This is achieved by finding all s and adding them to a default target.
@@ -413,7 +410,7 @@ def build_wxsfile_features_section(root, files, NAME, VERSION, SUMMARY, id_set):
root.getElementsByTagName('Product')[0].childNodes.append(Feature)
-def build_wxsfile_default_gui(root):
+def build_wxsfile_default_gui(root) -> None:
""" This function adds a default GUI to the wxs file
"""
factory = Document()
@@ -427,7 +424,7 @@ def build_wxsfile_default_gui(root):
UIRef.attributes['Id'] = 'WixUI_ErrorProgressText'
Product.childNodes.append(UIRef)
-def build_license_file(directory, spec):
+def build_license_file(directory, spec) -> None:
""" Creates a License.rtf file with the content of "X_MSI_LICENSE_TEXT"
in the given directory
"""
@@ -451,7 +448,7 @@ def build_license_file(directory, spec):
#
# mandatory and optional package tags
#
-def build_wxsfile_header_section(root, spec):
+def build_wxsfile_header_section(root, spec) -> None:
""" Adds the xml file node which define the package meta-data.
"""
# Create the needed DOM nodes and add them at the correct position in the tree.
diff --git a/scons/scons-local-4.5.2/SCons/Tool/packaging/rpm.py b/scons/scons-local-4.7.0/SCons/Tool/packaging/rpm.py
similarity index 98%
rename from scons/scons-local-4.5.2/SCons/Tool/packaging/rpm.py
rename to scons/scons-local-4.7.0/SCons/Tool/packaging/rpm.py
index cdeabcf62..03633db26 100644
--- a/scons/scons-local-4.5.2/SCons/Tool/packaging/rpm.py
+++ b/scons/scons-local-4.7.0/SCons/Tool/packaging/rpm.py
@@ -1,10 +1,6 @@
-"""SCons.Tool.Packaging.rpm
-
-The rpm packager.
-"""
-
+# MIT License
#
-# __COPYRIGHT__
+# 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
@@ -25,12 +21,10 @@ 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__ = "__FILE__ __REVISION__ __DATE__ __DEVELOPER__"
-
+"""The rpm packager."""
import SCons.Builder
import SCons.Tool.rpmutils
-
from SCons.Environment import OverrideEnvironment
from SCons.Tool.packaging import stripinstallbuilder, src_targz
from SCons.Errors import UserError
@@ -317,14 +311,14 @@ class SimpleTagCompiler:
"cdef ghij cdef gh ij"
"""
- def __init__(self, tagset, mandatory=1):
+ def __init__(self, tagset, mandatory: int=1) -> None:
self.tagset = tagset
self.mandatory = mandatory
def compile(self, values):
""" Compiles the tagset and returns a str containing the result
"""
- def is_international(tag):
+ def is_international(tag) -> bool:
return tag.endswith('_')
def get_country_code(tag):
diff --git a/scons/scons-local-4.5.2/SCons/Tool/packaging/src_tarbz2.py b/scons/scons-local-4.7.0/SCons/Tool/packaging/src_tarbz2.py
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/packaging/src_tarbz2.py
rename to scons/scons-local-4.7.0/SCons/Tool/packaging/src_tarbz2.py
diff --git a/scons/scons-local-4.5.2/SCons/Tool/packaging/src_targz.py b/scons/scons-local-4.7.0/SCons/Tool/packaging/src_targz.py
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/packaging/src_targz.py
rename to scons/scons-local-4.7.0/SCons/Tool/packaging/src_targz.py
diff --git a/scons/scons-local-4.5.2/SCons/Tool/packaging/src_tarxz.py b/scons/scons-local-4.7.0/SCons/Tool/packaging/src_tarxz.py
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/packaging/src_tarxz.py
rename to scons/scons-local-4.7.0/SCons/Tool/packaging/src_tarxz.py
diff --git a/scons/scons-local-4.5.2/SCons/Tool/packaging/src_zip.py b/scons/scons-local-4.7.0/SCons/Tool/packaging/src_zip.py
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/packaging/src_zip.py
rename to scons/scons-local-4.7.0/SCons/Tool/packaging/src_zip.py
diff --git a/scons/scons-local-4.5.2/SCons/Tool/packaging/tarbz2.py b/scons/scons-local-4.7.0/SCons/Tool/packaging/tarbz2.py
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/packaging/tarbz2.py
rename to scons/scons-local-4.7.0/SCons/Tool/packaging/tarbz2.py
diff --git a/scons/scons-local-4.5.2/SCons/Tool/packaging/targz.py b/scons/scons-local-4.7.0/SCons/Tool/packaging/targz.py
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/packaging/targz.py
rename to scons/scons-local-4.7.0/SCons/Tool/packaging/targz.py
diff --git a/scons/scons-local-4.5.2/SCons/Tool/packaging/tarxz.py b/scons/scons-local-4.7.0/SCons/Tool/packaging/tarxz.py
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/packaging/tarxz.py
rename to scons/scons-local-4.7.0/SCons/Tool/packaging/tarxz.py
diff --git a/scons/scons-local-4.5.2/SCons/Tool/packaging/zip.py b/scons/scons-local-4.7.0/SCons/Tool/packaging/zip.py
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/packaging/zip.py
rename to scons/scons-local-4.7.0/SCons/Tool/packaging/zip.py
diff --git a/scons/scons-local-4.5.2/SCons/Tool/pdf.py b/scons/scons-local-4.7.0/SCons/Tool/pdf.py
similarity index 91%
rename from scons/scons-local-4.5.2/SCons/Tool/pdf.py
rename to scons/scons-local-4.7.0/SCons/Tool/pdf.py
index 050f1a572..74b244940 100644
--- a/scons/scons-local-4.5.2/SCons/Tool/pdf.py
+++ b/scons/scons-local-4.7.0/SCons/Tool/pdf.py
@@ -1,12 +1,6 @@
-"""SCons.Tool.pdf
-
-Common PDF Builder definition for various other Tool modules that use it.
-Add an explicit action to run epstopdf to convert .eps files to .pdf
-
-"""
-
+# MIT License
#
-# __COPYRIGHT__
+# 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
@@ -26,9 +20,12 @@ Add an explicit action to run epstopdf to convert .eps files to .pdf
# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-#
-__revision__ = "__FILE__ __REVISION__ __DATE__ __DEVELOPER__"
+"""Common PDF Builder definition.
+
+This is for various other Tool modules that use it.
+Add an explicit action to run epstopdf to convert .eps files to .pdf
+"""
import SCons.Builder
import SCons.Tool
@@ -37,7 +34,7 @@ PDFBuilder = None
EpsPdfAction = SCons.Action.Action('$EPSTOPDFCOM', '$EPSTOPDFCOMSTR')
-def generate(env):
+def generate(env) -> None:
try:
env['BUILDERS']['PDF']
except KeyError:
@@ -55,9 +52,9 @@ def generate(env):
env['PDFPREFIX'] = ''
env['PDFSUFFIX'] = '.pdf'
-# put the epstopdf builder in this routine so we can add it after
+# put the epstopdf builder in this routine so we can add it after
# the pdftex builder so that one is the default for no source suffix
-def generate2(env):
+def generate2(env) -> None:
bld = env['BUILDERS']['PDF']
#bld.add_action('.ps', EpsPdfAction) # this is covered by direct Ghostcript action in gs.py
bld.add_action('.eps', EpsPdfAction)
@@ -66,10 +63,10 @@ def generate2(env):
env['EPSTOPDFFLAGS'] = SCons.Util.CLVar('')
env['EPSTOPDFCOM'] = '$EPSTOPDF $EPSTOPDFFLAGS ${SOURCE} --outfile=${TARGET}'
-def exists(env):
+def exists(env) -> bool:
# This only puts a skeleton Builder in place, so if someone
# references this Tool directly, it's always "available."
- return 1
+ return True
# Local Variables:
# tab-width:4
diff --git a/scons/scons-local-4.5.2/SCons/Tool/pdflatex.py b/scons/scons-local-4.7.0/SCons/Tool/pdflatex.py
similarity index 99%
rename from scons/scons-local-4.5.2/SCons/Tool/pdflatex.py
rename to scons/scons-local-4.7.0/SCons/Tool/pdflatex.py
index fbffb2395..e3c733b97 100644
--- a/scons/scons-local-4.5.2/SCons/Tool/pdflatex.py
+++ b/scons/scons-local-4.7.0/SCons/Tool/pdflatex.py
@@ -49,7 +49,7 @@ def PDFLaTeXAuxFunction(target = None, source= None, env=None):
PDFLaTeXAuxAction = None
-def generate(env):
+def generate(env) -> None:
"""Add Builders and construction variables for pdflatex to an Environment."""
global PDFLaTeXAction
if PDFLaTeXAction is None:
diff --git a/scons/scons-local-4.5.2/SCons/Tool/pdftex.py b/scons/scons-local-4.7.0/SCons/Tool/pdftex.py
similarity index 99%
rename from scons/scons-local-4.5.2/SCons/Tool/pdftex.py
rename to scons/scons-local-4.7.0/SCons/Tool/pdftex.py
index e9a0bda03..4b7707fbe 100644
--- a/scons/scons-local-4.5.2/SCons/Tool/pdftex.py
+++ b/scons/scons-local-4.7.0/SCons/Tool/pdftex.py
@@ -68,7 +68,7 @@ def PDFTeXLaTeXFunction(target = None, source= None, env=None):
PDFTeXLaTeXAction = None
-def generate(env):
+def generate(env) -> None:
"""Add Builders and construction variables for pdftex to an Environment."""
global PDFTeXAction
if PDFTeXAction is None:
diff --git a/scons/scons-local-4.5.2/SCons/Tool/python.py b/scons/scons-local-4.7.0/SCons/Tool/python.py
similarity index 96%
rename from scons/scons-local-4.5.2/SCons/Tool/python.py
rename to scons/scons-local-4.7.0/SCons/Tool/python.py
index c61fc8d72..2820afb47 100644
--- a/scons/scons-local-4.5.2/SCons/Tool/python.py
+++ b/scons/scons-local-4.7.0/SCons/Tool/python.py
@@ -33,13 +33,13 @@ import SCons.Tool
from SCons.Scanner.Python import PythonScanner, PythonSuffixes
-def generate(env):
+def generate(env) -> None:
"""Hook the python builder and scanner into the environment."""
for suffix in PythonSuffixes:
SCons.Tool.SourceFileScanner.add_scanner(suffix, PythonScanner)
-def exists(env):
+def exists(env) -> bool:
return True
# Local Variables:
diff --git a/scons/scons-local-4.5.2/SCons/Tool/qt.py b/scons/scons-local-4.7.0/SCons/Tool/qt.py
similarity index 98%
rename from scons/scons-local-4.5.2/SCons/Tool/qt.py
rename to scons/scons-local-4.7.0/SCons/Tool/qt.py
index 607b58d83..376e2ba19 100644
--- a/scons/scons-local-4.5.2/SCons/Tool/qt.py
+++ b/scons/scons-local-4.7.0/SCons/Tool/qt.py
@@ -34,5 +34,5 @@ def generate(env):
"'qt3' will be removed entirely in a future release."
)
-def exists(env):
+def exists(env) -> bool:
return False
diff --git a/scons/scons-local-4.5.2/SCons/Tool/qt3.py b/scons/scons-local-4.7.0/SCons/Tool/qt3.py
similarity index 99%
rename from scons/scons-local-4.5.2/SCons/Tool/qt3.py
rename to scons/scons-local-4.7.0/SCons/Tool/qt3.py
index 4e6975648..d35b661a4 100644
--- a/scons/scons-local-4.5.2/SCons/Tool/qt3.py
+++ b/scons/scons-local-4.7.0/SCons/Tool/qt3.py
@@ -90,7 +90,7 @@ def find_platform_specific_qt3_paths():
QT3_BIN_DIR = find_platform_specific_qt3_paths()
-def checkMocIncluded(target, source, env):
+def checkMocIncluded(target, source, env) -> None:
moc = target[0]
cpp = source[0]
# looks like cpp.includes is cleared before the build stage :-(
@@ -116,7 +116,7 @@ class _Automoc:
StaticLibraries.
"""
- def __init__(self, objBuilderName):
+ def __init__(self, objBuilderName) -> None:
self.objBuilderName = objBuilderName
def __call__(self, target, source, env):
diff --git a/scons/scons-local-4.5.2/SCons/Tool/rmic.py b/scons/scons-local-4.7.0/SCons/Tool/rmic.py
similarity index 96%
rename from scons/scons-local-4.5.2/SCons/Tool/rmic.py
rename to scons/scons-local-4.7.0/SCons/Tool/rmic.py
index 5c7a04066..a5d806369 100644
--- a/scons/scons-local-4.5.2/SCons/Tool/rmic.py
+++ b/scons/scons-local-4.7.0/SCons/Tool/rmic.py
@@ -1,15 +1,6 @@
-"""SCons.Tool.rmic
-
-Tool-specific initialization for rmic.
-
-There normally shouldn't be any need to import this module directly.
-It will usually be imported through the generic SCons.Tool.Tool()
-selection method.
-
-"""
-
+# MIT License
#
-# __COPYRIGHT__
+# 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
@@ -29,9 +20,13 @@ selection method.
# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-#
-__revision__ = "__FILE__ __REVISION__ __DATE__ __DEVELOPER__"
+"""Tool-specific initialization for rmic.
+
+There normally shouldn't be any need to import this module directly.
+It will usually be imported through the generic SCons.Tool.Tool()
+selection method.
+"""
import os.path
@@ -104,7 +99,7 @@ RMICBuilder = SCons.Builder.Builder(action = RMICAction,
target_factory = SCons.Node.FS.Dir,
source_factory = SCons.Node.FS.File)
-def generate(env):
+def generate(env) -> None:
"""Add Builders and construction variables for rmic to an Environment."""
env['BUILDERS']['RMIC'] = RMICBuilder
@@ -123,14 +118,14 @@ def generate(env):
env['RMICCOM'] = '$RMIC $RMICFLAGS -d ${TARGET.attributes.java_lookupdir} -classpath ${SOURCE.attributes.java_classdir} ${SOURCES.attributes.java_classname}'
env['JAVACLASSSUFFIX'] = '.class'
-def exists(env):
+def exists(env) -> bool:
# As reported by Jan Nijtmans in issue #2730, the simple
# return env.Detect('rmic')
# doesn't always work during initialization. For now, we
# stop trying to detect an executable (analogous to the
# javac Builder).
# TODO: Come up with a proper detect() routine...and enable it.
- return 1
+ return True
# Local Variables:
# tab-width:4
diff --git a/scons/scons-local-4.5.2/SCons/Tool/rpcgen.py b/scons/scons-local-4.7.0/SCons/Tool/rpcgen.py
similarity index 99%
rename from scons/scons-local-4.5.2/SCons/Tool/rpcgen.py
rename to scons/scons-local-4.7.0/SCons/Tool/rpcgen.py
index 5ed565862..d5f514a44 100644
--- a/scons/scons-local-4.5.2/SCons/Tool/rpcgen.py
+++ b/scons/scons-local-4.7.0/SCons/Tool/rpcgen.py
@@ -42,7 +42,7 @@ rpcgen_header = cmd % ('h', '$RPCGENHEADERFLAGS')
rpcgen_service = cmd % ('m', '$RPCGENSERVICEFLAGS')
rpcgen_xdr = cmd % ('c', '$RPCGENXDRFLAGS')
-def generate(env):
+def generate(env) -> None:
"""Add RPCGEN Builders and construction variables for an Environment."""
client = Builder(action=rpcgen_client, suffix='_clnt.c', src_suffix='.x')
diff --git a/scons/scons-local-4.5.2/SCons/Tool/rpm.py b/scons/scons-local-4.7.0/SCons/Tool/rpm.py
similarity index 98%
rename from scons/scons-local-4.5.2/SCons/Tool/rpm.py
rename to scons/scons-local-4.7.0/SCons/Tool/rpm.py
index 2fd802a67..94f5e574a 100644
--- a/scons/scons-local-4.5.2/SCons/Tool/rpm.py
+++ b/scons/scons-local-4.7.0/SCons/Tool/rpm.py
@@ -46,7 +46,7 @@ import SCons.Util
import SCons.Action
import SCons.Defaults
-def get_cmd(source, env):
+def get_cmd(source, env) -> str:
tar_file_with_included_specfile = source
if SCons.Util.is_List(source):
tar_file_with_included_specfile = source[0]
@@ -110,7 +110,7 @@ RpmBuilder = SCons.Builder.Builder(action = SCons.Action.Action('$RPMCOM', '$RPM
-def generate(env):
+def generate(env) -> None:
"""Add Builders and construction variables for rpm to an Environment."""
try:
bld = env['BUILDERS']['Rpm']
diff --git a/scons/scons-local-4.5.2/SCons/Tool/rpmutils.py b/scons/scons-local-4.7.0/SCons/Tool/rpmutils.py
similarity index 98%
rename from scons/scons-local-4.5.2/SCons/Tool/rpmutils.py
rename to scons/scons-local-4.7.0/SCons/Tool/rpmutils.py
index 2c4fb3220..cc1cc23ba 100644
--- a/scons/scons-local-4.5.2/SCons/Tool/rpmutils.py
+++ b/scons/scons-local-4.7.0/SCons/Tool/rpmutils.py
@@ -437,7 +437,7 @@ arch_canon = {
# End of rpmrc dictionaries (Marker, don't change or remove!)
-def defaultMachine(use_rpm_default=True):
+def defaultMachine(use_rpm_default: bool=True):
""" Return the canonicalized machine name. """
if use_rpm_default:
@@ -471,7 +471,7 @@ def defaultNames():
""" Return the canonicalized machine and system name. """
return defaultMachine(), defaultSystem()
-def updateRpmDicts(rpmrc, pyfile):
+def updateRpmDicts(rpmrc, pyfile) -> None:
""" Read the given rpmrc file with RPM definitions and update the
info dictionaries in the file pyfile with it.
The arguments will usually be 'rpmrc.in' from a recent RPM source
@@ -480,10 +480,10 @@ def updateRpmDicts(rpmrc, pyfile):
"""
try:
# Read old rpmutils.py file
- with open(pyfile,"r") as f:
+ with open(pyfile) as f:
oldpy = f.readlines()
# Read current rpmrc.in file
- with open(rpmrc,"r") as f:
+ with open(rpmrc) as f:
rpm = f.readlines()
# Parse for data
data = {}
@@ -531,10 +531,10 @@ def updateRpmDicts(rpmrc, pyfile):
except:
pass
-def usage():
+def usage() -> None:
print("rpmutils.py rpmrc.in rpmutils.py")
-def main():
+def main() -> None:
import sys
if len(sys.argv) < 3:
diff --git a/scons/scons-local-4.5.2/SCons/Tool/sgiar.py b/scons/scons-local-4.7.0/SCons/Tool/sgiar.py
similarity index 98%
rename from scons/scons-local-4.5.2/SCons/Tool/sgiar.py
rename to scons/scons-local-4.7.0/SCons/Tool/sgiar.py
index 54f8b7b67..72ce3766b 100644
--- a/scons/scons-local-4.5.2/SCons/Tool/sgiar.py
+++ b/scons/scons-local-4.7.0/SCons/Tool/sgiar.py
@@ -39,7 +39,7 @@ import SCons.Defaults
import SCons.Tool
import SCons.Util
-def generate(env):
+def generate(env) -> None:
"""Add Builders and construction variables for ar to an Environment."""
SCons.Tool.createStaticLibBuilder(env)
diff --git a/scons/scons-local-4.5.2/SCons/Tool/sgic++.py b/scons/scons-local-4.7.0/SCons/Tool/sgic++.py
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/sgic++.py
rename to scons/scons-local-4.7.0/SCons/Tool/sgic++.py
diff --git a/scons/scons-local-4.5.2/SCons/Tool/sgicc.py b/scons/scons-local-4.7.0/SCons/Tool/sgicc.py
similarity index 98%
rename from scons/scons-local-4.5.2/SCons/Tool/sgicc.py
rename to scons/scons-local-4.7.0/SCons/Tool/sgicc.py
index 94a049769..7950d1074 100644
--- a/scons/scons-local-4.5.2/SCons/Tool/sgicc.py
+++ b/scons/scons-local-4.7.0/SCons/Tool/sgicc.py
@@ -35,7 +35,7 @@ __revision__ = "__FILE__ __REVISION__ __DATE__ __DEVELOPER__"
from . import cc
-def generate(env):
+def generate(env) -> None:
"""Add Builders and construction variables for gcc to an Environment."""
cc.generate(env)
diff --git a/scons/scons-local-4.5.2/SCons/Tool/sgicxx.py b/scons/scons-local-4.7.0/SCons/Tool/sgicxx.py
similarity index 98%
rename from scons/scons-local-4.5.2/SCons/Tool/sgicxx.py
rename to scons/scons-local-4.7.0/SCons/Tool/sgicxx.py
index 48b04ea92..796f7ab1d 100644
--- a/scons/scons-local-4.5.2/SCons/Tool/sgicxx.py
+++ b/scons/scons-local-4.7.0/SCons/Tool/sgicxx.py
@@ -40,7 +40,7 @@ cplusplus = SCons.Tool.cxx
#cplusplus = __import__('cxx', globals(), locals(), [])
-def generate(env):
+def generate(env) -> None:
"""Add Builders and construction variables for SGI MIPS C++ to an Environment."""
cplusplus.generate(env)
diff --git a/scons/scons-local-4.5.2/SCons/Tool/sgilink.py b/scons/scons-local-4.7.0/SCons/Tool/sgilink.py
similarity index 98%
rename from scons/scons-local-4.5.2/SCons/Tool/sgilink.py
rename to scons/scons-local-4.7.0/SCons/Tool/sgilink.py
index e92c7b991..f66ad5ab1 100644
--- a/scons/scons-local-4.5.2/SCons/Tool/sgilink.py
+++ b/scons/scons-local-4.7.0/SCons/Tool/sgilink.py
@@ -36,7 +36,7 @@ from . import link
linkers = ['CC', 'cc']
-def generate(env):
+def generate(env) -> None:
"""Add Builders and construction variables for MIPSPro to an Environment."""
link.generate(env)
diff --git a/scons/scons-local-4.5.2/SCons/Tool/sunar.py b/scons/scons-local-4.7.0/SCons/Tool/sunar.py
similarity index 98%
rename from scons/scons-local-4.5.2/SCons/Tool/sunar.py
rename to scons/scons-local-4.7.0/SCons/Tool/sunar.py
index 266e91493..03223b636 100644
--- a/scons/scons-local-4.5.2/SCons/Tool/sunar.py
+++ b/scons/scons-local-4.7.0/SCons/Tool/sunar.py
@@ -38,7 +38,7 @@ import SCons.Defaults
import SCons.Tool
import SCons.Util
-def generate(env):
+def generate(env) -> None:
"""Add Builders and construction variables for ar to an Environment."""
SCons.Tool.createStaticLibBuilder(env)
diff --git a/scons/scons-local-4.5.2/SCons/Tool/sunc++.py b/scons/scons-local-4.7.0/SCons/Tool/sunc++.py
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Tool/sunc++.py
rename to scons/scons-local-4.7.0/SCons/Tool/sunc++.py
diff --git a/scons/scons-local-4.5.2/SCons/Tool/suncc.py b/scons/scons-local-4.7.0/SCons/Tool/suncc.py
similarity index 98%
rename from scons/scons-local-4.5.2/SCons/Tool/suncc.py
rename to scons/scons-local-4.7.0/SCons/Tool/suncc.py
index 4651219bd..4ef023158 100644
--- a/scons/scons-local-4.5.2/SCons/Tool/suncc.py
+++ b/scons/scons-local-4.7.0/SCons/Tool/suncc.py
@@ -36,7 +36,7 @@ import SCons.Util
from . import cc
-def generate(env):
+def generate(env) -> None:
"""
Add Builders and construction variables for Forte C and C++ compilers
to an Environment.
diff --git a/scons/scons-local-4.5.2/SCons/Tool/suncxx.py b/scons/scons-local-4.7.0/SCons/Tool/suncxx.py
similarity index 95%
rename from scons/scons-local-4.5.2/SCons/Tool/suncxx.py
rename to scons/scons-local-4.7.0/SCons/Tool/suncxx.py
index 7c4b0941d..ac0b0c75f 100644
--- a/scons/scons-local-4.5.2/SCons/Tool/suncxx.py
+++ b/scons/scons-local-4.7.0/SCons/Tool/suncxx.py
@@ -55,9 +55,9 @@ def get_package_info(package_name, pkginfo, pkgchk):
from subprocess import DEVNULL
try:
- with open('/var/sadm/install/contents', 'r', encoding='UTF-8') as f:
+ with open('/var/sadm/install/contents', encoding='UTF-8') as f:
sadm_contents = f.read()
- except EnvironmentError:
+ except OSError:
pass
else:
sadm_re = re.compile(r'^(\S*/bin/CC)(=\S*)? %s$' % package_name, re.M)
@@ -70,7 +70,7 @@ def get_package_info(package_name, pkginfo, pkgchk):
universal_newlines=True,
stdout=subprocess.PIPE,
stderr=DEVNULL)
- except EnvironmentError:
+ except OSError:
pass
else:
pkginfo_contents = p.communicate()[0]
@@ -85,7 +85,7 @@ def get_package_info(package_name, pkginfo, pkgchk):
universal_newlines=True,
stdout=subprocess.PIPE,
stderr=DEVNULL)
- except EnvironmentError:
+ except OSError:
pass
else:
pkgchk_contents = p.communicate()[0]
@@ -121,7 +121,7 @@ def get_cppc(env):
return (cppcPath, 'CC', 'CC', cppcVersion)
-def generate(env):
+def generate(env) -> None:
"""Add Builders and construction variables for SunPRO C++."""
path, cxx, shcxx, version = get_cppc(env)
if path:
diff --git a/scons/scons-local-4.5.2/SCons/Tool/sunf77.py b/scons/scons-local-4.7.0/SCons/Tool/sunf77.py
similarity index 98%
rename from scons/scons-local-4.5.2/SCons/Tool/sunf77.py
rename to scons/scons-local-4.7.0/SCons/Tool/sunf77.py
index 20d18938f..efeb488a2 100644
--- a/scons/scons-local-4.5.2/SCons/Tool/sunf77.py
+++ b/scons/scons-local-4.7.0/SCons/Tool/sunf77.py
@@ -39,7 +39,7 @@ from .FortranCommon import add_all_to_env
compilers = ['sunf77', 'f77']
-def generate(env):
+def generate(env) -> None:
"""Add Builders and construction variables for sunf77 to an Environment."""
add_all_to_env(env)
diff --git a/scons/scons-local-4.5.2/SCons/Tool/sunf90.py b/scons/scons-local-4.7.0/SCons/Tool/sunf90.py
similarity index 98%
rename from scons/scons-local-4.5.2/SCons/Tool/sunf90.py
rename to scons/scons-local-4.7.0/SCons/Tool/sunf90.py
index ce1697c34..4ce03c19a 100644
--- a/scons/scons-local-4.5.2/SCons/Tool/sunf90.py
+++ b/scons/scons-local-4.7.0/SCons/Tool/sunf90.py
@@ -39,7 +39,7 @@ from .FortranCommon import add_all_to_env
compilers = ['sunf90', 'f90']
-def generate(env):
+def generate(env) -> None:
"""Add Builders and construction variables for sun f90 compiler to an
Environment."""
add_all_to_env(env)
diff --git a/scons/scons-local-4.5.2/SCons/Tool/sunf95.py b/scons/scons-local-4.7.0/SCons/Tool/sunf95.py
similarity index 98%
rename from scons/scons-local-4.5.2/SCons/Tool/sunf95.py
rename to scons/scons-local-4.7.0/SCons/Tool/sunf95.py
index 218569c0b..273987b77 100644
--- a/scons/scons-local-4.5.2/SCons/Tool/sunf95.py
+++ b/scons/scons-local-4.7.0/SCons/Tool/sunf95.py
@@ -39,7 +39,7 @@ from .FortranCommon import add_all_to_env
compilers = ['sunf95', 'f95']
-def generate(env):
+def generate(env) -> None:
"""Add Builders and construction variables for sunf95 to an
Environment."""
add_all_to_env(env)
diff --git a/scons/scons-local-4.5.2/SCons/Tool/sunlink.py b/scons/scons-local-4.7.0/SCons/Tool/sunlink.py
similarity index 98%
rename from scons/scons-local-4.5.2/SCons/Tool/sunlink.py
rename to scons/scons-local-4.7.0/SCons/Tool/sunlink.py
index b0c9816e6..a05fdb8d3 100644
--- a/scons/scons-local-4.5.2/SCons/Tool/sunlink.py
+++ b/scons/scons-local-4.7.0/SCons/Tool/sunlink.py
@@ -43,7 +43,7 @@ ccLinker = None
try:
dirs = os.listdir('/opt')
-except (IOError, OSError):
+except OSError:
# Not being able to read the directory because it doesn't exist
# (IOError) or isn't readable (OSError) is okay.
dirs = []
@@ -55,7 +55,7 @@ for d in dirs:
break
-def generate(env):
+def generate(env) -> None:
"""Add Builders and construction variables for Forte to an Environment."""
link.generate(env)
diff --git a/scons/scons-local-4.5.2/SCons/Tool/swig.py b/scons/scons-local-4.7.0/SCons/Tool/swig.py
similarity index 93%
rename from scons/scons-local-4.5.2/SCons/Tool/swig.py
rename to scons/scons-local-4.7.0/SCons/Tool/swig.py
index ff0c80d44..3072960cc 100644
--- a/scons/scons-local-4.5.2/SCons/Tool/swig.py
+++ b/scons/scons-local-4.7.0/SCons/Tool/swig.py
@@ -30,8 +30,8 @@ selection method.
import os.path
import re
-import subprocess
import sys
+from subprocess import PIPE
import SCons.Action
import SCons.Defaults
@@ -46,7 +46,7 @@ swigs = [ 'swig', 'swig3.0', 'swig2.0' ]
SwigAction = SCons.Action.Action('$SWIGCOM', '$SWIGCOMSTR')
-def swigSuffixEmitter(env, source):
+def swigSuffixEmitter(env, source) -> str:
if '-c++' in SCons.Util.CLVar(env.subst("$SWIGFLAGS", source=source)):
return '$SWIGCXXFILESUFFIX'
else:
@@ -68,7 +68,7 @@ def _find_modules(src):
with open(src) as f:
data = f.read()
matches = _reModule.findall(data)
- except IOError:
+ except OSError:
# If the file's not yet generated, guess the module name from the file stem
matches = []
mnames.append(os.path.splitext(os.path.basename(src))[0])
@@ -78,7 +78,7 @@ def _find_modules(src):
directors = directors or 'directors' in m[0]
return mnames, directors
-def _add_director_header_targets(target, env):
+def _add_director_header_targets(target, env) -> None:
# Directors only work with C++ code, not C
suffix = env.subst(env['SWIGCXXFILESUFFIX'])
# For each file ending in SWIGCXXFILESUFFIX, add a new target director
@@ -136,17 +136,13 @@ def _get_swig_version(env, swig):
swig = env.subst(swig)
if not swig:
return version
- pipe = SCons.Action._subproc(env, SCons.Util.CLVar(swig) + ['-version'],
- stdin = 'devnull',
- stderr = 'devnull',
- stdout = subprocess.PIPE)
- if pipe.wait() != 0:
+
+ cp = SCons.Action.scons_subproc_run(
+ env, SCons.Util.CLVar(swig) + ['-version'], stdout=PIPE
+ )
+ if cp.returncode:
return version
-
- # MAYBE: out = SCons.Util.to_str (pipe.stdout.read())
- with pipe.stdout:
- out = SCons.Util.to_str(pipe.stdout.read())
-
+ out = SCons.Util.to_str(cp.stdout)
match = re.search(r'SWIG Version\s+(\S+).*', out, re.MULTILINE)
if match:
version = match.group(1)
@@ -158,7 +154,7 @@ def _get_swig_version(env, swig):
return version
-def generate(env):
+def generate(env) -> None:
"""Add Builders and construction variables for swig to an Environment."""
c_file, cxx_file = SCons.Tool.createCFileBuilders(env)
diff --git a/scons/scons-local-4.5.2/SCons/Tool/tar.py b/scons/scons-local-4.7.0/SCons/Tool/tar.py
similarity index 98%
rename from scons/scons-local-4.5.2/SCons/Tool/tar.py
rename to scons/scons-local-4.7.0/SCons/Tool/tar.py
index 25937811c..ba7f45cb4 100644
--- a/scons/scons-local-4.5.2/SCons/Tool/tar.py
+++ b/scons/scons-local-4.7.0/SCons/Tool/tar.py
@@ -50,7 +50,7 @@ TarBuilder = SCons.Builder.Builder(action = TarAction,
multi = 1)
-def generate(env):
+def generate(env) -> None:
"""Add Builders and construction variables for tar to an Environment."""
try:
bld = env['BUILDERS']['Tar']
diff --git a/scons/scons-local-4.5.2/SCons/Tool/tex.py b/scons/scons-local-4.7.0/SCons/Tool/tex.py
similarity index 98%
rename from scons/scons-local-4.5.2/SCons/Tool/tex.py
rename to scons/scons-local-4.7.0/SCons/Tool/tex.py
index 0a688f58a..54b21fbe8 100644
--- a/scons/scons-local-4.5.2/SCons/Tool/tex.py
+++ b/scons/scons-local-4.7.0/SCons/Tool/tex.py
@@ -149,11 +149,11 @@ _null = SCons.Scanner.LaTeX._null
modify_env_var = SCons.Scanner.LaTeX.modify_env_var
-def check_file_error_message(utility, filename='log'):
+def check_file_error_message(utility, filename: str='log') -> None:
msg = '%s returned an error, check the %s file\n' % (utility, filename)
sys.stdout.write(msg)
-def FindFile(name,suffixes,paths,env,requireExt=False):
+def FindFile(name,suffixes,paths,env,requireExt: bool=False):
if requireExt:
name,ext = SCons.Util.splitext(name)
# if the user gave an extension use it.
@@ -253,7 +253,7 @@ def InternalLaTeXAuxAction(XXXLaTeXAction, target = None, source= None, env=None
# .aux files already processed by BibTex
already_bibtexed = []
- def check_content_hash(filenode, suffix):
+ def check_content_hash(filenode, suffix) -> bool:
"""
Routine to update content hash and compare
"""
@@ -300,7 +300,7 @@ def InternalLaTeXAuxAction(XXXLaTeXAction, target = None, source= None, env=None
flsContent = ''
auxfiles = []
if os.path.isfile(flsfilename):
- with open(flsfilename, "r") as f:
+ with open(flsfilename) as f:
flsContent = f.read()
auxfiles = openout_aux_re.findall(flsContent)
# remove duplicates
@@ -311,7 +311,7 @@ def InternalLaTeXAuxAction(XXXLaTeXAction, target = None, source= None, env=None
bcffiles = []
if os.path.isfile(flsfilename):
- with open(flsfilename, "r") as f:
+ with open(flsfilename) as f:
flsContent = f.read()
bcffiles = openout_bcf_re.findall(flsContent)
# remove duplicates
@@ -335,7 +335,7 @@ def InternalLaTeXAuxAction(XXXLaTeXAction, target = None, source= None, env=None
already_bibtexed.append(auxfilename)
target_aux = os.path.join(targetdir, auxfilename)
if os.path.isfile(target_aux):
- with open(target_aux, "r") as f:
+ with open(target_aux) as f:
content = f.read()
if content.find("bibdata") != -1:
if Verbose:
@@ -359,7 +359,7 @@ def InternalLaTeXAuxAction(XXXLaTeXAction, target = None, source= None, env=None
already_bibtexed.append(bcffilename)
target_bcf = os.path.join(targetdir, bcffilename)
if os.path.isfile(target_bcf):
- with open(target_bcf, "r") as f:
+ with open(target_bcf) as f:
content = f.read()
if content.find("bibdata") != -1:
if Verbose:
@@ -823,7 +823,7 @@ def tex_emitter_core(target, source, env, graphics_extensions):
# read fls file to get all other files that latex creates and will read on the next pass
# remove files from list that we explicitly dealt with above
if os.path.isfile(flsfilename):
- with open(flsfilename, "r") as f:
+ with open(flsfilename) as f:
content = f.read()
out_files = openout_re.findall(content)
myfiles = [auxfilename, logfilename, flsfilename, targetbase+'.dvi',targetbase+'.pdf']
@@ -840,7 +840,7 @@ def tex_emitter_core(target, source, env, graphics_extensions):
TeXLaTeXAction = None
-def generate(env):
+def generate(env) -> None:
"""Add Builders and construction variables for TeX to an Environment."""
global TeXLaTeXAction
@@ -859,7 +859,7 @@ def generate(env):
bld.add_action('.tex', TeXLaTeXAction)
bld.add_emitter('.tex', tex_eps_emitter)
-def generate_darwin(env):
+def generate_darwin(env) -> None:
try:
environ = env['ENV']
except KeyError:
@@ -874,7 +874,7 @@ def generate_darwin(env):
if ospath:
env.AppendENVPath('PATH', ospath)
-def generate_common(env):
+def generate_common(env) -> None:
"""Add internal Builders and construction variables for LaTeX to an Environment."""
# Add OSX system paths so TeX tools can be found
diff --git a/scons/scons-local-4.5.2/SCons/Tool/textfile.py b/scons/scons-local-4.7.0/SCons/Tool/textfile.py
similarity index 83%
rename from scons/scons-local-4.5.2/SCons/Tool/textfile.py
rename to scons/scons-local-4.7.0/SCons/Tool/textfile.py
index 0ec31d8f7..04a5cd7fd 100644
--- a/scons/scons-local-4.5.2/SCons/Tool/textfile.py
+++ b/scons/scons-local-4.7.0/SCons/Tool/textfile.py
@@ -21,31 +21,28 @@
# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-"""
-Textfile/Substfile builder for SCons.
+"""Textfile/Substfile builder for SCons.
- Create file 'target' which typically is a textfile. The 'source'
- may be any combination of strings, Nodes, or lists of same. A
- 'linesep' will be put between any part written and defaults to
- os.linesep.
+Create file 'target' which typically is a textfile. The 'source'
+may be any combination of strings, Nodes, or lists of same. A
+'linesep' will be put between any part written and defaults to
+os.linesep.
- The only difference between the Textfile builder and the Substfile
- builder is that strings are converted to Value() nodes for the
- former and File() nodes for the latter. To insert files in the
- former or strings in the latter, wrap them in a File() or Value(),
- respectively.
+The only difference between the Textfile builder and the Substfile
+builder is that strings are converted to Value() nodes for the
+former and File() nodes for the latter. To insert files in the
+former or strings in the latter, wrap them in a File() or Value(),
+respectively.
- The values of SUBST_DICT first have any construction variables
- expanded (its keys are not expanded). If a value of SUBST_DICT is
- a python callable function, it is called and the result is expanded
- as the value. Values are substituted in a "random" order; if any
- substitution could be further expanded by another substitution, it
- is unpredictable whether the expansion will occur.
+The values of SUBST_DICT first have any construction variables
+expanded (its keys are not expanded). If a value of SUBST_DICT is
+a python callable function, it is called and the result is expanded
+as the value. Values are substituted in a "random" order; if any
+substitution could be further expanded by another substitution, it
+is unpredictable whether the expansion will occur.
"""
import SCons
-
-
from SCons.Node import Node
from SCons.Node.Python import Value
from SCons.Util import is_String, is_Sequence, is_Dict, to_bytes
@@ -123,7 +120,7 @@ def _action(target, source, env):
# write the file
try:
target_file = open(target[0].get_path(), TEXTFILE_FILE_WRITE_MODE, newline='', encoding=file_encoding)
- except (OSError, IOError) as e:
+ except OSError as e:
raise SCons.Errors.UserError("Can't write target file %s [%s]" % (target[0],e))
# separate lines by 'linesep' only if linesep is not empty
@@ -137,11 +134,11 @@ def _action(target, source, env):
target_file.close()
-def _strfunc(target, source, env):
+def _strfunc(target, source, env) -> str:
return "Creating '%s'" % target[0]
-def _convert_list_R(newlist, sources):
+def _convert_list_R(newlist, sources) -> None:
for elem in sources:
if is_Sequence(elem):
_convert_list_R(newlist, elem)
@@ -181,7 +178,7 @@ _subst_builder = SCons.Builder.Builder(
)
-def generate(env):
+def generate(env) -> None:
env['LINESEPARATOR'] = LINESEP # os.linesep
env['BUILDERS']['Textfile'] = _text_builder
env['TEXTFILEPREFIX'] = ''
@@ -192,8 +189,8 @@ def generate(env):
env['FILE_ENCODING'] = env.get('FILE_ENCODING', 'utf-8')
-def exists(env):
- return 1
+def exists(env) -> bool:
+ return True
# Local Variables:
# tab-width:4
diff --git a/scons/scons-local-4.5.2/SCons/Tool/tlib.py b/scons/scons-local-4.7.0/SCons/Tool/tlib.py
similarity index 98%
rename from scons/scons-local-4.5.2/SCons/Tool/tlib.py
rename to scons/scons-local-4.7.0/SCons/Tool/tlib.py
index 33adb576b..8b0e6ddad 100644
--- a/scons/scons-local-4.5.2/SCons/Tool/tlib.py
+++ b/scons/scons-local-4.7.0/SCons/Tool/tlib.py
@@ -33,7 +33,7 @@ import SCons.Tool
import SCons.Tool.bcc32
import SCons.Util
-def generate(env):
+def generate(env) -> None:
SCons.Tool.bcc32.findIt('tlib', env)
"""Add Builders and construction variables for ar to an Environment."""
SCons.Tool.createStaticLibBuilder(env)
diff --git a/scons/scons-local-4.5.2/SCons/Tool/wix.py b/scons/scons-local-4.7.0/SCons/Tool/wix.py
similarity index 99%
rename from scons/scons-local-4.5.2/SCons/Tool/wix.py
rename to scons/scons-local-4.7.0/SCons/Tool/wix.py
index 04136ce8e..617abf273 100644
--- a/scons/scons-local-4.5.2/SCons/Tool/wix.py
+++ b/scons/scons-local-4.7.0/SCons/Tool/wix.py
@@ -36,7 +36,7 @@ import SCons.Builder
import SCons.Action
import os
-def generate(env):
+def generate(env) -> None:
"""Add Builders and construction variables for WiX to an Environment."""
if not exists(env):
return
diff --git a/scons/scons-local-4.5.2/SCons/Tool/xgettext.py b/scons/scons-local-4.7.0/SCons/Tool/xgettext.py
similarity index 97%
rename from scons/scons-local-4.5.2/SCons/Tool/xgettext.py
rename to scons/scons-local-4.7.0/SCons/Tool/xgettext.py
index ed76e2552..69408c20f 100644
--- a/scons/scons-local-4.5.2/SCons/Tool/xgettext.py
+++ b/scons/scons-local-4.7.0/SCons/Tool/xgettext.py
@@ -25,8 +25,8 @@
import os
import re
-import subprocess
import sys
+from subprocess import PIPE
import SCons.Action
import SCons.Node.FS
@@ -51,7 +51,7 @@ class _CmdRunner:
variables. It also provides `strfunction()` method, which shall be used by
scons Action objects to print command string. """
- def __init__(self, command, commandstr=None):
+ def __init__(self, command, commandstr=None) -> None:
self.out = None
self.err = None
self.status = None
@@ -60,16 +60,16 @@ class _CmdRunner:
def __call__(self, target, source, env):
kw = {
- 'stdin': 'devnull',
- 'stdout': subprocess.PIPE,
- 'stderr': subprocess.PIPE,
+ 'stdout': PIPE,
+ 'stderr': PIPE,
'universal_newlines': True,
'shell': True
}
command = env.subst(self.command, target=target, source=source)
- proc = SCons.Action._subproc(env, command, **kw)
- self.out, self.err = proc.communicate()
- self.status = proc.wait()
+ cp = SCons.Action.scons_subproc_run(env, command, **kw)
+ self.status = cp.returncode
+ self.out = cp.stdout
+ self.err = cp.stderr
if self.err:
sys.stderr.write(str(self.err))
return self.status
@@ -169,7 +169,7 @@ class _POTBuilder(BuilderBase):
return BuilderBase._execute(self, env, target, source, *args)
-def _scan_xgettext_from_files(target, source, env, files=None, path=None):
+def _scan_xgettext_from_files(target, source, env, files=None, path=None) -> int:
""" Parses `POTFILES.in`-like file and returns list of extracted file names.
"""
if files is None:
@@ -257,7 +257,7 @@ def _POTUpdateBuilder(env, **kw):
return _POTBuilder(**kw)
-def generate(env, **kw):
+def generate(env, **kw) -> None:
""" Generate `xgettext` tool """
if sys.platform == 'win32':
diff --git a/scons/scons-local-4.5.2/SCons/Tool/yacc.py b/scons/scons-local-4.7.0/SCons/Tool/yacc.py
similarity index 80%
rename from scons/scons-local-4.5.2/SCons/Tool/yacc.py
rename to scons/scons-local-4.7.0/SCons/Tool/yacc.py
index 42ef1db03..7a4ddfc54 100644
--- a/scons/scons-local-4.5.2/SCons/Tool/yacc.py
+++ b/scons/scons-local-4.7.0/SCons/Tool/yacc.py
@@ -23,8 +23,11 @@
"""Tool-specific initialization for yacc.
-This tool should support multiple yacc implementations,
-but is in actuality biased towards GNU Bison.
+This tool should support multiple yacc implementations, but is in actuality
+biased towards GNU Bison. In particular, it forces the output file name (thus
+avoiding the default convention of y.tab.c or foo.tab.c), so the tool *must*
+support the -o option, which pure POSIX yacc does not. byacc should be okay
+as an alternative to bison.
There normally shouldn't be any need to import this module directly.
It will usually be imported through the generic SCons.Tool.Tool()
@@ -50,7 +53,7 @@ YaccAction = SCons.Action.Action("$YACCCOM", "$YACCCOMSTR")
if sys.platform == 'win32':
BINS = ['bison', 'yacc', 'win_bison']
else:
- BINS = ["bison", "yacc"]
+ BINS = ["bison", "yacc", "byacc"] # for byacc, yacc is normally a link
def _yaccEmitter(target, source, env, ysuf, hsuf) -> tuple:
@@ -64,15 +67,19 @@ def _yaccEmitter(target, source, env, ysuf, hsuf) -> tuple:
target = [targetBase + ".m"] # the extension is ".m".
# If -d is specified on the command line, yacc will emit a .h
- # or .hpp file with the same name as the .c or .cpp output file.
- if '-d' in flags:
+ # or .hpp file with the same base name as the .c or .cpp output file.
+ # if '-d' in flags:
+ # or bison options -H, --header, --defines (obsolete)
+ if "-d" in flags or "-H" in flags or "--header" in flags or "--defines" in flags:
target.append(targetBase + env.subst(hsuf, target=target, source=source))
- # If -g is specified on the command line, yacc will emit a .vcg
- # file with the same base name as the .y, .yacc, .ym or .yy file.
- if "-g" in flags:
- base, ext = os.path.splitext(to_String(source[0]))
- target.append(base + env.subst("$YACCVCGFILESUFFIX"))
+ # If -g is specified on the command line, yacc will emit a graph
+ # file with the same base name as the .c or .cpp output file.
+ # TODO: should this be handled like -v? i.e. a side effect, not target
+ # if "-g" in flags:
+ # or bison option --graph
+ if "-g" in flags or "--graph" in flags:
+ target.append(targetBase + env.subst("$YACC_GRAPH_FILE_SUFFIX"))
# If -v is specified yacc will create the output debug file
# which is not really source for any process, but should
@@ -82,11 +89,13 @@ def _yaccEmitter(target, source, env, ysuf, hsuf) -> tuple:
env.Clean(target[0], targetBase + '.output')
# With --defines and --graph, the file to write is defined by the option
- # argument. Extract this and include in the list of targets.
- # NOTE: a filename passed to the command this way is not modified by SCons,
- # and so will be interpreted relative to the project top directory at
- # execution time, while the name added to the target list will be
+ # argument, if present (the no-option-argument cases were caught above).
+ # Extract this and include in the list of targets.
+ # NOTE: a filename passed to the command this way is not modified by
+ # SCons, and so will be interpreted relative to the project top directory
+ # at execution time, while the name added to the target list will be
# interpreted relative to the SConscript directory - a possible mismatch.
+ # Better to use YACC_HEADER_FILE and YACC_GRAPH_FILE to pass these.
#
# These are GNU bison-only options.
# Since bison 3.8, --header is the preferred name over --defines
@@ -125,7 +134,7 @@ def yyEmitter(target, source, env) -> tuple:
return _yaccEmitter(target, source, env, ['.yy'], '$YACCHXXFILESUFFIX')
-def get_yacc_path(env, append_paths=False) -> Optional[str]:
+def get_yacc_path(env, append_paths: bool=False) -> Optional[str]:
"""
Returns the path to the yacc tool, searching several possible names.
@@ -185,7 +194,8 @@ def generate(env) -> None:
env['YACCCOM'] = '$YACC $YACCFLAGS $_YACC_HEADER $_YACC_GRAPH -o $TARGET $SOURCES'
env['YACCHFILESUFFIX'] = '.h'
env['YACCHXXFILESUFFIX'] = '.hpp'
- env['YACCVCGFILESUFFIX'] = '.vcg'
+ env['YACCVCGFILESUFFIX'] = '.gv'
+ env['YACC_GRAPH_FILE_SUFFIX'] = '$YACCVCGFILESUFFIX'
env['_YACC_HEADER'] = '${YACC_HEADER_FILE and "--header=" + str(YACC_HEADER_FILE)}'
env['_YACC_GRAPH'] = '${YACC_GRAPH_FILE and "--graph=" + str(YACC_GRAPH_FILE)}'
diff --git a/scons/scons-local-4.5.2/SCons/Tool/zip.py b/scons/scons-local-4.7.0/SCons/Tool/zip.py
similarity index 97%
rename from scons/scons-local-4.5.2/SCons/Tool/zip.py
rename to scons/scons-local-4.7.0/SCons/Tool/zip.py
index f3d38fe7a..4c04afceb 100644
--- a/scons/scons-local-4.5.2/SCons/Tool/zip.py
+++ b/scons/scons-local-4.7.0/SCons/Tool/zip.py
@@ -57,7 +57,7 @@ def _create_zipinfo_for_file(fname, arcname, date_time, compression):
return zinfo
-def zip_builder(target, source, env):
+def zip_builder(target, source, env) -> None:
compression = env.get('ZIPCOMPRESSION', zipfile.ZIP_STORED)
zip_root = str(env.get('ZIPROOT', ''))
date_time = env.get('ZIP_OVERRIDE_TIMESTAMP')
@@ -94,7 +94,7 @@ ZipBuilder = SCons.Builder.Builder(action=SCons.Action.Action('$ZIPCOM', '$ZIPCO
multi=1)
-def generate(env):
+def generate(env) -> None:
"""Add Builders and construction variables for zip to an Environment."""
try:
bld = env['BUILDERS']['Zip']
@@ -110,7 +110,7 @@ def generate(env):
env['ZIPROOT'] = SCons.Util.CLVar('')
-def exists(env):
+def exists(env) -> bool:
return True
# Local Variables:
diff --git a/scons/scons-local-4.5.2/SCons/Util/__init__.py b/scons/scons-local-4.7.0/SCons/Util/__init__.py
similarity index 82%
rename from scons/scons-local-4.5.2/SCons/Util/__init__.py
rename to scons/scons-local-4.7.0/SCons/Util/__init__.py
index 2760298b5..95c1b9978 100644
--- a/scons/scons-local-4.5.2/SCons/Util/__init__.py
+++ b/scons/scons-local-4.7.0/SCons/Util/__init__.py
@@ -21,24 +21,50 @@
# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-"""SCons utility functions
+"""
+SCons utility functions
This package contains routines for use by other parts of SCons.
+Candidates for inclusion here are routines that do not need other parts
+of SCons (other than Util), and have a reasonable chance of being useful
+in multiple places, rather then being topical only to one module/package.
"""
+# Warning: SCons.Util may not be able to import other parts of SCons
+# globally without hitting import loops, as various modules import
+# SCons.Util themselves. If a top-level import fails, try a local import.
+# If local imports work, please annotate them for pylint (and for human
+# readers) to know why, with:
+# importstuff # pylint: disable=import-outside-toplevel
+#
+# Be aware that Black will break this if the annotated line is too long -
+# which it almost certainly will be. It will split it like this:
+# from SCons.Errors import (
+# SConsEnvironmentError,
+# ) # pylint: disable=import-outside-toplevel
+# That's syntactically valid as far as Python goes, but pylint will not
+# recorgnize the annotation comment unless it's on the first line, like:
+# from SCons.Errors import ( # pylint: disable=import-outside-toplevel
+# SConsEnvironmentError,
+# )
+# (issue filed on this upstream, for now just be aware)
+
import copy
import hashlib
+import logging
import os
import re
import sys
import time
-from collections import UserDict, UserList, OrderedDict, deque
+from collections import UserDict, UserList, deque
from contextlib import suppress
from types import MethodType, FunctionType
-from typing import Optional, Union
+from typing import Optional, Union, Any, List
from logging import Formatter
-from .types import (
+# Util split into a package. Make sure things that used to work
+# when importing just Util itself still work:
+from .sctypes import (
DictTypes,
ListTypes,
SequenceTypes,
@@ -55,6 +81,7 @@ from .types import (
to_String,
to_String_for_subst,
to_String_for_signature,
+ to_Text,
to_bytes,
to_str,
get_env_bool,
@@ -81,24 +108,7 @@ from .envs import (
AddPathIfNotExists,
AddMethod,
)
-
-
-# Note: the Util package cannot import other parts of SCons globally without
-# hitting import loops. Both of these modules import SCons.Util early on,
-# and are imported in many other modules:
-# --> SCons.Warnings
-# --> SCons.Errors
-# If you run into places that have to do local imports for this reason,
-# annotate them for pylint and for human readers to know why:
-# pylint: disable=import-outside-toplevel
-# Be aware that Black can break this if the annotated line is too
-# long and it wants to split:
-# from SCons.Errors import (
-# SConsEnvironmentError,
-# ) # pylint: disable=import-outside-toplevel
-# That's syntactically valid, but pylint won't recorgnize it with the
-# annotation at the end, it would have to be on the first line
-# (issues filed upstream, for now just be aware)
+from .filelock import FileLock, SConsLockFailure
PYPY = hasattr(sys, 'pypy_translation_info')
@@ -183,10 +193,10 @@ class NodeList(UserList):
['foo', 'bar']
"""
- def __bool__(self):
+ def __bool__(self) -> bool:
return bool(self.data)
- def __str__(self):
+ def __str__(self) -> str:
return ' '.join(map(str, self.data))
def __iter__(self):
@@ -214,7 +224,7 @@ class DisplayEngine:
print_it = True
- def __call__(self, text, append_newline=1):
+ def __call__(self, text, append_newline: int=1) -> None:
if not self.print_it:
return
@@ -231,26 +241,33 @@ class DisplayEngine:
with suppress(IOError):
sys.stdout.write(str(text))
- def set_mode(self, mode):
+ def set_mode(self, mode) -> None:
self.print_it = mode
display = DisplayEngine()
-# TODO: W0102: Dangerous default value [] as argument (dangerous-default-value)
-def render_tree(root, child_func, prune=0, margin=[0], visited=None) -> str:
+# TODO: check if this could cause problems
+# pylint: disable=dangerous-default-value
+def render_tree(
+ root,
+ child_func,
+ prune: bool = False,
+ margin: List[bool] = [False],
+ visited: Optional[dict] = None,
+) -> str:
"""Render a tree of nodes into an ASCII tree view.
Args:
root: the root node of the tree
child_func: the function called to get the children of a node
prune: don't visit the same node twice
- margin: the format of the left margin to use for children of `root`.
- 1 results in a pipe, and 0 results in no pipe.
+ margin: the format of the left margin to use for children of *root*.
+ Each entry represents a column where a true value will display
+ a vertical bar and a false one a blank.
visited: a dictionary of visited nodes in the current branch if
- `prune` is 0, or in the whole tree if `prune` is 1.
+ *prune* is false, or in the whole tree if *prune* is true.
"""
-
rname = str(root)
# Initialize 'visited' dict, if required
@@ -274,7 +291,7 @@ def render_tree(root, child_func, prune=0, margin=[0], visited=None) -> str:
visited[rname] = True
for i, child in enumerate(children):
- margin.append(i < len(children)-1)
+ margin.append(i < len(children) - 1)
retval = retval + render_tree(child, child_func, prune, margin, visited)
margin.pop()
@@ -298,14 +315,15 @@ BOX_VERT_RIGHT = chr(0x251c) # '├'
BOX_HORIZ_DOWN = chr(0x252c) # '┬'
-# TODO: W0102: Dangerous default value [] as argument (dangerous-default-value)
+# TODO: check if this could cause problems
+# pylint: disable=dangerous-default-value
def print_tree(
root,
child_func,
- prune=0,
- showtags=False,
- margin=[0],
- visited=None,
+ prune: bool = False,
+ showtags: int = 0,
+ margin: List[bool] = [False],
+ visited: Optional[dict] = None,
lastChild: bool = False,
singleLineDraw: bool = False,
) -> None:
@@ -320,10 +338,13 @@ def print_tree(
child_func: the function called to get the children of a node
prune: don't visit the same node twice
showtags: print status information to the left of each node line
+ The default is false (value 0). A value of 2 will also print
+ a legend for the margin tags.
margin: the format of the left margin to use for children of *root*.
- 1 results in a pipe, and 0 results in no pipe.
+ Each entry represents a column, where a true value will display
+ a vertical bar and a false one a blank.
visited: a dictionary of visited nodes in the current branch if
- *prune* is 0, or in the whole tree if *prune* is 1.
+ *prune* is false, or in the whole tree if *prune* is true.
lastChild: this is the last leaf of a branch
singleLineDraw: use line-drawing characters rather than ASCII.
"""
@@ -404,7 +425,7 @@ def print_tree(
# if this item has children:
if children:
- margin.append(1) # Initialize margin with 1 for vertical bar.
+ margin.append(True) # Initialize margin for vertical bar.
idx = IDX(showtags)
_child = 0 # Initialize this for the first child.
for C in children[:-1]:
@@ -420,19 +441,19 @@ def print_tree(
singleLineDraw,
)
# margins are with space (index 0) because we arrived to the last child.
- margin[-1] = 0
+ margin[-1] = False
# for this call child and nr of children needs to be set 0, to signal the second phase.
print_tree(children[-1], child_func, prune, idx, margin, visited, True, singleLineDraw)
margin.pop() # destroy the last margin added
-def do_flatten(
+def do_flatten( # pylint: disable=redefined-outer-name,redefined-builtin
sequence,
result,
isinstance=isinstance,
StringTypes=StringTypes,
SequenceTypes=SequenceTypes,
-): # pylint: disable=redefined-outer-name,redefined-builtin
+) -> None:
for item in sequence:
if isinstance(item, StringTypes) or not isinstance(item, SequenceTypes):
result.append(item)
@@ -537,7 +558,7 @@ def semi_deepcopy(obj):
class Proxy:
"""A simple generic Proxy class, forwarding all calls to subject.
- This means you can take an object, let's call it `'obj_a`,
+ This means you can take an object, let's call it `'obj_a``,
and wrap it in this Proxy class, with a statement like this::
proxy_obj = Proxy(obj_a)
@@ -547,14 +568,15 @@ class Proxy:
x = proxy_obj.var1
since the :class:`Proxy` class does not have a :attr:`var1` attribute
- (but presumably `objA` does), the request actually is equivalent to saying::
+ (but presumably ``obj_a`` does), the request actually is equivalent
+ to saying::
x = obj_a.var1
Inherit from this class to create a Proxy.
With Python 3.5+ this does *not* work transparently
- for :class:`Proxy` subclasses that use special .__*__() method names,
+ for :class:`Proxy` subclasses that use special dunder method names,
because those names are now bound to the class, not the individual
instances. You now need to know in advance which special method names you
want to pass on to the underlying Proxy object, and specifically delegate
@@ -564,7 +586,7 @@ class Proxy:
__str__ = Delegate('__str__')
"""
- def __init__(self, subject):
+ def __init__(self, subject) -> None:
"""Wrap an object as a Proxy object"""
self._subject = subject
@@ -593,7 +615,7 @@ class Delegate:
class Foo(Proxy):
__str__ = Delegate('__str__')
"""
- def __init__(self, attribute):
+ def __init__(self, attribute) -> None:
self.attribute = attribute
def __get__(self, obj, cls):
@@ -758,14 +780,14 @@ else:
f = os.path.join(p, file)
if os.path.isfile(f):
try:
- st = os.stat(f)
+ mode = os.stat(f).st_mode
except OSError:
# os.stat() raises OSError, not IOError if the file
# doesn't exist, so in this case we let IOError get
# raised so as to not mask possibly serious disk or
# network issues.
continue
- if stat.S_IMODE(st[stat.ST_MODE]) & 0o111:
+ if stat.S_IXUSR & mode:
try:
reject.index(f)
except ValueError:
@@ -774,46 +796,61 @@ else:
return None
WhereIs.__doc__ = """\
-Return the path to an executable that matches `file`.
+Return the path to an executable that matches *file*.
-Searches the given `path` for `file`, respecting any filename
-extensions `pathext` (on the Windows platform only), and
-returns the full path to the matching command. If no
-command is found, return ``None``.
+Searches the given *path* for *file*, considering any filename
+extensions in *pathext* (on the Windows platform only), and
+returns the full path to the matching command of the first match,
+or ``None`` if there are no matches.
+Will not select any path name or names in the optional
+*reject* list.
-If `path` is not specified, :attr:`os.environ[PATH]` is used.
-If `pathext` is not specified, :attr:`os.environ[PATHEXT]`
-is used. Will not select any path name or names in the optional
-`reject` list.
+If *path* is ``None`` (the default), :attr:`os.environ[PATH]` is used.
+On Windows, If *pathext* is ``None`` (the default),
+:attr:`os.environ[PATHEXT]` is used.
+
+The construction environment method of the same name wraps a
+call to this function by filling in *path* from the execution
+environment if it is ``None`` (and for *pathext* on Windows,
+if necessary), so if called from there, this function
+will not backfill from :attr:`os.environ`.
+
+Note:
+ Finding things in :attr:`os.environ` may answer the question
+ "does *file* exist on the system", but not the question
+ "can SCons use that executable", unless the path element that
+ yields the match is also in the the Execution Environment
+ (e.g. ``env['ENV']['PATH']``). Since this utility function has no
+ environment reference, it cannot make that determination.
"""
if sys.platform == 'cygwin':
import subprocess # pylint: disable=import-outside-toplevel
- def get_native_path(path) -> str:
+ def get_native_path(path: str) -> str:
cp = subprocess.run(('cygpath', '-w', path), check=False, stdout=subprocess.PIPE)
return cp.stdout.decode().replace('\n', '')
else:
- def get_native_path(path) -> str:
+ def get_native_path(path: str) -> str:
return path
get_native_path.__doc__ = """\
Transform an absolute path into a native path for the system.
In Cygwin, this converts from a Cygwin path to a Windows path,
-without regard to whether `path` refers to an existing file
-system object. For other platforms, `path` is unchanged.
+without regard to whether *path* refers to an existing file
+system object. For other platforms, *path* is unchanged.
"""
def Split(arg) -> list:
"""Returns a list of file names or other objects.
- If `arg` is a string, it will be split on strings of white-space
- characters within the string. If `arg` is already a list, the list
- will be returned untouched. If `arg` is any other type of object,
- it will be returned as a list containing just the object.
+ If *arg* is a string, it will be split on whitespace
+ within the string. If *arg* is already a list, the list
+ will be returned untouched. If *arg* is any other type of object,
+ it will be returned in a single-item list.
>>> print(Split(" this is a string "))
['this', 'is', 'a', 'string']
@@ -853,12 +890,14 @@ class CLVar(UserList):
>>> c = CLVar("--some --opts and args")
>>> print(len(c), repr(c))
4 ['--some', '--opts', 'and', 'args']
- >>> c += " strips spaces "
+ >>> c += " strips spaces "
>>> print(len(c), repr(c))
6 ['--some', '--opts', 'and', 'args', 'strips', 'spaces']
+ >>> c += [" does not split or strip "]
+ 7 ['--some', '--opts', 'and', 'args', 'strips', 'spaces', ' does not split or strip ']
"""
- def __init__(self, initlist=None):
+ def __init__(self, initlist=None) -> None:
super().__init__(Split(initlist if initlist is not None else []))
def __add__(self, other):
@@ -870,16 +909,19 @@ class CLVar(UserList):
def __iadd__(self, other):
return super().__iadd__(CLVar(other))
- def __str__(self):
+ def __str__(self) -> str:
# Some cases the data can contain Nodes, so make sure they
# processed to string before handing them over to join.
return ' '.join([str(d) for d in self.data])
-class Selector(OrderedDict):
- """A callable ordered dictionary that maps file suffixes to
- dictionary values. We preserve the order in which items are added
- so that :func:`get_suffix` calls always return the first suffix added.
+class Selector(dict):
+ """A callable dict for file suffix lookup.
+
+ Often used to associate actions or emitters with file types.
+
+ Depends on insertion order being preserved so that :meth:`get_suffix`
+ calls always return the first suffix added.
"""
def __call__(self, env, source, ext=None):
if ext is None:
@@ -889,7 +931,7 @@ class Selector(OrderedDict):
ext = ""
try:
return self[ext]
- except KeyError:
+ except KeyError as exc:
# Try to perform Environment substitution on the keys of
# the dictionary before giving up.
s_dict = {}
@@ -901,7 +943,7 @@ class Selector(OrderedDict):
# to the same suffix. If one suffix is literal
# and a variable suffix contains this literal,
# the literal wins and we don't raise an error.
- raise KeyError(s_dict[s_k][0], k, s_k)
+ raise KeyError(s_dict[s_k][0], k, s_k) from exc
s_dict[s_k] = (k, v)
try:
return s_dict[ext][1]
@@ -915,15 +957,18 @@ class Selector(OrderedDict):
if sys.platform == 'cygwin':
# On Cygwin, os.path.normcase() lies, so just report back the
# fact that the underlying Windows OS is case-insensitive.
- def case_sensitive_suffixes(s1, s2) -> bool: # pylint: disable=unused-argument
+ def case_sensitive_suffixes(s1: str, s2: str) -> bool: # pylint: disable=unused-argument
return False
else:
- def case_sensitive_suffixes(s1, s2) -> bool:
+ def case_sensitive_suffixes(s1: str, s2: str) -> bool:
return os.path.normcase(s1) != os.path.normcase(s2)
+case_sensitive_suffixes.__doc__ = """\
+Returns whether platform distinguishes case in file suffixes."""
-def adjustixes(fname, pre, suf, ensure_suffix=False) -> str:
+
+def adjustixes(fname, pre, suf, ensure_suffix: bool=False) -> str:
"""Adjust filename prefixes and suffixes as needed.
Add `prefix` to `fname` if specified.
@@ -957,6 +1002,17 @@ def adjustixes(fname, pre, suf, ensure_suffix=False) -> str:
def unique(seq):
"""Return a list of the elements in seq without duplicates, ignoring order.
+ For best speed, all sequence elements should be hashable. Then
+ :func:`unique` will usually work in linear time.
+
+ If not possible, the sequence elements should enjoy a total
+ ordering, and if ``list(s).sort()`` doesn't raise ``TypeError``
+ it is assumed that they do enjoy a total ordering. Then
+ :func:`unique` will usually work in O(N*log2(N)) time.
+
+ If that's not possible either, the sequence elements must support
+ equality-testing. Then :func:`unique` will usually work in quadratic time.
+
>>> mylist = unique([1, 2, 3, 1, 2, 3])
>>> print(sorted(mylist))
[1, 2, 3]
@@ -966,17 +1022,6 @@ def unique(seq):
>>> mylist = unique(([1, 2], [2, 3], [1, 2]))
>>> print(sorted(mylist))
[[1, 2], [2, 3]]
-
- For best speed, all sequence elements should be hashable. Then
- unique() will usually work in linear time.
-
- If not possible, the sequence elements should enjoy a total
- ordering, and if list(s).sort() doesn't raise TypeError it's
- assumed that they do enjoy a total ordering. Then unique() will
- usually work in O(N*log2(N)) time.
-
- If that's not possible either, the sequence elements must support
- equality-testing. Then unique() will usually work in quadratic time.
"""
if not seq:
@@ -1045,12 +1090,12 @@ def logical_lines(physical_lines, joiner=''.join):
class LogicalLines:
- """ Wrapper class for the logical_lines method.
+ """Wrapper class for the :func:`logical_lines` function.
Allows us to read all "logical" lines at once from a given file object.
"""
- def __init__(self, fileobj):
+ def __init__(self, fileobj) -> None:
self.fileobj = fileobj
def readlines(self):
@@ -1060,20 +1105,21 @@ class LogicalLines:
class UniqueList(UserList):
"""A list which maintains uniqueness.
- Uniquing is lazy: rather than being assured on list changes, it is fixed
+ Uniquing is lazy: rather than being enforced on list changes, it is fixed
up on access by those methods which need to act on a unique list to be
- correct. That means things like "in" don't have to eat the uniquing time.
+ correct. That means things like membership tests don't have to eat the
+ uniquing time.
"""
- def __init__(self, initlist=None):
+ def __init__(self, initlist=None) -> None:
super().__init__(initlist)
self.unique = True
- def __make_unique(self):
+ def __make_unique(self) -> None:
if not self.unique:
self.data = uniquer_hashables(self.data)
self.unique = True
- def __repr__(self):
+ def __repr__(self) -> str:
self.__make_unique()
return super().__repr__()
@@ -1103,7 +1149,7 @@ class UniqueList(UserList):
# __contains__ doesn't need to worry about uniquing, inherit
- def __len__(self):
+ def __len__(self) -> int:
self.__make_unique()
return super().__len__()
@@ -1111,7 +1157,7 @@ class UniqueList(UserList):
self.__make_unique()
return super().__getitem__(i)
- def __setitem__(self, i, item):
+ def __setitem__(self, i, item) -> None:
super().__setitem__(i, item)
self.unique = False
@@ -1147,11 +1193,11 @@ class UniqueList(UserList):
result.unique = False
return result
- def append(self, item):
+ def append(self, item) -> None:
super().append(item)
self.unique = False
- def insert(self, i, item):
+ def insert(self, i, item) -> None:
super().insert(i, item)
self.unique = False
@@ -1163,7 +1209,7 @@ class UniqueList(UserList):
self.__make_unique()
return super().index(item, *args)
- def reverse(self):
+ def reverse(self) -> None:
self.__make_unique()
super().reverse()
@@ -1172,7 +1218,7 @@ class UniqueList(UserList):
self.__make_unique()
return super().sort(*args, **kwds)
- def extend(self, other):
+ def extend(self, other) -> None:
super().extend(other)
self.unique = False
@@ -1182,10 +1228,10 @@ class Unbuffered:
Delegates everything else to the wrapped object.
"""
- def __init__(self, file):
+ def __init__(self, file) -> None:
self.file = file
- def write(self, arg):
+ def write(self, arg) -> None:
# Stdout might be connected to a pipe that has been closed
# by now. The most likely reason for the pipe being closed
# is that the user has press ctrl-c. It this is the case,
@@ -1197,7 +1243,7 @@ class Unbuffered:
self.file.write(arg)
self.file.flush()
- def writelines(self, arg):
+ def writelines(self, arg) -> None:
with suppress(IOError):
self.file.writelines(arg)
self.file.flush()
@@ -1220,31 +1266,35 @@ def make_path_relative(path) -> str:
return path
-def silent_intern(x):
- """
+def silent_intern(__string: Any) -> str:
+ """Intern a string without failing.
+
Perform :mod:`sys.intern` on the passed argument and return the result.
If the input is ineligible for interning the original argument is
returned and no exception is thrown.
"""
try:
- return sys.intern(x)
+ return sys.intern(__string)
except TypeError:
- return x
+ return __string
def cmp(a, b) -> bool:
- """A cmp function because one is no longer available in python3."""
+ """A cmp function because one is no longer available in Python3."""
return (a > b) - (a < b)
def print_time():
"""Hack to return a value from Main if can't import Main."""
+ # this specifically violates the rule of Util not depending on other
+ # parts of SCons in order to work around other import-loop issues.
+ #
# pylint: disable=redefined-outer-name,import-outside-toplevel
from SCons.Script.Main import print_time
return print_time
-def wait_for_process_to_die(pid):
+def wait_for_process_to_die(pid) -> None:
"""
Wait for specified process to die, or alternatively kill it
NOTE: This function operates best with psutil pypi package
@@ -1277,20 +1327,31 @@ def wait_for_process_to_die(pid):
# From: https://stackoverflow.com/questions/1741972/how-to-use-different-formatters-with-the-same-logging-handler-in-python
class DispatchingFormatter(Formatter):
+ """Logging formatter which dispatches to various formatters."""
- def __init__(self, formatters, default_formatter):
+ def __init__(self, formatters, default_formatter) -> None:
self._formatters = formatters
self._default_formatter = default_formatter
def format(self, record):
- formatter = self._formatters.get(record.name, self._default_formatter)
+ # Search from record's logger up to its parents:
+ logger = logging.getLogger(record.name)
+ while logger:
+ # Check if suitable formatter for current logger exists:
+ if logger.name in self._formatters:
+ formatter = self._formatters[logger.name]
+ break
+ logger = logger.parent
+ else:
+ # If no formatter found, just use default:
+ formatter = self._default_formatter
return formatter.format(record)
def sanitize_shell_env(execution_env: dict) -> dict:
"""Sanitize all values in *execution_env*
- The execution environment (typically comes from (env['ENV']) is
+ The execution environment (typically comes from ``env['ENV']``) is
propagated to the shell, and may need to be cleaned first.
Args:
diff --git a/scons/scons-local-4.5.2/SCons/Util/envs.py b/scons/scons-local-4.7.0/SCons/Util/envs.py
similarity index 92%
rename from scons/scons-local-4.5.2/SCons/Util/envs.py
rename to scons/scons-local-4.7.0/SCons/Util/envs.py
index 963c963a8..db4d65ab9 100644
--- a/scons/scons-local-4.5.2/SCons/Util/envs.py
+++ b/scons/scons-local-4.7.0/SCons/Util/envs.py
@@ -2,21 +2,26 @@
#
# Copyright The SCons Foundation
-"""Various SCons utility functions
+"""
+SCons environment utility functions.
Routines for working with environments and construction variables
-that don't need the specifics of Environment.
+that don't need the specifics of the Environment class.
"""
import os
from types import MethodType, FunctionType
-from typing import Union
+from typing import Union, Callable, Optional, Any
-from .types import is_List, is_Tuple, is_String
+from .sctypes import is_List, is_Tuple, is_String
def PrependPath(
- oldpath, newpath, sep=os.pathsep, delete_existing=True, canonicalize=None
+ oldpath,
+ newpath,
+ sep=os.pathsep,
+ delete_existing: bool = True,
+ canonicalize: Optional[Callable] = None,
) -> Union[list, str]:
"""Prepend *newpath* path elements to *oldpath*.
@@ -50,10 +55,10 @@ def PrependPath(
if is_String(newpath):
newpaths = newpath.split(sep)
- elif not is_List(newpath) and not is_Tuple(newpath):
- newpaths = [newpath] # might be a Dir
- else:
+ elif is_List(newpath) or is_Tuple(newpath):
newpaths = newpath
+ else:
+ newpaths = [newpath] # might be a Dir
if canonicalize:
newpaths = list(map(canonicalize, newpaths))
@@ -102,7 +107,11 @@ def PrependPath(
def AppendPath(
- oldpath, newpath, sep=os.pathsep, delete_existing=True, canonicalize=None
+ oldpath,
+ newpath,
+ sep=os.pathsep,
+ delete_existing: bool = True,
+ canonicalize: Optional[Callable] = None,
) -> Union[list, str]:
"""Append *newpath* path elements to *oldpath*.
@@ -136,10 +145,10 @@ def AppendPath(
if is_String(newpath):
newpaths = newpath.split(sep)
- elif not is_List(newpath) and not is_Tuple(newpath):
- newpaths = [newpath] # might be a Dir
- else:
+ elif is_List(newpath) or is_Tuple(newpath):
newpaths = newpath
+ else:
+ newpaths = [newpath] # might be a Dir
if canonicalize:
newpaths = list(map(canonicalize, newpaths))
@@ -187,7 +196,7 @@ def AppendPath(
return sep.join(paths)
-def AddPathIfNotExists(env_dict, key, path, sep=os.pathsep):
+def AddPathIfNotExists(env_dict, key, path, sep: str = os.pathsep) -> None:
"""Add a path element to a construction variable.
`key` is looked up in `env_dict`, and `path` is added to it if it
@@ -229,12 +238,12 @@ class MethodWrapper:
a new underlying object being copied (without which we wouldn't need
to save that info).
"""
- def __init__(self, obj, method, name=None):
+ def __init__(self, obj: Any, method: Callable, name: Optional[str] = None) -> None:
if name is None:
name = method.__name__
self.object = obj
self.method = method
- self.name = name
+ self.name: str = name
setattr(self.object, name, self)
def __call__(self, *args, **kwargs):
@@ -265,7 +274,7 @@ class MethodWrapper:
# is not needed, the remaining bit is now used inline in AddMethod.
-def AddMethod(obj, function, name=None):
+def AddMethod(obj, function: Callable, name: Optional[str] = None) -> None:
"""Add a method to an object.
Adds *function* to *obj* if *obj* is a class object.
@@ -304,6 +313,8 @@ def AddMethod(obj, function, name=None):
function.__code__, function.__globals__, name, function.__defaults__
)
+ method: Union[MethodType, MethodWrapper, Callable]
+
if hasattr(obj, '__class__') and obj.__class__ is not type:
# obj is an instance, so it gets a bound method.
if hasattr(obj, "added_methods"):
diff --git a/scons/scons-local-4.7.0/SCons/Util/filelock.py b/scons/scons-local-4.7.0/SCons/Util/filelock.py
new file mode 100644
index 000000000..8ebf3889f
--- /dev/null
+++ b/scons/scons-local-4.7.0/SCons/Util/filelock.py
@@ -0,0 +1,150 @@
+# MIT License
+#
+# Copyright The SCons Foundation
+
+"""SCons file locking functions.
+
+Simple-minded filesystem-based locking. Provides a context manager
+which acquires a lock (or at least, permission) on entry and
+releases it on exit.
+
+Usage::
+
+ from SCons.Util.filelock import FileLock
+
+ with FileLock("myfile.txt", writer=True) as lock:
+ print(f"Lock on {lock.file} acquired.")
+ # work with the file as it is now locked
+"""
+
+# TODO: things to consider.
+# Is raising an exception the right thing for failing to get lock?
+# Is a filesystem lockfile scheme sufficient for our needs?
+# - or is it better to put locks on the actual file (fcntl/windows-based)?
+# ... Is that even viable in the case of a remote (network) file?
+# Is this safe enough? Or do we risk dangling lockfiles?
+# Permission issues in case of multi-user. This *should* be okay,
+# the cache usually goes in user's homedir, plus you already have
+# enough rights for the lockfile if the dir lets you create the cache.
+# Need a forced break-lock method?
+# The lock attributes could probably be made opaque. Showed one visible
+# in the example above, but not sure the benefit of that.
+
+import os
+import time
+from typing import Optional
+
+
+class SConsLockFailure(Exception):
+ """Lock failure exception."""
+
+
+class FileLock:
+ """Lock a file using a lockfile.
+
+ Basic locking for when multiple processes may hit an externally
+ shared resource that cannot depend on locking within a single SCons
+ process. SCons does not have a lot of those, but caches come to mind.
+
+ Cross-platform safe, does not use any OS-specific features. Provides
+ context manager support, or can be called with :meth:`acquire_lock`
+ and :meth:`release_lock`.
+
+ Lock can be a write lock, which is held until released, or a read
+ lock, which releases immediately upon aquisition - we want to not
+ read a file which somebody else may be writing, but not create the
+ writers starvation problem of the classic readers/writers lock.
+
+ TODO: Should default timeout be None (non-blocking), or 0 (block forever),
+ or some arbitrary number?
+
+ Arguments:
+ file: name of file to lock. Only used to build the lockfile name.
+ timeout: optional time (sec) to give up trying.
+ If ``None``, quit now if we failed to get the lock (non-blocking).
+ If 0, block forever (well, a long time).
+ delay: optional delay between tries [default 0.05s]
+ writer: if True, obtain the lock for safe writing. If False (default),
+ just wait till the lock is available, give it back right away.
+
+ Raises:
+ SConsLockFailure: if the operation "timed out", including the
+ non-blocking mode.
+ """
+
+ def __init__(
+ self,
+ file: str,
+ timeout: Optional[int] = None,
+ delay: Optional[float] = 0.05,
+ writer: bool = False,
+ ) -> None:
+ if timeout is not None and delay is None:
+ raise ValueError("delay cannot be None if timeout is None.")
+ # It isn't completely obvious where to put the lockfile.
+ # This scheme depends on diffrent processes using the same path
+ # to the lockfile, since the lockfile is the magic resource,
+ # not the file itself. getcwd() is no good for testcases, each of
+ # which run in a unique test directory. tempfile is no good,
+ # as those are (intentionally) unique per process.
+ # Our simple first guess is just put it where the file is.
+ self.file = file
+ self.lockfile = f"{file}.lock"
+ self.lock: Optional[int] = None
+ self.timeout = 999999 if timeout == 0 else timeout
+ self.delay = 0.0 if delay is None else delay
+ self.writer = writer
+
+ def acquire_lock(self) -> None:
+ """Acquire the lock, if possible.
+
+ If the lock is in use, check again every *delay* seconds.
+ Continue until lock acquired or *timeout* expires.
+ """
+ start_time = time.perf_counter()
+ while True:
+ try:
+ self.lock = os.open(self.lockfile, os.O_CREAT|os.O_EXCL|os.O_RDWR)
+ except (FileExistsError, PermissionError) as exc:
+ if self.timeout is None:
+ raise SConsLockFailure(
+ f"Could not acquire lock on {self.file!r}"
+ ) from exc
+ if (time.perf_counter() - start_time) > self.timeout:
+ raise SConsLockFailure(
+ f"Timeout waiting for lock on {self.file!r}."
+ ) from exc
+ time.sleep(self.delay)
+ else:
+ if not self.writer:
+ # reader: waits to get lock, but doesn't hold it
+ self.release_lock()
+ break
+
+ def release_lock(self) -> None:
+ """Release the lock by deleting the lockfile."""
+ if self.lock:
+ os.close(self.lock)
+ os.unlink(self.lockfile)
+ self.lock = None
+
+ def __enter__(self) -> "FileLock":
+ """Context manager entry: acquire lock if not holding."""
+ if not self.lock:
+ self.acquire_lock()
+ return self
+
+ def __exit__(self, exc_type, exc_value, exc_tb) -> None:
+ """Context manager exit: release lock if holding."""
+ if self.lock:
+ self.release_lock()
+
+ def __repr__(self) -> str:
+ """Nicer display if someone repr's the lock class."""
+ return (
+ f"{self.__class__.__name__}("
+ f"file={self.file!r}, "
+ f"timeout={self.timeout!r}, "
+ f"delay={self.delay!r}, "
+ f"writer={self.writer!r})"
+ )
diff --git a/scons/scons-local-4.5.2/SCons/Util/hashes.py b/scons/scons-local-4.7.0/SCons/Util/hashes.py
similarity index 93%
rename from scons/scons-local-4.5.2/SCons/Util/hashes.py
rename to scons/scons-local-4.7.0/SCons/Util/hashes.py
index b97cd4d07..566897abb 100644
--- a/scons/scons-local-4.5.2/SCons/Util/hashes.py
+++ b/scons/scons-local-4.7.0/SCons/Util/hashes.py
@@ -2,15 +2,18 @@
#
# Copyright The SCons Foundation
-"""SCons utility functions
+"""
+SCons hash utility routines.
-Routines for working with hash formats.
+Routines for working with content and signature hashes.
"""
+import functools
import hashlib
import sys
+from typing import Optional, Union
-from .types import to_bytes
+from .sctypes import to_bytes
# Default hash function and format. SCons-internal.
@@ -97,9 +100,9 @@ def _set_allowed_viable_default_hashes(hashlib_used, sys_used=sys) -> None:
continue
if len(ALLOWED_HASH_FORMATS) == 0:
- from SCons.Errors import (
+ from SCons.Errors import ( # pylint: disable=import-outside-toplevel
SConsEnvironmentError,
- ) # pylint: disable=import-outside-toplevel
+ )
# chain the exception thrown with the most recent error from hashlib.
raise SConsEnvironmentError(
@@ -159,9 +162,9 @@ def set_hash_format(hash_format, hashlib_used=hashlib, sys_used=sys):
if hash_format:
hash_format_lower = hash_format.lower()
if hash_format_lower not in ALLOWED_HASH_FORMATS:
- from SCons.Errors import (
+ from SCons.Errors import ( # pylint: disable=import-outside-toplevel
UserError,
- ) # pylint: disable=import-outside-toplevel
+ )
# User can select something not supported by their OS but
# normally supported by SCons, example, selecting MD5 in an
@@ -207,9 +210,9 @@ def set_hash_format(hash_format, hashlib_used=hashlib, sys_used=sys):
)
if _HASH_FUNCTION is None:
- from SCons.Errors import (
+ from SCons.Errors import ( # pylint: disable=import-outside-toplevel
UserError,
- ) # pylint: disable=import-outside-toplevel
+ )
raise UserError(
f'Hash format "{hash_format_lower}" is not available in your '
@@ -228,9 +231,9 @@ def set_hash_format(hash_format, hashlib_used=hashlib, sys_used=sys):
break
else:
# This is not expected to happen in practice.
- from SCons.Errors import (
+ from SCons.Errors import ( # pylint: disable=import-outside-toplevel
UserError,
- ) # pylint: disable=import-outside-toplevel
+ )
raise UserError(
'Your Python interpreter does not have MD5, SHA1, or SHA256. '
@@ -270,9 +273,9 @@ def _get_hash_object(hash_format, hashlib_used=hashlib, sys_used=sys):
"""
if hash_format is None:
if _HASH_FUNCTION is None:
- from SCons.Errors import (
+ from SCons.Errors import ( # pylint: disable=import-outside-toplevel
UserError,
- ) # pylint: disable=import-outside-toplevel
+ )
raise UserError(
'There is no default hash function. Did you call '
@@ -314,7 +317,7 @@ def hash_signature(s, hash_format=None):
return m.hexdigest()
-def hash_file_signature(fname, chunksize=65536, hash_format=None):
+def hash_file_signature(fname, chunksize: int=65536, hash_format=None):
"""
Generate the md5 signature of a file
@@ -334,6 +337,10 @@ def hash_file_signature(fname, chunksize=65536, hash_format=None):
if not blck:
break
m.update(to_bytes(blck))
+ # TODO: can use this when base is Python 3.8+
+ # while (blk := f.read(chunksize)) != b'':
+ # m.update(to_bytes(blk))
+
return m.hexdigest()
@@ -358,7 +365,7 @@ def hash_collect(signatures, hash_format=None):
_MD5_WARNING_SHOWN = False
-def _show_md5_warning(function_name):
+def _show_md5_warning(function_name) -> None:
"""Shows a deprecation warning for various MD5 functions."""
global _MD5_WARNING_SHOWN
@@ -380,7 +387,7 @@ def MD5signature(s):
return hash_signature(s)
-def MD5filesignature(fname, chunksize=65536):
+def MD5filesignature(fname, chunksize: int=65536):
"""Deprecated. Use :func:`hash_file_signature` instead."""
_show_md5_warning("MD5filesignature")
diff --git a/scons/scons-local-4.5.2/SCons/Util/types.py b/scons/scons-local-4.7.0/SCons/Util/sctypes.py
similarity index 75%
rename from scons/scons-local-4.5.2/SCons/Util/types.py
rename to scons/scons-local-4.7.0/SCons/Util/sctypes.py
index 2071217e9..bcbefb6c8 100644
--- a/scons/scons-local-4.5.2/SCons/Util/types.py
+++ b/scons/scons-local-4.7.0/SCons/Util/sctypes.py
@@ -7,6 +7,7 @@
Routines which check types and do type conversions.
"""
+import codecs
import os
import pprint
import re
@@ -112,19 +113,19 @@ class Null:
def __new__(cls, *args, **kwargs):
if '_instance' not in vars(cls):
- cls._instance = super(Null, cls).__new__(cls, *args, **kwargs)
+ cls._instance = super().__new__(cls, *args, **kwargs)
return cls._instance
- def __init__(self, *args, **kwargs):
+ def __init__(self, *args, **kwargs) -> None:
pass
def __call__(self, *args, **kwargs):
return self
- def __repr__(self):
+ def __repr__(self) -> str:
return f"Null(0x{id(self):08X})"
- def __bool__(self):
+ def __bool__(self) -> bool:
return False
def __getattr__(self, name):
@@ -140,7 +141,7 @@ class Null:
class NullSeq(Null):
"""A Null object that can also be iterated over."""
- def __len__(self):
+ def __len__(self) -> int:
return 0
def __iter__(self):
@@ -187,7 +188,11 @@ def to_String( # pylint: disable=redefined-outer-name,redefined-builtin
UserString=UserString,
BaseStringTypes=BaseStringTypes,
) -> str:
- """Return a string version of obj."""
+ """Return a string version of obj.
+
+ Use this for data likely to be well-behaved. Use
+ :func:`to_Text` for unknown file data that needs to be decoded.
+ """
if isinstance(obj, BaseStringTypes):
# Early out when already a string!
return obj
@@ -241,27 +246,60 @@ def to_String_for_signature( # pylint: disable=redefined-outer-name,redefined-b
# TODO: Change code when floor is raised to PY36
return pprint.pformat(obj, width=1000000)
return to_String_for_subst(obj)
- else:
- return f()
+ return f()
-def get_env_bool(env, name, default=False) -> bool:
+def to_Text(data: bytes) -> str:
+ """Return bytes data converted to text.
+
+ Useful for whole-file reads where the data needs some interpretation,
+ particularly for Scanners. Attempts to figure out what the encoding of
+ the text is based upon the BOM bytes, and then decodes the contents so
+ that it's a valid python string.
+ """
+ _encoding_map = [
+ (codecs.BOM_UTF8, 'utf-8'),
+ (codecs.BOM_UTF16_LE, 'utf-16le'),
+ (codecs.BOM_UTF16_BE, 'utf-16be'),
+ (codecs.BOM_UTF32_LE, 'utf-32le'),
+ (codecs.BOM_UTF32_BE, 'utf-32be'),
+ ]
+
+ # First look for Byte-order-mark sequences to identify the encoding.
+ # Strip these since some codecs do, some don't.
+ for bom, encoding in _encoding_map:
+ if data.startswith(bom):
+ return data[len(bom):].decode(encoding, errors='backslashreplace')
+
+ # If we didn't see a BOM, try UTF-8, then the "preferred" encoding
+ # (the files might be written on this system), then finally latin-1.
+ # TODO: possibly should be a way for the build to set an encoding.
+ try:
+ return data.decode('utf-8')
+ except UnicodeDecodeError:
+ try:
+ import locale
+ prefencoding = locale.getpreferredencoding()
+ return data.decode(prefencoding)
+ except (UnicodeDecodeError, LookupError):
+ return data.decode('latin-1', errors='backslashreplace')
+
+
+def get_env_bool(env, name: str, default: bool=False) -> bool:
"""Convert a construction variable to bool.
- If the value of *name* in *env* is 'true', 'yes', 'y', 'on' (case
- insensitive) or anything convertible to int that yields non-zero then
- return ``True``; if 'false', 'no', 'n', 'off' (case insensitive)
- or a number that converts to integer zero return ``False``.
- Otherwise, return `default`.
+ If the value of *name* in dict-like object *env* is 'true', 'yes',
+ 'y', 'on' (case insensitive) or anything convertible to int that
+ yields non-zero, return ``True``; if 'false', 'no', 'n', 'off'
+ (case insensitive) or a number that converts to integer zero return
+ ``False``. Otherwise, or if *name* is not found, return the value
+ of *default*.
Args:
- env: construction environment, or any dict-like object
- name: name of the variable
+ env: construction environment, or any dict-like object.
+ name: name of the variable.
default: value to return if *name* not in *env* or cannot
- be converted (default: False)
-
- Returns:
- the "truthiness" of `name`
+ be converted (default: False).
"""
try:
var = env[name]
@@ -279,10 +317,10 @@ def get_env_bool(env, name, default=False) -> bool:
return default
-def get_os_env_bool(name, default=False) -> bool:
- """Convert an environment variable to bool.
+def get_os_env_bool(name: str, default: bool=False) -> bool:
+ """Convert an external environment variable to boolean.
- Conversion is the same as for :func:`get_env_bool`.
+ Like :func:`get_env_bool`, but uses :attr:`os.environ` as the lookup dict.
"""
return get_env_bool(os.environ, name, default)
@@ -293,10 +331,10 @@ _get_env_var = re.compile(r'^\$([_a-zA-Z]\w*|{[_a-zA-Z]\w*})$')
def get_environment_var(varstr) -> Optional[str]:
"""Return undecorated construction variable string.
- Determine if `varstr` looks like a reference
- to a single environment variable, like `"$FOO"` or `"${FOO}"`.
- If so, return that variable with no decorations, like `"FOO"`.
- If not, return `None`.
+ Determine if *varstr* looks like a reference
+ to a single environment variable, like ``"$FOO"`` or ``"${FOO}"``.
+ If so, return that variable with no decorations, like ``"FOO"``.
+ If not, return ``None``.
"""
mo = _get_env_var.match(to_String(varstr))
if mo:
diff --git a/scons/scons-local-4.7.0/SCons/Util/sctyping.py b/scons/scons-local-4.7.0/SCons/Util/sctyping.py
new file mode 100644
index 000000000..5da5eb9fe
--- /dev/null
+++ b/scons/scons-local-4.7.0/SCons/Util/sctyping.py
@@ -0,0 +1,33 @@
+# SPDX-License-Identifier: MIT
+#
+# Copyright The SCons Foundation
+
+"""Various SCons type aliases.
+
+For representing complex types across the entire repo without risking
+circular dependencies, we take advantage of TYPE_CHECKING to import
+modules in an tool-only environment. This allows us to introduce
+hinting that resolves as expected in IDEs without clashing at runtime.
+
+For consistency, it's recommended to ALWAYS use these aliases in a
+type-hinting context, even if the type is actually expected to be
+resolved in a given file.
+"""
+
+from typing import Union, TYPE_CHECKING
+
+if TYPE_CHECKING:
+ import SCons.Executor
+
+
+# Because we don't have access to TypeAlias until 3.10, we have to utilize
+# 'Union' for all aliases. As it expects at least two entries, anything that
+# is only represented with a single type needs to list itself twice.
+ExecutorType = Union["SCons.Executor.Executor", "SCons.Executor.Executor"]
+
+
+# Local Variables:
+# tab-width:4
+# indent-tabs-mode:nil
+# End:
+# vim: set expandtab tabstop=4 shiftwidth=4:
diff --git a/scons/scons-local-4.7.0/SCons/Util/stats.py b/scons/scons-local-4.7.0/SCons/Util/stats.py
new file mode 100644
index 000000000..ce820e66c
--- /dev/null
+++ b/scons/scons-local-4.7.0/SCons/Util/stats.py
@@ -0,0 +1,224 @@
+# 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.
+
+"""
+SCons statistics routines.
+
+This package provides a way to gather various statistics during an SCons
+run and dump that info in several formats
+
+Additionally, it probably makes sense to do stderr/stdout output of
+those statistics here as well
+
+There are basically two types of stats:
+
+1. Timer (start/stop/time) for specific event. These events can be
+ hierarchical. So you can record the children events of some parent.
+ Think program compile could contain the total Program builder time,
+ which could include linking, and stripping the executable
+
+2. Counter. Counting the number of events and/or objects created. This
+ would likely only be reported at the end of a given SCons run,
+ though it might be useful to query during a run.
+"""
+
+from abc import ABC
+
+import platform
+import json
+import sys
+from datetime import datetime
+
+import SCons.Debug
+
+all_stats = {}
+ENABLE_JSON = False
+JSON_OUTPUT_FILE = 'scons_stats.json'
+
+def add_stat_type(name, stat_object):
+ """Add a statistic type to the global collection"""
+ if name in all_stats:
+ raise UserWarning(f'Stat type {name} already exists')
+ all_stats[name] = stat_object
+
+
+class Stats(ABC):
+ def __init__(self):
+ self.stats = []
+ self.labels = []
+ self.append = self.do_nothing
+ self.print_stats = self.do_nothing
+ self.enabled = False
+
+ def do_append(self, label):
+ raise NotImplementedError
+
+ def do_print(self):
+ raise NotImplementedError
+
+ def enable(self, outfp):
+ self.outfp = outfp
+ self.append = self.do_append
+ self.print_stats = self.do_print
+ self.enabled = True
+
+ def do_nothing(self, *args, **kw):
+ pass
+
+
+class CountStats(Stats):
+
+ def __init__(self):
+ super().__init__()
+ self.stats_table = {}
+
+ def do_append(self, label):
+ self.labels.append(label)
+ self.stats.append(SCons.Debug.fetchLoggedInstances())
+
+ def do_print(self):
+ self.stats_table = {}
+ for s in self.stats:
+ for n in [t[0] for t in s]:
+ self.stats_table[n] = [0, 0, 0, 0]
+ i = 0
+ for s in self.stats:
+ for n, c in s:
+ self.stats_table[n][i] = c
+ i = i + 1
+ self.outfp.write("Object counts:\n")
+ pre = [" "]
+ post = [" %s\n"]
+ l = len(self.stats)
+ fmt1 = ''.join(pre + [' %7s'] * l + post)
+ fmt2 = ''.join(pre + [' %7d'] * l + post)
+ labels = self.labels[:l]
+ labels.append(("", "Class"))
+ self.outfp.write(fmt1 % tuple(x[0] for x in labels))
+ self.outfp.write(fmt1 % tuple(x[1] for x in labels))
+ for k in sorted(self.stats_table.keys()):
+ r = self.stats_table[k][:l] + [k]
+ self.outfp.write(fmt2 % tuple(r))
+
+
+class MemStats(Stats):
+ def do_append(self, label):
+ self.labels.append(label)
+ self.stats.append(SCons.Debug.memory())
+
+ def do_print(self):
+ fmt = 'Memory %-32s %12d\n'
+ for label, stats in zip(self.labels, self.stats):
+ self.outfp.write(fmt % (label, stats))
+
+
+class TimeStats(Stats):
+ def __init__(self):
+ super().__init__()
+ self.totals = {}
+ self.commands = {} # we get order from insertion order, and can address individual via dict
+
+ def total_times(self, build_time, sconscript_time, scons_exec_time, command_exec_time):
+ self.totals = {
+ 'build_time': build_time,
+ 'sconscript_time': sconscript_time,
+ 'scons_exec_time': scons_exec_time,
+ 'command_exec_time': command_exec_time
+ }
+
+ def add_command(self, command, start_time, finish_time):
+ if command in self.commands:
+ print("Duplicate command %s" % command)
+ self.commands[command] = {'start': start_time,
+ 'end' : finish_time,
+ 'duration': finish_time - start_time}
+
+
+count_stats = CountStats()
+memory_stats = MemStats()
+time_stats = TimeStats()
+
+
+def write_scons_stats_file():
+ """
+ Actually write the JSON file with debug information.
+ Depending which of : count, time, action-timestamps,memory their information will be written.
+ """
+
+ # Have to import where used to avoid import loop
+ from SCons.Script import ( # pylint: disable=import-outside-toplevel
+ BUILD_TARGETS,
+ COMMAND_LINE_TARGETS,
+ ARGUMENTS,
+ ARGLIST,
+ )
+ # print(f"DUMPING JSON FILE: {JSON_OUTPUT_FILE}")
+ json_structure = {}
+ if count_stats.enabled:
+ json_structure['Object counts'] = {}
+
+ oc = json_structure['Object counts']
+ for c in count_stats.stats_table:
+ oc[c] = {}
+ for l, v in zip(count_stats.labels, count_stats.stats_table[c]):
+ oc[c][''.join(l)] = v
+
+ if memory_stats.enabled:
+ json_structure['Memory'] = {}
+
+ m = json_structure['Memory']
+ for label, stats in zip(memory_stats.labels, memory_stats.stats):
+ m[label] = stats
+
+ if time_stats.enabled:
+ json_structure['Time'] = {'Commands': time_stats.commands,
+ 'Totals': time_stats.totals}
+
+ # Now add information about this build to the JSON file
+ json_structure['Build_Info'] = {
+ 'BUILD_TARGETS' : [str(t) for t in BUILD_TARGETS],
+ 'ARGUMENTS' : [str(a) for a in ARGUMENTS],
+ 'ARGLIST' : [ str(al) for al in ARGLIST],
+ 'COMMAND_LINE_TARGETS' : [ str(clt) for clt in COMMAND_LINE_TARGETS],
+ 'ARGV' : sys.argv,
+ 'TIME' : datetime.now().isoformat(),
+ 'HOST' : platform.node(),
+ 'PYTHON_VERSION' : {
+ 'major' : sys.version_info.major,
+ 'minor' : sys.version_info.minor,
+ 'micro' : sys.version_info.micro,
+ 'releaselevel' : sys.version_info.releaselevel,
+ 'serial' : sys.version_info.serial,
+ }
+ }
+
+
+ with open(JSON_OUTPUT_FILE, 'w') as sf:
+ sf.write(json.dumps(json_structure, indent=4))
+
+
+# Local Variables:
+# tab-width:4
+# indent-tabs-mode:nil
+# End:
+# vim: set expandtab tabstop=4 shiftwidth=4:
diff --git a/scons/scons-local-4.5.2/SCons/Utilities/ConfigureCache.py b/scons/scons-local-4.7.0/SCons/Utilities/ConfigureCache.py
similarity index 98%
rename from scons/scons-local-4.5.2/SCons/Utilities/ConfigureCache.py
rename to scons/scons-local-4.7.0/SCons/Utilities/ConfigureCache.py
index 67aac3c5b..fe2aabbe5 100644
--- a/scons/scons-local-4.5.2/SCons/Utilities/ConfigureCache.py
+++ b/scons/scons-local-4.7.0/SCons/Utilities/ConfigureCache.py
@@ -38,7 +38,7 @@ import glob
import json
import os
-def rearrange_cache_entries(current_prefix_len, new_prefix_len):
+def rearrange_cache_entries(current_prefix_len, new_prefix_len) -> None:
"""Move cache files if prefix length changed.
Move the existing cache files to new directories of the
@@ -123,7 +123,7 @@ def main():
if not os.path.exists('config'):
# old config dirs did not have a 'config' file. Try to update.
# Validate the only files in the directory are directories 0-9, a-f
- expected = ['{:X}'.format(x) for x in range(0, 16)]
+ expected = [f'{x:X}' for x in range(0, 16)]
if not set(os.listdir('.')).issubset(expected):
raise RuntimeError(
"%s does not look like a valid version 1 cache directory" % cache)
diff --git a/scons/scons-local-4.5.2/SCons/Utilities/__init__.py b/scons/scons-local-4.7.0/SCons/Utilities/__init__.py
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Utilities/__init__.py
rename to scons/scons-local-4.7.0/SCons/Utilities/__init__.py
diff --git a/scons/scons-local-4.5.2/SCons/Utilities/sconsign.py b/scons/scons-local-4.7.0/SCons/Utilities/sconsign.py
similarity index 91%
rename from scons/scons-local-4.5.2/SCons/Utilities/sconsign.py
rename to scons/scons-local-4.7.0/SCons/Utilities/sconsign.py
index ae6919693..4cef4779b 100644
--- a/scons/scons-local-4.5.2/SCons/Utilities/sconsign.py
+++ b/scons/scons-local-4.7.0/SCons/Utilities/sconsign.py
@@ -46,33 +46,15 @@ def my_whichdb(filename):
try:
with open(filename + ".dblite", "rb"):
return "SCons.dblite"
- except IOError:
+ except OSError:
pass
return whichdb(filename)
-def my_import(mname):
- """Import database module.
-
- This was used if the module was *not* SCons.dblite, to allow
- for programmatic importing. It is no longer used, in favor of
- importlib.import_module, and will be removed eventually.
- """
- import imp
-
- if '.' in mname:
- i = mname.rfind('.')
- parent = my_import(mname[:i])
- fp, pathname, description = imp.find_module(mname[i+1:], parent.__path__)
- else:
- fp, pathname, description = imp.find_module(mname)
- return imp.load_module(mname, fp, pathname, description)
-
-
class Flagger:
default_value = 1
- def __setitem__(self, item, value):
+ def __setitem__(self, item, value) -> None:
self.__dict__[item] = value
self.default_value = 0
@@ -201,7 +183,7 @@ def field(name, entry, verbose=Verbose):
return val
-def nodeinfo_raw(name, ninfo, prefix=""):
+def nodeinfo_raw(name, ninfo, prefix: str=""):
"""
This just formats the dictionary, which we would normally use str()
to do, except that we want the keys sorted for deterministic output.
@@ -219,7 +201,7 @@ def nodeinfo_raw(name, ninfo, prefix=""):
return name + ': {' + ', '.join(values) + '}'
-def nodeinfo_cooked(name, ninfo, prefix=""):
+def nodeinfo_cooked(name, ninfo, prefix: str=""):
try:
field_list = ninfo.field_list
except AttributeError:
@@ -239,7 +221,7 @@ def nodeinfo_cooked(name, ninfo, prefix=""):
nodeinfo_string = nodeinfo_cooked
-def printfield(name, entry, prefix=""):
+def printfield(name, entry, prefix: str="") -> None:
outlist = field("implicit", entry, 0)
if outlist:
if Verbose:
@@ -253,7 +235,7 @@ def printfield(name, entry, prefix=""):
print(" " + outact)
-def printentries(entries, location):
+def printentries(entries, location) -> None:
if Print_Entries:
for name in Print_Entries:
try:
@@ -282,7 +264,7 @@ def printentries(entries, location):
class Do_SConsignDB:
- def __init__(self, dbm_name, dbm):
+ def __init__(self, dbm_name, dbm) -> None:
self.dbm_name = dbm_name
self.dbm = dbm
@@ -297,7 +279,7 @@ class Do_SConsignDB:
# .sconsign => .sconsign.dblite
# .sconsign.dblite => .sconsign.dblite.dblite
db = self.dbm.open(fname, "r")
- except (IOError, OSError) as e:
+ except OSError as e:
print_e = e
try:
# That didn't work, so try opening the base name,
@@ -305,14 +287,14 @@ class Do_SConsignDB:
# (for example), the dbm module will put the suffix back
# on for us and open it anyway.
db = self.dbm.open(os.path.splitext(fname)[0], "r")
- except (IOError, OSError):
+ except OSError:
# That didn't work either. See if the file name
# they specified even exists (independent of the dbm
# suffix-mangling).
try:
with open(fname, "rb"):
pass # this is a touch only, we don't use it here.
- except (IOError, OSError) as e:
+ except OSError as e:
# Nope, that file doesn't even exist, so report that
# fact back.
print_e = e
@@ -346,7 +328,7 @@ class Do_SConsignDB:
self.printentries(dir, db[dir])
@staticmethod
- def printentries(dir, val):
+ def printentries(dir, val) -> None:
try:
print('=== ' + dir + ':')
except TypeError:
@@ -370,13 +352,13 @@ def Do_SConsignDir(name):
sys.stderr.write(err)
return
printentries(sconsign.entries, args[0])
- except (IOError, OSError) as e:
+ except OSError as e:
sys.stderr.write("sconsign: %s\n" % e)
return
##############################################################################
-def main():
+def main() -> None:
global Do_Call
global nodeinfo_string
global args
@@ -449,8 +431,6 @@ Options:
dbm = SCons.dblite
# Ensure that we don't ignore corrupt DB files,
- # this was handled by calling my_import('SCons.dblite')
- # again in earlier versions...
SCons.dblite.IGNORE_CORRUPT_DBFILES = False
except ImportError:
sys.stderr.write("sconsign: illegal file format `%s'\n" % a)
@@ -492,8 +472,6 @@ Options:
dbm = SCons.dblite
# Ensure that we don't ignore corrupt DB files,
- # this was handled by calling my_import('SCons.dblite')
- # again in earlier versions...
SCons.dblite.IGNORE_CORRUPT_DBFILES = False
Do_SConsignDB(Map_Module.get(dbm_name, dbm_name), dbm)(a)
else:
diff --git a/scons/scons-local-4.5.2/SCons/Variables/BoolVariable.py b/scons/scons-local-4.7.0/SCons/Variables/BoolVariable.py
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Variables/BoolVariable.py
rename to scons/scons-local-4.7.0/SCons/Variables/BoolVariable.py
diff --git a/scons/scons-local-4.5.2/SCons/Variables/EnumVariable.py b/scons/scons-local-4.7.0/SCons/Variables/EnumVariable.py
similarity index 98%
rename from scons/scons-local-4.5.2/SCons/Variables/EnumVariable.py
rename to scons/scons-local-4.7.0/SCons/Variables/EnumVariable.py
index e39eb0283..1a4f3fbde 100644
--- a/scons/scons-local-4.5.2/SCons/Variables/EnumVariable.py
+++ b/scons/scons-local-4.7.0/SCons/Variables/EnumVariable.py
@@ -56,7 +56,7 @@ def _validator(key, val, env, vals) -> None:
'Invalid value for option %s: %s. Valid values are: %s' % (key, val, vals))
-def EnumVariable(key, help, default, allowed_values, map={}, ignorecase=0) -> Tuple[str, str, str, Callable, Callable]:
+def EnumVariable(key, help, default, allowed_values, map={}, ignorecase: int=0) -> Tuple[str, str, str, Callable, Callable]:
"""Return a tuple describing an enumaration SCons Variable.
The input parameters describe an option with only certain values
diff --git a/scons/scons-local-4.5.2/SCons/Variables/ListVariable.py b/scons/scons-local-4.7.0/SCons/Variables/ListVariable.py
similarity index 93%
rename from scons/scons-local-4.5.2/SCons/Variables/ListVariable.py
rename to scons/scons-local-4.7.0/SCons/Variables/ListVariable.py
index 7bd6053d0..a0640e634 100644
--- a/scons/scons-local-4.5.2/SCons/Variables/ListVariable.py
+++ b/scons/scons-local-4.7.0/SCons/Variables/ListVariable.py
@@ -61,7 +61,7 @@ __all__ = ['ListVariable',]
class _ListVariable(collections.UserList):
- def __init__(self, initlist=None, allowedElems=None):
+ def __init__(self, initlist=None, allowedElems=None) -> None:
if initlist is None:
initlist = []
if allowedElems is None:
@@ -70,24 +70,24 @@ class _ListVariable(collections.UserList):
self.allowedElems = sorted(allowedElems)
def __cmp__(self, other):
- raise NotImplementedError
+ return NotImplemented
def __eq__(self, other):
- raise NotImplementedError
+ return NotImplemented
def __ge__(self, other):
- raise NotImplementedError
+ return NotImplemented
def __gt__(self, other):
- raise NotImplementedError
+ return NotImplemented
def __le__(self, other):
- raise NotImplementedError
+ return NotImplemented
def __lt__(self, other):
- raise NotImplementedError
+ return NotImplemented
- def __str__(self):
+ def __str__(self) -> str:
if not len(self):
return 'none'
self.data.sort()
diff --git a/scons/scons-local-4.5.2/SCons/Variables/PackageVariable.py b/scons/scons-local-4.7.0/SCons/Variables/PackageVariable.py
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Variables/PackageVariable.py
rename to scons/scons-local-4.7.0/SCons/Variables/PackageVariable.py
diff --git a/scons/scons-local-4.5.2/SCons/Variables/PathVariable.py b/scons/scons-local-4.7.0/SCons/Variables/PathVariable.py
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/Variables/PathVariable.py
rename to scons/scons-local-4.7.0/SCons/Variables/PathVariable.py
diff --git a/scons/scons-local-4.5.2/SCons/Variables/__init__.py b/scons/scons-local-4.7.0/SCons/Variables/__init__.py
similarity index 97%
rename from scons/scons-local-4.5.2/SCons/Variables/__init__.py
rename to scons/scons-local-4.7.0/SCons/Variables/__init__.py
index fc78de553..fe1b4982f 100644
--- a/scons/scons-local-4.5.2/SCons/Variables/__init__.py
+++ b/scons/scons-local-4.7.0/SCons/Variables/__init__.py
@@ -57,7 +57,7 @@ class Variables:
"""
instance = None
- def __init__(self, files=None, args=None, is_global=True):
+ def __init__(self, files=None, args=None, is_global: bool=True) -> None:
if args is None:
args = {}
self.options = []
@@ -76,7 +76,7 @@ class Variables:
if not Variables.instance:
Variables.instance=self
- def _do_add(self, key, help="", default=None, validator=None, converter=None, **kwargs) -> None:
+ def _do_add(self, key, help: str="", default=None, validator=None, converter=None, **kwargs) -> None:
class Variable:
pass
@@ -182,7 +182,7 @@ class Variables:
sys.path.insert(0, dir)
try:
values['__name__'] = filename
- with open(filename, 'r') as f:
+ with open(filename) as f:
contents = f.read()
exec(contents, {}, values)
finally:
@@ -285,7 +285,7 @@ class Variables:
fh.write('%s = %s\n' % (option.key, repr(value)))
except KeyError:
pass
- except IOError as x:
+ except OSError as x:
raise SCons.Errors.UserError('Error writing options to file: %s\n%s' % (filename, x))
def GenerateHelpText(self, env, sort=None) -> str:
diff --git a/scons/scons-local-4.7.0/SCons/Warnings.py b/scons/scons-local-4.7.0/SCons/Warnings.py
new file mode 100644
index 000000000..d604659c4
--- /dev/null
+++ b/scons/scons-local-4.7.0/SCons/Warnings.py
@@ -0,0 +1,298 @@
+# 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.
+
+"""The SCons Warnings framework.
+
+Enables issuing warnings in situations where it is useful to alert
+the user of a condition that does not warrant raising an exception
+that could terminate the program.
+
+A new warning class should inherit (perhaps indirectly) from one of
+two base classes: :exc:`SConsWarning` or :exc:`WarningOnByDefault`,
+which are the same except warnings derived from the latter will start
+out in an enabled state. Enabled warnings cause a message to be
+printed when called, disabled warnings are silent.
+
+There is also a hierarchy for indicating deprecations and future
+changes: for these, derive from :exc:`DeprecatedWarning`,
+:exc:`MandatoryDeprecatedWarning`, :exc:`FutureDeprecatedWarning`
+or :exc:`FutureReservedVariableWarning`.
+
+Whether or not to display warnings, beyond those that are on by
+default, is controlled through the command line (``--warn``) or
+through ``SetOption('warn')``. The names used there use a different
+naming style than the warning class names. :func:`process_warn_strings`
+converts the names before enabling/disabling.
+
+The behavior of issuing only a message (for "enabled" warnings) can
+be toggled to raising an exception instead by calling the
+:func:`warningAsException` function.
+
+For new/removed warnings, the manpage needs to be kept in sync.
+Any warning class defined here is accepted, but we don't want to make
+people have to dig around to find the names. Warnings do not have to
+be defined in this file, though it is preferred: those defined elsewhere
+cannot use the enable/disable functionality unless they monkeypatch the
+warning into this module's namespace.
+
+You issue a warning, either in SCons code or in a build project's
+SConscripts, by calling the :func:`warn` function defined in this module.
+Raising directly with an instance of a warning class bypasses the
+framework and it will behave like an ordinary exception.
+"""
+
+import sys
+from typing import Callable, Sequence, Optional
+
+import SCons.Errors
+
+# _enabled is a list of 2-tuples with a warning class object and a
+# boolean (True if that warning is enabled). Initialized in SCons/Main.py.
+_enabled = []
+
+# If False, just emit the msg for an enabled warning; else raise exception
+_warningAsException: bool = False
+
+# Function to emit the warning. Initialized by SCons/Main.py for regular use;
+# the unit test will set to a capturing version for testing.
+_warningOut: Optional[Callable] = None
+
+
+class SConsWarning(SCons.Errors.UserError):
+ """Base class for all SCons warnings."""
+
+class WarningOnByDefault(SConsWarning):
+ """Base class for SCons warnings that are enabled by default."""
+
+SConsWarningOnByDefault = WarningOnByDefault # transition to new name
+
+
+class LinkWarning(WarningOnByDefault):
+ """Base class for linker warnings."""
+
+# NOTE: If you add a new warning class here, add it to the man page, too!
+
+# General warnings
+
+class CacheVersionWarning(WarningOnByDefault):
+ """The derived-file cache directory has an out of date config."""
+
+class CacheWriteErrorWarning(SConsWarning):
+ """Problems writing a derived file to the cache."""
+
+class CacheCleanupErrorWarning(SConsWarning):
+ """Problems removing retrieved target prior to rebuilding."""
+
+class CorruptSConsignWarning(WarningOnByDefault):
+ """Problems decoding the contents of the sconsign database."""
+
+class DependencyWarning(SConsWarning):
+ """A scanner identified a dependency but did not add it."""
+
+class DevelopmentVersionWarning(WarningOnByDefault):
+ """Use of a deprecated feature."""
+
+class DuplicateEnvironmentWarning(WarningOnByDefault):
+ """A target appears in more than one consenv with identical actions.
+
+ A duplicate target with different rules cannot be built;
+ with the same rule it can, but this could indicate a problem in
+ the build configuration.
+ """
+
+class FortranCxxMixWarning(LinkWarning):
+ """Fortran and C++ objects appear together in a link line.
+
+ Some compilers support this, others do not.
+ """
+
+class FutureReservedVariableWarning(WarningOnByDefault):
+ """Setting a variable marked to become reserved in a future release."""
+
+class MisleadingKeywordsWarning(WarningOnByDefault):
+ """Use of possibly misspelled kwargs in Builder calls."""
+
+class MissingSConscriptWarning(WarningOnByDefault):
+ """The script specified in an SConscript() call was not found.
+
+ TODO: this is now an error, so no need for a warning. Left in for
+ a while in case anyone is using, remove eventually.
+
+ Manpage entry removed in 4.6.0.
+ """
+
+class NoObjectCountWarning(WarningOnByDefault):
+ """Object counting (debug mode) could not be enabled."""
+
+class NoParallelSupportWarning(WarningOnByDefault):
+ """Fell back to single-threaded build, as no thread support found."""
+
+class ReservedVariableWarning(WarningOnByDefault):
+ """Attempt to set reserved construction variable names."""
+
+class StackSizeWarning(WarningOnByDefault):
+ """Requested thread stack size could not be set."""
+
+class TargetNotBuiltWarning(SConsWarning): # TODO: should go to OnByDefault
+ """A target build indicated success but the file is not found."""
+
+class VisualCMissingWarning(WarningOnByDefault):
+ """Requested MSVC version not found and policy is to not fail."""
+
+class VisualVersionMismatch(WarningOnByDefault):
+ """``MSVC_VERSION`` and ``MSVS_VERSION`` do not match.
+
+ Note ``MSVS_VERSION`` is deprecated, use ``MSVC_VERSION``.
+ """
+
+class VisualStudioMissingWarning(SConsWarning): # TODO: unused
+ pass
+
+
+# Deprecation warnings
+
+class FutureDeprecatedWarning(SConsWarning):
+ """Base class for features that will become deprecated in a future release."""
+
+class DeprecatedWarning(SConsWarning):
+ """Base class for deprecated features, will be removed in future."""
+
+class MandatoryDeprecatedWarning(DeprecatedWarning):
+ """Base class for deprecated features where warning cannot be disabled."""
+
+
+# Special case; base always stays DeprecatedWarning
+class PythonVersionWarning(DeprecatedWarning):
+ """SCons was run with a deprecated Python version."""
+
+class DeprecatedOptionsWarning(MandatoryDeprecatedWarning):
+ """Options that are deprecated."""
+
+class DeprecatedDebugOptionsWarning(MandatoryDeprecatedWarning):
+ """Option-arguments to --debug that are deprecated."""
+
+class ToolQtDeprecatedWarning(DeprecatedWarning): # TODO: unused
+ pass
+
+
+def suppressWarningClass(clazz) -> None:
+ """Suppresses all warnings of type *clazz* or derived from *clazz*."""
+ _enabled.insert(0, (clazz, False))
+
+def enableWarningClass(clazz) -> None:
+ """Enables all warnings of type *clazz* or derived from *clazz*."""
+ _enabled.insert(0, (clazz, True))
+
+def warningAsException(flag: bool = True) -> bool:
+ """Sets global :data:`_warningAsExeption` flag.
+
+ If true, any enabled warning will cause an exception to be raised.
+
+ Args:
+ flag: new value for warnings-as-exceptions.
+
+ Returns:
+ The previous value.
+ """
+ global _warningAsException # pylint: disable=global-statement
+ old = _warningAsException
+ _warningAsException = flag
+ return old
+
+def warn(clazz, *args) -> None:
+ """Issue a warning, accounting for SCons rules.
+
+ Check if warnings for this class are enabled. If warnings are treated
+ as exceptions, raise exception. Use the global warning emitter
+ :data:`_warningOut`, which allows selecting different ways of
+ presenting a traceback (see Script/Main.py).
+ """
+ warning = clazz(args)
+ for cls, flag in _enabled:
+ if isinstance(warning, cls):
+ if flag:
+ if _warningAsException:
+ raise warning
+
+ if _warningOut is not None:
+ _warningOut(warning)
+ break
+
+def process_warn_strings(arguments: Sequence[str]) -> None:
+ """Process requests to enable/disable warnings.
+
+ The requests come from the option-argument string passed to the
+ ``--warn`` command line option or as the value passed to the
+ ``SetOption`` function with a first argument of ``warn``;
+
+
+ The arguments are expected to be as documented in the SCons manual
+ page for the ``--warn`` option, in the style ``some-type``,
+ which is converted here to a camel-case name like ``SomeTypeWarning``,
+ to try to match the warning classes defined here, which are then
+ passed to :func:`enableWarningClass` or :func:`suppressWarningClass`.
+
+ For example, a string``"deprecated"`` enables the
+ :exc:`DeprecatedWarning` class, while a string``"no-dependency"``
+ disables the :exc:`DependencyWarning` class.
+
+ As a special case, the string ``"all"`` disables all warnings and
+ a the string ``"no-all"`` disables all warnings.
+ """
+ def _classmunge(s: str) -> str:
+ """Convert a warning argument to SConsCase.
+
+ The result is CamelCase, except "Scons" is changed to "SCons"
+ """
+ s = s.replace("-", " ").title().replace(" ", "")
+ return s.replace("Scons", "SCons")
+
+ for arg in arguments:
+ enable = True
+ if arg.startswith("no-") and arg not in (
+ "no-object-count",
+ "no-parallel-support",
+ ):
+ enable = False
+ arg = arg[len("no-") :]
+ if arg == 'all':
+ class_name = "SConsWarning"
+ else:
+ class_name = _classmunge(arg) + 'Warning'
+ try:
+ clazz = globals()[class_name]
+ except KeyError:
+ sys.stderr.write(f"No warning type: {arg!r}\n")
+ else:
+ if enable:
+ enableWarningClass(clazz)
+ elif issubclass(clazz, MandatoryDeprecatedWarning):
+ sys.stderr.write(f"Can not disable mandataory warning: {arg!r}\n")
+ else:
+ suppressWarningClass(clazz)
+
+# Local Variables:
+# tab-width:4
+# indent-tabs-mode:nil
+# End:
+# vim: set expandtab tabstop=4 shiftwidth=4:
diff --git a/scons/scons-local-4.7.0/SCons/__init__.py b/scons/scons-local-4.7.0/SCons/__init__.py
new file mode 100644
index 000000000..e89057fe2
--- /dev/null
+++ b/scons/scons-local-4.7.0/SCons/__init__.py
@@ -0,0 +1,9 @@
+__version__="4.7.0"
+__copyright__="Copyright (c) 2001 - 2024 The SCons Foundation"
+__developer__="bdbaddog"
+__date__="Sun, 17 Mar 2024 17:33:54 -0700"
+__buildsys__="M1Dog2021"
+__revision__="265be6883fadbb5a545612265acc919595158366"
+__build__="265be6883fadbb5a545612265acc919595158366"
+# make sure compatibility is always in place
+import SCons.compat # noqa
\ No newline at end of file
diff --git a/scons/scons-local-4.5.2/SCons/__main__.py b/scons/scons-local-4.7.0/SCons/__main__.py
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/__main__.py
rename to scons/scons-local-4.7.0/SCons/__main__.py
diff --git a/scons/scons-local-4.5.2/SCons/compat/__init__.py b/scons/scons-local-4.7.0/SCons/compat/__init__.py
similarity index 97%
rename from scons/scons-local-4.5.2/SCons/compat/__init__.py
rename to scons/scons-local-4.7.0/SCons/compat/__init__.py
index 03b12af99..0a9669d33 100644
--- a/scons/scons-local-4.5.2/SCons/compat/__init__.py
+++ b/scons/scons-local-4.7.0/SCons/compat/__init__.py
@@ -64,7 +64,7 @@ import importlib
PYPY = hasattr(sys, 'pypy_translation_info')
-def rename_module(new, old):
+def rename_module(new, old) -> bool:
"""
Attempt to import the old module and load it under the new name.
Used for purely cosmetic name changes in Python 3.x.
@@ -95,7 +95,7 @@ class NoSlotsPyPy(type):
def __new__(meta, name, bases, dct):
if PYPY and '__slots__' in dct:
dct.pop('__slots__')
- return super(NoSlotsPyPy, meta).__new__(meta, name, bases, dct)
+ return super().__new__(meta, name, bases, dct)
# Local Variables:
# tab-width:4
diff --git a/scons/scons-local-4.5.2/SCons/compat/_scons_dbm.py b/scons/scons-local-4.7.0/SCons/compat/_scons_dbm.py
similarity index 100%
rename from scons/scons-local-4.5.2/SCons/compat/_scons_dbm.py
rename to scons/scons-local-4.7.0/SCons/compat/_scons_dbm.py
diff --git a/scons/scons-local-4.5.2/SCons/compat/win32.py b/scons/scons-local-4.7.0/SCons/compat/win32.py
similarity index 97%
rename from scons/scons-local-4.5.2/SCons/compat/win32.py
rename to scons/scons-local-4.7.0/SCons/compat/win32.py
index e01adfa7e..5f25dd8fd 100644
--- a/scons/scons-local-4.5.2/SCons/compat/win32.py
+++ b/scons/scons-local-4.7.0/SCons/compat/win32.py
@@ -78,8 +78,8 @@ def get_memory_info(process=None):
ctypes.sizeof(counters))
if not ret:
raise ctypes.WinError()
- info = dict((name, getattr(counters, name))
- for name, _ in counters._fields_)
+ info = {name: getattr(counters, name)
+ for name, _ in counters._fields_}
return info
diff --git a/scons/scons-local-4.5.2/SCons/cpp.py b/scons/scons-local-4.7.0/SCons/cpp.py
similarity index 93%
rename from scons/scons-local-4.5.2/SCons/cpp.py
rename to scons/scons-local-4.7.0/SCons/cpp.py
index 144f49870..1093ae2ac 100644
--- a/scons/scons-local-4.5.2/SCons/cpp.py
+++ b/scons/scons-local-4.7.0/SCons/cpp.py
@@ -26,6 +26,8 @@
import os
import re
+import SCons.Util
+
# First "subsystem" of regular expressions that we set up:
#
# Stuff to turn the C preprocessor directives in a file's contents into
@@ -180,7 +182,7 @@ del override
class FunctionEvaluator:
"""Handles delayed evaluation of a #define function call."""
- def __init__(self, name, args, expansion):
+ def __init__(self, name, args, expansion) -> None:
"""
Squirrels away the arguments and expansion value of a #define
macro function for later evaluation when we must actually expand
@@ -230,7 +232,7 @@ function_arg_separator = re.compile(r',\s*')
class PreProcessor:
"""The main workhorse class for handling C pre-processing."""
- def __init__(self, current=os.curdir, cpppath=(), dict={}, all=0, depth=-1):
+ def __init__(self, current=os.curdir, cpppath=(), dict={}, all: int=0, depth=-1) -> None:
global Table
cpppath = tuple(cpppath)
@@ -339,7 +341,7 @@ class PreProcessor:
# Dispatch table stack manipulation methods.
- def save(self):
+ def save(self) -> None:
"""
Pushes the current dispatch table on the stack and re-initializes
the current dispatch table to the default.
@@ -347,7 +349,7 @@ class PreProcessor:
self.stack.append(self.dispatch_table)
self.dispatch_table = self.default_table.copy()
- def restore(self):
+ def restore(self) -> None:
"""
Pops the previous dispatch table off the stack and makes it the
current one.
@@ -357,14 +359,14 @@ class PreProcessor:
# Utility methods.
- def do_nothing(self, t):
+ def do_nothing(self, t) -> None:
"""
Null method for when we explicitly want the action for a
specific preprocessor directive to do nothing.
"""
pass
- def scons_current_file(self, t):
+ def scons_current_file(self, t) -> None:
self.current_file = t[1]
def eval_expression(self, t):
@@ -381,7 +383,7 @@ class PreProcessor:
except (NameError, TypeError, SyntaxError):
return 0
- def initialize_result(self, fname):
+ def initialize_result(self, fname) -> None:
self.result = [fname]
def finalize_result(self, fname):
@@ -401,13 +403,13 @@ class PreProcessor:
return f
return None
- def read_file(self, file):
- with open(file) as f:
- return f.read()
+ def read_file(self, file) -> str:
+ with open(file, 'rb') as f:
+ return SCons.Util.to_Text(f.read())
# Start and stop processing include lines.
- def start_handling_includes(self, t=None):
+ def start_handling_includes(self, t=None) -> None:
"""
Causes the PreProcessor object to start processing #import,
#include and #include_next lines.
@@ -424,7 +426,7 @@ class PreProcessor:
for k in ('import', 'include', 'include_next', 'define', 'undef'):
d[k] = p[k]
- def stop_handling_includes(self, t=None):
+ def stop_handling_includes(self, t=None) -> None:
"""
Causes the PreProcessor object to stop processing #import,
#include and #include_next lines.
@@ -444,7 +446,7 @@ class PreProcessor:
# (Note that what actually gets called for a given directive at any
# point in time is really controlled by the dispatch_table.)
- def _do_if_else_condition(self, condition):
+ def _do_if_else_condition(self, condition) -> None:
"""
Common logic for evaluating the conditions on #if, #ifdef and
#ifndef lines.
@@ -460,25 +462,25 @@ class PreProcessor:
d['elif'] = self.do_elif
d['else'] = self.start_handling_includes
- def do_ifdef(self, t):
+ def do_ifdef(self, t) -> None:
"""
Default handling of a #ifdef line.
"""
self._do_if_else_condition(t[1] in self.cpp_namespace)
- def do_ifndef(self, t):
+ def do_ifndef(self, t) -> None:
"""
Default handling of a #ifndef line.
"""
self._do_if_else_condition(t[1] not in self.cpp_namespace)
- def do_if(self, t):
+ def do_if(self, t) -> None:
"""
Default handling of a #if line.
"""
self._do_if_else_condition(self.eval_expression(t))
- def do_elif(self, t):
+ def do_elif(self, t) -> None:
"""
Default handling of a #elif line.
"""
@@ -488,19 +490,19 @@ class PreProcessor:
d['elif'] = self.stop_handling_includes
d['else'] = self.stop_handling_includes
- def do_else(self, t):
+ def do_else(self, t) -> None:
"""
Default handling of a #else line.
"""
pass
- def do_endif(self, t):
+ def do_endif(self, t) -> None:
"""
Default handling of a #endif line.
"""
self.restore()
- def do_define(self, t):
+ def do_define(self, t) -> None:
"""
Default handling of a #define line.
"""
@@ -519,21 +521,21 @@ class PreProcessor:
else:
self.cpp_namespace[name] = expansion
- def do_undef(self, t):
+ def do_undef(self, t) -> None:
"""
Default handling of a #undef line.
"""
try: del self.cpp_namespace[t[1]]
except KeyError: pass
- def do_import(self, t):
+ def do_import(self, t) -> None:
"""
Default handling of a #import line.
"""
# XXX finish this -- maybe borrow/share logic from do_include()...?
pass
- def do_include(self, t):
+ def do_include(self, t) -> None:
"""
Default handling of a #include line.
"""
@@ -561,8 +563,7 @@ class PreProcessor:
[('scons_current_file', self.current_file)]
self.tuples[:] = new_tuples + self.tuples
- # Date: Tue, 22 Nov 2005 20:26:09 -0500
- # From: Stefan Seefeld
+ # From: Stefan Seefeld (22 Nov 2005)
#
# By the way, #include_next is not the same as #include. The difference
# being that #include_next starts its search in the path following the
@@ -570,10 +571,12 @@ class PreProcessor:
# include paths are ['/foo', '/bar'], and you are looking at a header
# '/foo/baz.h', it might issue an '#include_next ' which would
# correctly resolve to '/bar/baz.h' (if that exists), but *not* see
- # '/foo/baz.h' again. See http://www.delorie.com/gnu/docs/gcc/cpp_11.html
- # for more reasoning.
+ # '/foo/baz.h' again. See
+ # https://gcc.gnu.org/onlinedocs/cpp/Wrapper-Headers.html for more notes.
#
- # I have no idea in what context 'import' might be used.
+ # I have no idea in what context #import might be used.
+ # Update: possibly these notes?
+ # https://github.com/MicrosoftDocs/cpp-docs/blob/main/docs/preprocessor/hash-import-directive-cpp.md
# XXX is #include_next really the same as #include ?
do_include_next = do_include
@@ -614,7 +617,7 @@ class PreProcessor:
return None
return (t[0], s[0], s[1:-1])
- def all_include(self, t):
+ def all_include(self, t) -> None:
"""
"""
self.result.append(self.resolve_include(t))
@@ -630,7 +633,7 @@ class DumbPreProcessor(PreProcessor):
an example of how the main PreProcessor class can be sub-classed
to tailor its behavior.
"""
- def __init__(self, *args, **kw):
+ def __init__(self, *args, **kw) -> None:
PreProcessor.__init__(self, *args, **kw)
d = self.default_table
for func in ['if', 'elif', 'else', 'endif', 'ifdef', 'ifndef']:
diff --git a/scons/scons-local-4.5.2/SCons/dblite.py b/scons/scons-local-4.7.0/SCons/dblite.py
similarity index 51%
rename from scons/scons-local-4.5.2/SCons/dblite.py
rename to scons/scons-local-4.7.0/SCons/dblite.py
index 9cf975c1d..e50b7f9ad 100644
--- a/scons/scons-local-4.5.2/SCons/dblite.py
+++ b/scons/scons-local-4.7.0/SCons/dblite.py
@@ -24,8 +24,13 @@
"""
dblite.py module contributed by Ralf W. Grosse-Kunstleve.
Extended for Unicode by Steven Knight.
+
+This is a very simple-minded "database" used for saved signature
+information, with an interface modeled on the Python dbm database
+interface module.
"""
+import io
import os
import pickle
import shutil
@@ -37,7 +42,7 @@ KEEP_ALL_FILES = False
IGNORE_CORRUPT_DBFILES = False
-def corruption_warning(filename):
+def corruption_warning(filename) -> None:
"""Local warning for corrupt db.
Used for self-tests. SCons overwrites this with a
@@ -45,41 +50,59 @@ def corruption_warning(filename):
"""
print("Warning: Discarding corrupt database:", filename)
-DBLITE_SUFFIX = '.dblite'
-TMP_SUFFIX = '.tmp'
+
+DBLITE_SUFFIX = ".dblite"
+TMP_SUFFIX = ".tmp"
-class dblite:
- """
- Squirrel away references to the functions in various modules
- that we'll use when our __del__() method calls our sync() method
- during shutdown. We might get destroyed when Python is in the midst
- of tearing down the different modules we import in an essentially
- arbitrary order, and some of the various modules's global attributes
- may already be wiped out from under us.
+class _Dblite:
+ """Lightweight signature database class.
- See the discussion at:
- http://mail.python.org/pipermail/python-bugs-list/2003-March/016877.html
+ Behaves like a dict when in memory, loads from a pickled disk
+ file on open and writes back out to it on close.
+ Open the database file using a path derived from *file_base_name*.
+ The optional *flag* argument can be:
+
+ +---------+---------------------------------------------------+
+ | Value | Meaning |
+ +=========+===================================================+
+ | ``'r'`` | Open existing database for reading only (default) |
+ +---------+---------------------------------------------------+
+ | ``'w'`` | Open existing database for reading and writing |
+ +---------+---------------------------------------------------+
+ | ``'c'`` | Open database for reading and writing, creating |
+ | | it if it doesn't exist |
+ +---------+---------------------------------------------------+
+ | ``'n'`` | Always create a new, empty database, open for |
+ | | reading and writing |
+ +---------+---------------------------------------------------+
+
+ The optional *mode* argument is the POSIX mode of the file, used only
+ when the database has to be created. It defaults to octal ``0o666``.
"""
- _open = open
+ # Because open() is defined at module level, overwriting builtin open
+ # in the scope of this module, we use io.open to avoid ambiguity.
+ _open = staticmethod(io.open)
+
+ # we need to squirrel away references to functions from various modules
+ # that we'll use when sync() is called: this may happen at Python
+ # teardown time (we call it from our __del__), and the global module
+ # references themselves may already have been rebound to None.
_pickle_dump = staticmethod(pickle.dump)
_pickle_protocol = PICKLE_PROTOCOL
-
try:
- _os_chown = os.chown
+ _os_chown = staticmethod(os.chown)
except AttributeError:
_os_chown = None
- _os_replace = os.replace
- _os_chmod = os.chmod
- _shutil_copyfile = shutil.copyfile
- _time_time = time.time
+ _os_replace = staticmethod(os.replace)
+ _os_chmod = staticmethod(os.chmod)
+ _shutil_copyfile = staticmethod(shutil.copyfile)
+ _time_time = staticmethod(time.time)
- def __init__(self, file_base_name, flag, mode):
- assert flag in (None, "r", "w", "c", "n")
- if flag is None:
- flag = "r"
+ def __init__(self, file_base_name, flag='r', mode=0o666) -> None:
+ assert flag in ("r", "w", "c", "n")
base, ext = os.path.splitext(file_base_name)
if ext == DBLITE_SUFFIX:
@@ -95,7 +118,7 @@ class dblite:
self._dict = {}
self._needs_sync = False
- if self._os_chown is not None and (os.geteuid() == 0 or os.getuid() == 0):
+ if self._os_chown is not None and 0 in (os.geteuid(), os.getegid()):
# running as root; chown back to current owner/group when done
try:
statinfo = os.stat(self._file_name)
@@ -111,41 +134,65 @@ class dblite:
self._chgrp_to = -1 # don't chgrp
if self._flag == "n":
- with self._open(self._file_name, "wb", self._mode):
- pass # just make sure it exists
+ with io.open(self._file_name, "wb", opener=self.opener):
+ return # just make sure it exists
else:
+ # We only need the disk file to slurp in the data. Updates are
+ # handled on close, db is mainained only in memory until then.
try:
- f = self._open(self._file_name, "rb")
- except IOError as e:
+ with io.open(self._file_name, "rb") as f:
+ p = f.read()
+ except OSError as e:
+ # an error for file not to exist, unless flag is create
if self._flag != "c":
raise e
- with self._open(self._file_name, "wb", self._mode):
- pass # just make sure it exists
- else:
- p = f.read()
- f.close()
- if len(p) > 0:
- try:
- self._dict = pickle.loads(p, encoding='bytes')
- except (pickle.UnpicklingError, EOFError, KeyError):
- # Note how we catch KeyErrors too here, which might happen
- # when we don't have cPickle available (default pickle
- # throws it).
- if IGNORE_CORRUPT_DBFILES:
- corruption_warning(self._file_name)
- else:
- raise
+ with io.open(self._file_name, "wb", opener=self.opener):
+ return # just make sure it exists
+ if len(p) > 0:
+ try:
+ self._dict = pickle.loads(p, encoding='bytes')
+ except (
+ pickle.UnpicklingError,
+ # Python3 docs:
+ # Note that other exceptions may also be raised during
+ # unpickling, including (but not necessarily limited to)
+ # AttributeError, EOFError, ImportError, and IndexError.
+ AttributeError,
+ EOFError,
+ ImportError,
+ IndexError,
+ ):
+ if IGNORE_CORRUPT_DBFILES:
+ corruption_warning(self._file_name)
+ else:
+ raise
- def close(self):
+ def opener(self, path, flags):
+ """Database open helper when creation may be needed.
+
+ The high-level Python open() function cannot specify a file mode
+ for creation. Using this as the opener with the saved mode lets
+ us do that.
+ """
+ return os.open(path, flags, mode=self._mode)
+
+ def close(self) -> None:
if self._needs_sync:
self.sync()
- def __del__(self):
+ def __del__(self) -> None:
self.close()
- def sync(self):
+ def sync(self) -> None:
+ """Flush the database to disk.
+
+ This routine *must* succeed, since the in-memory and on-disk
+ copies are out of sync as soon as we do anything that changes
+ the in-memory version. Thus, to be cautious, flush to a
+ temporary file and then move it over with some error handling.
+ """
self._check_writable()
- with self._open(self._tmp_name, "wb", self._mode) as f:
+ with self._open(self._tmp_name, "wb", opener=self.opener) as f:
self._pickle_dump(self._dict, f, self._pickle_protocol)
try:
@@ -162,7 +209,9 @@ class dblite:
pass
self._os_replace(self._tmp_name, self._file_name)
- if self._os_chown is not None and self._chown_to > 0: # don't chown to root or -1
+ if (
+ self._os_chown is not None and self._chown_to > 0
+ ): # don't chown to root or -1
try:
self._os_chown(self._file_name, self._chown_to, self._chgrp_to)
except OSError:
@@ -171,13 +220,12 @@ class dblite:
self._needs_sync = False
if KEEP_ALL_FILES:
self._shutil_copyfile(
- self._file_name,
- self._file_name + "_" + str(int(self._time_time()))
+ self._file_name, f"{self._file_name}_{int(self._time_time())}"
)
def _check_writable(self):
if self._flag == "r":
- raise IOError("Read-only database: %s" % self._file_name)
+ raise OSError(f"Read-only database: {self._file_name}")
def __getitem__(self, key):
return self._dict[key]
@@ -186,29 +234,37 @@ class dblite:
self._check_writable()
if not isinstance(key, str):
- raise TypeError("key `%s' must be a string but is %s" % (key, type(key)))
+ raise TypeError(f"key `{key}' must be a string but is {type(key)}")
if not isinstance(value, bytes):
- raise TypeError("value `%s' must be a bytes but is %s" % (value, type(value)))
+ raise TypeError(f"value `{value}' must be bytes but is {type(value)}")
self._dict[key] = value
self._needs_sync = True
- def keys(self):
- return list(self._dict.keys())
+ def __delitem__(self, key):
+ del self._dict[key]
- def __contains__(self, key):
+ def keys(self):
+ return self._dict.keys()
+
+ def items(self):
+ return self._dict.items()
+
+ def values(self):
+ return self._dict.values()
+
+ __iter__ = keys
+
+ def __contains__(self, key) -> bool:
return key in self._dict
- def __iter__(self):
- return iter(self._dict)
-
- def __len__(self):
+ def __len__(self) -> int:
return len(self._dict)
-def open(file, flag=None, mode=0o666):
- return dblite(file, flag, mode)
+def open(file, flag="r", mode: int = 0o666): # pylint: disable=redefined-builtin
+ return _Dblite(file, flag, mode)
def _exercise():
@@ -225,13 +281,13 @@ def _exercise():
assert db["bar"] == b"foo"
db.sync()
- db = open("tmp", "r")
+ db = open("tmp")
assert len(db) == 2, len(db)
assert db["foo"] == b"bar"
assert db["bar"] == b"foo"
try:
db.sync()
- except IOError as e:
+ except OSError as e:
assert str(e) == "Read-only database: tmp.dblite"
else:
raise RuntimeError("IOError expected.")
@@ -250,21 +306,21 @@ def _exercise():
try:
db["list"] = [1, 2]
except TypeError as e:
- assert str(e) == "value `[1, 2]' must be a bytes but is ", str(e)
+ assert str(e) == "value `[1, 2]' must be bytes but is ", str(e)
else:
raise RuntimeError("TypeError exception expected")
- db = open("tmp", "r")
+ db = open("tmp")
assert len(db) == 3, len(db)
db = open("tmp", "n")
assert len(db) == 0, len(db)
- dblite._open("tmp.dblite", "w")
+ _Dblite._open("tmp.dblite", "w")
- db = open("tmp", "r")
- dblite._open("tmp.dblite", "w").write("x")
+ db = open("tmp")
+ _Dblite._open("tmp.dblite", "w").write("x")
try:
- db = open("tmp", "r")
+ db = open("tmp")
except pickle.UnpicklingError:
pass
else:
@@ -272,12 +328,12 @@ def _exercise():
global IGNORE_CORRUPT_DBFILES
IGNORE_CORRUPT_DBFILES = True
- db = open("tmp", "r")
+ db = open("tmp")
assert len(db) == 0, len(db)
os.unlink("tmp.dblite")
try:
db = open("tmp", "w")
- except IOError as e:
+ except OSError as e:
assert str(e) == "[Errno 2] No such file or directory: 'tmp.dblite'", str(e)
else:
raise RuntimeError("IOError expected.")
diff --git a/scons/scons-local-4.5.2/SCons/exitfuncs.py b/scons/scons-local-4.7.0/SCons/exitfuncs.py
similarity index 96%
rename from scons/scons-local-4.5.2/SCons/exitfuncs.py
rename to scons/scons-local-4.7.0/SCons/exitfuncs.py
index ba6243a7a..d28bba4d0 100644
--- a/scons/scons-local-4.5.2/SCons/exitfuncs.py
+++ b/scons/scons-local-4.7.0/SCons/exitfuncs.py
@@ -28,7 +28,7 @@
import atexit
_exithandlers = []
-def _run_exitfuncs():
+def _run_exitfuncs() -> None:
"""run any registered exit functions
_exithandlers is traversed in reverse order so functions are executed
@@ -39,7 +39,7 @@ def _run_exitfuncs():
func, targs, kargs = _exithandlers.pop()
func(*targs, **kargs)
-def register(func, *targs, **kargs):
+def register(func, *targs, **kargs) -> None:
"""register a function to be executed upon normal program termination
func - function to be called at exit
diff --git a/scons/scons.py b/scons/scons.py
index ab777835f..67db33e9d 100755
--- a/scons/scons.py
+++ b/scons/scons.py
@@ -25,15 +25,15 @@
# 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__ = "scripts/scons.py 120fd4f633e9ef3cafbc0fec35306d7555ffd1db Tue, 21 Mar 2023 12:11:27 -0400 bdbaddog"
+__revision__ = "scripts/scons.py 265be6883fadbb5a545612265acc919595158366 Sun, 17 Mar 2024 17:33:54 -0700 bdbaddog"
-__version__ = "4.5.2"
+__version__ = "4.7.0"
-__build__ = "120fd4f633e9ef3cafbc0fec35306d7555ffd1db"
+__build__ = "265be6883fadbb5a545612265acc919595158366"
-__buildsys__ = "M1DOG2021"
+__buildsys__ = "M1Dog2021"
-__date__ = "Tue, 21 Mar 2023 12:11:27 -0400"
+__date__ = "Sun, 17 Mar 2024 17:33:54 -0700"
__developer__ = "bdbaddog"
diff --git a/scons/sconsign.py b/scons/sconsign.py
index fa2819fde..76bd2de7a 100644
--- a/scons/sconsign.py
+++ b/scons/sconsign.py
@@ -25,15 +25,15 @@
# 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__ = "scripts/sconsign.py 120fd4f633e9ef3cafbc0fec35306d7555ffd1db Tue, 21 Mar 2023 12:11:27 -0400 bdbaddog"
+__revision__ = "scripts/sconsign.py 265be6883fadbb5a545612265acc919595158366 Sun, 17 Mar 2024 17:33:54 -0700 bdbaddog"
-__version__ = "4.5.2"
+__version__ = "4.7.0"
-__build__ = "120fd4f633e9ef3cafbc0fec35306d7555ffd1db"
+__build__ = "265be6883fadbb5a545612265acc919595158366"
-__buildsys__ = "M1DOG2021"
+__buildsys__ = "M1Dog2021"
-__date__ = "Tue, 21 Mar 2023 12:11:27 -0400"
+__date__ = "Sun, 17 Mar 2024 17:33:54 -0700"
__developer__ = "bdbaddog"