summaryrefslogtreecommitdiffstats
path: root/src/engine/SCons/Scanner
diff options
context:
space:
mode:
authorSteven Knight <knight@baldmt.com>2002-11-12 10:42:12 (GMT)
committerSteven Knight <knight@baldmt.com>2002-11-12 10:42:12 (GMT)
commit1cfff0b089cc56024ed5ea71c33ad843373bb9fc (patch)
treed906050acce808a7b6fe9f63174e4ce8ee4f7205 /src/engine/SCons/Scanner
parent6a9cd3a308b6aa70d0fbaa7bb32e5a3c8fd32052 (diff)
downloadSCons-1cfff0b089cc56024ed5ea71c33ad843373bb9fc.zip
SCons-1cfff0b089cc56024ed5ea71c33ad843373bb9fc.tar.gz
SCons-1cfff0b089cc56024ed5ea71c33ad843373bb9fc.tar.bz2
Fix scans for derived include files in Repositories. (Charles Crain)
Diffstat (limited to 'src/engine/SCons/Scanner')
-rw-r--r--src/engine/SCons/Scanner/C.py2
-rw-r--r--src/engine/SCons/Scanner/CTests.py10
-rw-r--r--src/engine/SCons/Scanner/Fortran.py2
-rw-r--r--src/engine/SCons/Scanner/FortranTests.py10
4 files changed, 18 insertions, 6 deletions
diff --git a/src/engine/SCons/Scanner/C.py b/src/engine/SCons/Scanner/C.py
index 0e6e5d3..6eb03f4 100644
--- a/src/engine/SCons/Scanner/C.py
+++ b/src/engine/SCons/Scanner/C.py
@@ -80,7 +80,7 @@ def scan(node, env, target, fs = SCons.Node.FS.default_fs):
if not hasattr(target, 'cpppath'):
try:
- target.cpppath = tuple(fs.Rsearchall(SCons.Util.mapPaths(env['CPPPATH'], target.cwd), clazz=SCons.Node.FS.Dir))
+ target.cpppath = tuple(fs.Rsearchall(SCons.Util.mapPaths(env['CPPPATH'], target.cwd), clazz=SCons.Node.FS.Dir, must_exist=0))
except KeyError:
target.cpppath = ()
diff --git a/src/engine/SCons/Scanner/CTests.py b/src/engine/SCons/Scanner/CTests.py
index b91200f..be911d9 100644
--- a/src/engine/SCons/Scanner/CTests.py
+++ b/src/engine/SCons/Scanner/CTests.py
@@ -127,6 +127,7 @@ test.write(['repository', 'include', 'iii.h'], "\n")
test.write(['work', 'src', 'fff.c'], """
#include <iii.h>
+#include <jjj.h>
int main()
{
@@ -319,10 +320,15 @@ class CScannerTestCase11(unittest.TestCase):
os.chdir(test.workpath('work'))
fs = SCons.Node.FS.FS(test.workpath('work'))
fs.Repository(test.workpath('repository'))
+
+ # Create a derived file in a directory that does not exist yet.
+ # This was a bug at one time.
+ f1=fs.File('include2/jjj.h')
+ f1.builder=1
s = SCons.Scanner.C.CScan(fs=fs)
- env = DummyEnvironment(['include'])
+ env = DummyEnvironment(['include', 'include2'])
deps = s.scan(fs.File('src/fff.c'), env, DummyTarget())
- deps_match(self, deps, [test.workpath('repository/include/iii.h')])
+ deps_match(self, deps, [ test.workpath('repository/include/iii.h'), 'include2/jjj.h' ])
os.chdir(test.workpath(''))
class CScannerTestCase12(unittest.TestCase):
diff --git a/src/engine/SCons/Scanner/Fortran.py b/src/engine/SCons/Scanner/Fortran.py
index 5c4f69d..afe46d0 100644
--- a/src/engine/SCons/Scanner/Fortran.py
+++ b/src/engine/SCons/Scanner/Fortran.py
@@ -78,7 +78,7 @@ def scan(node, env, target, fs = SCons.Node.FS.default_fs):
if not hasattr(target, 'f77path'):
try:
- target.f77path = tuple(fs.Rsearchall(SCons.Util.mapPaths(env['F77PATH'], target.cwd), clazz=SCons.Node.FS.Dir))
+ target.f77path = tuple(fs.Rsearchall(SCons.Util.mapPaths(env['F77PATH'], target.cwd), clazz=SCons.Node.FS.Dir, must_exist=0))
except KeyError:
target.f77path = ()
diff --git a/src/engine/SCons/Scanner/FortranTests.py b/src/engine/SCons/Scanner/FortranTests.py
index 9806d60..3e3f7da 100644
--- a/src/engine/SCons/Scanner/FortranTests.py
+++ b/src/engine/SCons/Scanner/FortranTests.py
@@ -102,6 +102,7 @@ test.write(['repository', 'include', 'iii.f'], "\n")
test.write(['work', 'src', 'fff.f'], """
PROGRAM FOO
INCLUDE 'iii.f'
+ INCLUDE 'jjj.f'
STOP
END
""")
@@ -323,10 +324,15 @@ class FortranScannerTestCase13(unittest.TestCase):
os.chdir(test.workpath('work'))
fs = SCons.Node.FS.FS(test.workpath('work'))
fs.Repository(test.workpath('repository'))
+
+ # Create a derived file in a directory that does not exist yet.
+ # This was a bug at one time.
+ f1=fs.File('include2/jjj.f')
+ f1.builder=1
s = SCons.Scanner.Fortran.FortranScan(fs=fs)
- env = DummyEnvironment(['include'])
+ env = DummyEnvironment(['include','include2'])
deps = s.scan(fs.File('src/fff.f'), env, DummyTarget())
- deps_match(self, deps, [test.workpath('repository/include/iii.f')])
+ deps_match(self, deps, [test.workpath('repository/include/iii.f'), 'include2/jjj.f'])
os.chdir(test.workpath(''))
class FortranScannerTestCase14(unittest.TestCase):