update SCons to 2.5.0
This commit is contained in:
parent
4e66c69cf2
commit
922f4c4e1b
204 changed files with 928 additions and 3110 deletions
Binary file not shown.
|
@ -3,7 +3,7 @@
|
|||
This copyright and license do not apply to any other software
|
||||
with which this software may have been included.
|
||||
|
||||
Copyright (c) 2001 - 2015 The SCons Foundation
|
||||
Copyright (c) 2001 - 2016 The SCons Foundation
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining
|
||||
a copy of this software and associated documentation files (the
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
# Copyright (c) 2001 - 2015 The SCons Foundation
|
||||
# Copyright (c) 2001 - 2016 The SCons Foundation
|
||||
|
||||
SCons - a software construction tool
|
||||
|
||||
|
|
|
@ -1,45 +0,0 @@
|
|||
#
|
||||
# Copyright (c) 2001 - 2015 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.
|
||||
#
|
||||
|
||||
__doc__ = """
|
||||
collections compatibility module for older (pre-2.4) Python versions
|
||||
|
||||
This does not not NOT (repeat, *NOT*) provide complete collections
|
||||
functionality. It only wraps the portions of collections functionality
|
||||
used by SCons, in an interface that looks enough like collections for
|
||||
our purposes.
|
||||
"""
|
||||
|
||||
__revision__ = "src/engine/SCons/compat/_scons_collections.py rel_2.4.1:3453:73fefd3ea0b0 2015/11/09 03:25:05 bdbaddog"
|
||||
|
||||
# Use exec to hide old names from fixers.
|
||||
exec("""if True:
|
||||
from UserDict import UserDict
|
||||
from UserList import UserList
|
||||
from UserString import UserString""")
|
||||
|
||||
# Local Variables:
|
||||
# tab-width:4
|
||||
# indent-tabs-mode:nil
|
||||
# End:
|
||||
# vim: set expandtab tabstop=4 shiftwidth=4:
|
|
@ -1,563 +0,0 @@
|
|||
"""Classes to represent arbitrary sets (including sets of sets).
|
||||
|
||||
This module implements sets using dictionaries whose values are
|
||||
ignored. The usual operations (union, intersection, deletion, etc.)
|
||||
are provided as both methods and operators.
|
||||
|
||||
Important: sets are not sequences! While they support 'x in s',
|
||||
'len(s)', and 'for x in s', none of those operations are unique for
|
||||
sequences; for example, mappings support all three as well. The
|
||||
characteristic operation for sequences is subscripting with small
|
||||
integers: s[i], for i in range(len(s)). Sets don't support
|
||||
subscripting at all. Also, sequences allow multiple occurrences and
|
||||
their elements have a definite order; sets on the other hand don't
|
||||
record multiple occurrences and don't remember the order of element
|
||||
insertion (which is why they don't support s[i]).
|
||||
|
||||
The following classes are provided:
|
||||
|
||||
BaseSet -- All the operations common to both mutable and immutable
|
||||
sets. This is an abstract class, not meant to be directly
|
||||
instantiated.
|
||||
|
||||
Set -- Mutable sets, subclass of BaseSet; not hashable.
|
||||
|
||||
ImmutableSet -- Immutable sets, subclass of BaseSet; hashable.
|
||||
An iterable argument is mandatory to create an ImmutableSet.
|
||||
|
||||
_TemporarilyImmutableSet -- A wrapper around a Set, hashable,
|
||||
giving the same hash value as the immutable set equivalent
|
||||
would have. Do not use this class directly.
|
||||
|
||||
Only hashable objects can be added to a Set. In particular, you cannot
|
||||
really add a Set as an element to another Set; if you try, what is
|
||||
actually added is an ImmutableSet built from it (it compares equal to
|
||||
the one you tried adding).
|
||||
|
||||
When you ask if `x in y' where x is a Set and y is a Set or
|
||||
ImmutableSet, x is wrapped into a _TemporarilyImmutableSet z, and
|
||||
what's tested is actually `z in y'.
|
||||
|
||||
"""
|
||||
|
||||
# Code history:
|
||||
#
|
||||
# - Greg V. Wilson wrote the first version, using a different approach
|
||||
# to the mutable/immutable problem, and inheriting from dict.
|
||||
#
|
||||
# - Alex Martelli modified Greg's version to implement the current
|
||||
# Set/ImmutableSet approach, and make the data an attribute.
|
||||
#
|
||||
# - Guido van Rossum rewrote much of the code, made some API changes,
|
||||
# and cleaned up the docstrings.
|
||||
#
|
||||
# - Raymond Hettinger added a number of speedups and other
|
||||
# improvements.
|
||||
|
||||
# protect this import from the fixers...
|
||||
exec('from itertools import ifilterfalse as filterfalse')
|
||||
|
||||
__all__ = ['BaseSet', 'Set', 'ImmutableSet']
|
||||
|
||||
class BaseSet(object):
|
||||
"""Common base class for mutable and immutable sets."""
|
||||
|
||||
__slots__ = ['_data']
|
||||
|
||||
# Constructor
|
||||
|
||||
def __init__(self):
|
||||
"""This is an abstract class."""
|
||||
# Don't call this from a concrete subclass!
|
||||
if self.__class__ is BaseSet:
|
||||
raise TypeError("BaseSet is an abstract class. "
|
||||
"Use Set or ImmutableSet.")
|
||||
|
||||
# Standard protocols: __len__, __repr__, __str__, __iter__
|
||||
|
||||
def __len__(self):
|
||||
"""Return the number of elements of a set."""
|
||||
return len(self._data)
|
||||
|
||||
def __repr__(self):
|
||||
"""Return string representation of a set.
|
||||
|
||||
This looks like 'Set([<list of elements>])'.
|
||||
"""
|
||||
return self._repr()
|
||||
|
||||
# __str__ is the same as __repr__
|
||||
__str__ = __repr__
|
||||
|
||||
def _repr(self, sort_them=False):
|
||||
elements = list(self._data.keys())
|
||||
if sort_them:
|
||||
elements.sort()
|
||||
return '%s(%r)' % (self.__class__.__name__, elements)
|
||||
|
||||
def __iter__(self):
|
||||
"""Return an iterator over the elements or a set.
|
||||
|
||||
This is the keys iterator for the underlying dict.
|
||||
"""
|
||||
# Wrapping name in () prevents fixer from "fixing" this
|
||||
return (self._data.iterkeys)()
|
||||
|
||||
# Three-way comparison is not supported. However, because __eq__ is
|
||||
# tried before __cmp__, if Set x == Set y, x.__eq__(y) returns True and
|
||||
# then cmp(x, y) returns 0 (Python doesn't actually call __cmp__ in this
|
||||
# case).
|
||||
|
||||
def __cmp__(self, other):
|
||||
raise TypeError("can't compare sets using cmp()")
|
||||
|
||||
# Equality comparisons using the underlying dicts. Mixed-type comparisons
|
||||
# are allowed here, where Set == z for non-Set z always returns False,
|
||||
# and Set != z always True. This allows expressions like "x in y" to
|
||||
# give the expected result when y is a sequence of mixed types, not
|
||||
# raising a pointless TypeError just because y contains a Set, or x is
|
||||
# a Set and y contain's a non-set ("in" invokes only __eq__).
|
||||
# Subtle: it would be nicer if __eq__ and __ne__ could return
|
||||
# NotImplemented instead of True or False. Then the other comparand
|
||||
# would get a chance to determine the result, and if the other comparand
|
||||
# also returned NotImplemented then it would fall back to object address
|
||||
# comparison (which would always return False for __eq__ and always
|
||||
# True for __ne__). However, that doesn't work, because this type
|
||||
# *also* implements __cmp__: if, e.g., __eq__ returns NotImplemented,
|
||||
# Python tries __cmp__ next, and the __cmp__ here then raises TypeError.
|
||||
|
||||
def __eq__(self, other):
|
||||
if isinstance(other, BaseSet):
|
||||
return self._data == other._data
|
||||
else:
|
||||
return False
|
||||
|
||||
def __ne__(self, other):
|
||||
if isinstance(other, BaseSet):
|
||||
return self._data != other._data
|
||||
else:
|
||||
return True
|
||||
|
||||
# Copying operations
|
||||
|
||||
def copy(self):
|
||||
"""Return a shallow copy of a set."""
|
||||
result = self.__class__()
|
||||
result._data.update(self._data)
|
||||
return result
|
||||
|
||||
__copy__ = copy # For the copy module
|
||||
|
||||
def __deepcopy__(self, memo):
|
||||
"""Return a deep copy of a set; used by copy module."""
|
||||
# This pre-creates the result and inserts it in the memo
|
||||
# early, in case the deep copy recurses into another reference
|
||||
# to this same set. A set can't be an element of itself, but
|
||||
# it can certainly contain an object that has a reference to
|
||||
# itself.
|
||||
from copy import deepcopy
|
||||
result = self.__class__()
|
||||
memo[id(self)] = result
|
||||
data = result._data
|
||||
value = True
|
||||
for elt in self:
|
||||
data[deepcopy(elt, memo)] = value
|
||||
return result
|
||||
|
||||
# Standard set operations: union, intersection, both differences.
|
||||
# Each has an operator version (e.g. __or__, invoked with |) and a
|
||||
# method version (e.g. union).
|
||||
# Subtle: Each pair requires distinct code so that the outcome is
|
||||
# correct when the type of other isn't suitable. For example, if
|
||||
# we did "union = __or__" instead, then Set().union(3) would return
|
||||
# NotImplemented instead of raising TypeError (albeit that *why* it
|
||||
# raises TypeError as-is is also a bit subtle).
|
||||
|
||||
def __or__(self, other):
|
||||
"""Return the union of two sets as a new set.
|
||||
|
||||
(I.e. all elements that are in either set.)
|
||||
"""
|
||||
if not isinstance(other, BaseSet):
|
||||
return NotImplemented
|
||||
return self.union(other)
|
||||
|
||||
def union(self, other):
|
||||
"""Return the union of two sets as a new set.
|
||||
|
||||
(I.e. all elements that are in either set.)
|
||||
"""
|
||||
result = self.__class__(self)
|
||||
result._update(other)
|
||||
return result
|
||||
|
||||
def __and__(self, other):
|
||||
"""Return the intersection of two sets as a new set.
|
||||
|
||||
(I.e. all elements that are in both sets.)
|
||||
"""
|
||||
if not isinstance(other, BaseSet):
|
||||
return NotImplemented
|
||||
return self.intersection(other)
|
||||
|
||||
def intersection(self, other):
|
||||
"""Return the intersection of two sets as a new set.
|
||||
|
||||
(I.e. all elements that are in both sets.)
|
||||
"""
|
||||
if not isinstance(other, BaseSet):
|
||||
other = Set(other)
|
||||
if len(self) <= len(other):
|
||||
little, big = self, other
|
||||
else:
|
||||
little, big = other, self
|
||||
common = iter(filter(big._data.has_key, little))
|
||||
return self.__class__(common)
|
||||
|
||||
def __xor__(self, other):
|
||||
"""Return the symmetric difference of two sets as a new set.
|
||||
|
||||
(I.e. all elements that are in exactly one of the sets.)
|
||||
"""
|
||||
if not isinstance(other, BaseSet):
|
||||
return NotImplemented
|
||||
return self.symmetric_difference(other)
|
||||
|
||||
def symmetric_difference(self, other):
|
||||
"""Return the symmetric difference of two sets as a new set.
|
||||
|
||||
(I.e. all elements that are in exactly one of the sets.)
|
||||
"""
|
||||
result = self.__class__()
|
||||
data = result._data
|
||||
value = True
|
||||
selfdata = self._data
|
||||
try:
|
||||
otherdata = other._data
|
||||
except AttributeError:
|
||||
otherdata = Set(other)._data
|
||||
for elt in filterfalse(otherdata.has_key, selfdata):
|
||||
data[elt] = value
|
||||
for elt in filterfalse(selfdata.has_key, otherdata):
|
||||
data[elt] = value
|
||||
return result
|
||||
|
||||
def __sub__(self, other):
|
||||
"""Return the difference of two sets as a new Set.
|
||||
|
||||
(I.e. all elements that are in this set and not in the other.)
|
||||
"""
|
||||
if not isinstance(other, BaseSet):
|
||||
return NotImplemented
|
||||
return self.difference(other)
|
||||
|
||||
def difference(self, other):
|
||||
"""Return the difference of two sets as a new Set.
|
||||
|
||||
(I.e. all elements that are in this set and not in the other.)
|
||||
"""
|
||||
result = self.__class__()
|
||||
data = result._data
|
||||
try:
|
||||
otherdata = other._data
|
||||
except AttributeError:
|
||||
otherdata = Set(other)._data
|
||||
value = True
|
||||
for elt in filterfalse(otherdata.has_key, self):
|
||||
data[elt] = value
|
||||
return result
|
||||
|
||||
# Membership test
|
||||
|
||||
def __contains__(self, element):
|
||||
"""Report whether an element is a member of a set.
|
||||
|
||||
(Called in response to the expression `element in self'.)
|
||||
"""
|
||||
try:
|
||||
return element in self._data
|
||||
except TypeError:
|
||||
transform = getattr(element, "__as_temporarily_immutable__", None)
|
||||
if transform is None:
|
||||
raise # re-raise the TypeError exception we caught
|
||||
return transform() in self._data
|
||||
|
||||
# Subset and superset test
|
||||
|
||||
def issubset(self, other):
|
||||
"""Report whether another set contains this set."""
|
||||
self._binary_sanity_check(other)
|
||||
if len(self) > len(other): # Fast check for obvious cases
|
||||
return False
|
||||
for elt in filterfalse(other._data.has_key, self):
|
||||
return False
|
||||
return True
|
||||
|
||||
def issuperset(self, other):
|
||||
"""Report whether this set contains another set."""
|
||||
self._binary_sanity_check(other)
|
||||
if len(self) < len(other): # Fast check for obvious cases
|
||||
return False
|
||||
for elt in filterfalse(self._data.has_key, other):
|
||||
return False
|
||||
return True
|
||||
|
||||
# Inequality comparisons using the is-subset relation.
|
||||
__le__ = issubset
|
||||
__ge__ = issuperset
|
||||
|
||||
def __lt__(self, other):
|
||||
self._binary_sanity_check(other)
|
||||
return len(self) < len(other) and self.issubset(other)
|
||||
|
||||
def __gt__(self, other):
|
||||
self._binary_sanity_check(other)
|
||||
return len(self) > len(other) and self.issuperset(other)
|
||||
|
||||
# Assorted helpers
|
||||
|
||||
def _binary_sanity_check(self, other):
|
||||
# Check that the other argument to a binary operation is also
|
||||
# a set, raising a TypeError otherwise.
|
||||
if not isinstance(other, BaseSet):
|
||||
raise TypeError("Binary operation only permitted between sets")
|
||||
|
||||
def _compute_hash(self):
|
||||
# Calculate hash code for a set by xor'ing the hash codes of
|
||||
# the elements. This ensures that the hash code does not depend
|
||||
# on the order in which elements are added to the set. This is
|
||||
# not called __hash__ because a BaseSet should not be hashable;
|
||||
# only an ImmutableSet is hashable.
|
||||
result = 0
|
||||
for elt in self:
|
||||
result ^= hash(elt)
|
||||
return result
|
||||
|
||||
def _update(self, iterable):
|
||||
# The main loop for update() and the subclass __init__() methods.
|
||||
data = self._data
|
||||
|
||||
# Use the fast update() method when a dictionary is available.
|
||||
if isinstance(iterable, BaseSet):
|
||||
data.update(iterable._data)
|
||||
return
|
||||
|
||||
value = True
|
||||
|
||||
if type(iterable) in (list, tuple, xrange):
|
||||
# Optimized: we know that __iter__() and next() can't
|
||||
# raise TypeError, so we can move 'try:' out of the loop.
|
||||
it = iter(iterable)
|
||||
while True:
|
||||
try:
|
||||
for element in it:
|
||||
data[element] = value
|
||||
return
|
||||
except TypeError:
|
||||
transform = getattr(element, "__as_immutable__", None)
|
||||
if transform is None:
|
||||
raise # re-raise the TypeError exception we caught
|
||||
data[transform()] = value
|
||||
else:
|
||||
# Safe: only catch TypeError where intended
|
||||
for element in iterable:
|
||||
try:
|
||||
data[element] = value
|
||||
except TypeError:
|
||||
transform = getattr(element, "__as_immutable__", None)
|
||||
if transform is None:
|
||||
raise # re-raise the TypeError exception we caught
|
||||
data[transform()] = value
|
||||
|
||||
|
||||
class ImmutableSet(BaseSet):
|
||||
"""Immutable set class."""
|
||||
|
||||
__slots__ = ['_hashcode']
|
||||
|
||||
# BaseSet + hashing
|
||||
|
||||
def __init__(self, iterable=None):
|
||||
"""Construct an immutable set from an optional iterable."""
|
||||
self._hashcode = None
|
||||
self._data = {}
|
||||
if iterable is not None:
|
||||
self._update(iterable)
|
||||
|
||||
def __hash__(self):
|
||||
if self._hashcode is None:
|
||||
self._hashcode = self._compute_hash()
|
||||
return self._hashcode
|
||||
|
||||
def __getstate__(self):
|
||||
return self._data, self._hashcode
|
||||
|
||||
def __setstate__(self, state):
|
||||
self._data, self._hashcode = state
|
||||
|
||||
class Set(BaseSet):
|
||||
""" Mutable set class."""
|
||||
|
||||
__slots__ = []
|
||||
|
||||
# BaseSet + operations requiring mutability; no hashing
|
||||
|
||||
def __init__(self, iterable=None):
|
||||
"""Construct a set from an optional iterable."""
|
||||
self._data = {}
|
||||
if iterable is not None:
|
||||
self._update(iterable)
|
||||
|
||||
def __getstate__(self):
|
||||
# getstate's results are ignored if it is not
|
||||
return self._data,
|
||||
|
||||
def __setstate__(self, data):
|
||||
self._data, = data
|
||||
|
||||
def __hash__(self):
|
||||
"""A Set cannot be hashed."""
|
||||
# We inherit object.__hash__, so we must deny this explicitly
|
||||
raise TypeError("Can't hash a Set, only an ImmutableSet.")
|
||||
|
||||
# In-place union, intersection, differences.
|
||||
# Subtle: The xyz_update() functions deliberately return None,
|
||||
# as do all mutating operations on built-in container types.
|
||||
# The __xyz__ spellings have to return self, though.
|
||||
|
||||
def __ior__(self, other):
|
||||
"""Update a set with the union of itself and another."""
|
||||
self._binary_sanity_check(other)
|
||||
self._data.update(other._data)
|
||||
return self
|
||||
|
||||
def union_update(self, other):
|
||||
"""Update a set with the union of itself and another."""
|
||||
self._update(other)
|
||||
|
||||
def __iand__(self, other):
|
||||
"""Update a set with the intersection of itself and another."""
|
||||
self._binary_sanity_check(other)
|
||||
self._data = (self & other)._data
|
||||
return self
|
||||
|
||||
def intersection_update(self, other):
|
||||
"""Update a set with the intersection of itself and another."""
|
||||
if isinstance(other, BaseSet):
|
||||
self &= other
|
||||
else:
|
||||
self._data = (self.intersection(other))._data
|
||||
|
||||
def __ixor__(self, other):
|
||||
"""Update a set with the symmetric difference of itself and another."""
|
||||
self._binary_sanity_check(other)
|
||||
self.symmetric_difference_update(other)
|
||||
return self
|
||||
|
||||
def symmetric_difference_update(self, other):
|
||||
"""Update a set with the symmetric difference of itself and another."""
|
||||
data = self._data
|
||||
value = True
|
||||
if not isinstance(other, BaseSet):
|
||||
other = Set(other)
|
||||
if self is other:
|
||||
self.clear()
|
||||
for elt in other:
|
||||
if elt in data:
|
||||
del data[elt]
|
||||
else:
|
||||
data[elt] = value
|
||||
|
||||
def __isub__(self, other):
|
||||
"""Remove all elements of another set from this set."""
|
||||
self._binary_sanity_check(other)
|
||||
self.difference_update(other)
|
||||
return self
|
||||
|
||||
def difference_update(self, other):
|
||||
"""Remove all elements of another set from this set."""
|
||||
data = self._data
|
||||
if not isinstance(other, BaseSet):
|
||||
other = Set(other)
|
||||
if self is other:
|
||||
self.clear()
|
||||
for elt in filter(data.has_key, other):
|
||||
del data[elt]
|
||||
|
||||
# Python dict-like mass mutations: update, clear
|
||||
|
||||
def update(self, iterable):
|
||||
"""Add all values from an iterable (such as a list or file)."""
|
||||
self._update(iterable)
|
||||
|
||||
def clear(self):
|
||||
"""Remove all elements from this set."""
|
||||
self._data.clear()
|
||||
|
||||
# Single-element mutations: add, remove, discard
|
||||
|
||||
def add(self, element):
|
||||
"""Add an element to a set.
|
||||
|
||||
This has no effect if the element is already present.
|
||||
"""
|
||||
try:
|
||||
self._data[element] = True
|
||||
except TypeError:
|
||||
transform = getattr(element, "__as_immutable__", None)
|
||||
if transform is None:
|
||||
raise # re-raise the TypeError exception we caught
|
||||
self._data[transform()] = True
|
||||
|
||||
def remove(self, element):
|
||||
"""Remove an element from a set; it must be a member.
|
||||
|
||||
If the element is not a member, raise a KeyError.
|
||||
"""
|
||||
try:
|
||||
del self._data[element]
|
||||
except TypeError:
|
||||
transform = getattr(element, "__as_temporarily_immutable__", None)
|
||||
if transform is None:
|
||||
raise # re-raise the TypeError exception we caught
|
||||
del self._data[transform()]
|
||||
|
||||
def discard(self, element):
|
||||
"""Remove an element from a set if it is a member.
|
||||
|
||||
If the element is not a member, do nothing.
|
||||
"""
|
||||
try:
|
||||
self.remove(element)
|
||||
except KeyError:
|
||||
pass
|
||||
|
||||
def pop(self):
|
||||
"""Remove and return an arbitrary set element."""
|
||||
return self._data.popitem()[0]
|
||||
|
||||
def __as_immutable__(self):
|
||||
# Return a copy of self as an immutable set
|
||||
return ImmutableSet(self)
|
||||
|
||||
def __as_temporarily_immutable__(self):
|
||||
# Return self wrapped in a temporarily immutable set
|
||||
return _TemporarilyImmutableSet(self)
|
||||
|
||||
|
||||
class _TemporarilyImmutableSet(BaseSet):
|
||||
# Wrap a mutable set as if it was temporarily immutable.
|
||||
# This only supplies hashing and equality comparisons.
|
||||
|
||||
def __init__(self, set):
|
||||
self._set = set
|
||||
self._data = set._data # Needed by ImmutableSet.__eq__()
|
||||
|
||||
def __hash__(self):
|
||||
return self._set._compute_hash()
|
||||
|
||||
# Local Variables:
|
||||
# tab-width:4
|
||||
# indent-tabs-mode:nil
|
||||
# End:
|
||||
# vim: set expandtab tabstop=4 shiftwidth=4:
|
File diff suppressed because it is too large
Load diff
|
@ -76,7 +76,7 @@ way for wrapping up the functions.
|
|||
|
||||
"""
|
||||
|
||||
# Copyright (c) 2001 - 2015 The SCons Foundation
|
||||
# Copyright (c) 2001 - 2016 The SCons Foundation
|
||||
#
|
||||
# Permission is hereby granted, free of charge, to any person obtaining
|
||||
# a copy of this software and associated documentation files (the
|
||||
|
@ -97,7 +97,7 @@ way for wrapping up the functions.
|
|||
# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
||||
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
|
||||
__revision__ = "src/engine/SCons/Action.py rel_2.4.1:3453:73fefd3ea0b0 2015/11/09 03:25:05 bdbaddog"
|
||||
__revision__ = "src/engine/SCons/Action.py rel_2.5.0:3543:937e55cd78f7 2016/04/09 11:29:54 bdbaddog"
|
||||
|
||||
import dis
|
||||
import os
|
||||
|
@ -235,11 +235,7 @@ def _code_contents(code):
|
|||
# The code contents depends on the number of local variables
|
||||
# but not their actual names.
|
||||
contents.append("%s,%s" % (code.co_argcount, len(code.co_varnames)))
|
||||
try:
|
||||
contents.append(",%s,%s" % (len(code.co_cellvars), len(code.co_freevars)))
|
||||
except AttributeError:
|
||||
# Older versions of Python do not support closures.
|
||||
contents.append(",0,0")
|
||||
|
||||
# The code contents depends on any constants accessed by the
|
||||
# function. Note that we have to call _object_contents on each
|
||||
|
@ -276,11 +272,7 @@ def _function_contents(func):
|
|||
contents.append(',()')
|
||||
|
||||
# The function contents depends on the closure captured cell values.
|
||||
try:
|
||||
closure = func.func_closure or []
|
||||
except AttributeError:
|
||||
# Older versions of Python do not support closures.
|
||||
closure = []
|
||||
|
||||
#xxx = [_object_contents(x.cell_contents) for x in closure]
|
||||
try:
|
||||
|
@ -946,7 +938,6 @@ class LazyAction(CommandGeneratorAction, CommandAction):
|
|||
|
||||
def __init__(self, var, kw):
|
||||
if SCons.Debug.track_instances: logInstanceCreation(self, 'Action.LazyAction')
|
||||
#FUTURE CommandAction.__init__(self, '${'+var+'}', **kw)
|
||||
CommandAction.__init__(self, '${'+var+'}', **kw)
|
||||
self.var = SCons.Util.to_String(var)
|
||||
self.gen_kw = kw
|
|
@ -76,7 +76,7 @@ There are the following methods for internal use within this module:
|
|||
"""
|
||||
|
||||
#
|
||||
# Copyright (c) 2001 - 2015 The SCons Foundation
|
||||
# Copyright (c) 2001 - 2016 The SCons Foundation
|
||||
#
|
||||
# Permission is hereby granted, free of charge, to any person obtaining
|
||||
# a copy of this software and associated documentation files (the
|
||||
|
@ -97,7 +97,7 @@ There are the following methods for internal use within this module:
|
|||
# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
||||
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
|
||||
__revision__ = "src/engine/SCons/Builder.py rel_2.4.1:3453:73fefd3ea0b0 2015/11/09 03:25:05 bdbaddog"
|
||||
__revision__ = "src/engine/SCons/Builder.py rel_2.5.0:3543:937e55cd78f7 2016/04/09 11:29:54 bdbaddog"
|
||||
|
||||
import collections
|
||||
|
||||
|
@ -299,7 +299,7 @@ def _node_errors(builder, env, tlist, slist):
|
|||
msg = "Two different environments were specified for target %s,\n\tbut they appear to have the same action: %s" % (t, action.genstring(tlist, slist, t.env))
|
||||
SCons.Warnings.warn(SCons.Warnings.DuplicateEnvironmentWarning, msg)
|
||||
else:
|
||||
msg = "Two environments with different actions were specified for the same target: %s" % t
|
||||
msg = "Two environments with different actions were specified for the same target: %s\n(action 1: %s)\n(action 2: %s)" % (t,t_contents,contents)
|
||||
raise UserError(msg)
|
||||
if builder.multi:
|
||||
if t.builder != builder:
|
|
@ -1,5 +1,5 @@
|
|||
#
|
||||
# Copyright (c) 2001 - 2015 The SCons Foundation
|
||||
# Copyright (c) 2001 - 2016 The SCons Foundation
|
||||
#
|
||||
# Permission is hereby granted, free of charge, to any person obtaining
|
||||
# a copy of this software and associated documentation files (the
|
||||
|
@ -21,17 +21,19 @@
|
|||
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
#
|
||||
|
||||
__revision__ = "src/engine/SCons/CacheDir.py rel_2.4.1:3453:73fefd3ea0b0 2015/11/09 03:25:05 bdbaddog"
|
||||
__revision__ = "src/engine/SCons/CacheDir.py rel_2.5.0:3543:937e55cd78f7 2016/04/09 11:29:54 bdbaddog"
|
||||
|
||||
__doc__ = """
|
||||
CacheDir support
|
||||
"""
|
||||
|
||||
import os.path
|
||||
import json
|
||||
import os
|
||||
import stat
|
||||
import sys
|
||||
|
||||
import SCons.Action
|
||||
import SCons.Warnings
|
||||
|
||||
cache_enabled = True
|
||||
cache_debug = False
|
||||
|
@ -71,7 +73,8 @@ CacheRetrieve = SCons.Action.Action(CacheRetrieveFunc, CacheRetrieveString)
|
|||
CacheRetrieveSilent = SCons.Action.Action(CacheRetrieveFunc, None)
|
||||
|
||||
def CachePushFunc(target, source, env):
|
||||
if cache_readonly: return
|
||||
if cache_readonly:
|
||||
return
|
||||
|
||||
t = target[0]
|
||||
if t.nocache:
|
||||
|
@ -124,6 +127,10 @@ def CachePushFunc(target, source, env):
|
|||
|
||||
CachePush = SCons.Action.Action(CachePushFunc, None)
|
||||
|
||||
# Nasty hack to cut down to one warning for each cachedir path that needs
|
||||
# upgrading.
|
||||
warned = dict()
|
||||
|
||||
class CacheDir(object):
|
||||
|
||||
def __init__(self, path):
|
||||
|
@ -132,11 +139,63 @@ class CacheDir(object):
|
|||
except ImportError:
|
||||
msg = "No hashlib or MD5 module available, CacheDir() not supported"
|
||||
SCons.Warnings.warn(SCons.Warnings.NoMD5ModuleWarning, msg)
|
||||
self.path = None
|
||||
else:
|
||||
path = None
|
||||
self.path = path
|
||||
self.current_cache_debug = None
|
||||
self.debugFP = None
|
||||
self.config = dict()
|
||||
if path is None:
|
||||
return
|
||||
# See if there's a config file in the cache directory. If there is,
|
||||
# use it. If there isn't, and the directory exists and isn't empty,
|
||||
# produce a warning. If the directory doesn't exist or is empty,
|
||||
# write a config file.
|
||||
config_file = os.path.join(path, 'config')
|
||||
if not os.path.exists(config_file):
|
||||
# A note: There is a race hazard here, if two processes start and
|
||||
# attempt to create the cache directory at the same time. However,
|
||||
# python doesn't really give you the option to do exclusive file
|
||||
# creation (it doesn't even give you the option to error on opening
|
||||
# an existing file for writing...). The ordering of events here
|
||||
# as an attempt to alleviate this, on the basis that it's a pretty
|
||||
# unlikely occurence (it'd require two builds with a brand new cache
|
||||
# directory)
|
||||
if os.path.isdir(path) and len(os.listdir(path)) != 0:
|
||||
self.config['prefix_len'] = 1
|
||||
# When building the project I was testing this on, the warning
|
||||
# was output over 20 times. That seems excessive
|
||||
global warned
|
||||
if self.path not in warned:
|
||||
msg = "Please upgrade your cache by running " +\
|
||||
" scons-configure-cache.py " + self.path
|
||||
SCons.Warnings.warn(SCons.Warnings.CacheVersionWarning, msg)
|
||||
warned[self.path] = True
|
||||
else:
|
||||
if not os.path.isdir(path):
|
||||
try:
|
||||
os.makedirs(path)
|
||||
except OSError:
|
||||
# If someone else is trying to create the directory at
|
||||
# the same time as me, bad things will happen
|
||||
msg = "Failed to create cache directory " + path
|
||||
raise SCons.Errors.EnvironmentError(msg)
|
||||
|
||||
self.config['prefix_len'] = 2
|
||||
if not os.path.exists(config_file):
|
||||
try:
|
||||
with open(config_file, 'w') as config:
|
||||
json.dump(self.config, config)
|
||||
except:
|
||||
msg = "Failed to write cache configuration for " + path
|
||||
raise SCons.Errors.EnvironmentError(msg)
|
||||
else:
|
||||
try:
|
||||
with open(config_file) as config:
|
||||
self.config = json.load(config)
|
||||
except ValueError:
|
||||
msg = "Failed to read cache configuration for " + path
|
||||
raise SCons.Errors.EnvironmentError(msg)
|
||||
|
||||
|
||||
def CacheDebug(self, fmt, target, cachefile):
|
||||
if cache_debug != self.current_cache_debug:
|
||||
|
@ -151,7 +210,7 @@ class CacheDir(object):
|
|||
self.debugFP.write(fmt % (target, os.path.split(cachefile)[1]))
|
||||
|
||||
def is_enabled(self):
|
||||
return (cache_enabled and not self.path is None)
|
||||
return cache_enabled and not self.path is None
|
||||
|
||||
def is_readonly(self):
|
||||
return cache_readonly
|
||||
|
@ -163,7 +222,7 @@ class CacheDir(object):
|
|||
return None, None
|
||||
|
||||
sig = node.get_cachedir_bsig()
|
||||
subdir = sig[0].upper()
|
||||
subdir = sig[:self.config['prefix_len']].upper()
|
||||
dir = os.path.join(self.path, subdir)
|
||||
return dir, os.path.join(dir, sig)
|
||||
|
|
@ -1,12 +1,15 @@
|
|||
"""SCons.Debug
|
||||
|
||||
Code for debugging SCons internal things. Shouldn't be
|
||||
needed by most users.
|
||||
needed by most users. Quick shortcuts:
|
||||
|
||||
from SCons.Debug import caller_trace
|
||||
caller_trace()
|
||||
|
||||
"""
|
||||
|
||||
#
|
||||
# Copyright (c) 2001 - 2015 The SCons Foundation
|
||||
# Copyright (c) 2001 - 2016 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,7 +31,7 @@ needed by most users.
|
|||
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
#
|
||||
|
||||
__revision__ = "src/engine/SCons/Debug.py rel_2.4.1:3453:73fefd3ea0b0 2015/11/09 03:25:05 bdbaddog"
|
||||
__revision__ = "src/engine/SCons/Debug.py rel_2.5.0:3543:937e55cd78f7 2016/04/09 11:29:54 bdbaddog"
|
||||
|
||||
import os
|
||||
import sys
|
||||
|
@ -137,8 +140,12 @@ def caller_stack():
|
|||
caller_bases = {}
|
||||
caller_dicts = {}
|
||||
|
||||
# trace a caller's stack
|
||||
def caller_trace(back=0):
|
||||
"""
|
||||
Trace caller stack and save info into global dicts, which
|
||||
are printed automatically at the end of SCons execution.
|
||||
"""
|
||||
global caller_bases, caller_dicts
|
||||
import traceback
|
||||
tb = traceback.extract_stack(limit=3+back)
|
||||
tb.reverse()
|
|
@ -10,7 +10,7 @@ from distutils.msvccompiler.
|
|||
"""
|
||||
|
||||
#
|
||||
# Copyright (c) 2001 - 2015 The SCons Foundation
|
||||
# Copyright (c) 2001 - 2016 The SCons Foundation
|
||||
#
|
||||
# Permission is hereby granted, free of charge, to any person obtaining
|
||||
# a copy of this software and associated documentation files (the
|
||||
|
@ -33,7 +33,7 @@ from distutils.msvccompiler.
|
|||
#
|
||||
from __future__ import division
|
||||
|
||||
__revision__ = "src/engine/SCons/Defaults.py rel_2.4.1:3453:73fefd3ea0b0 2015/11/09 03:25:05 bdbaddog"
|
||||
__revision__ = "src/engine/SCons/Defaults.py rel_2.5.0:3543:937e55cd78f7 2016/04/09 11:29:54 bdbaddog"
|
||||
|
||||
|
||||
import os
|
||||
|
@ -169,15 +169,73 @@ def get_paths_str(dest):
|
|||
else:
|
||||
return '"' + str(dest) + '"'
|
||||
|
||||
permission_dic = {
|
||||
'u':{
|
||||
'r':stat.S_IRUSR,
|
||||
'w':stat.S_IWUSR,
|
||||
'x':stat.S_IXUSR
|
||||
},
|
||||
'g':{
|
||||
'r':stat.S_IRGRP,
|
||||
'w':stat.S_IWGRP,
|
||||
'x':stat.S_IXGRP
|
||||
},
|
||||
'o':{
|
||||
'r':stat.S_IROTH,
|
||||
'w':stat.S_IWOTH,
|
||||
'x':stat.S_IXOTH
|
||||
}
|
||||
}
|
||||
|
||||
def chmod_func(dest, mode):
|
||||
import SCons.Util
|
||||
from string import digits
|
||||
SCons.Node.FS.invalidate_node_memos(dest)
|
||||
if not SCons.Util.is_List(dest):
|
||||
dest = [dest]
|
||||
if SCons.Util.is_String(mode) and not 0 in [i in digits for i in mode]:
|
||||
mode = int(mode, 8)
|
||||
if not SCons.Util.is_String(mode):
|
||||
for element in dest:
|
||||
os.chmod(str(element), mode)
|
||||
else:
|
||||
mode = str(mode)
|
||||
for operation in mode.split(","):
|
||||
if "=" in operation:
|
||||
operator = "="
|
||||
elif "+" in operation:
|
||||
operator = "+"
|
||||
elif "-" in operation:
|
||||
operator = "-"
|
||||
else:
|
||||
raise SyntaxError("Could not find +, - or =")
|
||||
operation_list = operation.split(operator)
|
||||
if len(operation_list) is not 2:
|
||||
raise SyntaxError("More than one operator found")
|
||||
user = operation_list[0].strip().replace("a", "ugo")
|
||||
permission = operation_list[1].strip()
|
||||
new_perm = 0
|
||||
for u in user:
|
||||
for p in permission:
|
||||
try:
|
||||
new_perm = new_perm | permission_dic[u][p]
|
||||
except KeyError:
|
||||
raise SyntaxError("Unrecognized user or permission format")
|
||||
for element in dest:
|
||||
curr_perm = os.stat(str(element)).st_mode
|
||||
if operator == "=":
|
||||
os.chmod(str(element), new_perm)
|
||||
elif operator == "+":
|
||||
os.chmod(str(element), curr_perm | new_perm)
|
||||
elif operator == "-":
|
||||
os.chmod(str(element), curr_perm & ~new_perm)
|
||||
|
||||
def chmod_strfunc(dest, mode):
|
||||
import SCons.Util
|
||||
if not SCons.Util.is_String(mode):
|
||||
return 'Chmod(%s, 0%o)' % (get_paths_str(dest), mode)
|
||||
else:
|
||||
return 'Chmod(%s, "%s")' % (get_paths_str(dest), str(mode))
|
||||
|
||||
Chmod = ActionFactory(chmod_func, chmod_strfunc)
|
||||
|
||||
|
@ -493,7 +551,7 @@ def __libversionflags(env, version_var, flags_var):
|
|||
|
||||
ConstructionEnvironment = {
|
||||
'BUILDERS' : {},
|
||||
'SCANNERS' : [],
|
||||
'SCANNERS' : [ SCons.Tool.SourceFileScanner ],
|
||||
'CONFIGUREDIR' : '#/.sconf_temp',
|
||||
'CONFIGURELOG' : '#/config.log',
|
||||
'CPPSUFFIXES' : SCons.Tool.CSuffixes,
|
|
@ -10,7 +10,7 @@ Environment
|
|||
"""
|
||||
|
||||
#
|
||||
# Copyright (c) 2001 - 2015 The SCons Foundation
|
||||
# Copyright (c) 2001 - 2016 The SCons Foundation
|
||||
#
|
||||
# Permission is hereby granted, free of charge, to any person obtaining
|
||||
# a copy of this software and associated documentation files (the
|
||||
|
@ -31,7 +31,7 @@ Environment
|
|||
# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
||||
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
|
||||
__revision__ = "src/engine/SCons/Environment.py rel_2.4.1:3453:73fefd3ea0b0 2015/11/09 03:25:05 bdbaddog"
|
||||
__revision__ = "src/engine/SCons/Environment.py rel_2.5.0:3543:937e55cd78f7 2016/04/09 11:29:54 bdbaddog"
|
||||
|
||||
|
||||
import copy
|
||||
|
@ -857,25 +857,6 @@ class SubstitutionEnvironment(object):
|
|||
self[key] = t
|
||||
return self
|
||||
|
||||
# def MergeShellPaths(self, args, prepend=1):
|
||||
# """
|
||||
# Merge the dict in args into the shell environment in env['ENV'].
|
||||
# Shell path elements are appended or prepended according to prepend.
|
||||
|
||||
# Uses Pre/AppendENVPath, so it always appends or prepends uniquely.
|
||||
|
||||
# Example: env.MergeShellPaths({'LIBPATH': '/usr/local/lib'})
|
||||
# prepends /usr/local/lib to env['ENV']['LIBPATH'].
|
||||
# """
|
||||
|
||||
# for pathname, pathval in args.items():
|
||||
# if not pathval:
|
||||
# continue
|
||||
# if prepend:
|
||||
# self.PrependENVPath(pathname, pathval)
|
||||
# else:
|
||||
# self.AppendENVPath(pathname, pathval)
|
||||
|
||||
|
||||
def default_decide_source(dependency, target, prev_ni):
|
||||
f = SCons.Defaults.DefaultEnvironment().decide_source
|
|
@ -1,5 +1,5 @@
|
|||
#
|
||||
# Copyright (c) 2001 - 2015 The SCons Foundation
|
||||
# Copyright (c) 2001 - 2016 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,7 +28,7 @@ and user errors in SCons.
|
|||
|
||||
"""
|
||||
|
||||
__revision__ = "src/engine/SCons/Errors.py rel_2.4.1:3453:73fefd3ea0b0 2015/11/09 03:25:05 bdbaddog"
|
||||
__revision__ = "src/engine/SCons/Errors.py rel_2.5.0:3543:937e55cd78f7 2016/04/09 11:29:54 bdbaddog"
|
||||
|
||||
import SCons.Util
|
||||
|
|
@ -6,7 +6,7 @@ Nodes.
|
|||
"""
|
||||
|
||||
#
|
||||
# Copyright (c) 2001 - 2015 The SCons Foundation
|
||||
# Copyright (c) 2001 - 2016 The SCons Foundation
|
||||
#
|
||||
# Permission is hereby granted, free of charge, to any person obtaining
|
||||
# a copy of this software and associated documentation files (the
|
||||
|
@ -27,7 +27,7 @@ Nodes.
|
|||
# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
||||
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
|
||||
__revision__ = "src/engine/SCons/Executor.py rel_2.4.1:3453:73fefd3ea0b0 2015/11/09 03:25:05 bdbaddog"
|
||||
__revision__ = "src/engine/SCons/Executor.py rel_2.5.0:3543:937e55cd78f7 2016/04/09 11:29:54 bdbaddog"
|
||||
|
||||
import collections
|
||||
|
||||
|
@ -122,7 +122,6 @@ def execute_action_list(obj, target, kw):
|
|||
kw = obj.get_kw(kw)
|
||||
status = 0
|
||||
for act in obj.get_action_list():
|
||||
#args = (self.get_all_targets(), self.get_all_sources(), env)
|
||||
args = ([], [], env)
|
||||
status = act(*args, **kw)
|
||||
if isinstance(status, SCons.Errors.BuildError):
|
||||
|
@ -218,7 +217,9 @@ class Executor(object):
|
|||
us = []
|
||||
ut = []
|
||||
for b in self.batches:
|
||||
if b.targets[0].is_up_to_date():
|
||||
# don't add targets marked always build to unchanged lists
|
||||
# add to changed list as they always need to build
|
||||
if not b.targets[0].always_build and b.targets[0].is_up_to_date():
|
||||
us.extend(list(map(rfile, b.sources)))
|
||||
ut.extend(b.targets)
|
||||
else:
|
||||
|
@ -244,14 +245,12 @@ class Executor(object):
|
|||
return self._changed_targets_list
|
||||
|
||||
def _get_source(self, *args, **kw):
|
||||
#return SCons.Util.NodeList([rfile(self.batches[0].sources[0]).get_subst_proxy()])
|
||||
return rfile(self.batches[0].sources[0]).get_subst_proxy()
|
||||
|
||||
def _get_sources(self, *args, **kw):
|
||||
return SCons.Util.NodeList([rfile(n).get_subst_proxy() for n in self.get_all_sources()])
|
||||
|
||||
def _get_target(self, *args, **kw):
|
||||
#return SCons.Util.NodeList([self.batches[0].targets[0].get_subst_proxy()])
|
||||
return self.batches[0].targets[0].get_subst_proxy()
|
||||
|
||||
def _get_targets(self, *args, **kw):
|
||||
|
@ -486,29 +485,15 @@ class Executor(object):
|
|||
each individual target, which is a hell of a lot more efficient.
|
||||
"""
|
||||
env = self.get_build_env()
|
||||
path = self.get_build_scanner_path
|
||||
kw = self.get_kw()
|
||||
|
||||
# TODO(batch): scan by batches)
|
||||
deps = []
|
||||
if scanner:
|
||||
|
||||
for node in node_list:
|
||||
node.disambiguate()
|
||||
s = scanner.select(node)
|
||||
if not s:
|
||||
continue
|
||||
path = self.get_build_scanner_path(s)
|
||||
deps.extend(node.get_implicit_deps(env, s, path))
|
||||
else:
|
||||
kw = self.get_kw()
|
||||
for node in node_list:
|
||||
node.disambiguate()
|
||||
scanner = node.get_env_scanner(env, kw)
|
||||
if not scanner:
|
||||
continue
|
||||
scanner = scanner.select(node)
|
||||
if not scanner:
|
||||
continue
|
||||
path = self.get_build_scanner_path(scanner)
|
||||
deps.extend(node.get_implicit_deps(env, scanner, path))
|
||||
deps.extend(node.get_implicit_deps(env, scanner, path, kw))
|
||||
|
||||
deps.extend(self.get_implicit_deps())
|
||||
|
|
@ -7,7 +7,7 @@ stop, and wait on jobs.
|
|||
"""
|
||||
|
||||
#
|
||||
# Copyright (c) 2001 - 2015 The SCons Foundation
|
||||
# Copyright (c) 2001 - 2016 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,7 +29,7 @@ stop, and wait on jobs.
|
|||
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
#
|
||||
|
||||
__revision__ = "src/engine/SCons/Job.py rel_2.4.1:3453:73fefd3ea0b0 2015/11/09 03:25:05 bdbaddog"
|
||||
__revision__ = "src/engine/SCons/Job.py rel_2.5.0:3543:937e55cd78f7 2016/04/09 11:29:54 bdbaddog"
|
||||
|
||||
import SCons.compat
|
||||
|
||||
|
@ -70,7 +70,7 @@ class Jobs(object):
|
|||
|
||||
def __init__(self, num, taskmaster):
|
||||
"""
|
||||
create 'num' jobs using the given 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
|
||||
|
@ -126,10 +126,10 @@ class Jobs(object):
|
|||
c) SIGHUP: Controlling shell exiting
|
||||
|
||||
We handle all of these cases by stopping the taskmaster. It
|
||||
turns out that it very difficult to stop the build process
|
||||
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 queue's do not seem to
|
||||
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.
|
||||
|
@ -177,7 +177,7 @@ class Serial(object):
|
|||
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
|
||||
is successfully executed, or failed() will be called if it failed to
|
||||
execute (e.g. execute() raised an exception)."""
|
||||
|
||||
self.taskmaster = taskmaster
|
||||
|
@ -351,7 +351,7 @@ else:
|
|||
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()
|
||||
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).
|
||||
|
|
@ -1,5 +1,5 @@
|
|||
#
|
||||
# Copyright (c) 2001 - 2015 The SCons Foundation
|
||||
# Copyright (c) 2001 - 2016 The SCons Foundation
|
||||
#
|
||||
# Permission is hereby granted, free of charge, to any person obtaining
|
||||
# a copy of this software and associated documentation files (the
|
||||
|
@ -21,7 +21,7 @@
|
|||
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
#
|
||||
|
||||
__revision__ = "src/engine/SCons/Memoize.py rel_2.4.1:3453:73fefd3ea0b0 2015/11/09 03:25:05 bdbaddog"
|
||||
__revision__ = "src/engine/SCons/Memoize.py rel_2.5.0:3543:937e55cd78f7 2016/04/09 11:29:54 bdbaddog"
|
||||
|
||||
__doc__ = """Memoizer
|
||||
|
|
@ -8,7 +8,7 @@ This creates a hash of global Aliases (dummy targets).
|
|||
"""
|
||||
|
||||
#
|
||||
# Copyright (c) 2001 - 2015 The SCons Foundation
|
||||
# Copyright (c) 2001 - 2016 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 +30,7 @@ This creates a hash of global Aliases (dummy targets).
|
|||
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
#
|
||||
|
||||
__revision__ = "src/engine/SCons/Node/Alias.py rel_2.4.1:3453:73fefd3ea0b0 2015/11/09 03:25:05 bdbaddog"
|
||||
__revision__ = "src/engine/SCons/Node/Alias.py rel_2.5.0:3543:937e55cd78f7 2016/04/09 11:29:54 bdbaddog"
|
||||
|
||||
import collections
|
||||
|
|
@ -11,7 +11,7 @@ that can be used by scripts or modules looking for the canonical default.
|
|||
"""
|
||||
|
||||
#
|
||||
# Copyright (c) 2001 - 2015 The SCons Foundation
|
||||
# Copyright (c) 2001 - 2016 The SCons Foundation
|
||||
#
|
||||
# Permission is hereby granted, free of charge, to any person obtaining
|
||||
# a copy of this software and associated documentation files (the
|
||||
|
@ -32,7 +32,7 @@ that can be used by scripts or modules looking for the canonical default.
|
|||
# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
||||
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
|
||||
__revision__ = "src/engine/SCons/Node/FS.py rel_2.4.1:3453:73fefd3ea0b0 2015/11/09 03:25:05 bdbaddog"
|
||||
__revision__ = "src/engine/SCons/Node/FS.py rel_2.5.0:3543:937e55cd78f7 2016/04/09 11:29:54 bdbaddog"
|
||||
|
||||
import fnmatch
|
||||
import os
|
||||
|
@ -186,7 +186,7 @@ needs_normpath_check = re.compile(
|
|||
# We need to renormalize the path if it contains a '.'
|
||||
# directory, but NOT if it is a single '.' '/' characters. We
|
||||
# do not want to match a single '.' because this case is checked
|
||||
# for explicitely since this is common enough case.
|
||||
# for explicitly since this is common enough case.
|
||||
#
|
||||
# Note that we check for all the following cases:
|
||||
#
|
||||
|
@ -1165,15 +1165,6 @@ class LocalFS(object):
|
|||
return ''
|
||||
|
||||
|
||||
#class RemoteFS:
|
||||
# # Skeleton for the obvious methods we might need from the
|
||||
# # abstraction layer for a remote filesystem.
|
||||
# def upload(self, local_src, remote_dst):
|
||||
# pass
|
||||
# def download(self, remote_src, local_dst):
|
||||
# pass
|
||||
|
||||
|
||||
class FS(LocalFS):
|
||||
|
||||
def __init__(self, path = None):
|
||||
|
@ -2234,7 +2225,6 @@ class Dir(Base):
|
|||
# the overall list will also be filtered later,
|
||||
# after we exit this loop.
|
||||
if pattern[0] != '.':
|
||||
#disk_names = [ d for d in disk_names if d[0] != '.' ]
|
||||
disk_names = [x for x in disk_names if x[0] != '.']
|
||||
disk_names = fnmatch.filter(disk_names, pattern)
|
||||
dirEntry = dir.Entry
|
||||
|
@ -2627,13 +2617,6 @@ class File(Base):
|
|||
the directory of this file."""
|
||||
return self.dir.File(name)
|
||||
|
||||
#def generate_build_dict(self):
|
||||
# """Return an appropriate dictionary of values for building
|
||||
# this File."""
|
||||
# return {'Dir' : self.Dir,
|
||||
# 'File' : self.File,
|
||||
# 'RDirs' : self.RDirs}
|
||||
|
||||
def _morph(self):
|
||||
"""Turn a file system node into a File object."""
|
||||
self.scanner_paths = {}
|
||||
|
@ -2907,9 +2890,7 @@ class File(Base):
|
|||
pass
|
||||
|
||||
if scanner:
|
||||
# result = [n.disambiguate() for n in scanner(self, env, path)]
|
||||
result = scanner(self, env, path)
|
||||
result = [N.disambiguate() for N in result]
|
||||
result = [n.disambiguate() for n in scanner(self, env, path)]
|
||||
else:
|
||||
result = []
|
||||
|
||||
|
@ -3519,36 +3500,6 @@ class FileFinder(object):
|
|||
|
||||
filedir, filename = os.path.split(filename)
|
||||
if filedir:
|
||||
# More compact code that we can't use until we drop
|
||||
# support for Python 1.5.2:
|
||||
#
|
||||
#def filedir_lookup(p, fd=filedir):
|
||||
# """
|
||||
# A helper function that looks up a directory for a file
|
||||
# we're trying to find. This only creates the Dir Node
|
||||
# if it exists on-disk, since if the directory doesn't
|
||||
# exist we know we won't find any files in it... :-)
|
||||
# """
|
||||
# dir, name = os.path.split(fd)
|
||||
# if dir:
|
||||
# p = filedir_lookup(p, dir)
|
||||
# if not p:
|
||||
# return None
|
||||
# norm_name = _my_normcase(name)
|
||||
# try:
|
||||
# node = p.entries[norm_name]
|
||||
# except KeyError:
|
||||
# return p.dir_on_disk(name)
|
||||
# if isinstance(node, Dir):
|
||||
# return node
|
||||
# if isinstance(node, Entry):
|
||||
# node.must_be_same(Dir)
|
||||
# return node
|
||||
# if isinstance(node, Dir) or isinstance(node, Entry):
|
||||
# return node
|
||||
# return None
|
||||
#paths = [_f for _f in map(filedir_lookup, paths) if _f]
|
||||
|
||||
self.default_filedir = filedir
|
||||
paths = [_f for _f in map(self.filedir_lookup, paths) if _f]
|
||||
|
|
@ -5,7 +5,7 @@ Python nodes.
|
|||
"""
|
||||
|
||||
#
|
||||
# Copyright (c) 2001 - 2015 The SCons Foundation
|
||||
# Copyright (c) 2001 - 2016 The SCons Foundation
|
||||
#
|
||||
# Permission is hereby granted, free of charge, to any person obtaining
|
||||
# a copy of this software and associated documentation files (the
|
||||
|
@ -27,7 +27,7 @@ Python nodes.
|
|||
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
#
|
||||
|
||||
__revision__ = "src/engine/SCons/Node/Python.py rel_2.4.1:3453:73fefd3ea0b0 2015/11/09 03:25:05 bdbaddog"
|
||||
__revision__ = "src/engine/SCons/Node/Python.py rel_2.5.0:3543:937e55cd78f7 2016/04/09 11:29:54 bdbaddog"
|
||||
|
||||
import SCons.Node
|
||||
|
|
@ -20,7 +20,7 @@ be able to depend on any other type of "thing."
|
|||
"""
|
||||
|
||||
#
|
||||
# Copyright (c) 2001 - 2015 The SCons Foundation
|
||||
# Copyright (c) 2001 - 2016 The SCons Foundation
|
||||
#
|
||||
# Permission is hereby granted, free of charge, to any person obtaining
|
||||
# a copy of this software and associated documentation files (the
|
||||
|
@ -41,7 +41,7 @@ be able to depend on any other type of "thing."
|
|||
# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
||||
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
|
||||
__revision__ = "src/engine/SCons/Node/__init__.py rel_2.4.1:3453:73fefd3ea0b0 2015/11/09 03:25:05 bdbaddog"
|
||||
__revision__ = "src/engine/SCons/Node/__init__.py rel_2.5.0:3543:937e55cd78f7 2016/04/09 11:29:54 bdbaddog"
|
||||
|
||||
import collections
|
||||
import copy
|
||||
|
@ -916,34 +916,55 @@ class Node(object):
|
|||
"""
|
||||
return []
|
||||
|
||||
def get_implicit_deps(self, env, scanner, path):
|
||||
def get_implicit_deps(self, env, initial_scanner, path_func, kw = {}):
|
||||
"""Return a list of implicit dependencies for this node.
|
||||
|
||||
This method exists to handle recursive invocation of the scanner
|
||||
on the implicit dependencies returned by the scanner, if the
|
||||
scanner's recursive flag says that we should.
|
||||
"""
|
||||
if not scanner:
|
||||
return []
|
||||
|
||||
# Give the scanner a chance to select a more specific scanner
|
||||
# for this Node.
|
||||
#scanner = scanner.select(self)
|
||||
|
||||
nodes = [self]
|
||||
seen = {}
|
||||
seen[self] = 1
|
||||
deps = []
|
||||
while nodes:
|
||||
n = nodes.pop(0)
|
||||
d = [x for x in n.get_found_includes(env, scanner, path) if x not in seen]
|
||||
if d:
|
||||
deps.extend(d)
|
||||
for n in d:
|
||||
seen[n] = 1
|
||||
nodes.extend(scanner.recurse_nodes(d))
|
||||
dependencies = []
|
||||
|
||||
return deps
|
||||
root_node_scanner = self._get_scanner(env, initial_scanner, None, kw)
|
||||
|
||||
while nodes:
|
||||
node = nodes.pop(0)
|
||||
|
||||
scanner = node._get_scanner(env, initial_scanner, root_node_scanner, kw)
|
||||
|
||||
if not scanner:
|
||||
continue
|
||||
|
||||
path = path_func(scanner)
|
||||
|
||||
included_deps = [x for x in node.get_found_includes(env, scanner, path) if x not in seen]
|
||||
if included_deps:
|
||||
dependencies.extend(included_deps)
|
||||
for dep in included_deps:
|
||||
seen[dep] = 1
|
||||
nodes.extend(scanner.recurse_nodes(included_deps))
|
||||
|
||||
return dependencies
|
||||
|
||||
def _get_scanner(self, env, initial_scanner, root_node_scanner, kw):
|
||||
if not initial_scanner:
|
||||
# handle implicit scanner case
|
||||
scanner = self.get_env_scanner(env, kw)
|
||||
if scanner:
|
||||
scanner = scanner.select(self)
|
||||
else:
|
||||
# handle explicit scanner case
|
||||
scanner = initial_scanner.select(self)
|
||||
|
||||
if not scanner:
|
||||
# no scanner could be found for the given node's scanner key;
|
||||
# thus, make an attempt at using a default.
|
||||
scanner = root_node_scanner
|
||||
|
||||
return scanner
|
||||
|
||||
def get_env_scanner(self, env, kw={}):
|
||||
return env.get_scanner(self.scanner_key())
|
||||
|
@ -1260,11 +1281,6 @@ class Node(object):
|
|||
def _add_child(self, collection, set, child):
|
||||
"""Adds 'child' to 'collection', first checking 'set' to see if it's
|
||||
already present."""
|
||||
#if type(child) is not type([]):
|
||||
# child = [child]
|
||||
#for c in child:
|
||||
# if not isinstance(c, Node):
|
||||
# raise TypeError, c
|
||||
added = None
|
||||
for c in child:
|
||||
if c not in set:
|
|
@ -1,5 +1,5 @@
|
|||
#
|
||||
# Copyright (c) 2001 - 2015 The SCons Foundation
|
||||
# Copyright (c) 2001 - 2016 The SCons Foundation
|
||||
#
|
||||
# Permission is hereby granted, free of charge, to any person obtaining
|
||||
# a copy of this software and associated documentation files (the
|
||||
|
@ -21,7 +21,7 @@
|
|||
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
#
|
||||
|
||||
__revision__ = "src/engine/SCons/Options/BoolOption.py rel_2.4.1:3453:73fefd3ea0b0 2015/11/09 03:25:05 bdbaddog"
|
||||
__revision__ = "src/engine/SCons/Options/BoolOption.py rel_2.5.0:3543:937e55cd78f7 2016/04/09 11:29:54 bdbaddog"
|
||||
|
||||
__doc__ = """Place-holder for the old SCons.Options module hierarchy
|
||||
|
|
@ -1,5 +1,5 @@
|
|||
#
|
||||
# Copyright (c) 2001 - 2015 The SCons Foundation
|
||||
# Copyright (c) 2001 - 2016 The SCons Foundation
|
||||
#
|
||||
# Permission is hereby granted, free of charge, to any person obtaining
|
||||
# a copy of this software and associated documentation files (the
|
||||
|
@ -21,7 +21,7 @@
|
|||
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
#
|
||||
|
||||
__revision__ = "src/engine/SCons/Options/EnumOption.py rel_2.4.1:3453:73fefd3ea0b0 2015/11/09 03:25:05 bdbaddog"
|
||||
__revision__ = "src/engine/SCons/Options/EnumOption.py rel_2.5.0:3543:937e55cd78f7 2016/04/09 11:29:54 bdbaddog"
|
||||
|
||||
__doc__ = """Place-holder for the old SCons.Options module hierarchy
|
||||
|
|
@ -1,5 +1,5 @@
|
|||
#
|
||||
# Copyright (c) 2001 - 2015 The SCons Foundation
|
||||
# Copyright (c) 2001 - 2016 The SCons Foundation
|
||||
#
|
||||
# Permission is hereby granted, free of charge, to any person obtaining
|
||||
# a copy of this software and associated documentation files (the
|
||||
|
@ -21,7 +21,7 @@
|
|||
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
#
|
||||
|
||||
__revision__ = "src/engine/SCons/Options/ListOption.py rel_2.4.1:3453:73fefd3ea0b0 2015/11/09 03:25:05 bdbaddog"
|
||||
__revision__ = "src/engine/SCons/Options/ListOption.py rel_2.5.0:3543:937e55cd78f7 2016/04/09 11:29:54 bdbaddog"
|
||||
|
||||
__doc__ = """Place-holder for the old SCons.Options module hierarchy
|
||||
|
|
@ -1,5 +1,5 @@
|
|||
#
|
||||
# Copyright (c) 2001 - 2015 The SCons Foundation
|
||||
# Copyright (c) 2001 - 2016 The SCons Foundation
|
||||
#
|
||||
# Permission is hereby granted, free of charge, to any person obtaining
|
||||
# a copy of this software and associated documentation files (the
|
||||
|
@ -21,7 +21,7 @@
|
|||
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
#
|
||||
|
||||
__revision__ = "src/engine/SCons/Options/PackageOption.py rel_2.4.1:3453:73fefd3ea0b0 2015/11/09 03:25:05 bdbaddog"
|
||||
__revision__ = "src/engine/SCons/Options/PackageOption.py rel_2.5.0:3543:937e55cd78f7 2016/04/09 11:29:54 bdbaddog"
|
||||
|
||||
__doc__ = """Place-holder for the old SCons.Options module hierarchy
|
||||
|
|
@ -1,5 +1,5 @@
|
|||
#
|
||||
# Copyright (c) 2001 - 2015 The SCons Foundation
|
||||
# Copyright (c) 2001 - 2016 The SCons Foundation
|
||||
#
|
||||
# Permission is hereby granted, free of charge, to any person obtaining
|
||||
# a copy of this software and associated documentation files (the
|
||||
|
@ -21,7 +21,7 @@
|
|||
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
#
|
||||
|
||||
__revision__ = "src/engine/SCons/Options/PathOption.py rel_2.4.1:3453:73fefd3ea0b0 2015/11/09 03:25:05 bdbaddog"
|
||||
__revision__ = "src/engine/SCons/Options/PathOption.py rel_2.5.0:3543:937e55cd78f7 2016/04/09 11:29:54 bdbaddog"
|
||||
|
||||
__doc__ = """Place-holder for the old SCons.Options module hierarchy
|
||||
|
|
@ -1,5 +1,5 @@
|
|||
#
|
||||
# Copyright (c) 2001 - 2015 The SCons Foundation
|
||||
# Copyright (c) 2001 - 2016 The SCons Foundation
|
||||
#
|
||||
# Permission is hereby granted, free of charge, to any person obtaining
|
||||
# a copy of this software and associated documentation files (the
|
||||
|
@ -21,7 +21,7 @@
|
|||
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
#
|
||||
|
||||
__revision__ = "src/engine/SCons/Options/__init__.py rel_2.4.1:3453:73fefd3ea0b0 2015/11/09 03:25:05 bdbaddog"
|
||||
__revision__ = "src/engine/SCons/Options/__init__.py rel_2.5.0:3543:937e55cd78f7 2016/04/09 11:29:54 bdbaddog"
|
||||
|
||||
__doc__ = """Place-holder for the old SCons.Options module hierarchy
|
||||
|
|
@ -1,5 +1,5 @@
|
|||
#
|
||||
# Copyright (c) 2001 - 2015 The SCons Foundation
|
||||
# Copyright (c) 2001 - 2016 The SCons Foundation
|
||||
#
|
||||
# Permission is hereby granted, free of charge, to any person obtaining
|
||||
# a copy of this software and associated documentation files (the
|
||||
|
@ -21,13 +21,13 @@
|
|||
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
#
|
||||
|
||||
__revision__ = "src/engine/SCons/PathList.py rel_2.4.1:3453:73fefd3ea0b0 2015/11/09 03:25:05 bdbaddog"
|
||||
__revision__ = "src/engine/SCons/PathList.py rel_2.5.0:3543:937e55cd78f7 2016/04/09 11:29:54 bdbaddog"
|
||||
|
||||
__doc__ = """SCons.PathList
|
||||
|
||||
A module for handling lists of directory paths (the sort of things
|
||||
that get set as CPPPATH, LIBPATH, etc.) with as much caching of data and
|
||||
efficiency as we can while still keeping the evaluation delayed so that we
|
||||
efficiency as we can, while still keeping the evaluation delayed so that we
|
||||
Do the Right Thing (almost) regardless of how the variable is specified.
|
||||
|
||||
"""
|
|
@ -12,7 +12,7 @@ environment. Consequently, we'll examine both sys.platform and os.name
|
|||
(and anything else that might come in to play) in order to return some
|
||||
specification which is unique enough for our purposes.
|
||||
|
||||
Note that because this subsysem just *selects* a callable that can
|
||||
Note that because this subsystem just *selects* a callable that can
|
||||
modify a construction environment, it's possible for people to define
|
||||
their own "platform specification" in an arbitrary callable function.
|
||||
No one needs to use or tie in to this subsystem in order to roll
|
||||
|
@ -20,7 +20,7 @@ their own platform definition.
|
|||
"""
|
||||
|
||||
#
|
||||
# Copyright (c) 2001 - 2015 The SCons Foundation
|
||||
# Copyright (c) 2001 - 2016 The SCons Foundation
|
||||
#
|
||||
# Permission is hereby granted, free of charge, to any person obtaining
|
||||
# a copy of this software and associated documentation files (the
|
||||
|
@ -42,7 +42,7 @@ their own platform definition.
|
|||
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
#
|
||||
|
||||
__revision__ = "src/engine/SCons/Platform/__init__.py rel_2.4.1:3453:73fefd3ea0b0 2015/11/09 03:25:05 bdbaddog"
|
||||
__revision__ = "src/engine/SCons/Platform/__init__.py rel_2.5.0:3543:937e55cd78f7 2016/04/09 11:29:54 bdbaddog"
|
||||
|
||||
import SCons.compat
|
||||
|
|
@ -8,7 +8,7 @@ selection method.
|
|||
"""
|
||||
|
||||
#
|
||||
# Copyright (c) 2001 - 2015 The SCons Foundation
|
||||
# Copyright (c) 2001 - 2016 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 +30,7 @@ selection method.
|
|||
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
#
|
||||
|
||||
__revision__ = "src/engine/SCons/Platform/aix.py rel_2.4.1:3453:73fefd3ea0b0 2015/11/09 03:25:05 bdbaddog"
|
||||
__revision__ = "src/engine/SCons/Platform/aix.py rel_2.5.0:3543:937e55cd78f7 2016/04/09 11:29:54 bdbaddog"
|
||||
|
||||
import os
|
||||
import subprocess
|
|
@ -8,7 +8,7 @@ selection method.
|
|||
"""
|
||||
|
||||
#
|
||||
# Copyright (c) 2001 - 2015 The SCons Foundation
|
||||
# Copyright (c) 2001 - 2016 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 +30,7 @@ selection method.
|
|||
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
#
|
||||
|
||||
__revision__ = "src/engine/SCons/Platform/cygwin.py rel_2.4.1:3453:73fefd3ea0b0 2015/11/09 03:25:05 bdbaddog"
|
||||
__revision__ = "src/engine/SCons/Platform/cygwin.py rel_2.5.0:3543:937e55cd78f7 2016/04/09 11:29:54 bdbaddog"
|
||||
|
||||
import posix
|
||||
from SCons.Platform import TempFileMunge
|
|
@ -8,7 +8,7 @@ selection method.
|
|||
"""
|
||||
|
||||
#
|
||||
# Copyright (c) 2001 - 2015 The SCons Foundation
|
||||
# Copyright (c) 2001 - 2016 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 +30,7 @@ selection method.
|
|||
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
#
|
||||
|
||||
__revision__ = "src/engine/SCons/Platform/darwin.py rel_2.4.1:3453:73fefd3ea0b0 2015/11/09 03:25:05 bdbaddog"
|
||||
__revision__ = "src/engine/SCons/Platform/darwin.py rel_2.5.0:3543:937e55cd78f7 2016/04/09 11:29:54 bdbaddog"
|
||||
|
||||
import posix
|
||||
import os
|
|
@ -8,7 +8,7 @@ selection method.
|
|||
"""
|
||||
|
||||
#
|
||||
# Copyright (c) 2001 - 2015 The SCons Foundation
|
||||
# Copyright (c) 2001 - 2016 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 +30,7 @@ selection method.
|
|||
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
#
|
||||
|
||||
__revision__ = "src/engine/SCons/Platform/hpux.py rel_2.4.1:3453:73fefd3ea0b0 2015/11/09 03:25:05 bdbaddog"
|
||||
__revision__ = "src/engine/SCons/Platform/hpux.py rel_2.5.0:3543:937e55cd78f7 2016/04/09 11:29:54 bdbaddog"
|
||||
|
||||
import posix
|
||||
|
|
@ -8,7 +8,7 @@ selection method.
|
|||
"""
|
||||
|
||||
#
|
||||
# Copyright (c) 2001 - 2015 The SCons Foundation
|
||||
# Copyright (c) 2001 - 2016 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 +30,7 @@ selection method.
|
|||
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
#
|
||||
|
||||
__revision__ = "src/engine/SCons/Platform/irix.py rel_2.4.1:3453:73fefd3ea0b0 2015/11/09 03:25:05 bdbaddog"
|
||||
__revision__ = "src/engine/SCons/Platform/irix.py rel_2.5.0:3543:937e55cd78f7 2016/04/09 11:29:54 bdbaddog"
|
||||
|
||||
import posix
|
||||
|
|
@ -8,7 +8,7 @@ selection method.
|
|||
"""
|
||||
|
||||
#
|
||||
# Copyright (c) 2001 - 2015 The SCons Foundation
|
||||
# Copyright (c) 2001 - 2016 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 +30,7 @@ selection method.
|
|||
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
#
|
||||
|
||||
__revision__ = "src/engine/SCons/Platform/os2.py rel_2.4.1:3453:73fefd3ea0b0 2015/11/09 03:25:05 bdbaddog"
|
||||
__revision__ = "src/engine/SCons/Platform/os2.py rel_2.5.0:3543:937e55cd78f7 2016/04/09 11:29:54 bdbaddog"
|
||||
import win32
|
||||
|
||||
def generate(env):
|
|
@ -8,7 +8,7 @@ selection method.
|
|||
"""
|
||||
|
||||
#
|
||||
# Copyright (c) 2001 - 2015 The SCons Foundation
|
||||
# Copyright (c) 2001 - 2016 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 +30,7 @@ selection method.
|
|||
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
#
|
||||
|
||||
__revision__ = "src/engine/SCons/Platform/posix.py rel_2.4.1:3453:73fefd3ea0b0 2015/11/09 03:25:05 bdbaddog"
|
||||
__revision__ = "src/engine/SCons/Platform/posix.py rel_2.5.0:3543:937e55cd78f7 2016/04/09 11:29:54 bdbaddog"
|
||||
|
||||
import errno
|
||||
import os
|
||||
|
@ -50,14 +50,16 @@ exitvalmap = {
|
|||
def escape(arg):
|
||||
"escape shell special characters"
|
||||
slash = '\\'
|
||||
special = '"$()'
|
||||
special = '"$'
|
||||
|
||||
arg = arg.replace(slash, slash+slash)
|
||||
for c in special:
|
||||
arg = arg.replace(c, slash+c)
|
||||
|
||||
# print "ESCAPE RESULT: %s"%arg
|
||||
return '"' + arg + '"'
|
||||
|
||||
|
||||
def exec_subprocess(l, env):
|
||||
proc = subprocess.Popen(l, env = env, close_fds = True)
|
||||
return proc.wait()
|
|
@ -8,7 +8,7 @@ selection method.
|
|||
"""
|
||||
|
||||
#
|
||||
# Copyright (c) 2001 - 2015 The SCons Foundation
|
||||
# Copyright (c) 2001 - 2016 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 +30,7 @@ selection method.
|
|||
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
#
|
||||
|
||||
__revision__ = "src/engine/SCons/Platform/sunos.py rel_2.4.1:3453:73fefd3ea0b0 2015/11/09 03:25:05 bdbaddog"
|
||||
__revision__ = "src/engine/SCons/Platform/sunos.py rel_2.5.0:3543:937e55cd78f7 2016/04/09 11:29:54 bdbaddog"
|
||||
|
||||
import posix
|
||||
|
|
@ -8,7 +8,7 @@ selection method.
|
|||
"""
|
||||
|
||||
#
|
||||
# Copyright (c) 2001 - 2015 The SCons Foundation
|
||||
# Copyright (c) 2001 - 2016 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 +30,7 @@ selection method.
|
|||
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
#
|
||||
|
||||
__revision__ = "src/engine/SCons/Platform/win32.py rel_2.4.1:3453:73fefd3ea0b0 2015/11/09 03:25:05 bdbaddog"
|
||||
__revision__ = "src/engine/SCons/Platform/win32.py rel_2.5.0:3543:937e55cd78f7 2016/04/09 11:29:54 bdbaddog"
|
||||
|
||||
import os
|
||||
import os.path
|
||||
|
@ -60,10 +60,8 @@ except AttributeError:
|
|||
else:
|
||||
parallel_msg = None
|
||||
|
||||
import builtins
|
||||
|
||||
_builtin_file = builtins.file
|
||||
_builtin_open = builtins.open
|
||||
_builtin_file = file
|
||||
_builtin_open = open
|
||||
|
||||
class _scons_file(_builtin_file):
|
||||
def __init__(self, *args, **kw):
|
||||
|
@ -78,8 +76,8 @@ else:
|
|||
0)
|
||||
return fp
|
||||
|
||||
builtins.file = _scons_file
|
||||
builtins.open = _scons_open
|
||||
file = _scons_file
|
||||
open = _scons_open
|
||||
|
||||
try:
|
||||
import threading
|
|
@ -12,7 +12,7 @@ libraries are installed, if some command line options are supported etc.
|
|||
"""
|
||||
|
||||
#
|
||||
# Copyright (c) 2001 - 2015 The SCons Foundation
|
||||
# Copyright (c) 2001 - 2016 The SCons Foundation
|
||||
#
|
||||
# Permission is hereby granted, free of charge, to any person obtaining
|
||||
# a copy of this software and associated documentation files (the
|
||||
|
@ -34,7 +34,7 @@ libraries are installed, if some command line options are supported etc.
|
|||
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
#
|
||||
|
||||
__revision__ = "src/engine/SCons/SConf.py rel_2.4.1:3453:73fefd3ea0b0 2015/11/09 03:25:05 bdbaddog"
|
||||
__revision__ = "src/engine/SCons/SConf.py rel_2.5.0:3543:937e55cd78f7 2016/04/09 11:29:54 bdbaddog"
|
||||
|
||||
import SCons.compat
|
||||
|
||||
|
@ -254,14 +254,7 @@ class SConfBuildTask(SCons.Taskmaster.AlwaysTask):
|
|||
else:
|
||||
self.display('Caught exception while building "%s":\n' %
|
||||
self.targets[0])
|
||||
try:
|
||||
excepthook = sys.excepthook
|
||||
except AttributeError:
|
||||
# Earlier versions of Python don't have sys.excepthook...
|
||||
def excepthook(type, value, tb):
|
||||
traceback.print_tb(tb)
|
||||
print type, value
|
||||
excepthook(*self.exc_info())
|
||||
sys.excepthook(*self.exc_info())
|
||||
return SCons.Taskmaster.Task.failed(self)
|
||||
|
||||
def collect_node_states(self):
|
||||
|
@ -355,8 +348,6 @@ class SConfBuildTask(SCons.Taskmaster.AlwaysTask):
|
|||
raise SCons.Errors.ExplicitExit(self.targets[0],exc_value.code)
|
||||
except Exception, e:
|
||||
for t in self.targets:
|
||||
#binfo = t.get_binfo()
|
||||
#binfo.__class__ = SConfBuildInfo
|
||||
binfo = SConfBuildInfo()
|
||||
binfo.merge(t.get_binfo())
|
||||
binfo.set_build_result(1, s.getvalue())
|
||||
|
@ -375,8 +366,6 @@ class SConfBuildTask(SCons.Taskmaster.AlwaysTask):
|
|||
raise e
|
||||
else:
|
||||
for t in self.targets:
|
||||
#binfo = t.get_binfo()
|
||||
#binfo.__class__ = SConfBuildInfo
|
||||
binfo = SConfBuildInfo()
|
||||
binfo.merge(t.get_binfo())
|
||||
binfo.set_build_result(0, s.getvalue())
|
||||
|
@ -399,16 +388,16 @@ class SConfBase(object):
|
|||
tests, be sure to call the Finish() method, which returns the modified
|
||||
environment.
|
||||
Some words about caching: In most cases, it is not necessary to cache
|
||||
Test results explicitely. Instead, we use the scons dependency checking
|
||||
Test results explicitly. Instead, we use the scons dependency checking
|
||||
mechanism. For example, if one wants to compile a test program
|
||||
(SConf.TryLink), the compiler is only called, if the program dependencies
|
||||
have changed. However, if the program could not be compiled in a former
|
||||
SConf run, we need to explicitely cache this error.
|
||||
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):
|
||||
"""Constructor. Pass additional tests in the custom_tests-dictinary,
|
||||
"""Constructor. Pass additional tests in the custom_tests-dictionary,
|
||||
e.g. custom_tests={'CheckPrivate':MyPrivateTest}, where MyPrivateTest
|
||||
defines a custom test.
|
||||
Note also the conf_dir and log_file arguments (you may want to
|
||||
|
@ -766,7 +755,7 @@ class CheckContext(object):
|
|||
A typical test is just a callable with an instance of CheckContext as
|
||||
first argument:
|
||||
|
||||
def CheckCustom(context, ...)
|
||||
def CheckCustom(context, ...):
|
||||
context.Message('Checking my weird test ... ')
|
||||
ret = myWeirdTestFunction(...)
|
||||
context.Result(ret)
|
|
@ -5,7 +5,7 @@ Writing and reading information to the .sconsign file or files.
|
|||
"""
|
||||
|
||||
#
|
||||
# Copyright (c) 2001 - 2015 The SCons Foundation
|
||||
# Copyright (c) 2001 - 2016 The SCons Foundation
|
||||
#
|
||||
# Permission is hereby granted, free of charge, to any person obtaining
|
||||
# a copy of this software and associated documentation files (the
|
||||
|
@ -27,7 +27,7 @@ Writing and reading information to the .sconsign file or files.
|
|||
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
#
|
||||
|
||||
__revision__ = "src/engine/SCons/SConsign.py rel_2.4.1:3453:73fefd3ea0b0 2015/11/09 03:25:05 bdbaddog"
|
||||
__revision__ = "src/engine/SCons/SConsign.py rel_2.5.0:3543:937e55cd78f7 2016/04/09 11:29:54 bdbaddog"
|
||||
|
||||
import SCons.compat
|
||||
|
|
@ -1,11 +1,11 @@
|
|||
"""SCons.Scanner.C
|
||||
|
||||
This module implements the depenency scanner for C/C++ code.
|
||||
This module implements the dependency scanner for C/C++ code.
|
||||
|
||||
"""
|
||||
|
||||
#
|
||||
# Copyright (c) 2001 - 2015 The SCons Foundation
|
||||
# Copyright (c) 2001 - 2016 The SCons Foundation
|
||||
#
|
||||
# Permission is hereby granted, free of charge, to any person obtaining
|
||||
# a copy of this software and associated documentation files (the
|
||||
|
@ -27,7 +27,7 @@ This module implements the depenency scanner for C/C++ code.
|
|||
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
#
|
||||
|
||||
__revision__ = "src/engine/SCons/Scanner/C.py rel_2.4.1:3453:73fefd3ea0b0 2015/11/09 03:25:05 bdbaddog"
|
||||
__revision__ = "src/engine/SCons/Scanner/C.py rel_2.5.0:3543:937e55cd78f7 2016/04/09 11:29:54 bdbaddog"
|
||||
|
||||
import SCons.Node.FS
|
||||
import SCons.Scanner
|
|
@ -8,7 +8,7 @@ Coded by Andy Friesen
|
|||
"""
|
||||
|
||||
#
|
||||
# Copyright (c) 2001 - 2015 The SCons Foundation
|
||||
# Copyright (c) 2001 - 2016 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 +30,7 @@ Coded by Andy Friesen
|
|||
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
#
|
||||
|
||||
__revision__ = "src/engine/SCons/Scanner/D.py rel_2.4.1:3453:73fefd3ea0b0 2015/11/09 03:25:05 bdbaddog"
|
||||
__revision__ = "src/engine/SCons/Scanner/D.py rel_2.5.0:3543:937e55cd78f7 2016/04/09 11:29:54 bdbaddog"
|
||||
|
||||
import re
|
||||
|
|
@ -1,5 +1,5 @@
|
|||
#
|
||||
# Copyright (c) 2001 - 2015 The SCons Foundation
|
||||
# Copyright (c) 2001 - 2016 The SCons Foundation
|
||||
#
|
||||
# Permission is hereby granted, free of charge, to any person obtaining
|
||||
# a copy of this software and associated documentation files (the
|
||||
|
@ -20,7 +20,7 @@
|
|||
# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
||||
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
|
||||
__revision__ = "src/engine/SCons/Scanner/Dir.py rel_2.4.1:3453:73fefd3ea0b0 2015/11/09 03:25:05 bdbaddog"
|
||||
__revision__ = "src/engine/SCons/Scanner/Dir.py rel_2.5.0:3543:937e55cd78f7 2016/04/09 11:29:54 bdbaddog"
|
||||
|
||||
import SCons.Node.FS
|
||||
import SCons.Scanner
|
|
@ -5,7 +5,7 @@ This module implements the dependency scanner for Fortran code.
|
|||
"""
|
||||
|
||||
#
|
||||
# Copyright (c) 2001 - 2015 The SCons Foundation
|
||||
# Copyright (c) 2001 - 2016 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 +26,7 @@ This module implements the dependency scanner for Fortran code.
|
|||
# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
||||
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
|
||||
__revision__ = "src/engine/SCons/Scanner/Fortran.py rel_2.4.1:3453:73fefd3ea0b0 2015/11/09 03:25:05 bdbaddog"
|
||||
__revision__ = "src/engine/SCons/Scanner/Fortran.py rel_2.5.0:3543:937e55cd78f7 2016/04/09 11:29:54 bdbaddog"
|
||||
|
||||
import re
|
||||
|
|
@ -1,12 +1,12 @@
|
|||
"""SCons.Scanner.IDL
|
||||
|
||||
This module implements the depenency scanner for IDL (Interface
|
||||
This module implements the dependency scanner for IDL (Interface
|
||||
Definition Language) files.
|
||||
|
||||
"""
|
||||
|
||||
#
|
||||
# Copyright (c) 2001 - 2015 The SCons Foundation
|
||||
# Copyright (c) 2001 - 2016 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,7 +28,7 @@ Definition Language) files.
|
|||
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
#
|
||||
|
||||
__revision__ = "src/engine/SCons/Scanner/IDL.py rel_2.4.1:3453:73fefd3ea0b0 2015/11/09 03:25:05 bdbaddog"
|
||||
__revision__ = "src/engine/SCons/Scanner/IDL.py rel_2.5.0:3543:937e55cd78f7 2016/04/09 11:29:54 bdbaddog"
|
||||
|
||||
import SCons.Node.FS
|
||||
import SCons.Scanner
|
|
@ -5,7 +5,7 @@ This module implements the dependency scanner for LaTeX code.
|
|||
"""
|
||||
|
||||
#
|
||||
# Copyright (c) 2001 - 2015 The SCons Foundation
|
||||
# Copyright (c) 2001 - 2016 The SCons Foundation
|
||||
#
|
||||
# Permission is hereby granted, free of charge, to any person obtaining
|
||||
# a copy of this software and associated documentation files (the
|
||||
|
@ -27,7 +27,7 @@ This module implements the dependency scanner for LaTeX code.
|
|||
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
#
|
||||
|
||||
__revision__ = "src/engine/SCons/Scanner/LaTeX.py rel_2.4.1:3453:73fefd3ea0b0 2015/11/09 03:25:05 bdbaddog"
|
||||
__revision__ = "src/engine/SCons/Scanner/LaTeX.py rel_2.5.0:3543:937e55cd78f7 2016/04/09 11:29:54 bdbaddog"
|
||||
|
||||
import os.path
|
||||
import re
|
|
@ -1,5 +1,5 @@
|
|||
#
|
||||
# Copyright (c) 2001 - 2015 The SCons Foundation
|
||||
# Copyright (c) 2001 - 2016 The SCons Foundation
|
||||
#
|
||||
# Permission is hereby granted, free of charge, to any person obtaining
|
||||
# a copy of this software and associated documentation files (the
|
||||
|
@ -21,7 +21,7 @@
|
|||
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
#
|
||||
|
||||
__revision__ = "src/engine/SCons/Scanner/Prog.py rel_2.4.1:3453:73fefd3ea0b0 2015/11/09 03:25:05 bdbaddog"
|
||||
__revision__ = "src/engine/SCons/Scanner/Prog.py rel_2.5.0:3543:937e55cd78f7 2016/04/09 11:29:54 bdbaddog"
|
||||
|
||||
import SCons.Node
|
||||
import SCons.Node.FS
|
|
@ -1,12 +1,12 @@
|
|||
"""SCons.Scanner.RC
|
||||
|
||||
This module implements the depenency scanner for RC (Interface
|
||||
This module implements the dependency scanner for RC (Interface
|
||||
Definition Language) files.
|
||||
|
||||
"""
|
||||
|
||||
#
|
||||
# Copyright (c) 2001 - 2015 The SCons Foundation
|
||||
# Copyright (c) 2001 - 2016 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,7 +28,7 @@ Definition Language) files.
|
|||
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
#
|
||||
|
||||
__revision__ = "src/engine/SCons/Scanner/RC.py rel_2.4.1:3453:73fefd3ea0b0 2015/11/09 03:25:05 bdbaddog"
|
||||
__revision__ = "src/engine/SCons/Scanner/RC.py rel_2.5.0:3543:937e55cd78f7 2016/04/09 11:29:54 bdbaddog"
|
||||
|
||||
import SCons.Node.FS
|
||||
import SCons.Scanner
|
|
@ -1,5 +1,11 @@
|
|||
"""SCons.Scanner.SWIG
|
||||
|
||||
This module implements the dependency scanner for SWIG code.
|
||||
|
||||
"""
|
||||
|
||||
#
|
||||
# Copyright (c) 2001 - 2015 The SCons Foundation
|
||||
# Copyright (c) 2001 - 2016 The SCons Foundation
|
||||
#
|
||||
# Permission is hereby granted, free of charge, to any person obtaining
|
||||
# a copy of this software and associated documentation files (the
|
||||
|
@ -21,22 +27,16 @@
|
|||
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
#
|
||||
|
||||
__doc__ = """
|
||||
io compatibility module for older (pre-2.6) Python versions
|
||||
__revision__ = "src/engine/SCons/Scanner/SWIG.py rel_2.5.0:3543:937e55cd78f7 2016/04/09 11:29:54 bdbaddog"
|
||||
|
||||
This does not not NOT (repeat, *NOT*) provide complete io
|
||||
functionality. It only wraps the portions of io functionality used
|
||||
by SCons, in an interface that looks enough like io for our purposes.
|
||||
"""
|
||||
import SCons.Scanner
|
||||
|
||||
__revision__ = "src/engine/SCons/compat/_scons_io.py rel_2.4.1:3453:73fefd3ea0b0 2015/11/09 03:25:05 bdbaddog"
|
||||
SWIGSuffixes = [ '.i' ]
|
||||
|
||||
# Use the "imp" module to protect the imports below from fixers.
|
||||
import imp
|
||||
|
||||
_cStringIO = imp.load_module('cStringIO', *imp.find_module('cStringIO'))
|
||||
StringIO = _cStringIO.StringIO
|
||||
del _cStringIO
|
||||
def SWIGScanner():
|
||||
expr = '^[ \t]*%[ \t]*(?:include|import|extern)[ \t]*(<|"?)([^>\s"]+)(?:>|"?)'
|
||||
scanner = SCons.Scanner.ClassicCPP("SWIGScanner", ".i", "SWIGPATH", expr)
|
||||
return scanner
|
||||
|
||||
# Local Variables:
|
||||
# tab-width:4
|
|
@ -5,7 +5,7 @@ The Scanner package for the SCons software construction utility.
|
|||
"""
|
||||
|
||||
#
|
||||
# Copyright (c) 2001 - 2015 The SCons Foundation
|
||||
# Copyright (c) 2001 - 2016 The SCons Foundation
|
||||
#
|
||||
# Permission is hereby granted, free of charge, to any person obtaining
|
||||
# a copy of this software and associated documentation files (the
|
||||
|
@ -27,7 +27,7 @@ The Scanner package for the SCons software construction utility.
|
|||
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
#
|
||||
|
||||
__revision__ = "src/engine/SCons/Scanner/__init__.py rel_2.4.1:3453:73fefd3ea0b0 2015/11/09 03:25:05 bdbaddog"
|
||||
__revision__ = "src/engine/SCons/Scanner/__init__.py rel_2.5.0:3543:937e55cd78f7 2016/04/09 11:29:54 bdbaddog"
|
||||
|
||||
import re
|
||||
|
|
@ -1,5 +1,5 @@
|
|||
#
|
||||
# Copyright (c) 2001 - 2015 The SCons Foundation
|
||||
# Copyright (c) 2001 - 2016 The SCons Foundation
|
||||
#
|
||||
# Permission is hereby granted, free of charge, to any person obtaining
|
||||
# a copy of this software and associated documentation files (the
|
||||
|
@ -20,7 +20,7 @@
|
|||
# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
||||
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
|
||||
__revision__ = "src/engine/SCons/Script/Interactive.py rel_2.4.1:3453:73fefd3ea0b0 2015/11/09 03:25:05 bdbaddog"
|
||||
__revision__ = "src/engine/SCons/Script/Interactive.py rel_2.5.0:3543:937e55cd78f7 2016/04/09 11:29:54 bdbaddog"
|
||||
|
||||
__doc__ = """
|
||||
SCons interactive mode
|
||||
|
@ -304,14 +304,8 @@ class SConsInteractiveCmd(cmd.Cmd):
|
|||
return self._strip_initial_spaces(doc)
|
||||
|
||||
def _strip_initial_spaces(self, s):
|
||||
#lines = s.split('\n')
|
||||
lines = s.split('\n')
|
||||
spaces = re.match(' *', lines[0]).group(0)
|
||||
#def strip_spaces(l):
|
||||
# if l.startswith(spaces):
|
||||
# l = l[len(spaces):]
|
||||
# return l
|
||||
#return '\n'.join([ strip_spaces(l) for l in lines ])
|
||||
def strip_spaces(l, spaces=spaces):
|
||||
if l[:len(spaces)] == spaces:
|
||||
l = l[len(spaces):]
|
|
@ -10,10 +10,10 @@ some other module. If it's specific to the "scons" script invocation,
|
|||
it goes here.
|
||||
"""
|
||||
|
||||
unsupported_python_version = (2, 3, 0)
|
||||
unsupported_python_version = (2, 6, 0)
|
||||
deprecated_python_version = (2, 7, 0)
|
||||
|
||||
# Copyright (c) 2001 - 2015 The SCons Foundation
|
||||
# Copyright (c) 2001 - 2016 The SCons Foundation
|
||||
#
|
||||
# Permission is hereby granted, free of charge, to any person obtaining
|
||||
# a copy of this software and associated documentation files (the
|
||||
|
@ -34,7 +34,7 @@ deprecated_python_version = (2, 7, 0)
|
|||
# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
||||
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
|
||||
__revision__ = "src/engine/SCons/Script/Main.py rel_2.4.1:3453:73fefd3ea0b0 2015/11/09 03:25:05 bdbaddog"
|
||||
__revision__ = "src/engine/SCons/Script/Main.py rel_2.5.0:3543:937e55cd78f7 2016/04/09 11:29:54 bdbaddog"
|
||||
|
||||
import SCons.compat
|
||||
|
||||
|
@ -43,15 +43,6 @@ import sys
|
|||
import time
|
||||
import traceback
|
||||
|
||||
# Strip the script directory from sys.path() so on case-insensitive
|
||||
# (Windows) systems Python doesn't think that the "scons" script is the
|
||||
# "SCons" package. Replace it with our own version directory so, if
|
||||
# if they're there, we pick up the right version of the build engine
|
||||
# modules.
|
||||
#sys.path = [os.path.join(sys.prefix,
|
||||
# 'lib',
|
||||
# 'scons-%d' % SCons.__version__)] + sys.path[1:]
|
||||
|
||||
import SCons.CacheDir
|
||||
import SCons.Debug
|
||||
import SCons.Defaults
|
||||
|
@ -74,7 +65,7 @@ def fetch_win32_parallel_msg():
|
|||
# so we don't have to pull it in on all platforms, and so that an
|
||||
# in-line "import" statement in the _main() function below doesn't
|
||||
# cause warnings about local names shadowing use of the 'SCons'
|
||||
# globl in nest scopes and UnboundLocalErrors and the like in some
|
||||
# global in nest scopes and UnboundLocalErrors and the like in some
|
||||
# versions (2.1) of Python.
|
||||
import SCons.Platform.win32
|
||||
return SCons.Platform.win32.parallel_msg
|
||||
|
@ -368,7 +359,7 @@ class CleanTask(SCons.Taskmaster.AlwaysTask):
|
|||
# issue, an IOError would indicate something like
|
||||
# the file not existing. In either case, print a
|
||||
# message and keep going to try to remove as many
|
||||
# targets aa possible.
|
||||
# targets as possible.
|
||||
print "scons: Could not remove '%s':" % str(t), e.strerror
|
||||
else:
|
||||
if removed:
|
||||
|
@ -383,7 +374,7 @@ class CleanTask(SCons.Taskmaster.AlwaysTask):
|
|||
# we don't want, like store .sconsign information.
|
||||
executed = SCons.Taskmaster.Task.executed_without_callbacks
|
||||
|
||||
# Have the taskmaster arrange to "execute" all of the targets, because
|
||||
# Have the Taskmaster arrange to "execute" all of the targets, because
|
||||
# we'll figure out ourselves (in remove() or show() above) whether
|
||||
# anything really needs to be done.
|
||||
make_ready = SCons.Taskmaster.Task.make_ready_all
|
||||
|
@ -487,7 +478,6 @@ def SetOption(name, value):
|
|||
def PrintHelp(file=None):
|
||||
OptionsParser.print_help(file=file)
|
||||
|
||||
#
|
||||
class Stats(object):
|
||||
def __init__(self):
|
||||
self.stats = []
|
||||
|
@ -711,7 +701,6 @@ def _load_site_scons_dir(topdir, site_dir_name=None):
|
|||
site_tools_dir = os.path.join(site_dir, site_tools_dirname)
|
||||
if os.path.exists(site_init_file):
|
||||
import imp, re
|
||||
# TODO(2.4): turn this into try:-except:-finally:
|
||||
try:
|
||||
try:
|
||||
fp, pathname, description = imp.find_module(site_init_modname,
|
||||
|
@ -1024,7 +1013,7 @@ def _main(parser):
|
|||
# the SConscript file.
|
||||
#
|
||||
# We delay enabling the PythonVersionWarning class until here so that,
|
||||
# if they explicity disabled it in either in the command line or in
|
||||
# if they explicitly disabled it in either in the command line or in
|
||||
# $SCONSFLAGS, or in the SConscript file, then the search through
|
||||
# the list of deprecated warning classes will find that disabling
|
||||
# first and not issue the warning.
|
||||
|
@ -1232,13 +1221,8 @@ def _build_targets(fs, options, targets, target_top):
|
|||
def order(dependencies):
|
||||
"""Randomize the dependencies."""
|
||||
import random
|
||||
# This is cribbed from the implementation of
|
||||
# random.shuffle() in Python 2.X.
|
||||
d = dependencies
|
||||
for i in range(len(d)-1, 0, -1):
|
||||
j = int(random.random() * (i+1))
|
||||
d[i], d[j] = d[j], d[i]
|
||||
return d
|
||||
random.shuffle(dependencies)
|
||||
return dependencies
|
||||
else:
|
||||
def order(dependencies):
|
||||
"""Leave the order of dependencies alone."""
|
||||
|
@ -1316,18 +1300,6 @@ def _exec_main(parser, values):
|
|||
# compat layer imports "cProfile" for us if it's available.
|
||||
from profile import Profile
|
||||
|
||||
# Some versions of Python 2.4 shipped a profiler that had the
|
||||
# wrong 'c_exception' entry in its dispatch table. Make sure
|
||||
# we have the right one. (This may put an unnecessary entry
|
||||
# in the table in earlier versions of Python, but its presence
|
||||
# shouldn't hurt anything).
|
||||
try:
|
||||
dispatch = Profile.dispatch
|
||||
except AttributeError:
|
||||
pass
|
||||
else:
|
||||
dispatch['c_exception'] = Profile.trace_dispatch_return
|
||||
|
||||
prof = Profile()
|
||||
try:
|
||||
prof.runcall(_main, parser)
|
||||
|
@ -1360,7 +1332,7 @@ def main():
|
|||
pass
|
||||
parts.append(version_string("engine", SCons))
|
||||
parts.append(path_string("engine", SCons))
|
||||
parts.append("Copyright (c) 2001 - 2015 The SCons Foundation")
|
||||
parts.append("Copyright (c) 2001 - 2016 The SCons Foundation")
|
||||
version = ''.join(parts)
|
||||
|
||||
import SConsOptions
|
|
@ -1,5 +1,5 @@
|
|||
#
|
||||
# Copyright (c) 2001 - 2015 The SCons Foundation
|
||||
# Copyright (c) 2001 - 2016 The SCons Foundation
|
||||
#
|
||||
# Permission is hereby granted, free of charge, to any person obtaining
|
||||
# a copy of this software and associated documentation files (the
|
||||
|
@ -21,7 +21,7 @@
|
|||
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
#
|
||||
|
||||
__revision__ = "src/engine/SCons/Script/SConsOptions.py rel_2.4.1:3453:73fefd3ea0b0 2015/11/09 03:25:05 bdbaddog"
|
||||
__revision__ = "src/engine/SCons/Script/SConsOptions.py rel_2.5.0:3543:937e55cd78f7 2016/04/09 11:29:54 bdbaddog"
|
||||
|
||||
import optparse
|
||||
import re
|
||||
|
@ -426,7 +426,7 @@ class SConsOptionParser(optparse.OptionParser):
|
|||
result = group.add_option(*args, **kw)
|
||||
|
||||
if result:
|
||||
# The option was added succesfully. We now have to add the
|
||||
# The option was added successfully. We now have to add the
|
||||
# default value to our object that holds the default values
|
||||
# (so that an attempt to fetch the option's attribute will
|
||||
# yield the default value when not overridden) and then
|
||||
|
@ -449,11 +449,6 @@ class SConsIndentedHelpFormatter(optparse.IndentedHelpFormatter):
|
|||
"SCons Options." Unfortunately, we have to do this here,
|
||||
because those titles are hard-coded in the optparse calls.
|
||||
"""
|
||||
if heading == 'options':
|
||||
# The versions of optparse.py shipped with Pythons 2.3 and
|
||||
# 2.4 pass this in uncapitalized; override that so we get
|
||||
# consistent output on all versions.
|
||||
heading = "Options"
|
||||
if heading == 'Options':
|
||||
heading = "SCons Options"
|
||||
return optparse.IndentedHelpFormatter.format_heading(self, heading)
|
||||
|
@ -488,13 +483,7 @@ class SConsIndentedHelpFormatter(optparse.IndentedHelpFormatter):
|
|||
# read data from FILENAME
|
||||
result = []
|
||||
|
||||
try:
|
||||
opts = self.option_strings[option]
|
||||
except AttributeError:
|
||||
# The Python 2.3 version of optparse attaches this to
|
||||
# to the option argument, not to this object.
|
||||
opts = option.option_strings
|
||||
|
||||
opt_width = self.help_position - self.current_indent - 2
|
||||
if len(opts) > opt_width:
|
||||
wrapper = textwrap.TextWrapper(width=self.width,
|
||||
|
@ -509,14 +498,7 @@ class SConsIndentedHelpFormatter(optparse.IndentedHelpFormatter):
|
|||
result.append(opts)
|
||||
if option.help:
|
||||
|
||||
try:
|
||||
expand_default = self.expand_default
|
||||
except AttributeError:
|
||||
# The HelpFormatter base class in the Python 2.3 version
|
||||
# of optparse has no expand_default() method.
|
||||
help_text = option.help
|
||||
else:
|
||||
help_text = expand_default(option)
|
||||
help_text = self.expand_default(option)
|
||||
|
||||
# SCons: indent every line of the help text but the first.
|
||||
wrapper = textwrap.TextWrapper(width=self.help_width,
|
||||
|
@ -530,34 +512,6 @@ class SConsIndentedHelpFormatter(optparse.IndentedHelpFormatter):
|
|||
result.append("\n")
|
||||
return "".join(result)
|
||||
|
||||
# For consistent help output across Python versions, we provide a
|
||||
# subclass copy of format_option_strings() and these two variables.
|
||||
# This is necessary (?) for Python2.3, which otherwise concatenates
|
||||
# a short option with its metavar.
|
||||
_short_opt_fmt = "%s %s"
|
||||
_long_opt_fmt = "%s=%s"
|
||||
|
||||
def format_option_strings(self, option):
|
||||
"""Return a comma-separated list of option strings & metavariables."""
|
||||
if option.takes_value():
|
||||
metavar = option.metavar or option.dest.upper()
|
||||
short_opts = []
|
||||
for sopt in option._short_opts:
|
||||
short_opts.append(self._short_opt_fmt % (sopt, metavar))
|
||||
long_opts = []
|
||||
for lopt in option._long_opts:
|
||||
long_opts.append(self._long_opt_fmt % (lopt, metavar))
|
||||
else:
|
||||
short_opts = option._short_opts
|
||||
long_opts = option._long_opts
|
||||
|
||||
if self.short_first:
|
||||
opts = short_opts + long_opts
|
||||
else:
|
||||
opts = long_opts + short_opts
|
||||
|
||||
return ", ".join(opts)
|
||||
|
||||
def Parser(version):
|
||||
"""
|
||||
Returns an options parser object initialized with the standard
|
|
@ -6,7 +6,7 @@ files.
|
|||
"""
|
||||
|
||||
#
|
||||
# Copyright (c) 2001 - 2015 The SCons Foundation
|
||||
# Copyright (c) 2001 - 2016 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,7 +28,7 @@ files.
|
|||
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
from __future__ import division
|
||||
|
||||
__revision__ = "src/engine/SCons/Script/SConscript.py rel_2.4.1:3453:73fefd3ea0b0 2015/11/09 03:25:05 bdbaddog"
|
||||
__revision__ = "src/engine/SCons/Script/SConscript.py rel_2.5.0:3543:937e55cd78f7 2016/04/09 11:29:54 bdbaddog"
|
||||
|
||||
import SCons
|
||||
import SCons.Action
|
||||
|
@ -52,16 +52,6 @@ import re
|
|||
import sys
|
||||
import traceback
|
||||
|
||||
# The following variables used to live in this module. Some
|
||||
# SConscript files out there may have referred to them directly as
|
||||
# SCons.Script.SConscript.*. This is now supported by some special
|
||||
# handling towards the bottom of the SConscript.__init__.py module.
|
||||
#Arguments = {}
|
||||
#ArgList = []
|
||||
#BuildTargets = TargetList()
|
||||
#CommandLineTargets = []
|
||||
#DefaultTargets = []
|
||||
|
||||
class SConscriptReturn(Exception):
|
||||
pass
|
||||
|
|
@ -12,7 +12,7 @@ it goes here.
|
|||
"""
|
||||
|
||||
#
|
||||
# Copyright (c) 2001 - 2015 The SCons Foundation
|
||||
# Copyright (c) 2001 - 2016 The SCons Foundation
|
||||
#
|
||||
# Permission is hereby granted, free of charge, to any person obtaining
|
||||
# a copy of this software and associated documentation files (the
|
||||
|
@ -34,7 +34,7 @@ it goes here.
|
|||
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
#
|
||||
|
||||
__revision__ = "src/engine/SCons/Script/__init__.py rel_2.4.1:3453:73fefd3ea0b0 2015/11/09 03:25:05 bdbaddog"
|
||||
__revision__ = "src/engine/SCons/Script/__init__.py rel_2.5.0:3543:937e55cd78f7 2016/04/09 11:29:54 bdbaddog"
|
||||
|
||||
import time
|
||||
start_time = time.time()
|
||||
|
@ -270,12 +270,6 @@ def HelpFunction(text, append=False):
|
|||
s.close()
|
||||
else:
|
||||
help_text = ""
|
||||
#
|
||||
# Was in original patch but this text is arbitrary and breaks tests
|
||||
# so I removed it (Deegan)
|
||||
# help_text = help_text + "\nLocal Build Variables:\n" + text
|
||||
# else:
|
||||
# help_text = help_text + text
|
||||
|
||||
help_text= help_text + text
|
||||
|
|
@ -1,5 +1,5 @@
|
|||
#
|
||||
# Copyright (c) 2001 - 2015 The SCons Foundation
|
||||
# Copyright (c) 2001 - 2016 The SCons Foundation
|
||||
#
|
||||
# Permission is hereby granted, free of charge, to any person obtaining
|
||||
# a copy of this software and associated documentation files (the
|
||||
|
@ -21,7 +21,7 @@
|
|||
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
#
|
||||
|
||||
__revision__ = "src/engine/SCons/Sig.py rel_2.4.1:3453:73fefd3ea0b0 2015/11/09 03:25:05 bdbaddog"
|
||||
__revision__ = "src/engine/SCons/Sig.py rel_2.5.0:3543:937e55cd78f7 2016/04/09 11:29:54 bdbaddog"
|
||||
|
||||
__doc__ = """Place-holder for the old SCons.Sig module hierarchy
|
||||
|
|
@ -5,7 +5,7 @@ SCons string substitution.
|
|||
"""
|
||||
|
||||
#
|
||||
# Copyright (c) 2001 - 2015 The SCons Foundation
|
||||
# Copyright (c) 2001 - 2016 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 +26,7 @@ SCons string substitution.
|
|||
# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
||||
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
|
||||
__revision__ = "src/engine/SCons/Subst.py rel_2.4.1:3453:73fefd3ea0b0 2015/11/09 03:25:05 bdbaddog"
|
||||
__revision__ = "src/engine/SCons/Subst.py rel_2.5.0:3543:937e55cd78f7 2016/04/09 11:29:54 bdbaddog"
|
||||
|
||||
import collections
|
||||
import re
|
||||
|
@ -344,7 +344,6 @@ _remove = re.compile(r'\$\([^\$]*(\$[^\)][^\$]*)*\$\)')
|
|||
_regex_remove = [ _rm, None, _remove ]
|
||||
|
||||
def _rm_list(list):
|
||||
#return [ l for l in list if not l in ('$(', '$)') ]
|
||||
return [l for l in list if not l in ('$(', '$)')]
|
||||
|
||||
def _remove_list(list):
|
||||
|
@ -580,8 +579,6 @@ def scons_subst(strSubst, env, mode=SUBST_RAW, target=None, source=None, gvars={
|
|||
|
||||
return result
|
||||
|
||||
#Subst_List_Strings = {}
|
||||
|
||||
def scons_subst_list(strSubst, env, mode=SUBST_RAW, target=None, source=None, gvars={}, lvars={}, conv=None):
|
||||
"""Substitute construction variables in a string (or list or other
|
||||
object) and separate the arguments into a command list.
|
||||
|
@ -590,12 +587,6 @@ def scons_subst_list(strSubst, env, mode=SUBST_RAW, target=None, source=None, gv
|
|||
substitutions within strings, so see that function instead
|
||||
if that's what you're looking for.
|
||||
"""
|
||||
# try:
|
||||
# Subst_List_Strings[strSubst] = Subst_List_Strings[strSubst] + 1
|
||||
# except KeyError:
|
||||
# Subst_List_Strings[strSubst] = 1
|
||||
# import SCons.Debug
|
||||
# SCons.Debug.caller_trace(1)
|
||||
class ListSubber(collections.UserList):
|
||||
"""A class to construct the results of a scons_subst_list() call.
|
||||
|
|
@ -1,5 +1,5 @@
|
|||
#
|
||||
# Copyright (c) 2001 - 2015 The SCons Foundation
|
||||
# Copyright (c) 2001 - 2016 The SCons Foundation
|
||||
#
|
||||
# Permission is hereby granted, free of charge, to any person obtaining
|
||||
# a copy of this software and associated documentation files (the
|
||||
|
@ -47,7 +47,7 @@ interface and the SCons build engine. There are two key classes here:
|
|||
target(s) that it decides need to be evaluated and/or built.
|
||||
"""
|
||||
|
||||
__revision__ = "src/engine/SCons/Taskmaster.py rel_2.4.1:3453:73fefd3ea0b0 2015/11/09 03:25:05 bdbaddog"
|
||||
__revision__ = "src/engine/SCons/Taskmaster.py rel_2.5.0:3543:937e55cd78f7 2016/04/09 11:29:54 bdbaddog"
|
||||
|
||||
from itertools import chain
|
||||
import operator
|
||||
|
@ -107,7 +107,7 @@ fmt = "%(considered)3d "\
|
|||
|
||||
def dump_stats():
|
||||
for n in sorted(StatsNodes, key=lambda a: str(a)):
|
||||
print (fmt % n.stats.__dict__) + str(n)
|
||||
print (fmt % n.attributes.stats.__dict__) + str(n)
|
||||
|
||||
|
||||
|
||||
|
@ -122,7 +122,7 @@ class Task(object):
|
|||
aspects of controlling a build, so any given application
|
||||
*should* be able to do what it wants by sub-classing this
|
||||
class and overriding methods as appropriate. If an application
|
||||
needs to customze something by sub-classing Taskmaster (or
|
||||
needs to customize something by sub-classing Taskmaster (or
|
||||
some other build engine class), we should first try to migrate
|
||||
that functionality into this class.
|
||||
|
||||
|
@ -147,7 +147,7 @@ class Task(object):
|
|||
|
||||
This hook gets called as part of preparing a task for execution
|
||||
(that is, a Node to be built). As part of figuring out what Node
|
||||
should be built next, the actually target list may be altered,
|
||||
should be built next, the actual target list may be altered,
|
||||
along with a message describing the alteration. The calling
|
||||
interface can subclass Task and provide a concrete implementation
|
||||
of this method to see those messages.
|
||||
|
@ -664,9 +664,9 @@ class Taskmaster(object):
|
|||
its parent node.
|
||||
|
||||
A pending child can occur when the Taskmaster completes a loop
|
||||
through a cycle. For example, lets imagine a graph made of
|
||||
three node (A, B and C) making a cycle. The evaluation starts
|
||||
at node A. The taskmaster first consider whether node A's
|
||||
through a cycle. For example, let's imagine a graph made of
|
||||
three nodes (A, B and C) making a cycle. The evaluation starts
|
||||
at node A. The Taskmaster first considers whether node A's
|
||||
child B is up-to-date. Then, recursively, node B needs to
|
||||
check whether node C is up-to-date. This leaves us with a
|
||||
dependency graph looking like:
|
||||
|
@ -781,10 +781,10 @@ class Taskmaster(object):
|
|||
# return node
|
||||
|
||||
if CollectStats:
|
||||
if not hasattr(node, 'stats'):
|
||||
node.stats = Stats()
|
||||
if not hasattr(node.attributes, 'stats'):
|
||||
node.attributes.stats = Stats()
|
||||
StatsNodes.append(node)
|
||||
S = node.stats
|
||||
S = node.attributes.stats
|
||||
S.considered = S.considered + 1
|
||||
else:
|
||||
S = None
|
||||
|
@ -951,7 +951,7 @@ class Taskmaster(object):
|
|||
task.make_ready()
|
||||
except:
|
||||
# We had a problem just trying to get this task ready (like
|
||||
# a child couldn't be linked in to a VariantDir when deciding
|
||||
# a child couldn't be linked to a VariantDir when deciding
|
||||
# whether this node is current). Arrange to raise the
|
||||
# exception when the Task is "executed."
|
||||
self.ready_exc = sys.exc_info()
|
|
@ -10,7 +10,7 @@ selection method.
|
|||
"""
|
||||
|
||||
#
|
||||
# Copyright (c) 2001 - 2015 The SCons Foundation
|
||||
# Copyright (c) 2001 - 2016 The SCons Foundation
|
||||
#
|
||||
# Permission is hereby granted, free of charge, to any person obtaining
|
||||
# a copy of this software and associated documentation files (the
|
||||
|
@ -32,7 +32,7 @@ selection method.
|
|||
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
#
|
||||
|
||||
__revision__ = "src/engine/SCons/Tool/386asm.py rel_2.4.1:3453:73fefd3ea0b0 2015/11/09 03:25:05 bdbaddog"
|
||||
__revision__ = "src/engine/SCons/Tool/386asm.py rel_2.5.0:3543:937e55cd78f7 2016/04/09 11:29:54 bdbaddog"
|
||||
|
||||
from SCons.Tool.PharLapCommon import addPharLapPaths
|
||||
import SCons.Util
|
|
@ -10,7 +10,7 @@ selection method.
|
|||
"""
|
||||
|
||||
#
|
||||
# Copyright (c) 2001 - 2015 The SCons Foundation
|
||||
# Copyright (c) 2001 - 2016 The SCons Foundation
|
||||
#
|
||||
# Permission is hereby granted, free of charge, to any person obtaining
|
||||
# a copy of this software and associated documentation files (the
|
||||
|
@ -32,7 +32,7 @@ selection method.
|
|||
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
#
|
||||
|
||||
__revision__ = "src/engine/SCons/Tool/BitKeeper.py rel_2.4.1:3453:73fefd3ea0b0 2015/11/09 03:25:05 bdbaddog"
|
||||
__revision__ = "src/engine/SCons/Tool/BitKeeper.py rel_2.5.0:3543:937e55cd78f7 2016/04/09 11:29:54 bdbaddog"
|
||||
|
||||
import SCons.Action
|
||||
import SCons.Builder
|
||||
|
@ -49,7 +49,6 @@ def generate(env):
|
|||
act = SCons.Action.Action("$BITKEEPERCOM", "$BITKEEPERCOMSTR")
|
||||
return SCons.Builder.Builder(action = act, env = env)
|
||||
|
||||
#setattr(env, 'BitKeeper', BitKeeperFactory)
|
||||
env.BitKeeper = BitKeeperFactory
|
||||
|
||||
env['BITKEEPER'] = 'bk'
|
|
@ -8,7 +8,7 @@ selection method.
|
|||
|
||||
"""
|
||||
|
||||
# Copyright (c) 2001 - 2015 The SCons Foundation
|
||||
# Copyright (c) 2001 - 2016 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,7 +29,7 @@ selection method.
|
|||
# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
||||
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
|
||||
__revision__ = "src/engine/SCons/Tool/CVS.py rel_2.4.1:3453:73fefd3ea0b0 2015/11/09 03:25:05 bdbaddog"
|
||||
__revision__ = "src/engine/SCons/Tool/CVS.py rel_2.5.0:3543:937e55cd78f7 2016/04/09 11:29:54 bdbaddog"
|
||||
|
||||
import SCons.Action
|
||||
import SCons.Builder
|
||||
|
@ -55,7 +55,6 @@ def generate(env):
|
|||
CVSREPOSITORY = repos,
|
||||
CVSMODULE = module)
|
||||
|
||||
#setattr(env, 'CVS', CVSFactory)
|
||||
env.CVS = CVSFactory
|
||||
|
||||
env['CVS'] = 'cvs'
|
|
@ -6,7 +6,7 @@ Coded by Russel Winder (russel@winder.org.uk)
|
|||
2012-09-06
|
||||
"""
|
||||
#
|
||||
# Copyright (c) 2001 - 2015 The SCons Foundation
|
||||
# Copyright (c) 2001 - 2016 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,7 +28,7 @@ Coded by Russel Winder (russel@winder.org.uk)
|
|||
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
#
|
||||
|
||||
__revision__ = "src/engine/SCons/Tool/DCommon.py rel_2.4.1:3453:73fefd3ea0b0 2015/11/09 03:25:05 bdbaddog"
|
||||
__revision__ = "src/engine/SCons/Tool/DCommon.py rel_2.5.0:3543:937e55cd78f7 2016/04/09 11:29:54 bdbaddog"
|
||||
|
||||
import os.path
|
||||
|
|
@ -5,7 +5,7 @@ Stuff for processing Fortran, common to all fortran dialects.
|
|||
"""
|
||||
|
||||
#
|
||||
# Copyright (c) 2001 - 2015 The SCons Foundation
|
||||
# Copyright (c) 2001 - 2016 The SCons Foundation
|
||||
#
|
||||
# Permission is hereby granted, free of charge, to any person obtaining
|
||||
# a copy of this software and associated documentation files (the
|
||||
|
@ -27,7 +27,7 @@ Stuff for processing Fortran, common to all fortran dialects.
|
|||
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
#
|
||||
|
||||
__revision__ = "src/engine/SCons/Tool/FortranCommon.py rel_2.4.1:3453:73fefd3ea0b0 2015/11/09 03:25:05 bdbaddog"
|
||||
__revision__ = "src/engine/SCons/Tool/FortranCommon.py rel_2.5.0:3543:937e55cd78f7 2016/04/09 11:29:54 bdbaddog"
|
||||
|
||||
import re
|
||||
import os.path
|
|
@ -3,7 +3,7 @@
|
|||
Used by several tools of `gettext` toolset.
|
||||
"""
|
||||
|
||||
# Copyright (c) 2001 - 2015 The SCons Foundation
|
||||
# Copyright (c) 2001 - 2016 The SCons Foundation
|
||||
#
|
||||
# Permission is hereby granted, free of charge, to any person obtaining
|
||||
# a copy of this software and associated documentation files (the
|
||||
|
@ -24,7 +24,7 @@ Used by several tools of `gettext` toolset.
|
|||
# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
||||
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
|
||||
__revision__ = "src/engine/SCons/Tool/GettextCommon.py rel_2.4.1:3453:73fefd3ea0b0 2015/11/09 03:25:05 bdbaddog"
|
||||
__revision__ = "src/engine/SCons/Tool/GettextCommon.py rel_2.5.0:3543:937e55cd78f7 2016/04/09 11:29:54 bdbaddog"
|
||||
|
||||
import SCons.Warnings
|
||||
import re
|
||||
|
@ -251,7 +251,7 @@ class RPaths(object):
|
|||
recently re-created. For such reason, we need a function, which always
|
||||
returns relative paths. This is the purpose of `RPaths` callable object.
|
||||
|
||||
The `__call__` method returns paths relative to current woking directory, but
|
||||
The `__call__` method returns paths relative to current working directory, but
|
||||
we assume, that *xgettext(1)* is run from the directory, where target file is
|
||||
going to be created.
|
||||
|
||||
|
@ -330,7 +330,7 @@ def _init_po_files(target, source, env):
|
|||
autoinit = False
|
||||
# Well, if everything outside works well, this loop should do single
|
||||
# iteration. Otherwise we are rebuilding all the targets even, if just
|
||||
# one has changed (but is this out fault?).
|
||||
# one has changed (but is this our fault?).
|
||||
for tgt in target:
|
||||
if not tgt.exists():
|
||||
if autoinit:
|
|
@ -5,7 +5,7 @@ Stuff for processing Java.
|
|||
"""
|
||||
|
||||
#
|
||||
# Copyright (c) 2001 - 2015 The SCons Foundation
|
||||
# Copyright (c) 2001 - 2016 The SCons Foundation
|
||||
#
|
||||
# Permission is hereby granted, free of charge, to any person obtaining
|
||||
# a copy of this software and associated documentation files (the
|
||||
|
@ -27,7 +27,7 @@ Stuff for processing Java.
|
|||
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
#
|
||||
|
||||
__revision__ = "src/engine/SCons/Tool/JavaCommon.py rel_2.4.1:3453:73fefd3ea0b0 2015/11/09 03:25:05 bdbaddog"
|
||||
__revision__ = "src/engine/SCons/Tool/JavaCommon.py rel_2.5.0:3543:937e55cd78f7 2016/04/09 11:29:54 bdbaddog"
|
||||
|
||||
import os
|
||||
import os.path
|
|
@ -1,5 +1,5 @@
|
|||
#
|
||||
# Copyright (c) 2001 - 2015 The SCons Foundation
|
||||
# Copyright (c) 2001 - 2016 The SCons Foundation
|
||||
#
|
||||
# Permission is hereby granted, free of charge, to any person obtaining
|
||||
# a copy of this software and associated documentation files (the
|
||||
|
@ -21,7 +21,7 @@
|
|||
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
#
|
||||
|
||||
__revision__ = "src/engine/SCons/Tool/MSCommon/__init__.py rel_2.4.1:3453:73fefd3ea0b0 2015/11/09 03:25:05 bdbaddog"
|
||||
__revision__ = "src/engine/SCons/Tool/MSCommon/__init__.py rel_2.5.0:3543:937e55cd78f7 2016/04/09 11:29:54 bdbaddog"
|
||||
|
||||
__doc__ = """
|
||||
Common functions for Microsoft Visual Studio and Visual C/C++.
|
|
@ -1,5 +1,5 @@
|
|||
#
|
||||
# Copyright (c) 2001 - 2015 The SCons Foundation
|
||||
# Copyright (c) 2001 - 2016 The SCons Foundation
|
||||
#
|
||||
# Permission is hereby granted, free of charge, to any person obtaining
|
||||
# a copy of this software and associated documentation files (the
|
||||
|
@ -21,7 +21,7 @@
|
|||
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
#
|
||||
|
||||
__revision__ = "src/engine/SCons/Tool/MSCommon/arch.py rel_2.4.1:3453:73fefd3ea0b0 2015/11/09 03:25:05 bdbaddog"
|
||||
__revision__ = "src/engine/SCons/Tool/MSCommon/arch.py rel_2.5.0:3543:937e55cd78f7 2016/04/09 11:29:54 bdbaddog"
|
||||
|
||||
__doc__ = """Module to define supported Windows chip architectures.
|
||||
"""
|
|
@ -1,5 +1,5 @@
|
|||
#
|
||||
# Copyright (c) 2001 - 2015 The SCons Foundation
|
||||
# Copyright (c) 2001 - 2016 The SCons Foundation
|
||||
#
|
||||
# Permission is hereby granted, free of charge, to any person obtaining
|
||||
# a copy of this software and associated documentation files (the
|
||||
|
@ -21,7 +21,7 @@
|
|||
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
#
|
||||
|
||||
__revision__ = "src/engine/SCons/Tool/MSCommon/common.py rel_2.4.1:3453:73fefd3ea0b0 2015/11/09 03:25:05 bdbaddog"
|
||||
__revision__ = "src/engine/SCons/Tool/MSCommon/common.py rel_2.5.0:3543:937e55cd78f7 2016/04/09 11:29:54 bdbaddog"
|
||||
|
||||
__doc__ = """
|
||||
Common helper functions for working with the Microsoft tool chain.
|
||||
|
@ -93,7 +93,7 @@ def has_reg(value):
|
|||
try:
|
||||
SCons.Util.RegOpenKeyEx(SCons.Util.HKEY_LOCAL_MACHINE, value)
|
||||
ret = True
|
||||
except WindowsError:
|
||||
except SCons.Util.WinError:
|
||||
ret = False
|
||||
return ret
|
||||
|
||||
|
@ -180,7 +180,7 @@ def get_output(vcbat, args = None, env = None):
|
|||
stdout = popen.stdout.read()
|
||||
stderr = popen.stderr.read()
|
||||
|
||||
# Extra debug logic, uncomment if necessar
|
||||
# Extra debug logic, uncomment if necessary
|
||||
# debug('get_output():stdout:%s'%stdout)
|
||||
# debug('get_output():stderr:%s'%stderr)
|
||||
|
||||
|
@ -226,33 +226,6 @@ def parse_output(output, keep = ("INCLUDE", "LIB", "LIBPATH", "PATH")):
|
|||
|
||||
return dkeep
|
||||
|
||||
# TODO(sgk): unused
|
||||
def output_to_dict(output):
|
||||
"""Given an output string, parse it to find env variables.
|
||||
|
||||
Return a dict where keys are variables names, and values their content"""
|
||||
envlinem = re.compile(r'^([a-zA-z0-9]+)=([\S\s]*)$')
|
||||
parsedenv = {}
|
||||
for line in output.splitlines():
|
||||
m = envlinem.match(line)
|
||||
if m:
|
||||
parsedenv[m.group(1)] = m.group(2)
|
||||
return parsedenv
|
||||
|
||||
# TODO(sgk): unused
|
||||
def get_new(l1, l2):
|
||||
"""Given two list l1 and l2, return the items in l2 which are not in l1.
|
||||
Order is maintained."""
|
||||
|
||||
# We don't try to be smart: lists are small, and this is not the bottleneck
|
||||
# is any case
|
||||
new = []
|
||||
for i in l2:
|
||||
if i not in l1:
|
||||
new.append(i)
|
||||
|
||||
return new
|
||||
|
||||
# Local Variables:
|
||||
# tab-width:4
|
||||
# indent-tabs-mode:nil
|
|
@ -1,5 +1,5 @@
|
|||
#
|
||||
# Copyright (c) 2001 - 2015 The SCons Foundation
|
||||
# Copyright (c) 2001 - 2016 The SCons Foundation
|
||||
#
|
||||
# Permission is hereby granted, free of charge, to any person obtaining
|
||||
# a copy of this software and associated documentation files (the
|
||||
|
@ -20,13 +20,14 @@
|
|||
# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
||||
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
|
||||
__revision__ = "src/engine/SCons/Tool/MSCommon/netframework.py rel_2.4.1:3453:73fefd3ea0b0 2015/11/09 03:25:05 bdbaddog"
|
||||
__revision__ = "src/engine/SCons/Tool/MSCommon/netframework.py rel_2.5.0:3543:937e55cd78f7 2016/04/09 11:29:54 bdbaddog"
|
||||
|
||||
__doc__ = """
|
||||
"""
|
||||
|
||||
import os
|
||||
import re
|
||||
import SCons.Util
|
||||
|
||||
from common import read_reg, debug
|
||||
|
||||
|
@ -40,7 +41,7 @@ def find_framework_root():
|
|||
try:
|
||||
froot = read_reg(_FRAMEWORKDIR_HKEY_ROOT)
|
||||
debug("Found framework install root in registry: %s" % froot)
|
||||
except WindowsError, e:
|
||||
except SCons.Util.WinError, e:
|
||||
debug("Could not read reg key %s" % _FRAMEWORKDIR_HKEY_ROOT)
|
||||
return None
|
||||
|
|
@ -1,5 +1,5 @@
|
|||
#
|
||||
# Copyright (c) 2001 - 2015 The SCons Foundation
|
||||
# Copyright (c) 2001 - 2016 The SCons Foundation
|
||||
#
|
||||
# Permission is hereby granted, free of charge, to any person obtaining
|
||||
# a copy of this software and associated documentation files (the
|
||||
|
@ -21,7 +21,7 @@
|
|||
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
|
||||
|
||||
__revision__ = "src/engine/SCons/Tool/MSCommon/sdk.py rel_2.4.1:3453:73fefd3ea0b0 2015/11/09 03:25:05 bdbaddog"
|
||||
__revision__ = "src/engine/SCons/Tool/MSCommon/sdk.py rel_2.5.0:3543:937e55cd78f7 2016/04/09 11:29:54 bdbaddog"
|
||||
|
||||
__doc__ = """Module to detect the Platform/Windows SDK
|
||||
|
||||
|
@ -80,7 +80,7 @@ class SDKDefinition(object):
|
|||
|
||||
try:
|
||||
sdk_dir = common.read_reg(hkey)
|
||||
except WindowsError, e:
|
||||
except SCons.Util.WinError, e:
|
||||
debug('find_sdk_dir(): no SDK registry key %s' % repr(hkey))
|
||||
return None
|
||||
|
||||
|
@ -168,7 +168,7 @@ SDK70VCSetupScripts = { 'x86' : r'bin\vcvars32.bat',
|
|||
#
|
||||
# The first SDK found in the list is the one used by default if there
|
||||
# are multiple SDKs installed. Barring good reasons to the contrary,
|
||||
# this means we should list SDKs with from most recent to oldest.
|
||||
# this means we should list SDKs from most recent to oldest.
|
||||
#
|
||||
# If you update this list, update the documentation in Tool/mssdk.xml.
|
||||
SupportedSDKList = [
|
||||
|
@ -306,29 +306,6 @@ def set_sdk_by_directory(env, sdk_dir):
|
|||
for variable, directory in env_tuple_list:
|
||||
env.PrependENVPath(variable, directory)
|
||||
|
||||
|
||||
# TODO(sgk): currently unused; remove?
|
||||
def get_cur_sdk_dir_from_reg():
|
||||
"""Try to find the platform sdk directory from the registry.
|
||||
|
||||
Return None if failed or the directory does not exist"""
|
||||
if not SCons.Util.can_read_reg:
|
||||
debug('SCons cannot read registry')
|
||||
return None
|
||||
|
||||
try:
|
||||
val = common.read_reg(_CURINSTALLED_SDK_HKEY_ROOT)
|
||||
debug("Found current sdk dir in registry: %s" % val)
|
||||
except WindowsError, e:
|
||||
debug("Did not find current sdk in registry")
|
||||
return None
|
||||
|
||||
if not os.path.exists(val):
|
||||
debug("Current sdk dir %s not on fs" % val)
|
||||
return None
|
||||
|
||||
return val
|
||||
|
||||
def get_sdk_by_version(mssdk):
|
||||
if mssdk not in SupportedSDKMap:
|
||||
msg = "SDK version %s is not supported" % repr(mssdk)
|
||||
|
@ -343,9 +320,6 @@ def get_default_sdk():
|
|||
return None
|
||||
return InstalledSDKList[0]
|
||||
|
||||
|
||||
|
||||
|
||||
def mssdk_setup_env(env):
|
||||
debug('sdk.py:mssdk_setup_env()')
|
||||
if 'MSSDK_DIR' in env:
|
|
@ -1,5 +1,5 @@
|
|||
#
|
||||
# Copyright (c) 2001 - 2015 The SCons Foundation
|
||||
# Copyright (c) 2001 - 2016 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 +30,7 @@
|
|||
# * test on 64 bits XP + VS 2005 (and VS 6 if possible)
|
||||
# * SDK
|
||||
# * Assembly
|
||||
__revision__ = "src/engine/SCons/Tool/MSCommon/vc.py rel_2.4.1:3453:73fefd3ea0b0 2015/11/09 03:25:05 bdbaddog"
|
||||
__revision__ = "src/engine/SCons/Tool/MSCommon/vc.py rel_2.5.0:3543:937e55cd78f7 2016/04/09 11:29:54 bdbaddog"
|
||||
|
||||
__doc__ = """Module for Visual C/C++ detection and configuration.
|
||||
"""
|
||||
|
@ -244,13 +244,13 @@ def find_vc_pdir(msvc_version):
|
|||
try:
|
||||
# ordinally at win64, try Wow6432Node first.
|
||||
comps = common.read_reg(root + 'Wow6432Node\\' + key, hkroot)
|
||||
except WindowsError, e:
|
||||
except SCons.Util.WinError, e:
|
||||
# at Microsoft Visual Studio for Python 2.7, value is not in Wow6432Node
|
||||
pass
|
||||
if not comps:
|
||||
# not Win64, or Microsoft Visual Studio for Python 2.7
|
||||
comps = common.read_reg(root + key, hkroot)
|
||||
except WindowsError, e:
|
||||
except SCons.Util.WinError, e:
|
||||
debug('find_vc_dir(): no VC registry key %s' % repr(key))
|
||||
else:
|
||||
debug('find_vc_dir(): found VC in registry: %s' % comps)
|
|
@ -1,5 +1,5 @@
|
|||
#
|
||||
# Copyright (c) 2001 - 2015 The SCons Foundation
|
||||
# Copyright (c) 2001 - 2016 The SCons Foundation
|
||||
#
|
||||
# Permission is hereby granted, free of charge, to any person obtaining
|
||||
# a copy of this software and associated documentation files (the
|
||||
|
@ -21,7 +21,7 @@
|
|||
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
#
|
||||
|
||||
__revision__ = "src/engine/SCons/Tool/MSCommon/vs.py rel_2.4.1:3453:73fefd3ea0b0 2015/11/09 03:25:05 bdbaddog"
|
||||
__revision__ = "src/engine/SCons/Tool/MSCommon/vs.py rel_2.5.0:3543:937e55cd78f7 2016/04/09 11:29:54 bdbaddog"
|
||||
|
||||
__doc__ = """Module to detect Visual Studio and/or Visual C/C++
|
||||
"""
|
||||
|
@ -52,8 +52,6 @@ class VisualStudio(object):
|
|||
self.__dict__.update(kw)
|
||||
self._cache = {}
|
||||
|
||||
#
|
||||
|
||||
def find_batch_file(self):
|
||||
vs_dir = self.get_vs_dir()
|
||||
if not vs_dir:
|
||||
|
@ -85,7 +83,7 @@ class VisualStudio(object):
|
|||
key = root + key
|
||||
try:
|
||||
comps = read_reg(key)
|
||||
except WindowsError, e:
|
||||
except SCons.Util.WinError, e:
|
||||
debug('find_vs_dir_by_reg(): no VS registry key %s' % repr(key))
|
||||
else:
|
||||
debug('find_vs_dir_by_reg(): found VS in registry: %s' % comps)
|
||||
|
@ -116,8 +114,6 @@ class VisualStudio(object):
|
|||
return None
|
||||
return executable
|
||||
|
||||
#
|
||||
|
||||
def get_batch_file(self):
|
||||
try:
|
||||
return self._cache['batch_file']
|
||||
|
@ -471,7 +467,7 @@ def get_default_version(env):
|
|||
"""Returns the default version string to use for MSVS.
|
||||
|
||||
If no version was requested by the user through the MSVS environment
|
||||
variable, query all the available the visual studios through
|
||||
variable, query all the available visual studios through
|
||||
get_installed_visual_studios, and take the highest one.
|
||||
|
||||
Return
|
|
@ -8,7 +8,7 @@ selection method.
|
|||
|
||||
"""
|
||||
|
||||
# Copyright (c) 2001 - 2015 The SCons Foundation
|
||||
# Copyright (c) 2001 - 2016 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,7 +29,7 @@ selection method.
|
|||
# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
||||
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
|
||||
__revision__ = "src/engine/SCons/Tool/Perforce.py rel_2.4.1:3453:73fefd3ea0b0 2015/11/09 03:25:05 bdbaddog"
|
||||
__revision__ = "src/engine/SCons/Tool/Perforce.py rel_2.5.0:3543:937e55cd78f7 2016/04/09 11:29:54 bdbaddog"
|
||||
|
||||
import os
|
||||
|
||||
|
@ -38,9 +38,6 @@ import SCons.Builder
|
|||
import SCons.Node.FS
|
||||
import SCons.Util
|
||||
|
||||
# This function should maybe be moved to SCons.Util?
|
||||
from SCons.Tool.PharLapCommon import addPathIfNotExists
|
||||
|
||||
|
||||
# Variables that we want to import from the base OS environment.
|
||||
_import_env = [ 'P4PORT', 'P4CLIENT', 'P4USER', 'USER', 'USERNAME', 'P4PASSWD',
|
||||
|
@ -58,7 +55,6 @@ def generate(env):
|
|||
W.warn(W.DeprecatedSourceCodeWarning, """The Perforce() factory is deprecated and there is no replacement.""")
|
||||
return SCons.Builder.Builder(action = PerforceAction, env = env)
|
||||
|
||||
#setattr(env, 'Perforce', PerforceFactory)
|
||||
env.Perforce = PerforceFactory
|
||||
|
||||
env['P4'] = 'p4'
|
||||
|
@ -87,7 +83,7 @@ def generate(env):
|
|||
k=SCons.Util.RegOpenKeyEx(SCons.Util.hkey_mod.HKEY_LOCAL_MACHINE,
|
||||
'Software\\Perforce\\environment')
|
||||
val, tok = SCons.Util.RegQueryValueEx(k, 'P4INSTROOT')
|
||||
addPathIfNotExists(environ, 'PATH', val)
|
||||
SCons.Util.AddPathIfNotExists(environ, 'PATH', val)
|
||||
except SCons.Util.RegError:
|
||||
# Can't detect where Perforce is, hope the user has it set in the
|
||||
# PATH.
|
|
@ -7,7 +7,7 @@ Phar Lap ETS tool chain. Right now, this is linkloc and
|
|||
"""
|
||||
|
||||
#
|
||||
# Copyright (c) 2001 - 2015 The SCons Foundation
|
||||
# Copyright (c) 2001 - 2016 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,7 +29,7 @@ Phar Lap ETS tool chain. Right now, this is linkloc and
|
|||
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
#
|
||||
|
||||
__revision__ = "src/engine/SCons/Tool/PharLapCommon.py rel_2.4.1:3453:73fefd3ea0b0 2015/11/09 03:25:05 bdbaddog"
|
||||
__revision__ = "src/engine/SCons/Tool/PharLapCommon.py rel_2.5.0:3543:937e55cd78f7 2016/04/09 11:29:54 bdbaddog"
|
||||
|
||||
import os
|
||||
import os.path
|
||||
|
@ -85,28 +85,6 @@ def getPharLapVersion():
|
|||
# Default return for Phar Lap 9.1
|
||||
return 910
|
||||
|
||||
def addPathIfNotExists(env_dict, key, path, sep=os.pathsep):
|
||||
"""This function will take 'key' out of the dictionary
|
||||
'env_dict', then add the path 'path' to that key if it is not
|
||||
already there. This treats the value of env_dict[key] as if it
|
||||
has a similar format to the PATH variable...a list of paths
|
||||
separated by tokens. The 'path' will get added to the list if it
|
||||
is not already there."""
|
||||
try:
|
||||
is_list = 1
|
||||
paths = env_dict[key]
|
||||
if not SCons.Util.is_List(env_dict[key]):
|
||||
paths = paths.split(sep)
|
||||
is_list = 0
|
||||
if os.path.normcase(path) not in list(map(os.path.normcase, paths)):
|
||||
paths = [ path ] + paths
|
||||
if is_list:
|
||||
env_dict[key] = paths
|
||||
else:
|
||||
env_dict[key] = sep.join(paths)
|
||||
except KeyError:
|
||||
env_dict[key] = path
|
||||
|
||||
def addPharLapPaths(env):
|
||||
"""This function adds the path to the Phar Lap binaries, includes,
|
||||
and libraries, if they are not already there."""
|
||||
|
@ -117,13 +95,13 @@ def addPharLapPaths(env):
|
|||
except KeyError:
|
||||
env_dict = {}
|
||||
env['ENV'] = env_dict
|
||||
addPathIfNotExists(env_dict, 'PATH',
|
||||
SCons.Util.AddPathIfNotExists(env_dict, 'PATH',
|
||||
os.path.join(ph_path, 'bin'))
|
||||
addPathIfNotExists(env_dict, 'INCLUDE',
|
||||
SCons.Util.AddPathIfNotExists(env_dict, 'INCLUDE',
|
||||
os.path.join(ph_path, 'include'))
|
||||
addPathIfNotExists(env_dict, 'LIB',
|
||||
SCons.Util.AddPathIfNotExists(env_dict, 'LIB',
|
||||
os.path.join(ph_path, 'lib'))
|
||||
addPathIfNotExists(env_dict, 'LIB',
|
||||
SCons.Util.AddPathIfNotExists(env_dict, 'LIB',
|
||||
os.path.join(ph_path, os.path.normpath('lib/vclib')))
|
||||
|
||||
env['PHARLAP_PATH'] = getPharLapPath()
|
|
@ -8,7 +8,7 @@ selection method.
|
|||
|
||||
"""
|
||||
|
||||
# Copyright (c) 2001 - 2015 The SCons Foundation
|
||||
# Copyright (c) 2001 - 2016 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,7 +29,7 @@ selection method.
|
|||
# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
||||
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
|
||||
__revision__ = "src/engine/SCons/Tool/RCS.py rel_2.4.1:3453:73fefd3ea0b0 2015/11/09 03:25:05 bdbaddog"
|
||||
__revision__ = "src/engine/SCons/Tool/RCS.py rel_2.5.0:3543:937e55cd78f7 2016/04/09 11:29:54 bdbaddog"
|
||||
|
||||
import SCons.Action
|
||||
import SCons.Builder
|
||||
|
@ -46,7 +46,6 @@ def generate(env):
|
|||
act = SCons.Action.Action('$RCS_COCOM', '$RCS_COCOMSTR')
|
||||
return SCons.Builder.Builder(action = act, env = env)
|
||||
|
||||
#setattr(env, 'RCS', RCSFactory)
|
||||
env.RCS = RCSFactory
|
||||
|
||||
env['RCS'] = 'rcs'
|
|
@ -8,7 +8,7 @@ selection method.
|
|||
|
||||
"""
|
||||
|
||||
# Copyright (c) 2001 - 2015 The SCons Foundation
|
||||
# Copyright (c) 2001 - 2016 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,7 +29,7 @@ selection method.
|
|||
# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
||||
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
|
||||
__revision__ = "src/engine/SCons/Tool/SCCS.py rel_2.4.1:3453:73fefd3ea0b0 2015/11/09 03:25:05 bdbaddog"
|
||||
__revision__ = "src/engine/SCons/Tool/SCCS.py rel_2.5.0:3543:937e55cd78f7 2016/04/09 11:29:54 bdbaddog"
|
||||
|
||||
import SCons.Action
|
||||
import SCons.Builder
|
||||
|
@ -46,7 +46,6 @@ def generate(env):
|
|||
act = SCons.Action.Action('$SCCSCOM', '$SCCSCOMSTR')
|
||||
return SCons.Builder.Builder(action = act, env = env)
|
||||
|
||||
#setattr(env, 'SCCS', SCCSFactory)
|
||||
env.SCCS = SCCSFactory
|
||||
|
||||
env['SCCS'] = 'sccs'
|
|
@ -8,7 +8,7 @@ selection method.
|
|||
|
||||
"""
|
||||
|
||||
# Copyright (c) 2001 - 2015 The SCons Foundation
|
||||
# Copyright (c) 2001 - 2016 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,7 +29,7 @@ selection method.
|
|||
# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
||||
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
|
||||
__revision__ = "src/engine/SCons/Tool/Subversion.py rel_2.4.1:3453:73fefd3ea0b0 2015/11/09 03:25:05 bdbaddog"
|
||||
__revision__ = "src/engine/SCons/Tool/Subversion.py rel_2.5.0:3543:937e55cd78f7 2016/04/09 11:29:54 bdbaddog"
|
||||
|
||||
import os.path
|
||||
|
||||
|
@ -54,7 +54,6 @@ def generate(env):
|
|||
SVNREPOSITORY = repos,
|
||||
SVNMODULE = module)
|
||||
|
||||
#setattr(env, 'Subversion', SubversionFactory)
|
||||
env.Subversion = SubversionFactory
|
||||
|
||||
env['SVN'] = 'svn'
|
|
@ -14,7 +14,7 @@ tool definition.
|
|||
"""
|
||||
|
||||
#
|
||||
# Copyright (c) 2001 - 2015 The SCons Foundation
|
||||
# Copyright (c) 2001 - 2016 The SCons Foundation
|
||||
#
|
||||
# Permission is hereby granted, free of charge, to any person obtaining
|
||||
# a copy of this software and associated documentation files (the
|
||||
|
@ -35,7 +35,7 @@ tool definition.
|
|||
# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
||||
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
|
||||
__revision__ = "src/engine/SCons/Tool/__init__.py rel_2.4.1:3453:73fefd3ea0b0 2015/11/09 03:25:05 bdbaddog"
|
||||
__revision__ = "src/engine/SCons/Tool/__init__.py rel_2.5.0:3543:937e55cd78f7 2016/04/09 11:29:54 bdbaddog"
|
||||
|
||||
import imp
|
||||
import sys
|
||||
|
@ -51,6 +51,7 @@ import SCons.Scanner.C
|
|||
import SCons.Scanner.D
|
||||
import SCons.Scanner.LaTeX
|
||||
import SCons.Scanner.Prog
|
||||
import SCons.Scanner.SWIG
|
||||
|
||||
DefaultToolpath=[]
|
||||
|
||||
|
@ -60,6 +61,7 @@ LaTeXScanner = SCons.Scanner.LaTeX.LaTeXScanner()
|
|||
PDFLaTeXScanner = SCons.Scanner.LaTeX.PDFLaTeXScanner()
|
||||
ProgramScanner = SCons.Scanner.Prog.ProgramScanner()
|
||||
SourceFileScanner = SCons.Scanner.Base({}, name='SourceFileScanner')
|
||||
SWIGScanner = SCons.Scanner.SWIG.SWIGScanner()
|
||||
|
||||
CSuffixes = [".c", ".C", ".cxx", ".cpp", ".c++", ".cc",
|
||||
".h", ".H", ".hxx", ".hpp", ".hh",
|
||||
|
@ -73,12 +75,17 @@ IDLSuffixes = [".idl", ".IDL"]
|
|||
|
||||
LaTeXSuffixes = [".tex", ".ltx", ".latex"]
|
||||
|
||||
SWIGSuffixes = ['.i']
|
||||
|
||||
for suffix in CSuffixes:
|
||||
SourceFileScanner.add_scanner(suffix, CScanner)
|
||||
|
||||
for suffix in DSuffixes:
|
||||
SourceFileScanner.add_scanner(suffix, DScanner)
|
||||
|
||||
for suffix in SWIGSuffixes:
|
||||
SourceFileScanner.add_scanner(suffix, SWIGScanner)
|
||||
|
||||
# FIXME: what should be done here? Two scanners scan the same extensions,
|
||||
# but look for different files, e.g., "picture.eps" vs. "picture.pdf".
|
||||
# The builders for DVI and PDF explicitly reference their scanners
|
||||
|
@ -101,7 +108,7 @@ class Tool(object):
|
|||
self.options = module.options
|
||||
|
||||
def _tool_module(self):
|
||||
# TODO: Interchange zipimport with normal initilization for better error reporting
|
||||
# TODO: Interchange zipimport with normal initialization for better error reporting
|
||||
oldpythonpath = sys.path
|
||||
sys.path = self.toolpath + sys.path
|
||||
|
|
@ -9,7 +9,7 @@ selection method.
|
|||
"""
|
||||
|
||||
#
|
||||
# Copyright (c) 2001 - 2015 The SCons Foundation
|
||||
# Copyright (c) 2001 - 2016 The SCons Foundation
|
||||
#
|
||||
# Permission is hereby granted, free of charge, to any person obtaining
|
||||
# a copy of this software and associated documentation files (the
|
||||
|
@ -31,7 +31,7 @@ selection method.
|
|||
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
#
|
||||
|
||||
__revision__ = "src/engine/SCons/Tool/aixc++.py rel_2.4.1:3453:73fefd3ea0b0 2015/11/09 03:25:05 bdbaddog"
|
||||
__revision__ = "src/engine/SCons/Tool/aixc++.py rel_2.5.0:3543:937e55cd78f7 2016/04/09 11:29:54 bdbaddog"
|
||||
|
||||
import os.path
|
||||
|
|
@ -8,7 +8,7 @@ selection method.
|
|||
"""
|
||||
|
||||
#
|
||||
# Copyright (c) 2001 - 2015 The SCons Foundation
|
||||
# Copyright (c) 2001 - 2016 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 +30,7 @@ selection method.
|
|||
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
#
|
||||
|
||||
__revision__ = "src/engine/SCons/Tool/aixcc.py rel_2.4.1:3453:73fefd3ea0b0 2015/11/09 03:25:05 bdbaddog"
|
||||
__revision__ = "src/engine/SCons/Tool/aixcc.py rel_2.5.0:3543:937e55cd78f7 2016/04/09 11:29:54 bdbaddog"
|
||||
|
||||
import os.path
|
||||
|
|
@ -8,7 +8,7 @@ selection method.
|
|||
"""
|
||||
|
||||
#
|
||||
# Copyright (c) 2001 - 2015 The SCons Foundation
|
||||
# Copyright (c) 2001 - 2016 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 +30,7 @@ selection method.
|
|||
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
#
|
||||
|
||||
__revision__ = "src/engine/SCons/Tool/aixf77.py rel_2.4.1:3453:73fefd3ea0b0 2015/11/09 03:25:05 bdbaddog"
|
||||
__revision__ = "src/engine/SCons/Tool/aixf77.py rel_2.5.0:3543:937e55cd78f7 2016/04/09 11:29:54 bdbaddog"
|
||||
|
||||
import os.path
|
||||
|
||||
|
@ -41,7 +41,7 @@ import f77
|
|||
# It would be good to look for the AIX F77 package the same way we're now
|
||||
# looking for the C and C++ packages. This should be as easy as supplying
|
||||
# the correct package names in the following list and uncommenting the
|
||||
# SCons.Platform.aix_get_xlc() call the in the function below.
|
||||
# SCons.Platform.aix_get_xlc() call in the function below.
|
||||
packages = []
|
||||
|
||||
def get_xlf77(env):
|
|
@ -8,7 +8,7 @@ selection method.
|
|||
"""
|
||||
|
||||
#
|
||||
# Copyright (c) 2001 - 2015 The SCons Foundation
|
||||
# Copyright (c) 2001 - 2016 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 +30,7 @@ selection method.
|
|||
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
#
|
||||
|
||||
__revision__ = "src/engine/SCons/Tool/aixlink.py rel_2.4.1:3453:73fefd3ea0b0 2015/11/09 03:25:05 bdbaddog"
|
||||
__revision__ = "src/engine/SCons/Tool/aixlink.py rel_2.5.0:3543:937e55cd78f7 2016/04/09 11:29:54 bdbaddog"
|
||||
|
||||
import os
|
||||
import os.path
|
|
@ -9,7 +9,7 @@ selection method.
|
|||
"""
|
||||
|
||||
#
|
||||
# Copyright (c) 2001 - 2015 The SCons Foundation
|
||||
# Copyright (c) 2001 - 2016 The SCons Foundation
|
||||
#
|
||||
# Permission is hereby granted, free of charge, to any person obtaining
|
||||
# a copy of this software and associated documentation files (the
|
||||
|
@ -31,7 +31,7 @@ selection method.
|
|||
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
#
|
||||
|
||||
__revision__ = "src/engine/SCons/Tool/applelink.py rel_2.4.1:3453:73fefd3ea0b0 2015/11/09 03:25:05 bdbaddog"
|
||||
__revision__ = "src/engine/SCons/Tool/applelink.py rel_2.5.0:3543:937e55cd78f7 2016/04/09 11:29:54 bdbaddog"
|
||||
|
||||
import SCons.Util
|
||||
|
|
@ -9,7 +9,7 @@ selection method.
|
|||
"""
|
||||
|
||||
#
|
||||
# Copyright (c) 2001 - 2015 The SCons Foundation
|
||||
# Copyright (c) 2001 - 2016 The SCons Foundation
|
||||
#
|
||||
# Permission is hereby granted, free of charge, to any person obtaining
|
||||
# a copy of this software and associated documentation files (the
|
||||
|
@ -31,7 +31,7 @@ selection method.
|
|||
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
#
|
||||
|
||||
__revision__ = "src/engine/SCons/Tool/ar.py rel_2.4.1:3453:73fefd3ea0b0 2015/11/09 03:25:05 bdbaddog"
|
||||
__revision__ = "src/engine/SCons/Tool/ar.py rel_2.5.0:3543:937e55cd78f7 2016/04/09 11:29:54 bdbaddog"
|
||||
|
||||
import SCons.Defaults
|
||||
import SCons.Tool
|
|
@ -9,7 +9,7 @@ selection method.
|
|||
"""
|
||||
|
||||
#
|
||||
# Copyright (c) 2001 - 2015 The SCons Foundation
|
||||
# Copyright (c) 2001 - 2016 The SCons Foundation
|
||||
#
|
||||
# Permission is hereby granted, free of charge, to any person obtaining
|
||||
# a copy of this software and associated documentation files (the
|
||||
|
@ -31,7 +31,7 @@ selection method.
|
|||
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
#
|
||||
|
||||
__revision__ = "src/engine/SCons/Tool/as.py rel_2.4.1:3453:73fefd3ea0b0 2015/11/09 03:25:05 bdbaddog"
|
||||
__revision__ = "src/engine/SCons/Tool/as.py rel_2.5.0:3543:937e55cd78f7 2016/04/09 11:29:54 bdbaddog"
|
||||
|
||||
import SCons.Defaults
|
||||
import SCons.Tool
|
|
@ -5,7 +5,7 @@ XXX
|
|||
"""
|
||||
|
||||
#
|
||||
# Copyright (c) 2001 - 2015 The SCons Foundation
|
||||
# Copyright (c) 2001 - 2016 The SCons Foundation
|
||||
#
|
||||
# Permission is hereby granted, free of charge, to any person obtaining
|
||||
# a copy of this software and associated documentation files (the
|
||||
|
@ -27,7 +27,7 @@ XXX
|
|||
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
#
|
||||
|
||||
__revision__ = "src/engine/SCons/Tool/bcc32.py rel_2.4.1:3453:73fefd3ea0b0 2015/11/09 03:25:05 bdbaddog"
|
||||
__revision__ = "src/engine/SCons/Tool/bcc32.py rel_2.5.0:3543:937e55cd78f7 2016/04/09 11:29:54 bdbaddog"
|
||||
|
||||
import os
|
||||
import os.path
|
|
@ -8,7 +8,7 @@ selection method.
|
|||
"""
|
||||
|
||||
#
|
||||
# Copyright (c) 2001 - 2015 The SCons Foundation
|
||||
# Copyright (c) 2001 - 2016 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 +30,7 @@ selection method.
|
|||
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
#
|
||||
|
||||
__revision__ = "src/engine/SCons/Tool/c++.py rel_2.4.1:3453:73fefd3ea0b0 2015/11/09 03:25:05 bdbaddog"
|
||||
__revision__ = "src/engine/SCons/Tool/c++.py rel_2.5.0:3543:937e55cd78f7 2016/04/09 11:29:54 bdbaddog"
|
||||
|
||||
import os.path
|
||||
|
|
@ -8,7 +8,7 @@ selection method.
|
|||
"""
|
||||
|
||||
#
|
||||
# Copyright (c) 2001 - 2015 The SCons Foundation
|
||||
# Copyright (c) 2001 - 2016 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 +30,7 @@ selection method.
|
|||
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
#
|
||||
|
||||
__revision__ = "src/engine/SCons/Tool/cc.py rel_2.4.1:3453:73fefd3ea0b0 2015/11/09 03:25:05 bdbaddog"
|
||||
__revision__ = "src/engine/SCons/Tool/cc.py rel_2.5.0:3543:937e55cd78f7 2016/04/09 11:29:54 bdbaddog"
|
||||
|
||||
import SCons.Tool
|
||||
import SCons.Defaults
|
|
@ -5,7 +5,7 @@ Tool-specific initialization for the Compaq Visual Fortran compiler.
|
|||
"""
|
||||
|
||||
#
|
||||
# Copyright (c) 2001 - 2015 The SCons Foundation
|
||||
# Copyright (c) 2001 - 2016 The SCons Foundation
|
||||
#
|
||||
# Permission is hereby granted, free of charge, to any person obtaining
|
||||
# a copy of this software and associated documentation files (the
|
||||
|
@ -27,7 +27,7 @@ Tool-specific initialization for the Compaq Visual Fortran compiler.
|
|||
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
#
|
||||
|
||||
__revision__ = "src/engine/SCons/Tool/cvf.py rel_2.4.1:3453:73fefd3ea0b0 2015/11/09 03:25:05 bdbaddog"
|
||||
__revision__ = "src/engine/SCons/Tool/cvf.py rel_2.5.0:3543:937e55cd78f7 2016/04/09 11:29:54 bdbaddog"
|
||||
|
||||
import fortran
|
||||
|
|
@ -143,7 +143,7 @@ def _versioned_implib_name(env, libnode, version, prefix, suffix, **kw):
|
|||
implib_libtype=kw['libtype'])
|
||||
|
||||
def _versioned_implib_symlinks(env, libnode, version, prefix, suffix, **kw):
|
||||
"""Generate link names that should be created for a versioned shared lirbrary.
|
||||
"""Generate link names that should be created for a versioned shared library.
|
||||
Returns a list in the form [ (link, linktarget), ... ]
|
||||
"""
|
||||
Verbose = False
|
|
@ -9,7 +9,7 @@ selection method.
|
|||
"""
|
||||
|
||||
#
|
||||
# Copyright (c) 2001 - 2015 The SCons Foundation
|
||||
# Copyright (c) 2001 - 2016 The SCons Foundation
|
||||
#
|
||||
# Permission is hereby granted, free of charge, to any person obtaining
|
||||
# a copy of this software and associated documentation files (the
|
||||
|
@ -31,7 +31,7 @@ selection method.
|
|||
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
#
|
||||
|
||||
__revision__ = "src/engine/SCons/Tool/default.py rel_2.4.1:3453:73fefd3ea0b0 2015/11/09 03:25:05 bdbaddog"
|
||||
__revision__ = "src/engine/SCons/Tool/default.py rel_2.5.0:3543:937e55cd78f7 2016/04/09 11:29:54 bdbaddog"
|
||||
|
||||
import SCons.Tool
|
||||
|
|
@ -36,7 +36,7 @@ Lib tool variables:
|
|||
"""
|
||||
|
||||
#
|
||||
# Copyright (c) 2001 - 2015 The SCons Foundation
|
||||
# Copyright (c) 2001 - 2016 The SCons Foundation
|
||||
#
|
||||
# Permission is hereby granted, free of charge, to any person obtaining
|
||||
# a copy of this software and associated documentation files (the
|
||||
|
@ -58,7 +58,7 @@ Lib tool variables:
|
|||
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
#
|
||||
|
||||
__revision__ = "src/engine/SCons/Tool/dmd.py rel_2.4.1:3453:73fefd3ea0b0 2015/11/09 03:25:05 bdbaddog"
|
||||
__revision__ = "src/engine/SCons/Tool/dmd.py rel_2.5.0:3543:937e55cd78f7 2016/04/09 11:29:54 bdbaddog"
|
||||
|
||||
import os
|
||||
import subprocess
|
|
@ -10,7 +10,7 @@ selection method.
|
|||
"""
|
||||
|
||||
#
|
||||
# Copyright (c) 2001-7,2010 The SCons Foundation
|
||||
# Copyright (c) 2001 - 2016 The SCons Foundation
|
||||
#
|
||||
# Permission is hereby granted, free of charge, to any person obtaining
|
||||
# a copy of this software and associated documentation files (the
|
||||
|
@ -852,7 +852,6 @@ def generate(env):
|
|||
)
|
||||
_detect(env)
|
||||
|
||||
try:
|
||||
env.AddMethod(DocbookEpub, "DocbookEpub")
|
||||
env.AddMethod(DocbookHtml, "DocbookHtml")
|
||||
env.AddMethod(DocbookHtmlChunked, "DocbookHtmlChunked")
|
||||
|
@ -863,19 +862,6 @@ def generate(env):
|
|||
env.AddMethod(DocbookSlidesHtml, "DocbookSlidesHtml")
|
||||
env.AddMethod(DocbookXInclude, "DocbookXInclude")
|
||||
env.AddMethod(DocbookXslt, "DocbookXslt")
|
||||
except AttributeError:
|
||||
# Looks like we use a pre-0.98 version of SCons...
|
||||
from SCons.Script.SConscript import SConsEnvironment
|
||||
SConsEnvironment.DocbookEpub = DocbookEpub
|
||||
SConsEnvironment.DocbookHtml = DocbookHtml
|
||||
SConsEnvironment.DocbookHtmlChunked = DocbookHtmlChunked
|
||||
SConsEnvironment.DocbookHtmlhelp = DocbookHtmlhelp
|
||||
SConsEnvironment.DocbookPdf = DocbookPdf
|
||||
SConsEnvironment.DocbookMan = DocbookMan
|
||||
SConsEnvironment.DocbookSlidesPdf = DocbookSlidesPdf
|
||||
SConsEnvironment.DocbookSlidesHtml = DocbookSlidesHtml
|
||||
SConsEnvironment.DocbookXInclude = DocbookXInclude
|
||||
SConsEnvironment.DocbookXslt = DocbookXslt
|
||||
|
||||
|
||||
def exists(env):
|
|
@ -5,7 +5,7 @@ Common DVI Builder definition for various other Tool modules that use it.
|
|||
"""
|
||||
|
||||
#
|
||||
# Copyright (c) 2001 - 2015 The SCons Foundation
|
||||
# Copyright (c) 2001 - 2016 The SCons Foundation
|
||||
#
|
||||
# Permission is hereby granted, free of charge, to any person obtaining
|
||||
# a copy of this software and associated documentation files (the
|
||||
|
@ -27,7 +27,7 @@ Common DVI Builder definition for various other Tool modules that use it.
|
|||
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
#
|
||||
|
||||
__revision__ = "src/engine/SCons/Tool/dvi.py rel_2.4.1:3453:73fefd3ea0b0 2015/11/09 03:25:05 bdbaddog"
|
||||
__revision__ = "src/engine/SCons/Tool/dvi.py rel_2.5.0:3543:937e55cd78f7 2016/04/09 11:29:54 bdbaddog"
|
||||
|
||||
import SCons.Builder
|
||||
import SCons.Tool
|
|
@ -9,7 +9,7 @@ selection method.
|
|||
"""
|
||||
|
||||
#
|
||||
# Copyright (c) 2001 - 2015 The SCons Foundation
|
||||
# Copyright (c) 2001 - 2016 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 +30,7 @@ selection method.
|
|||
# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
||||
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
|
||||
__revision__ = "src/engine/SCons/Tool/dvipdf.py rel_2.4.1:3453:73fefd3ea0b0 2015/11/09 03:25:05 bdbaddog"
|
||||
__revision__ = "src/engine/SCons/Tool/dvipdf.py rel_2.5.0:3543:937e55cd78f7 2016/04/09 11:29:54 bdbaddog"
|
||||
|
||||
import SCons.Action
|
||||
import SCons.Defaults
|
|
@ -9,7 +9,7 @@ selection method.
|
|||
"""
|
||||
|
||||
#
|
||||
# Copyright (c) 2001 - 2015 The SCons Foundation
|
||||
# Copyright (c) 2001 - 2016 The SCons Foundation
|
||||
#
|
||||
# Permission is hereby granted, free of charge, to any person obtaining
|
||||
# a copy of this software and associated documentation files (the
|
||||
|
@ -31,7 +31,7 @@ selection method.
|
|||
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
#
|
||||
|
||||
__revision__ = "src/engine/SCons/Tool/dvips.py rel_2.4.1:3453:73fefd3ea0b0 2015/11/09 03:25:05 bdbaddog"
|
||||
__revision__ = "src/engine/SCons/Tool/dvips.py rel_2.5.0:3543:937e55cd78f7 2016/04/09 11:29:54 bdbaddog"
|
||||
|
||||
import SCons.Action
|
||||
import SCons.Builder
|
|
@ -9,7 +9,7 @@ selection method.
|
|||
"""
|
||||
|
||||
#
|
||||
# Copyright (c) 2001 - 2015 The SCons Foundation
|
||||
# Copyright (c) 2001 - 2016 The SCons Foundation
|
||||
#
|
||||
# Permission is hereby granted, free of charge, to any person obtaining
|
||||
# a copy of this software and associated documentation files (the
|
||||
|
@ -31,7 +31,7 @@ selection method.
|
|||
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
#
|
||||
|
||||
__revision__ = "src/engine/SCons/Tool/f03.py rel_2.4.1:3453:73fefd3ea0b0 2015/11/09 03:25:05 bdbaddog"
|
||||
__revision__ = "src/engine/SCons/Tool/f03.py rel_2.5.0:3543:937e55cd78f7 2016/04/09 11:29:54 bdbaddog"
|
||||
|
||||
import SCons.Defaults
|
||||
import SCons.Tool
|
|
@ -9,7 +9,7 @@ selection method.
|
|||
"""
|
||||
|
||||
#
|
||||
# Copyright (c) 2001 - 2015 The SCons Foundation
|
||||
# Copyright (c) 2001 - 2016 The SCons Foundation
|
||||
#
|
||||
# Permission is hereby granted, free of charge, to any person obtaining
|
||||
# a copy of this software and associated documentation files (the
|
||||
|
@ -31,7 +31,7 @@ selection method.
|
|||
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
#
|
||||
|
||||
__revision__ = "src/engine/SCons/Tool/f77.py rel_2.4.1:3453:73fefd3ea0b0 2015/11/09 03:25:05 bdbaddog"
|
||||
__revision__ = "src/engine/SCons/Tool/f77.py rel_2.5.0:3543:937e55cd78f7 2016/04/09 11:29:54 bdbaddog"
|
||||
|
||||
import SCons.Defaults
|
||||
import SCons.Scanner.Fortran
|
|
@ -9,7 +9,7 @@ selection method.
|
|||
"""
|
||||
|
||||
#
|
||||
# Copyright (c) 2001 - 2015 The SCons Foundation
|
||||
# Copyright (c) 2001 - 2016 The SCons Foundation
|
||||
#
|
||||
# Permission is hereby granted, free of charge, to any person obtaining
|
||||
# a copy of this software and associated documentation files (the
|
||||
|
@ -31,7 +31,7 @@ selection method.
|
|||
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
#
|
||||
|
||||
__revision__ = "src/engine/SCons/Tool/f90.py rel_2.4.1:3453:73fefd3ea0b0 2015/11/09 03:25:05 bdbaddog"
|
||||
__revision__ = "src/engine/SCons/Tool/f90.py rel_2.5.0:3543:937e55cd78f7 2016/04/09 11:29:54 bdbaddog"
|
||||
|
||||
import SCons.Defaults
|
||||
import SCons.Scanner.Fortran
|
|
@ -9,7 +9,7 @@ selection method.
|
|||
"""
|
||||
|
||||
#
|
||||
# Copyright (c) 2001 - 2015 The SCons Foundation
|
||||
# Copyright (c) 2001 - 2016 The SCons Foundation
|
||||
#
|
||||
# Permission is hereby granted, free of charge, to any person obtaining
|
||||
# a copy of this software and associated documentation files (the
|
||||
|
@ -31,7 +31,7 @@ selection method.
|
|||
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
#
|
||||
|
||||
__revision__ = "src/engine/SCons/Tool/f95.py rel_2.4.1:3453:73fefd3ea0b0 2015/11/09 03:25:05 bdbaddog"
|
||||
__revision__ = "src/engine/SCons/Tool/f95.py rel_2.5.0:3543:937e55cd78f7 2016/04/09 11:29:54 bdbaddog"
|
||||
|
||||
import SCons.Defaults
|
||||
import SCons.Tool
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Reference in a new issue