diff options
-rw-r--r-- | CHANGELOG.md | 2 | ||||
-rw-r--r-- | src/buildtool/build_engine/target_map/built_in_rules.cpp | 2 |
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) { |