summaryrefslogtreecommitdiffstats
path: root/src/engine/SCons
diff options
context:
space:
mode:
authorSteven Knight <knight@baldmt.com>2002-08-06 03:15:21 (GMT)
committerSteven Knight <knight@baldmt.com>2002-08-06 03:15:21 (GMT)
commit59ec4b2e4ca1579c703093d0f87a7c5ecde8633c (patch)
tree2394ab9dbeda4c515b700745631a041384e09ffa /src/engine/SCons
parent71600f7a97bc30494ecfbd9afd4b4df43381f57e (diff)
downloadSCons-59ec4b2e4ca1579c703093d0f87a7c5ecde8633c.zip
SCons-59ec4b2e4ca1579c703093d0f87a7c5ecde8633c.tar.gz
SCons-59ec4b2e4ca1579c703093d0f87a7c5ecde8633c.tar.bz2
Support Repository and Default().
Diffstat (limited to 'src/engine/SCons')
-rw-r--r--src/engine/SCons/Action.py12
-rw-r--r--src/engine/SCons/Environment.py4
-rw-r--r--src/engine/SCons/Node/Alias.py1
-rw-r--r--src/engine/SCons/Node/FS.py1
-rw-r--r--src/engine/SCons/Node/NodeTests.py86
-rw-r--r--src/engine/SCons/Node/__init__.py5
6 files changed, 11 insertions, 98 deletions
diff --git a/src/engine/SCons/Action.py b/src/engine/SCons/Action.py
index 2a07fce..e2fe07f 100644
--- a/src/engine/SCons/Action.py
+++ b/src/engine/SCons/Action.py
@@ -462,9 +462,15 @@ class FunctionAction(ActionBase):
if kw.has_key('target') and not \
SCons.Util.is_List(kw['target']):
kw['target'] = [ kw['target'] ]
- if kw.has_key('source') and not \
- SCons.Util.is_List(kw['source']):
- kw['source'] = [ kw['source'] ]
+ if kw.has_key('source'):
+ def rfile(n):
+ try:
+ return n.rfile()
+ except AttributeError:
+ return n
+ if not SCons.Util.is_List(kw['source']):
+ kw['source'] = [ kw['source'] ]
+ kw['source'] = map(rfile, kw['source'])
if kw.has_key("env") and not isinstance(kw["env"], EnvDictProxy):
kw["env"] = EnvDictProxy(kw["env"])
return apply(self.function, (), kw)
diff --git a/src/engine/SCons/Environment.py b/src/engine/SCons/Environment.py
index 99eff2e..fea60c3 100644
--- a/src/engine/SCons/Environment.py
+++ b/src/engine/SCons/Environment.py
@@ -334,7 +334,7 @@ class Environment:
def Install(self, dir, source):
"""Install specified files in the given directory."""
- sources = SCons.Node.arg2Rnodes(source, self.fs.File)
+ sources = SCons.Node.arg2nodes(source, self.fs.File)
dnodes = SCons.Node.arg2nodes(dir, self.fs.Dir)
tgt = []
for dnode in dnodes:
@@ -347,7 +347,7 @@ class Environment:
def InstallAs(self, target, source):
"""Install sources as targets."""
- sources = SCons.Node.arg2Rnodes(source, self.fs.File)
+ sources = SCons.Node.arg2nodes(source, self.fs.File)
targets = SCons.Node.arg2nodes(target, self.fs.File)
ret = []
for src, tgt in map(lambda x, y: (x, y), sources, targets):
diff --git a/src/engine/SCons/Node/Alias.py b/src/engine/SCons/Node/Alias.py
index 73fd706..276750f 100644
--- a/src/engine/SCons/Node/Alias.py
+++ b/src/engine/SCons/Node/Alias.py
@@ -99,4 +99,3 @@ class Alias(SCons.Node.Node):
default_ans = AliasNameSpace()
SCons.Node.arg2nodes_lookups.append(default_ans.lookup)
-SCons.Node.arg2Rnodes_lookups.append(default_ans.lookup)
diff --git a/src/engine/SCons/Node/FS.py b/src/engine/SCons/Node/FS.py
index d756276..8bdfeb6 100644
--- a/src/engine/SCons/Node/FS.py
+++ b/src/engine/SCons/Node/FS.py
@@ -109,7 +109,6 @@ class FS:
self.Root = {}
self.Top = None
self.Repositories = []
- SCons.Node.arg2Rnodes_lookups.append(self.Rsearch)
def set_toplevel_dir(self, path):
assert not self.Top, "You can only set the top-level path on an FS object that has not had its File, Dir, or Entry methods called yet."
diff --git a/src/engine/SCons/Node/NodeTests.py b/src/engine/SCons/Node/NodeTests.py
index 963fffe..31c4ee6 100644
--- a/src/engine/SCons/Node/NodeTests.py
+++ b/src/engine/SCons/Node/NodeTests.py
@@ -683,92 +683,6 @@ class NodeTestCase(unittest.TestCase):
assert not hasattr(nodes[1], 'bbbb'), nodes[0]
assert nodes[1].c == 1, nodes[1]
- def test_arg2Rnodes(self):
- """Test the arg2Rnodes function."""
- dict = {}
- class X(SCons.Node.Node):
- pass
- def Factory(name, directory = None, create = 1, dict=dict, X=X):
- if not dict.has_key(name):
- dict[name] = X()
- dict[name].name = name
- return dict[name]
-
- nodes = SCons.Node.arg2Rnodes("Util.py UtilTests.py", Factory)
- assert len(nodes) == 1, nodes
- assert isinstance(nodes[0], X)
- assert nodes[0].name == "Util.py UtilTests.py"
-
- if hasattr(types, 'UnicodeType'):
- code = """if 1:
- nodes = SCons.Node.arg2Rnodes(u"Util.py UtilTests.py", Factory)
- assert len(nodes) == 1, nodes
- assert isinstance(nodes[0], X)
- assert nodes[0].name == u"Util.py UtilTests.py"
- \n"""
- exec code in globals(), locals()
-
- nodes = SCons.Node.arg2Rnodes(["Util.py", "UtilTests.py"], Factory)
- assert len(nodes) == 2, nodes
- assert isinstance(nodes[0], X)
- assert isinstance(nodes[1], X)
- assert nodes[0].name == "Util.py"
- assert nodes[1].name == "UtilTests.py"
-
- n1 = Factory("Util.py")
- nodes = SCons.Node.arg2Rnodes([n1, "UtilTests.py"], Factory)
- assert len(nodes) == 2, nodes
- assert isinstance(nodes[0], X)
- assert isinstance(nodes[1], X)
- assert nodes[0].name == "Util.py"
- assert nodes[1].name == "UtilTests.py"
-
- class SConsNode(SCons.Node.Node):
- pass
- nodes = SCons.Node.arg2Rnodes(SConsNode())
- assert len(nodes) == 1, nodes
- assert isinstance(nodes[0], SConsNode), node
-
- class OtherNode:
- pass
- nodes = SCons.Node.arg2Rnodes(OtherNode())
- assert len(nodes) == 1, nodes
- assert isinstance(nodes[0], OtherNode), node
-
- def lookup_a(str, F=Factory):
- if str[0] == 'a':
- n = F(str)
- n.a = 1
- return n
- else:
- return None
-
- def lookup_b(str, F=Factory):
- if str[0] == 'b':
- n = F(str)
- n.b = 1
- return n
- else:
- return None
-
- SCons.Node.arg2Rnodes_lookups.append(lookup_a)
- SCons.Node.arg2Rnodes_lookups.append(lookup_b)
-
- nodes = SCons.Node.arg2Rnodes(['aaa', 'bbb', 'ccc'], Factory)
- assert len(nodes) == 3, nodes
-
- assert nodes[0].name == 'aaa', nodes[0]
- assert nodes[0].a == 1, nodes[0]
- assert not hasattr(nodes[0], 'b'), nodes[0]
-
- assert nodes[1].name == 'bbb'
- assert not hasattr(nodes[1], 'a'), nodes[1]
- assert nodes[1].b == 1, nodes[1]
-
- assert nodes[2].name == 'ccc'
- assert not hasattr(nodes[2], 'a'), nodes[1]
- assert not hasattr(nodes[2], 'b'), nodes[1]
-
if __name__ == "__main__":
diff --git a/src/engine/SCons/Node/__init__.py b/src/engine/SCons/Node/__init__.py
index 3054d5e..d12edae 100644
--- a/src/engine/SCons/Node/__init__.py
+++ b/src/engine/SCons/Node/__init__.py
@@ -465,8 +465,6 @@ class Walker:
arg2nodes_lookups = []
-arg2Rnodes_lookups = []
-
def arg2nodes(args, node_factory=None, lookup_list=arg2nodes_lookups):
"""This function converts a string or list into a list of Node
instances. It accepts the following inputs:
@@ -504,6 +502,3 @@ def arg2nodes(args, node_factory=None, lookup_list=arg2nodes_lookups):
nodes.append(v)
return nodes
-
-def arg2Rnodes(args, node_factory=None):
- return arg2nodes(args, node_factory, arg2Rnodes_lookups)