diff options
author | Christian Kandeler <christian.kandeler@qt.io> | 2018-07-10 15:58:51 +0200 |
---|---|---|
committer | Christian Kandeler <christian.kandeler@qt.io> | 2018-07-16 09:01:46 +0000 |
commit | 4a0f385213148875859689c193f15f372f90802d (patch) | |
tree | 0c08d82081bcce1d13f9cb5477b671177a688d65 /tests/auto/blackbox/tst_blackbox.h | |
parent | facd941064fbdad2a89ddc557e6540a2869a962f (diff) | |
download | qbs-4a0f385213148875859689c193f15f372f90802d.tar.gz |
RuleNode: Fix calculation of changed inputs
The old code had a number of problems:
- It partially overlapped with the calculation of compatible inputs.
- It was wrong in that it failed to consider inputs from dependencies.
- It was wrong in that it assumed that after rule application, input
artifacts always have parent artifacts to later compare timestamps with.
This is not the case for e.g. a generated cpp file without a Q_OBJECT
macro on which moc is run: No transformer is created in such a case,
because the outputArtifacts array is empty.
The last problem was glossed over by the fact that we held a global list
of "changed source artifacts" in the executor, so such changes were
spotted when they happened in source artifacts. However, that code was
also rather dubious in itself because the criterion for "changed" was
that the timestamp was newer than it was on the last run of the
executor, so I don't think it was completely safe when doing partial
builds.
We solve these problems by remembering when we last applied the rule. An
input artifact is considered "changed" if it has been modified after
that.
Change-Id: Ib1bafd9e1078122776626155c4f2cc11ad622191
Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
Diffstat (limited to 'tests/auto/blackbox/tst_blackbox.h')
-rw-r--r-- | tests/auto/blackbox/tst_blackbox.h | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/tests/auto/blackbox/tst_blackbox.h b/tests/auto/blackbox/tst_blackbox.h index 6c9647d2b..86f42794c 100644 --- a/tests/auto/blackbox/tst_blackbox.h +++ b/tests/auto/blackbox/tst_blackbox.h @@ -59,6 +59,7 @@ private slots: void buildGraphVersions(); void changedFiles_data(); void changedFiles(); + void changedInputsFromDependencies(); void changedRuleInputs(); void changeInDisabledProduct(); void changeInImportedFile(); |