diff options
author | Steven Knight <knight@baldmt.com> | 2002-11-12 10:42:12 (GMT) |
---|---|---|
committer | Steven Knight <knight@baldmt.com> | 2002-11-12 10:42:12 (GMT) |
commit | 1cfff0b089cc56024ed5ea71c33ad843373bb9fc (patch) | |
tree | d906050acce808a7b6fe9f63174e4ce8ee4f7205 /src/engine/SCons/Scanner | |
parent | 6a9cd3a308b6aa70d0fbaa7bb32e5a3c8fd32052 (diff) | |
download | SCons-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.py | 2 | ||||
-rw-r--r-- | src/engine/SCons/Scanner/CTests.py | 10 | ||||
-rw-r--r-- | src/engine/SCons/Scanner/Fortran.py | 2 | ||||
-rw-r--r-- | src/engine/SCons/Scanner/FortranTests.py | 10 |
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): |