diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/buildtool/build_engine/target_map/built_in_rules.cpp | 43 | ||||
-rw-r--r-- | src/buildtool/build_engine/target_map/target_map.cpp | 49 |
2 files changed, 45 insertions, 47 deletions
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 538f1940..d7c28074 100644 --- a/src/buildtool/build_engine/target_map/built_in_rules.cpp +++ b/src/buildtool/build_engine/target_map/built_in_rules.cpp @@ -34,7 +34,6 @@ #include "src/buildtool/build_engine/target_map/utils.hpp" #include "src/buildtool/common/artifact_description.hpp" #include "src/buildtool/common/repository_config.hpp" -#include "src/buildtool/crypto/hash_function.hpp" #include "src/utils/cpp/path.hpp" #include "src/utils/cpp/vector.hpp" @@ -123,11 +122,11 @@ void ReportStagingConflict( } void BlobGenRuleWithDeps( + const gsl::not_null<AnalyseContext*>& context, const std::vector<BuildMaps::Target::ConfiguredTarget>& transition_keys, const std::vector<AnalysedTargetPtr const*>& dependency_values, const BuildMaps::Base::FieldReader::Ptr& desc, const BuildMaps::Target::ConfiguredTarget& key, - const gsl::not_null<const RepositoryConfig*>& repo_config, const BuildMaps::Target::TargetMap::SetterPtr& setter, const BuildMaps::Target::TargetMap::LoggerPtr& logger, const gsl::not_null<BuildMaps::Target::ResultTargetMap*>& result_map, @@ -167,7 +166,7 @@ void BlobGenRuleWithDeps( auto string_fields_fcts = FunctionMap::MakePtr(FunctionMap::underlying_map_t{ {"outs", - [&deps_by_transition, &key, repo_config]( + [&deps_by_transition, &key, context]( auto&& eval, auto const& expr, auto const& env) { return BuildMaps::Target::Utils::keys_expr( BuildMaps::Target::Utils::obtainTargetByName( @@ -175,12 +174,12 @@ void BlobGenRuleWithDeps( expr, env, key.target, - repo_config, + context->repo_config, deps_by_transition) ->Artifacts()); }}, {"runfiles", - [&deps_by_transition, &key, repo_config]( + [&deps_by_transition, &key, context]( auto&& eval, auto const& expr, auto const& env) { return BuildMaps::Target::Utils::keys_expr( BuildMaps::Target::Utils::obtainTargetByName( @@ -188,7 +187,7 @@ void BlobGenRuleWithDeps( expr, env, key.target, - repo_config, + context->repo_config, deps_by_transition) ->RunFiles()); }}}); @@ -268,12 +267,12 @@ void BlobGenRuleWithDeps( return; } - auto stage = ExpressionPtr{ - Expression::map_t{name_val->String(), - ExpressionPtr{ArtifactDescription::CreateKnown( - ArtifactDigest::Create<ObjectType::File>( - HashFunction::Instance(), data_val->String()), - blob_type)}}}; + auto stage = ExpressionPtr{Expression::map_t{ + name_val->String(), + ExpressionPtr{ArtifactDescription::CreateKnown( + ArtifactDigest::Create<ObjectType::File>( + context->storage->GetHashFunction(), data_val->String()), + blob_type)}}}; auto analysis_result = std::make_shared<AnalysedTarget const>( TargetResult{.artifact_stage = stage, @@ -292,9 +291,9 @@ void BlobGenRuleWithDeps( } void BlobGenRule( + const gsl::not_null<AnalyseContext*>& context, const nlohmann::json& desc_json, const BuildMaps::Target::ConfiguredTarget& key, - const gsl::not_null<const RepositoryConfig*>& repo_config, const BuildMaps::Target::TargetMap::SubCallerPtr& subcaller, const BuildMaps::Target::TargetMap::SetterPtr& setter, const BuildMaps::Target::TargetMap::LoggerPtr& logger, @@ -342,7 +341,7 @@ void BlobGenRule( auto dep_target = BuildMaps::Base::ParseEntityNameFromExpression( dep_name, key.target, - repo_config, + context->repo_config, [&logger, &dep_name](std::string const& parse_err) { (*logger)(fmt::format("Parsing dep entry {} failed with:\n{}", dep_name->ToString(), @@ -359,19 +358,19 @@ void BlobGenRule( } (*subcaller)( dependency_keys, - [transition_keys = std::move(transition_keys), + [context, + transition_keys = std::move(transition_keys), desc, setter, logger, key, - repo_config, result_map, blob_type](auto const& values) { - BlobGenRuleWithDeps(transition_keys, + BlobGenRuleWithDeps(context, + transition_keys, values, desc, key, - repo_config, setter, logger, result_map, @@ -388,9 +387,9 @@ void FileGenRule( const BuildMaps::Target::TargetMap::SetterPtr& setter, const BuildMaps::Target::TargetMap::LoggerPtr& logger, const gsl::not_null<BuildMaps::Target::ResultTargetMap*>& result_map) { - BlobGenRule(desc_json, + BlobGenRule(context, + desc_json, key, - context->repo_config, subcaller, setter, logger, @@ -406,9 +405,9 @@ void SymlinkRule( const BuildMaps::Target::TargetMap::SetterPtr& setter, const BuildMaps::Target::TargetMap::LoggerPtr& logger, const gsl::not_null<BuildMaps::Target::ResultTargetMap*>& result_map) { - BlobGenRule(desc_json, + BlobGenRule(context, + desc_json, key, - context->repo_config, subcaller, setter, logger, diff --git a/src/buildtool/build_engine/target_map/target_map.cpp b/src/buildtool/build_engine/target_map/target_map.cpp index 0c970636..c4bbcfae 100644 --- a/src/buildtool/build_engine/target_map/target_map.cpp +++ b/src/buildtool/build_engine/target_map/target_map.cpp @@ -40,7 +40,6 @@ #include "src/buildtool/common/artifact_description.hpp" #include "src/buildtool/common/repository_config.hpp" #include "src/buildtool/common/statistics.hpp" -#include "src/buildtool/crypto/hash_function.hpp" #include "src/buildtool/logging/log_level.hpp" #include "src/buildtool/logging/logger.hpp" #include "src/utils/cpp/gsl.hpp" @@ -306,6 +305,7 @@ auto ListDependencies( } void withDependencies( + const gsl::not_null<AnalyseContext*>& context, const std::vector<BuildMaps::Target::ConfiguredTarget>& transition_keys, const std::vector<AnalysedTargetPtr const*>& dependency_values, std::size_t declared_count, @@ -313,7 +313,6 @@ void withDependencies( const BuildMaps::Base::UserRulePtr& rule, const TargetData::Ptr& data, const BuildMaps::Target::ConfiguredTarget& key, - const gsl::not_null<const RepositoryConfig*>& repo_config, std::unordered_map<std::string, ExpressionPtr> params, const BuildMaps::Target::TargetMap::SetterPtr& setter, const BuildMaps::Target::TargetMap::LoggerPtr& logger, @@ -401,7 +400,7 @@ void withDependencies( auto string_fields_fcts = FunctionMap::MakePtr(FunctionMap::underlying_map_t{ {"outs", - [&deps_by_transition, &key, repo_config]( + [&deps_by_transition, &key, context]( auto&& eval, auto const& expr, auto const& env) { return BuildMaps::Target::Utils::keys_expr( BuildMaps::Target::Utils::obtainTargetByName( @@ -409,12 +408,12 @@ void withDependencies( expr, env, key.target, - repo_config, + context->repo_config, deps_by_transition) ->Artifacts()); }}, {"runfiles", - [&deps_by_transition, &key, repo_config]( + [&deps_by_transition, &key, context]( auto&& eval, auto const& expr, auto const& env) { return BuildMaps::Target::Utils::keys_expr( BuildMaps::Target::Utils::obtainTargetByName( @@ -422,7 +421,7 @@ void withDependencies( expr, env, key.target, - repo_config, + context->repo_config, deps_by_transition) ->RunFiles()); }}}); @@ -723,7 +722,7 @@ void withDependencies( return ExpressionPtr{Expression::map_t{result}}; }}, {"BLOB", - [&blobs](auto&& eval, auto const& expr, auto const& env) { + [&blobs, context](auto&& eval, auto const& expr, auto const& env) { auto data = eval(expr->Get("data", ""s), env); if (not data->IsString()) { throw Evaluator::EvaluationError{ @@ -733,12 +732,12 @@ void withDependencies( blobs.emplace_back(data->String()); return ExpressionPtr{ArtifactDescription::CreateKnown( ArtifactDigest::Create<ObjectType::File>( - HashFunction::Instance(), data->String()), + context->storage->GetHashFunction(), data->String()), ObjectType::File)}; }}, {"SYMLINK", - [&blobs](auto&& eval, auto const& expr, auto const& env) { + [&blobs, context](auto&& eval, auto const& expr, auto const& env) { auto data = eval(expr->Get("data", ""s), env); if (not data->IsString()) { throw Evaluator::EvaluationError{ @@ -754,7 +753,7 @@ void withDependencies( return ExpressionPtr{ArtifactDescription::CreateKnown( ArtifactDigest::Create<ObjectType::Symlink>( - HashFunction::Instance(), data->String()), + context->storage->GetHashFunction(), data->String()), ObjectType::Symlink)}; }}, @@ -1020,10 +1019,10 @@ void withDependencies( } void withRuleDefinition( + const gsl::not_null<AnalyseContext*>& context, const BuildMaps::Base::UserRulePtr& rule, const TargetData::Ptr& data, const BuildMaps::Target::ConfiguredTarget& key, - const gsl::not_null<const RepositoryConfig*>& repo_config, const BuildMaps::Target::TargetMap::SubCallerPtr& subcaller, const BuildMaps::Target::TargetMap::SetterPtr& setter, const BuildMaps::Target::TargetMap::LoggerPtr& logger, @@ -1194,7 +1193,7 @@ void withRuleDefinition( auto target = BuildMaps::Base::ParseEntityNameFromExpression( dep_name, key.target, - repo_config, + context->repo_config, [&logger, &target_field_name, &dep_name]( std::string const& parse_err) { (*logger)(fmt::format("Parsing entry {} in target " @@ -1261,13 +1260,13 @@ void withRuleDefinition( (*subcaller)( dependency_keys, - [transition_keys = std::move(transition_keys), + [context, + transition_keys = std::move(transition_keys), declared_count, declared_and_implicit_count, rule, data, key, - repo_config, params = std::move(params), setter, logger, @@ -1344,14 +1343,14 @@ void withRuleDefinition( } (*subcaller)( anonymous_keys, - [dependency_values = values, + [context, + dependency_values = values, transition_keys = std::move(transition_keys), declared_count, declared_and_implicit_count, rule, data, key, - repo_config, params = std::move(params), setter, logger, @@ -1359,14 +1358,14 @@ void withRuleDefinition( // Join dependency values and anonymous values dependency_values.insert( dependency_values.end(), values.begin(), values.end()); - withDependencies(transition_keys, + withDependencies(context, + transition_keys, dependency_values, declared_count, declared_and_implicit_count, rule, data, key, - repo_config, params, setter, logger, @@ -1471,10 +1470,10 @@ void withTargetsFile( return; } withRuleDefinition( + context, *values[0], data, key, - context->repo_config, subcaller, setter, std::make_shared<AsyncMapConsumerLogger>( @@ -1500,8 +1499,8 @@ void withTargetsFile( } void withTargetNode( + const gsl::not_null<AnalyseContext*>& context, const BuildMaps::Target::ConfiguredTarget& key, - const gsl::not_null<const RepositoryConfig*>& repo_config, const gsl::not_null<BuildMaps::Base::UserRuleMap*>& rule_map, const gsl::not_null<TaskSystem*>& ts, const BuildMaps::Target::TargetMap::SubCallerPtr& subcaller, @@ -1545,7 +1544,7 @@ void withTargetNode( setter, logger, key, - repo_config, + context, result_map, rn = **rule_name](auto values) { auto data = TargetData::FromTargetNode( @@ -1561,10 +1560,10 @@ void withTargetNode( /*fatal=*/true); return; } - withRuleDefinition(*values[0], + withRuleDefinition(context, + *values[0], data, key, - repo_config, subcaller, setter, std::make_shared<AsyncMapConsumerLogger>( @@ -1815,8 +1814,8 @@ auto CreateTargetMap( auto subcaller, auto key) { if (key.target.IsAnonymousTarget()) { - withTargetNode(key, - context->repo_config, + withTargetNode(context, + key, rule_map, ts, subcaller, |