summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorWilliam Blevins <wblevins@gmail.com>2015-08-07 14:29:05 (GMT)
committerWilliam Blevins <wblevins@gmail.com>2015-08-07 14:29:05 (GMT)
commit352c0ef0203f0f09de077d1662f95d896f08ff1c (patch)
tree93b16a3742f25bfa2c0674957a2791d587c882c7
parent27ae977d3fa04e29166e172fa64f7b5439d9f0c8 (diff)
downloadSCons-352c0ef0203f0f09de077d1662f95d896f08ff1c.zip
SCons-352c0ef0203f0f09de077d1662f95d896f08ff1c.tar.gz
SCons-352c0ef0203f0f09de077d1662f95d896f08ff1c.tar.bz2
Issue 2264: removed implicit dependency recursion from install targets.
Resolves performance issue with implicit dependencies (without builders) reinstalling. Example (C++): A.h includes B.h and both are installed somewhere. B.h is updated so both A.h and B.h would be reinstalled because B.h changed. A.h didn't need to be reinstalled for obvious reasons. Background info: this was already an issue for any scanner added to SCANNERS environment. Did not occur originally because default scanners not in SCANNERS environment.
-rw-r--r--src/engine/SCons/Tool/install.py1
-rw-r--r--test/IDL/IDLSUFFIXES.py5
-rw-r--r--test/explain/basic.py25
-rw-r--r--test/explain/save-info.py7
4 files changed, 14 insertions, 24 deletions
diff --git a/src/engine/SCons/Tool/install.py b/src/engine/SCons/Tool/install.py
index 9f2e937..847af34 100644
--- a/src/engine/SCons/Tool/install.py
+++ b/src/engine/SCons/Tool/install.py
@@ -447,6 +447,7 @@ def generate(env):
source_factory = env.fs.Entry,
multi = 1,
emitter = [ add_targets_to_INSTALLED_FILES, ],
+ source_scanner = SCons.Scanner.Base( {}, name = 'Install', recursive = False ),
name = 'InstallBuilder')
global BaseVersionedInstallBuilder
diff --git a/test/IDL/IDLSUFFIXES.py b/test/IDL/IDLSUFFIXES.py
index f71ceba..0a9a50c 100644
--- a/test/IDL/IDLSUFFIXES.py
+++ b/test/IDL/IDLSUFFIXES.py
@@ -60,11 +60,6 @@ test.up_to_date(arguments='.')
test.write('foo.h', "foo.h 2\n")
-test.run(arguments='.', stdout=test.wrap_stdout("""\
-Install file: "foo.idl" as "foo_idl"
-Install file: "foo.x" as "foo_x"
-"""))
-
test.up_to_date(arguments='.')
test.pass_test()
diff --git a/test/explain/basic.py b/test/explain/basic.py
index 5e31cfd..1072ac4 100644
--- a/test/explain/basic.py
+++ b/test/explain/basic.py
@@ -169,10 +169,18 @@ test.write(['src', 'file6.in'], "file6.in 1\n")
test.write(['src', 'subdir', 'file7.in'], "subdir/file7.in 1\n")
-args = '--debug=explain .'
+args = '--debug=explain ..'
expect = test.wrap_stdout("""\
+scons: building `%(inc_aaa)s' because it doesn't exist
+Install file: "aaa" as "%(inc_aaa)s"
+scons: building `%(inc_bbb_k)s' because it doesn't exist
+Install file: "bbb.k" as "%(inc_bbb_k)s"
+scons: building `%(inc_ddd)s' because it doesn't exist
+Install file: "ddd" as "%(inc_ddd)s"
+scons: building `%(inc_eee)s' because it doesn't exist
+Install file: "eee.in" as "%(inc_eee)s"
scons: building `file1' because it doesn't exist
%(_python_)s %(cat_py)s file1 file1.in
scons: building `file2' because it doesn't exist
@@ -181,14 +189,6 @@ scons: building `file3' because it doesn't exist
%(_python_)s %(cat_py)s file3 xxx yyy zzz
scons: building `file4' because it doesn't exist
%(_python_)s %(cat_py)s file4 - file4.in
-scons: building `%(inc_aaa)s' because it doesn't exist
-Install file: "aaa" as "%(inc_aaa)s"
-scons: building `%(inc_ddd)s' because it doesn't exist
-Install file: "ddd" as "%(inc_ddd)s"
-scons: building `%(inc_eee)s' because it doesn't exist
-Install file: "eee.in" as "%(inc_eee)s"
-scons: building `%(inc_bbb_k)s' because it doesn't exist
-Install file: "bbb.k" as "%(inc_bbb_k)s"
scons: building `file5' because it doesn't exist
%(_python_)s %(cat_py)s file5 file5.k
scons: building `file6' because it doesn't exist
@@ -236,6 +236,8 @@ test_value = '"second"'
WriteInitialTest( locals() )
expect = test.wrap_stdout("""\
+scons: rebuilding `%(inc_bbb_k)s' because `bbb.k' changed
+Install file: "bbb.k" as "%(inc_bbb_k)s"
scons: rebuilding `file1' because `file1.in' changed
%(_python_)s %(cat_py)s file1 file1.in
scons: rebuilding `file2' because `yyy' changed
@@ -244,11 +246,6 @@ scons: rebuilding `file3' because:
`yyy' changed
`zzz' changed
%(_python_)s %(cat_py)s file3 xxx yyy zzz
-scons: rebuilding `%(inc_bbb_k)s' because:
- `%(inc_ddd)s' is no longer a dependency
- `%(inc_eee)s' is no longer a dependency
- `bbb.k' changed
-Install file: "bbb.k" as "%(inc_bbb_k)s"
scons: rebuilding `file5' because `%(inc_bbb_k)s' changed
%(_python_)s %(cat_py)s file5 file5.k
scons: rebuilding `file6' because AlwaysBuild() is specified
diff --git a/test/explain/save-info.py b/test/explain/save-info.py
index d2ffc7d..af4c3f5 100644
--- a/test/explain/save-info.py
+++ b/test/explain/save-info.py
@@ -141,7 +141,7 @@ file5.k 1 line 4
test.write(['src', 'subdir', 'file6.in'], "subdir/file6.in 1\n")
#
-test.run(chdir='src', arguments='.')
+test.run(chdir='src', arguments='..')
test.must_match(['src', 'file1'], "file1.in 1\n")
test.must_match(['src', 'file2'], """\
@@ -176,10 +176,7 @@ scons: rebuilding `file3' because:
`yyy' changed
`zzz' changed
%(_python_)s %(cat_py)s file3 xxx yyy zzz
-scons: rebuilding `%(inc_bbb_k)s' because:
- `%(inc_ddd)s' is no longer a dependency
- `%(inc_eee)s' is no longer a dependency
- `bbb.k' changed
+scons: rebuilding `%(inc_bbb_k)s' because `bbb.k' changed
Install file: "bbb.k" as "%(inc_bbb_k)s"
scons: rebuilding `file5' because `%(inc_bbb_k)s' changed
%(_python_)s %(cat_py)s file5 file5.k