diff options
author | Klaus Aehlig <klaus.aehlig@huawei.com> | 2023-06-13 10:14:33 +0200 |
---|---|---|
committer | Klaus Aehlig <klaus.aehlig@huawei.com> | 2023-06-15 17:21:26 +0200 |
commit | 8d77b24503fcddce8f79f138cf07be5ad7eb8473 (patch) | |
tree | c39741cfafe3dce1d9a32dd9fd703621d384aee5 /src/buildtool/build_engine/target_map/utils.cpp | |
parent | fe336454e17bd228524c5575a3b5a641b3b10dc7 (diff) | |
download | justbuild-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.cpp | 10 |
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)); } |