From 6798f6a8709fe82a1c67b656d4321e75936549a2 Mon Sep 17 00:00:00 2001 From: Christian Kandeler Date: Thu, 22 Aug 2013 16:10:26 +0200 Subject: Fix change tracking for properties requested from prepare scripts. When evaluating prepare scripts, we currently gather values requested from products as well as artifacts, but we do not differentiate between the two cases and upon restoring, we always compare the old property values to the product properties. This results in an insane amount of recompiling if any build system file changes due to false positives. With this patch, we record whether a property was requested from a product or an artifact, and use the right set of properties when tracking changes. Change-Id: Ib1fa4fad41019cfa7d3a10e0a91e7709c2f56414 Reviewed-by: Joerg Bornemann --- src/lib/buildgraph/buildgraphloader.h | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) (limited to 'src/lib/buildgraph/buildgraphloader.h') diff --git a/src/lib/buildgraph/buildgraphloader.h b/src/lib/buildgraph/buildgraphloader.h index 5057120d1..c2a413f60 100644 --- a/src/lib/buildgraph/buildgraphloader.h +++ b/src/lib/buildgraph/buildgraphloader.h @@ -44,6 +44,7 @@ namespace Internal { class ArtifactList; class FileDependency; class FileTime; +class Property; class BuildGraphLoadResult { @@ -88,7 +89,10 @@ private: const ResolvedProductPtr &changedProduct); void removeArtifactAndExclusiveDependents(Artifact *artifact, ArtifactList *removedArtifacts = 0); - bool checkForPropertyChanges(const TransformerPtr &restoredTrafo, const ResolvedProductPtr &freshProduct); + bool checkForPropertyChanges(const TransformerConstPtr &restoredTrafo, + const ResolvedProductPtr &freshProduct); + bool checkForPropertyChange(const Property &restoredProperty, + const PropertyMapConstPtr &newProperties); void replaceFileDependencyWithArtifact(const ResolvedProductPtr &fileDepProduct, FileDependency *filedep, Artifact *artifact); void rescueOldBuildData(const ResolvedProductConstPtr &restoredProduct, -- cgit v1.2.1