summaryrefslogtreecommitdiff
path: root/src/buildtool/build_engine/target_map/utils.cpp
diff options
context:
space:
mode:
authorKlaus Aehlig <klaus.aehlig@huawei.com>2023-06-13 10:14:33 +0200
committerKlaus Aehlig <klaus.aehlig@huawei.com>2023-06-15 17:21:26 +0200
commit8d77b24503fcddce8f79f138cf07be5ad7eb8473 (patch)
treec39741cfafe3dce1d9a32dd9fd703621d384aee5 /src/buildtool/build_engine/target_map/utils.cpp
parentfe336454e17bd228524c5575a3b5a641b3b10dc7 (diff)
downloadjustbuild-8d77b24503fcddce8f79f138cf07be5ad7eb8473.tar.gz
action data structure: support (additional) execution properties
Diffstat (limited to 'src/buildtool/build_engine/target_map/utils.cpp')
-rw-r--r--src/buildtool/build_engine/target_map/utils.cpp10
1 files changed, 9 insertions, 1 deletions
diff --git a/src/buildtool/build_engine/target_map/utils.cpp b/src/buildtool/build_engine/target_map/utils.cpp
index c0932dc9..55543e30 100644
--- a/src/buildtool/build_engine/target_map/utils.cpp
+++ b/src/buildtool/build_engine/target_map/utils.cpp
@@ -196,6 +196,7 @@ auto BuildMaps::Target::Utils::createAction(
std::optional<std::string> may_fail,
bool no_cache,
double timeout_scale,
+ const ExpressionPtr& execution_properties_exp,
const ExpressionPtr& inputs_exp) -> ActionDescription::Ptr {
auto hasher = HashFunction::Hasher();
hasher.Update(hash_vector(output_files));
@@ -206,6 +207,7 @@ auto BuildMaps::Target::Utils::createAction(
: std::vector<std::string>{}));
hasher.Update(no_cache ? std::string{"N"} : std::string{"Y"});
hasher.Update(fmt::format("{:+24a}", timeout_scale));
+ hasher.Update(execution_properties_exp->ToHash());
hasher.Update(inputs_exp->ToHash());
auto action_id = std::move(hasher).Finalize().HexString();
@@ -214,6 +216,11 @@ auto BuildMaps::Target::Utils::createAction(
for (auto const& [env_var, env_value] : env->Map()) {
env_vars.emplace(env_var, env_value->String());
}
+ std::map<std::string, std::string> execution_properties{};
+ for (auto const& [prop_name, prop_value] :
+ execution_properties_exp->Map()) {
+ execution_properties.emplace(prop_name, prop_value->String());
+ }
ActionDescription::inputs_t inputs;
inputs.reserve(inputs_exp->Map().size());
for (auto const& [input_path, artifact] : inputs_exp->Map()) {
@@ -226,6 +233,7 @@ auto BuildMaps::Target::Utils::createAction(
std::move(env_vars),
std::move(may_fail),
no_cache,
- timeout_scale},
+ timeout_scale,
+ execution_properties},
std::move(inputs));
}