summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorKlaus Aehlig <klaus.aehlig@huawei.com>2025-04-08 11:35:24 +0200
committerKlaus Aehlig <klaus.aehlig@huawei.com>2025-04-08 13:05:58 +0200
commit29a296143913d12ff6a5b8a10e5904cd2c58cc29 (patch)
tree61ae9add85a1435e3a43661ba68fd05781f7ab18 /src
parente401d33c3266752aeb4cc4fc41b322df8ee3851b (diff)
downloadjustbuild-29a296143913d12ff6a5b8a10e5904cd2c58cc29.tar.gz
Keep identifiers for actions, trees, and tree_overlays disjoint
While our traverser correctly keeps separate identifier spaces for those entities, having disjoint identifiers allows easier reading of log messages and more simple reporting of origins of actions.
Diffstat (limited to 'src')
-rw-r--r--src/buildtool/build_engine/target_map/utils.cpp1
-rw-r--r--src/buildtool/common/TARGETS1
-rw-r--r--src/buildtool/common/tree.hpp5
-rw-r--r--src/buildtool/common/tree_overlay.hpp3
4 files changed, 8 insertions, 2 deletions
diff --git a/src/buildtool/build_engine/target_map/utils.cpp b/src/buildtool/build_engine/target_map/utils.cpp
index 0ecda4ce..5bdeffe5 100644
--- a/src/buildtool/build_engine/target_map/utils.cpp
+++ b/src/buildtool/build_engine/target_map/utils.cpp
@@ -262,6 +262,7 @@ auto BuildMaps::Target::Utils::createAction(
HashFunction hash_function{HashFunction::Type::PlainSHA256};
auto hasher = hash_function.MakeHasher();
+ hasher.Update("ACTION:");
hasher.Update(hash_vector(hash_function, output_files));
hasher.Update(hash_vector(hash_function, output_dirs));
hasher.Update(hash_vector(hash_function, command));
diff --git a/src/buildtool/common/TARGETS b/src/buildtool/common/TARGETS
index 19bad797..469f074f 100644
--- a/src/buildtool/common/TARGETS
+++ b/src/buildtool/common/TARGETS
@@ -153,6 +153,7 @@
[ "action_description"
, "artifact_description"
, "common"
+ , ["@", "fmt", "", "fmt"]
, ["@", "json", "", "json"]
, ["src/buildtool/crypto", "hash_function"]
]
diff --git a/src/buildtool/common/tree.hpp b/src/buildtool/common/tree.hpp
index c861b264..bf81d848 100644
--- a/src/buildtool/common/tree.hpp
+++ b/src/buildtool/common/tree.hpp
@@ -22,6 +22,7 @@
#include <unordered_map>
#include <utility>
+#include "fmt/core.h"
#include "nlohmann/json.hpp"
#include "src/buildtool/common/action.hpp"
#include "src/buildtool/common/action_description.hpp"
@@ -91,7 +92,9 @@ class Tree {
// The type of HashFunction is irrelevant here. It is used for
// identification of trees. SHA256 is used.
HashFunction const hash_function{HashFunction::Type::PlainSHA256};
- return hash_function.PlainHashData(ComputeDescription(inputs).dump())
+ return hash_function
+ .PlainHashData(
+ fmt::format("TREE:{}", ComputeDescription(inputs).dump()))
.HexString();
}
};
diff --git a/src/buildtool/common/tree_overlay.hpp b/src/buildtool/common/tree_overlay.hpp
index 1b7faaed..69b992a2 100644
--- a/src/buildtool/common/tree_overlay.hpp
+++ b/src/buildtool/common/tree_overlay.hpp
@@ -103,7 +103,8 @@ class TreeOverlay {
// identification of trees. SHA256 is used.
HashFunction const hash_function{HashFunction::Type::PlainSHA256};
return hash_function
- .PlainHashData(ComputeDescription(trees, disjoint).dump())
+ .PlainHashData(fmt::format(
+ "TREE_OVERLAY:{}", ComputeDescription(trees, disjoint).dump()))
.HexString();
}