summaryrefslogtreecommitdiffstats
path: root/src/engine/SCons/Node
diff options
context:
space:
mode:
authorSteven Knight <knight@baldmt.com>2004-12-15 04:10:39 (GMT)
committerSteven Knight <knight@baldmt.com>2004-12-15 04:10:39 (GMT)
commit6069f3ce2807d9915f74f5d5bcca7300ed7616fd (patch)
tree80455273d537403d77e86264e5ae140a7d262526 /src/engine/SCons/Node
parent41a6db6e20cd1e326e114e1bdac54df8660ab51c (diff)
downloadSCons-6069f3ce2807d9915f74f5d5bcca7300ed7616fd.zip
SCons-6069f3ce2807d9915f74f5d5bcca7300ed7616fd.tar.gz
SCons-6069f3ce2807d9915f74f5d5bcca7300ed7616fd.tar.bz2
Use the right scanner if the same source file is used for targets in two different environments.
Diffstat (limited to 'src/engine/SCons/Node')
-rw-r--r--src/engine/SCons/Node/FS.py5
-rw-r--r--src/engine/SCons/Node/FSTests.py8
2 files changed, 11 insertions, 2 deletions
diff --git a/src/engine/SCons/Node/FS.py b/src/engine/SCons/Node/FS.py
index bc9e682..1af739f 100644
--- a/src/engine/SCons/Node/FS.py
+++ b/src/engine/SCons/Node/FS.py
@@ -1497,11 +1497,12 @@ class File(Base):
path = scanner.path(env, target.cwd)
target.scanner_paths[scanner] = path
+ key = str(id(env)) + '|' + str(id(scanner)) + '|' + string.join(map(str,path), ':')
try:
- includes = self.found_includes[path]
+ includes = self.found_includes[key]
except KeyError:
includes = scanner(self, env, path)
- self.found_includes[path] = includes
+ self.found_includes[key] = includes
return includes
diff --git a/src/engine/SCons/Node/FSTests.py b/src/engine/SCons/Node/FSTests.py
index 747fdf1..5ed377c 100644
--- a/src/engine/SCons/Node/FSTests.py
+++ b/src/engine/SCons/Node/FSTests.py
@@ -909,6 +909,14 @@ class FSTestCase(unittest.TestCase):
assert deps == [xyz], deps
assert s.call_count == 2, s.call_count
+ env2 = Environment()
+
+ deps = f12.get_found_includes(env2, s, t1)
+ assert deps == [xyz], deps
+ assert s.call_count == 3, s.call_count
+
+
+
# Make sure we can scan this file even if the target isn't
# a file that has a scanner (it might be an Alias, e.g.).
class DummyNode: