From f6d52648ecdd5d57a9ca592e1425950d465aeef5 Mon Sep 17 00:00:00 2001 From: Robert Schumacher Date: Mon, 24 Feb 2020 14:38:51 -0800 Subject: [vcpkg] Fix issue #9916; `vcpkg upgrade` did not `load_tag_vars()` (#10202) --- toolsrc/include/vcpkg/cmakevars.h | 53 +++++++++------------------------------ 1 file changed, 12 insertions(+), 41 deletions(-) (limited to 'toolsrc/include') diff --git a/toolsrc/include/vcpkg/cmakevars.h b/toolsrc/include/vcpkg/cmakevars.h index 8d131d45e..1c02376b9 100644 --- a/toolsrc/include/vcpkg/cmakevars.h +++ b/toolsrc/include/vcpkg/cmakevars.h @@ -1,15 +1,21 @@ #pragma once -#include -#include +#include #include #include +namespace vcpkg::Dependencies +{ + struct ActionPlan; +} + namespace vcpkg::CMakeVars { struct CMakeVarProvider { + virtual ~CMakeVarProvider() = default; + virtual Optional&> get_generic_triplet_vars( Triplet triplet) const = 0; @@ -25,45 +31,10 @@ namespace vcpkg::CMakeVars virtual void load_tag_vars(Span specs, const PortFileProvider::PortFileProvider& port_provider) const = 0; - }; - - struct TripletCMakeVarProvider : Util::ResourceBase, CMakeVarProvider - { - private: - fs::path create_tag_extraction_file( - const Span>& spec_abi_settings) const; - - fs::path create_dep_info_extraction_file(const Span specs) const; - - void launch_and_split(const fs::path& script_path, - std::vector>>& vars) const; - public: - explicit TripletCMakeVarProvider(const vcpkg::VcpkgPaths& paths) : paths(paths) {} - - void load_generic_triplet_vars(Triplet triplet) const override; - - void load_dep_info_vars(Span specs) const override; - - void load_tag_vars(Span specs, - const PortFileProvider::PortFileProvider& port_provider) const override; - - Optional&> get_generic_triplet_vars( - Triplet triplet) const override; - - Optional&> get_dep_info_vars( - const PackageSpec& spec) const override; - - Optional&> get_tag_vars( - const PackageSpec& spec) const override; - - private: - const VcpkgPaths& paths; - const fs::path& cmake_exe_path = paths.get_tool_exe(Tools::CMAKE); - const fs::path get_tags_path = paths.scripts / "vcpkg_get_tags.cmake"; - const fs::path get_dep_info_path = paths.scripts / "vcpkg_get_dep_info.cmake"; - mutable std::unordered_map> dep_resolution_vars; - mutable std::unordered_map> tag_vars; - mutable std::unordered_map> generic_triplet_vars; + void load_tag_vars(const vcpkg::Dependencies::ActionPlan& action_plan, + const PortFileProvider::PortFileProvider& port_provider) const; }; + + std::unique_ptr make_triplet_cmake_var_provider(const vcpkg::VcpkgPaths& paths); } -- cgit v1.2.3