summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--CHANGELOG.md2
-rw-r--r--src/buildtool/build_engine/target_map/built_in_rules.cpp2
2 files changed, 3 insertions, 1 deletions
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 6dc36275..87567ff5 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -24,6 +24,8 @@ A feature release on top of `1.5.0`, backwards compatible.
and through its local CAS; this fixes a performance issue.
- `just-mr` now also consideres computed roots (as no-op) when
reporting progress.
+- The "generic" rule now properly detects staging conflicts, taking
+ the full inputs into account (and not only the runfiles).
## Release `1.5.0` (2025-03-06)
diff --git a/src/buildtool/build_engine/target_map/built_in_rules.cpp b/src/buildtool/build_engine/target_map/built_in_rules.cpp
index c0015b29..1736f3c7 100644
--- a/src/buildtool/build_engine/target_map/built_in_rules.cpp
+++ b/src/buildtool/build_engine/target_map/built_in_rules.cpp
@@ -1455,10 +1455,10 @@ void GenericRuleWithDeps(
for (auto const& dep : dependency_values) {
inputs = ExpressionPtr{Expression::map_t{inputs, (*dep)->RunFiles()}};
}
- auto inputs_conflict = BuildMaps::Target::Utils::tree_conflict(inputs);
for (auto const& dep : dependency_values) {
inputs = ExpressionPtr{Expression::map_t{inputs, (*dep)->Artifacts()}};
}
+ auto inputs_conflict = BuildMaps::Target::Utils::tree_conflict(inputs);
// While syntactical conflicts are resolved in a latest wins (with artifacts
// after runfiles), semantic path conclicts are an error.
if (inputs_conflict) {