From 6106edb5093b425a0b8473866d63ec303cb489e2 Mon Sep 17 00:00:00 2001 From: Valeria Conde Date: Mon, 10 Oct 2022 09:39:36 -0700 Subject: [PATCH 01/26] overlays through manifest implemented --- CMakeSettings.json | 4 +- include/vcpkg/configuration.h | 2 + include/vcpkg/vcpkgcmdarguments.h | 7 +++ include/vcpkg/vcpkgpaths.h | 2 +- src/vcpkg-test/configmetadata.cpp | 98 +++++++++++++++++++++++++++++++ src/vcpkg.cpp | 4 +- src/vcpkg/configuration.cpp | 32 ++++++++++ src/vcpkg/vcpkgcmdarguments.cpp | 23 ++++++-- src/vcpkg/vcpkgpaths.cpp | 12 ++-- 9 files changed, 171 insertions(+), 13 deletions(-) diff --git a/CMakeSettings.json b/CMakeSettings.json index 255a15b1a9..bef0b5b079 100644 --- a/CMakeSettings.json +++ b/CMakeSettings.json @@ -13,7 +13,7 @@ "variables": [ { "name": "VCPKG_ARTIFACTS_DEVELOPMENT", - "value": "True", + "value": "False", "type": "BOOL" }, { @@ -46,7 +46,7 @@ "variables": [ { "name": "VCPKG_ARTIFACTS_DEVELOPMENT", - "value": "True", + "value": "False", "type": "BOOL" }, { diff --git a/include/vcpkg/configuration.h b/include/vcpkg/configuration.h index bd87bdd8e4..5aa0831640 100644 --- a/include/vcpkg/configuration.h +++ b/include/vcpkg/configuration.h @@ -34,6 +34,8 @@ namespace vcpkg std::vector registries; Json::Object ce_metadata; Json::Object extra_info; + std::vector overlay_ports; + std::vector overlay_triplets; Json::Object serialize() const; void validate_as_active(); diff --git a/include/vcpkg/vcpkgcmdarguments.h b/include/vcpkg/vcpkgcmdarguments.h index 56693a16a6..a9013bdcbc 100644 --- a/include/vcpkg/vcpkgcmdarguments.h +++ b/include/vcpkg/vcpkgcmdarguments.h @@ -118,6 +118,9 @@ namespace vcpkg static void append_common_options(HelpTableFormatter& target); + void set_manifest_overlays(std::vector&, std::vector&); + void merge_overlays(); + constexpr static StringLiteral VCPKG_ROOT_DIR_ENV = "VCPKG_ROOT"; constexpr static StringLiteral VCPKG_ROOT_DIR_ARG = "vcpkg-root"; std::unique_ptr vcpkg_root_dir; @@ -155,9 +158,13 @@ namespace vcpkg constexpr static StringLiteral OVERLAY_PORTS_ENV = "VCPKG_OVERLAY_PORTS"; constexpr static StringLiteral OVERLAY_PORTS_ARG = "overlay-ports"; std::vector overlay_ports; + std::vector env_overlay_ports; + std::vector manifest_overlay_ports; constexpr static StringLiteral OVERLAY_TRIPLETS_ENV = "VCPKG_OVERLAY_TRIPLETS"; constexpr static StringLiteral OVERLAY_TRIPLETS_ARG = "overlay-triplets"; std::vector overlay_triplets; + std::vector env_overlay_triplets; + std::vector manifest_overlay_triplets; constexpr static StringLiteral BINARY_SOURCES_ARG = "binarysource"; std::vector binary_sources; diff --git a/include/vcpkg/vcpkgpaths.h b/include/vcpkg/vcpkgpaths.h index 9a005a470d..df0861ba73 100644 --- a/include/vcpkg/vcpkgpaths.h +++ b/include/vcpkg/vcpkgpaths.h @@ -72,7 +72,7 @@ namespace vcpkg TripletFile(StringView name, StringView location) : name(name.data(), name.size()), location(location) { } }; - VcpkgPaths(Filesystem& filesystem, const VcpkgCmdArguments& args); + VcpkgPaths(Filesystem& filesystem, VcpkgCmdArguments& args); VcpkgPaths(const VcpkgPaths&) = delete; VcpkgPaths& operator=(const VcpkgPaths&) = delete; ~VcpkgPaths(); diff --git a/src/vcpkg-test/configmetadata.cpp b/src/vcpkg-test/configmetadata.cpp index e79a33a2c0..a161e30d7e 100644 --- a/src/vcpkg-test/configmetadata.cpp +++ b/src/vcpkg-test/configmetadata.cpp @@ -466,6 +466,104 @@ TEST_CASE ("metadata demands", "[ce-metadata]") TEST_CASE ("serialize configuration", "[ce-metadata]") { + SECTION ("only overlay ports") + { + std::string raw = R"json({ + "overlay-ports": [ + "./my-ports/fmt" , + "/custom-ports", + "../share/team-ports" + ] +})json"; + // parsing of configuration is tested elsewhere + auto config = parse_test_configuration(raw); + Test::check_json_eq(Json::parse_object(raw).value_or_exit(VCPKG_LINE_INFO), config.serialize()); + } + + SECTION ("invalid overlay ports") + { + std::string raw = R"json({ + "overlay-ports": [ + "./my-ports/fmt" , + "/custom-ports", + 123 + ] +})json"; + check_errors(raw, R"( +$.overlay-ports[2]: mismatched type: expected an overlay path +)"); + } + + SECTION ("only overlay triplets") + { + std::string raw = R"json({ + "overlay-triplets": [ + "./team-triplets" + ] +})json"; + // parsing of configuration is tested elsewhere + auto config = parse_test_configuration(raw); + Test::check_json_eq(Json::parse_object(raw).value_or_exit(VCPKG_LINE_INFO), config.serialize()); + } + + SECTION ("invalid overlay triplets") + { + std::string raw = R"json({ + "overlay-triplets": [ + 123 + ] +})json"; + check_errors(raw, R"( +$.overlay-triplets[0]: mismatched type: expected a triplet path +)"); + } + + SECTION ("both overlay ports and overlay triplets") + { + std::string raw = R"json({ + "overlay-ports": [ + "./my-ports/fmt" , + "/custom-ports", + "../share/team-ports" + ], + "overlay-triplets": [ + "./team-triplets" + ] +})json"; + // parsing of configuration is tested elsewhere + auto config = parse_test_configuration(raw); + Test::check_json_eq(Json::parse_object(raw).value_or_exit(VCPKG_LINE_INFO), config.serialize()); + } + + SECTION ("overriden default registry, registries and overlays") + { + std::string raw = R"json({ + "default-registry": { + "kind": "builtin", + "baseline": "843e0ba0d8f9c9c572e45564263eedfc7745e74f" + }, + "registries": [ + { + "kind": "git", + "repository": "https://github.com/microsoft/vcpkg", + "baseline": "843e0ba0d8f9c9c572e45564263eedfc7745e74f", + "packages": [ "zlib" ] + } + ], + "overlay-ports": [ + "./my-ports/fmt" , + "/custom-ports", + "../share/team-ports" + ], + "overlay-triplets": [ + "./team-triplets" + ] +})json"; + // parsing of configuration is tested elsewhere + auto config = parse_test_configuration(raw); + Test::check_json_eq(Json::parse_object(raw).value_or_exit(VCPKG_LINE_INFO), config.serialize()); + } + SECTION ("null default registry") { std::string raw = R"json({ diff --git a/src/vcpkg.cpp b/src/vcpkg.cpp index e523833904..c9795ea64d 100644 --- a/src/vcpkg.cpp +++ b/src/vcpkg.cpp @@ -41,7 +41,7 @@ static void invalid_command(const std::string& cmd) Checks::exit_fail(VCPKG_LINE_INFO); } -static void inner(vcpkg::Filesystem& fs, const VcpkgCmdArguments& args) +static void inner(vcpkg::Filesystem& fs, VcpkgCmdArguments& args) { // track version on each invocation LockGuardPtr(g_metrics)->track_string_property(StringMetric::VcpkgVersion, @@ -79,6 +79,8 @@ static void inner(vcpkg::Filesystem& fs, const VcpkgCmdArguments& args) const VcpkgPaths paths(fs, args); paths.track_feature_flag_metrics(); + args.merge_overlays(); + fs.current_path(paths.root, VCPKG_LINE_INFO); if (const auto command_function = find_command(Commands::get_available_paths_commands())) diff --git a/src/vcpkg/configuration.cpp b/src/vcpkg/configuration.cpp index 8d05052c8d..5b3b16f20d 100644 --- a/src/vcpkg/configuration.cpp +++ b/src/vcpkg/configuration.cpp @@ -260,6 +260,8 @@ namespace constexpr static StringLiteral DEFAULT_REGISTRY = "default-registry"; constexpr static StringLiteral REGISTRIES = "registries"; + constexpr static StringLiteral OVERLAY_PORTS = "overlay-ports"; + constexpr static StringLiteral OVERLAY_TRIPLETS = "overlay-triplets"; virtual Optional visit_object(Json::Reader& r, const Json::Object& obj) override; @@ -268,6 +270,8 @@ namespace ConfigurationDeserializer ConfigurationDeserializer::instance; constexpr StringLiteral ConfigurationDeserializer::DEFAULT_REGISTRY; constexpr StringLiteral ConfigurationDeserializer::REGISTRIES; + constexpr StringLiteral ConfigurationDeserializer::OVERLAY_PORTS; + constexpr StringLiteral ConfigurationDeserializer::OVERLAY_TRIPLETS; Optional DictionaryDeserializer::visit_object(Json::Reader& r, const Json::Object& obj) { @@ -391,6 +395,14 @@ namespace } } + static Json::ArrayDeserializer op_des("an array of overlay ports paths", + Json::StringDeserializer{"an overlay path"}); + r.optional_object_field(obj, OVERLAY_PORTS, ret.overlay_ports, op_des); + + static Json::ArrayDeserializer ot_des("an array of overlay triplets paths", + Json::StringDeserializer{"a triplet path"}); + r.optional_object_field(obj, OVERLAY_TRIPLETS, ret.overlay_triplets, ot_des); + RegistryConfig default_registry; if (r.optional_object_field(obj, DEFAULT_REGISTRY, default_registry, RegistryConfigDeserializer::instance)) { @@ -607,6 +619,8 @@ namespace vcpkg static constexpr StringView known_fields[]{ ConfigurationDeserializer::DEFAULT_REGISTRY, ConfigurationDeserializer::REGISTRIES, + ConfigurationDeserializer::OVERLAY_PORTS, + ConfigurationDeserializer::OVERLAY_TRIPLETS, CeMetadataDeserializer::CE_MESSAGE, CeMetadataDeserializer::CE_WARNING, CeMetadataDeserializer::CE_ERROR, @@ -739,6 +753,24 @@ namespace vcpkg } } + if (!overlay_ports.empty()) + { + auto& op_arr = obj.insert(ConfigurationDeserializer::OVERLAY_PORTS, Json::Array()); + for (const auto& port : overlay_ports) + { + op_arr.push_back(port); + } + } + + if (!overlay_triplets.empty()) + { + auto& ot_arr = obj.insert(ConfigurationDeserializer::OVERLAY_TRIPLETS, Json::Array()); + for (const auto& triplet : overlay_triplets) + { + ot_arr.push_back(triplet); + } + } + if (!ce_metadata.is_empty()) { serialize_ce_metadata(ce_metadata, obj); diff --git a/src/vcpkg/vcpkgcmdarguments.cpp b/src/vcpkg/vcpkgcmdarguments.cpp index e382cb5627..7b38ede33a 100644 --- a/src/vcpkg/vcpkgcmdarguments.cpp +++ b/src/vcpkg/vcpkgcmdarguments.cpp @@ -636,6 +636,23 @@ namespace vcpkg msg::println(LocalizedString::from_raw(table.m_str)); } + // Merges overlay ports in the specific order + void VcpkgCmdArguments::merge_overlays() { + overlay_ports.insert( + std::end(overlay_ports), std::begin(manifest_overlay_ports), std::end(manifest_overlay_ports)); + overlay_ports.insert( + std::end(overlay_ports), std::begin(env_overlay_ports), std::end(env_overlay_ports)); + overlay_triplets.insert( + std::end(overlay_triplets), std::begin(manifest_overlay_triplets), std::end(manifest_overlay_triplets)); + overlay_triplets.insert( + std::end(overlay_triplets), std::begin(env_overlay_triplets), std::end(env_overlay_triplets)); + } + + void VcpkgCmdArguments::set_manifest_overlays(std::vector& op, std::vector& ot) { + manifest_overlay_ports.insert(std::end(manifest_overlay_ports), std::begin(op), std::end(op)); + manifest_overlay_triplets.insert(std::end(manifest_overlay_triplets), std::begin(ot), std::end(ot)); + } + void VcpkgCmdArguments::append_common_options(HelpTableFormatter& table) { static auto opt = [](StringView arg, StringView joiner, StringView value) { @@ -729,16 +746,14 @@ namespace vcpkg const auto vcpkg_overlay_ports_env = get_env(OVERLAY_PORTS_ENV); if (const auto unpacked = vcpkg_overlay_ports_env.get()) { - auto overlays = Strings::split_paths(*unpacked); - overlay_ports.insert(std::end(overlay_ports), std::begin(overlays), std::end(overlays)); + env_overlay_ports = Strings::split_paths(*unpacked); } } { const auto vcpkg_overlay_triplets_env = get_env(OVERLAY_TRIPLETS_ENV); if (const auto unpacked = vcpkg_overlay_triplets_env.get()) { - auto triplets = Strings::split_paths(*unpacked); - overlay_triplets.insert(std::end(overlay_triplets), std::begin(triplets), std::end(triplets)); + env_overlay_triplets = Strings::split_paths(*unpacked); } } { diff --git a/src/vcpkg/vcpkgpaths.cpp b/src/vcpkg/vcpkgpaths.cpp index 49d48cef08..a9e1422dde 100644 --- a/src/vcpkg/vcpkgpaths.cpp +++ b/src/vcpkg/vcpkgpaths.cpp @@ -620,7 +620,7 @@ namespace vcpkg #endif } - VcpkgPaths::VcpkgPaths(Filesystem& filesystem, const VcpkgCmdArguments& args) + VcpkgPaths::VcpkgPaths(Filesystem& filesystem, VcpkgCmdArguments& args) : original_cwd(preferred_current_path(filesystem)) , root(determine_root(filesystem, original_cwd, args)) // this is used during the initialization of the below public members @@ -651,10 +651,12 @@ namespace vcpkg auto maybe_config_json = config_from_json(m_pimpl->m_config_dir / "vcpkg-configuration.json", filesystem); m_pimpl->m_config = merge_validate_configs(std::move(maybe_manifest_config), - m_pimpl->m_manifest_dir, - std::move(maybe_config_json), - m_pimpl->m_config_dir, - *this); + m_pimpl->m_manifest_dir, + std::move(maybe_config_json), + m_pimpl->m_config_dir, + *this); + + args.set_manifest_overlays(m_pimpl->m_config.config.overlay_ports, m_pimpl->m_config.config.overlay_triplets); m_pimpl->m_registry_set = m_pimpl->m_config.instantiate_registry_set(*this); } From 0d525721291c9e7e887b9cb2bc54d3ed077c7924 Mon Sep 17 00:00:00 2001 From: Valeria Conde Date: Mon, 10 Oct 2022 09:48:06 -0700 Subject: [PATCH 02/26] turned artifacts on --- CMakeSettings.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CMakeSettings.json b/CMakeSettings.json index bef0b5b079..a4fdfa7fdf 100644 --- a/CMakeSettings.json +++ b/CMakeSettings.json @@ -46,7 +46,7 @@ "variables": [ { "name": "VCPKG_ARTIFACTS_DEVELOPMENT", - "value": "False", + "value": "True", "type": "BOOL" }, { From 794c193a316ec06d291f76b187b38c591ade7f5b Mon Sep 17 00:00:00 2001 From: Valeria Conde Date: Mon, 10 Oct 2022 09:50:00 -0700 Subject: [PATCH 03/26] artifacts settings once more --- CMakeSettings.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CMakeSettings.json b/CMakeSettings.json index a4fdfa7fdf..255a15b1a9 100644 --- a/CMakeSettings.json +++ b/CMakeSettings.json @@ -13,7 +13,7 @@ "variables": [ { "name": "VCPKG_ARTIFACTS_DEVELOPMENT", - "value": "False", + "value": "True", "type": "BOOL" }, { From a8e13fc3f1f70351989d2e9a8939871bf0e49255 Mon Sep 17 00:00:00 2001 From: Valeria Conde Date: Mon, 10 Oct 2022 12:10:22 -0700 Subject: [PATCH 04/26] fixed formatting --- src/vcpkg/vcpkgcmdarguments.cpp | 9 +++++---- src/vcpkg/vcpkgpaths.cpp | 13 +++++++------ 2 files changed, 12 insertions(+), 10 deletions(-) diff --git a/src/vcpkg/vcpkgcmdarguments.cpp b/src/vcpkg/vcpkgcmdarguments.cpp index 7b38ede33a..028a9b4dd6 100644 --- a/src/vcpkg/vcpkgcmdarguments.cpp +++ b/src/vcpkg/vcpkgcmdarguments.cpp @@ -637,18 +637,19 @@ namespace vcpkg } // Merges overlay ports in the specific order - void VcpkgCmdArguments::merge_overlays() { + void VcpkgCmdArguments::merge_overlays() + { overlay_ports.insert( std::end(overlay_ports), std::begin(manifest_overlay_ports), std::end(manifest_overlay_ports)); - overlay_ports.insert( - std::end(overlay_ports), std::begin(env_overlay_ports), std::end(env_overlay_ports)); + overlay_ports.insert(std::end(overlay_ports), std::begin(env_overlay_ports), std::end(env_overlay_ports)); overlay_triplets.insert( std::end(overlay_triplets), std::begin(manifest_overlay_triplets), std::end(manifest_overlay_triplets)); overlay_triplets.insert( std::end(overlay_triplets), std::begin(env_overlay_triplets), std::end(env_overlay_triplets)); } - void VcpkgCmdArguments::set_manifest_overlays(std::vector& op, std::vector& ot) { + void VcpkgCmdArguments::set_manifest_overlays(std::vector& op, std::vector& ot) + { manifest_overlay_ports.insert(std::end(manifest_overlay_ports), std::begin(op), std::end(op)); manifest_overlay_triplets.insert(std::end(manifest_overlay_triplets), std::begin(ot), std::end(ot)); } diff --git a/src/vcpkg/vcpkgpaths.cpp b/src/vcpkg/vcpkgpaths.cpp index a9e1422dde..0c1aeb6e57 100644 --- a/src/vcpkg/vcpkgpaths.cpp +++ b/src/vcpkg/vcpkgpaths.cpp @@ -651,12 +651,13 @@ namespace vcpkg auto maybe_config_json = config_from_json(m_pimpl->m_config_dir / "vcpkg-configuration.json", filesystem); m_pimpl->m_config = merge_validate_configs(std::move(maybe_manifest_config), - m_pimpl->m_manifest_dir, - std::move(maybe_config_json), - m_pimpl->m_config_dir, - *this); - - args.set_manifest_overlays(m_pimpl->m_config.config.overlay_ports, m_pimpl->m_config.config.overlay_triplets); + m_pimpl->m_manifest_dir, + std::move(maybe_config_json), + m_pimpl->m_config_dir, + *this); + + args.set_manifest_overlays(m_pimpl->m_config.config.overlay_ports, + m_pimpl->m_config.config.overlay_triplets); m_pimpl->m_registry_set = m_pimpl->m_config.instantiate_registry_set(*this); } From 8c674e049b625ae32427bae24941b949d84fceac Mon Sep 17 00:00:00 2001 From: Valeria Conde Date: Wed, 12 Oct 2022 09:19:20 -0700 Subject: [PATCH 05/26] brought overlays to vcpkgpaths --- CMakeSettings.json | 2 +- include/vcpkg/vcpkgcmdarguments.h | 9 ++------- include/vcpkg/vcpkgpaths.h | 5 ++++- src/vcpkg-test/arguments.cpp | 24 ++++++++++++------------ src/vcpkg.cpp | 13 ++++++------- src/vcpkg/build.cpp | 2 +- src/vcpkg/commands.buildexternal.cpp | 2 +- src/vcpkg/commands.check-support.cpp | 2 +- src/vcpkg/commands.ci.cpp | 2 +- src/vcpkg/commands.dependinfo.cpp | 2 +- src/vcpkg/commands.env.cpp | 2 +- src/vcpkg/commands.find.cpp | 2 +- src/vcpkg/commands.info.cpp | 2 +- src/vcpkg/commands.search.cpp | 3 ++- src/vcpkg/commands.setinstalled.cpp | 2 +- src/vcpkg/commands.upgrade.cpp | 2 +- src/vcpkg/export.cpp | 2 +- src/vcpkg/install.cpp | 6 +++--- src/vcpkg/remove.cpp | 2 +- src/vcpkg/update.cpp | 2 +- src/vcpkg/vcpkgcmdarguments.cpp | 22 ++-------------------- src/vcpkg/vcpkgpaths.cpp | 22 ++++++++++++++++++---- 22 files changed, 63 insertions(+), 69 deletions(-) diff --git a/CMakeSettings.json b/CMakeSettings.json index 255a15b1a9..a4fdfa7fdf 100644 --- a/CMakeSettings.json +++ b/CMakeSettings.json @@ -13,7 +13,7 @@ "variables": [ { "name": "VCPKG_ARTIFACTS_DEVELOPMENT", - "value": "True", + "value": "False", "type": "BOOL" }, { diff --git a/include/vcpkg/vcpkgcmdarguments.h b/include/vcpkg/vcpkgcmdarguments.h index a9013bdcbc..00a1e8adca 100644 --- a/include/vcpkg/vcpkgcmdarguments.h +++ b/include/vcpkg/vcpkgcmdarguments.h @@ -118,9 +118,6 @@ namespace vcpkg static void append_common_options(HelpTableFormatter& target); - void set_manifest_overlays(std::vector&, std::vector&); - void merge_overlays(); - constexpr static StringLiteral VCPKG_ROOT_DIR_ENV = "VCPKG_ROOT"; constexpr static StringLiteral VCPKG_ROOT_DIR_ARG = "vcpkg-root"; std::unique_ptr vcpkg_root_dir; @@ -157,14 +154,12 @@ namespace vcpkg std::unique_ptr host_triplet; constexpr static StringLiteral OVERLAY_PORTS_ENV = "VCPKG_OVERLAY_PORTS"; constexpr static StringLiteral OVERLAY_PORTS_ARG = "overlay-ports"; - std::vector overlay_ports; + std::vector cli_overlay_ports; std::vector env_overlay_ports; - std::vector manifest_overlay_ports; constexpr static StringLiteral OVERLAY_TRIPLETS_ENV = "VCPKG_OVERLAY_TRIPLETS"; constexpr static StringLiteral OVERLAY_TRIPLETS_ARG = "overlay-triplets"; - std::vector overlay_triplets; + std::vector cli_overlay_triplets; std::vector env_overlay_triplets; - std::vector manifest_overlay_triplets; constexpr static StringLiteral BINARY_SOURCES_ARG = "binarysource"; std::vector binary_sources; diff --git a/include/vcpkg/vcpkgpaths.h b/include/vcpkg/vcpkgpaths.h index df0861ba73..6de5d5e0a4 100644 --- a/include/vcpkg/vcpkgpaths.h +++ b/include/vcpkg/vcpkgpaths.h @@ -72,7 +72,7 @@ namespace vcpkg TripletFile(StringView name, StringView location) : name(name.data(), name.size()), location(location) { } }; - VcpkgPaths(Filesystem& filesystem, VcpkgCmdArguments& args); + VcpkgPaths(Filesystem& filesystem, const VcpkgCmdArguments& args); VcpkgPaths(const VcpkgPaths&) = delete; VcpkgPaths& operator=(const VcpkgPaths&) = delete; ~VcpkgPaths(); @@ -122,6 +122,9 @@ namespace vcpkg const Path triplets; const Path community_triplets; + std::vector overlay_ports; + std::vector overlay_triplets; + std::string get_toolver_diagnostics() const; const ToolCache& get_tool_cache() const; diff --git a/src/vcpkg-test/arguments.cpp b/src/vcpkg-test/arguments.cpp index 73fc490d59..fa571ba011 100644 --- a/src/vcpkg-test/arguments.cpp +++ b/src/vcpkg-test/arguments.cpp @@ -37,13 +37,13 @@ TEST_CASE ("VcpkgCmdArguments from lowercase argument sequence", "[arguments]") REQUIRE(v.print_metrics); REQUIRE(*v.print_metrics.get()); - REQUIRE(v.overlay_ports.size() == 2); - REQUIRE(v.overlay_ports.at(0) == "C:\\ports1"); - REQUIRE(v.overlay_ports.at(1) == "C:\\ports2"); + REQUIRE(v.cli_overlay_ports.size() == 2); + REQUIRE(v.cli_overlay_ports.at(0) == "C:\\ports1"); + REQUIRE(v.cli_overlay_ports.at(1) == "C:\\ports2"); - REQUIRE(v.overlay_triplets.size() == 2); - REQUIRE(v.overlay_triplets.at(0) == "C:\\tripletsA"); - REQUIRE(v.overlay_triplets.at(1) == "C:\\tripletsB"); + REQUIRE(v.cli_overlay_triplets.size() == 2); + REQUIRE(v.cli_overlay_triplets.at(0) == "C:\\tripletsA"); + REQUIRE(v.cli_overlay_triplets.at(1) == "C:\\tripletsB"); } TEST_CASE ("VcpkgCmdArguments from uppercase argument sequence", "[arguments]") @@ -73,13 +73,13 @@ TEST_CASE ("VcpkgCmdArguments from uppercase argument sequence", "[arguments]") REQUIRE(v.print_metrics); REQUIRE(*v.print_metrics.get()); - REQUIRE(v.overlay_ports.size() == 2); - REQUIRE(v.overlay_ports.at(0) == "C:\\ports1"); - REQUIRE(v.overlay_ports.at(1) == "C:\\ports2"); + REQUIRE(v.cli_overlay_ports.size() == 2); + REQUIRE(v.cli_overlay_ports.at(0) == "C:\\ports1"); + REQUIRE(v.cli_overlay_ports.at(1) == "C:\\ports2"); - REQUIRE(v.overlay_triplets.size() == 2); - REQUIRE(v.overlay_triplets.at(0) == "C:\\tripletsA"); - REQUIRE(v.overlay_triplets.at(1) == "C:\\tripletsB"); + REQUIRE(v.cli_overlay_triplets.size() == 2); + REQUIRE(v.cli_overlay_triplets.at(0) == "C:\\tripletsA"); + REQUIRE(v.cli_overlay_triplets.at(1) == "C:\\tripletsB"); } TEST_CASE ("VcpkgCmdArguments from argument sequence with valued options", "[arguments]") diff --git a/src/vcpkg.cpp b/src/vcpkg.cpp index c9795ea64d..ca65af6d81 100644 --- a/src/vcpkg.cpp +++ b/src/vcpkg.cpp @@ -41,7 +41,7 @@ static void invalid_command(const std::string& cmd) Checks::exit_fail(VCPKG_LINE_INFO); } -static void inner(vcpkg::Filesystem& fs, VcpkgCmdArguments& args) +static void inner(vcpkg::Filesystem& fs, const VcpkgCmdArguments& args) { // track version on each invocation LockGuardPtr(g_metrics)->track_string_property(StringMetric::VcpkgVersion, @@ -68,7 +68,11 @@ static void inner(vcpkg::Filesystem& fs, VcpkgCmdArguments& args) } }; - LockGuardPtr(g_metrics)->track_bool_property(BoolMetric::OptionOverlayPorts, !args.overlay_ports.empty()); + + const VcpkgPaths paths(fs, args); + paths.track_feature_flag_metrics(); + + LockGuardPtr(g_metrics)->track_bool_property(BoolMetric::OptionOverlayPorts, !paths.overlay_ports.empty()); if (const auto command_function = find_command(Commands::get_available_basic_commands())) { @@ -76,11 +80,6 @@ static void inner(vcpkg::Filesystem& fs, VcpkgCmdArguments& args) return command_function->function->perform_and_exit(args, fs); } - const VcpkgPaths paths(fs, args); - paths.track_feature_flag_metrics(); - - args.merge_overlays(); - fs.current_path(paths.root, VCPKG_LINE_INFO); if (const auto command_function = find_command(Commands::get_available_paths_commands())) diff --git a/src/vcpkg/build.cpp b/src/vcpkg/build.cpp index 1daee0ed76..20fae0b67c 100644 --- a/src/vcpkg/build.cpp +++ b/src/vcpkg/build.cpp @@ -189,7 +189,7 @@ namespace vcpkg::Build const FullPackageSpec spec = check_and_get_full_package_spec( std::move(first_arg), default_triplet, COMMAND_STRUCTURE.example_text, paths); - PathsPortFileProvider provider(paths, make_overlay_provider(paths, args.overlay_ports)); + PathsPortFileProvider provider(paths, make_overlay_provider(paths, paths.overlay_ports)); return perform_ex(args, spec, host_triplet, provider, binary_cache, null_build_logs_recorder(), paths); } } // namespace vcpkg::Build diff --git a/src/vcpkg/commands.buildexternal.cpp b/src/vcpkg/commands.buildexternal.cpp index d7438648f0..58253c3867 100644 --- a/src/vcpkg/commands.buildexternal.cpp +++ b/src/vcpkg/commands.buildexternal.cpp @@ -29,7 +29,7 @@ namespace vcpkg::Commands::BuildExternal const FullPackageSpec spec = check_and_get_full_package_spec( std::string(args.command_arguments.at(0)), default_triplet, COMMAND_STRUCTURE.example_text, paths); - auto overlays = args.overlay_ports; + auto overlays = paths.overlay_ports; overlays.insert(overlays.begin(), args.command_arguments.at(1)); PathsPortFileProvider provider(paths, make_overlay_provider(paths, overlays)); diff --git a/src/vcpkg/commands.check-support.cpp b/src/vcpkg/commands.check-support.cpp index 95715e5572..665ce666c7 100644 --- a/src/vcpkg/commands.check-support.cpp +++ b/src/vcpkg/commands.check-support.cpp @@ -114,7 +114,7 @@ namespace vcpkg::Commands std::string(arg), default_triplet, COMMAND_STRUCTURE.example_text, paths); }); - PathsPortFileProvider provider(paths, make_overlay_provider(paths, args.overlay_ports)); + PathsPortFileProvider provider(paths, make_overlay_provider(paths, paths.overlay_ports)); auto cmake_vars = CMakeVars::make_triplet_cmake_var_provider(paths); // for each spec in the user-requested specs, check all dependencies diff --git a/src/vcpkg/commands.ci.cpp b/src/vcpkg/commands.ci.cpp index 30f20839cb..8a63594ec2 100644 --- a/src/vcpkg/commands.ci.cpp +++ b/src/vcpkg/commands.ci.cpp @@ -385,7 +385,7 @@ namespace vcpkg::Commands::CI const IBuildLogsRecorder& build_logs_recorder = build_logs_recorder_storage ? *(build_logs_recorder_storage.get()) : null_build_logs_recorder(); - PathsPortFileProvider provider(paths, make_overlay_provider(paths, args.overlay_ports)); + PathsPortFileProvider provider(paths, make_overlay_provider(paths, paths.overlay_ports)); auto var_provider_storage = CMakeVars::make_triplet_cmake_var_provider(paths); auto& var_provider = *var_provider_storage; diff --git a/src/vcpkg/commands.dependinfo.cpp b/src/vcpkg/commands.dependinfo.cpp index 4ee99b0b89..711b9ab633 100644 --- a/src/vcpkg/commands.dependinfo.cpp +++ b/src/vcpkg/commands.dependinfo.cpp @@ -309,7 +309,7 @@ namespace vcpkg::Commands::DependInfo std::string{arg}, default_triplet, COMMAND_STRUCTURE.example_text, paths); }); - PathsPortFileProvider provider(paths, make_overlay_provider(paths, args.overlay_ports)); + PathsPortFileProvider provider(paths, make_overlay_provider(paths, paths.overlay_ports)); auto var_provider_storage = CMakeVars::make_triplet_cmake_var_provider(paths); auto& var_provider = *var_provider_storage; diff --git a/src/vcpkg/commands.env.cpp b/src/vcpkg/commands.env.cpp index 040732c334..535334fb22 100644 --- a/src/vcpkg/commands.env.cpp +++ b/src/vcpkg/commands.env.cpp @@ -44,7 +44,7 @@ namespace vcpkg::Commands::Env const ParsedArguments options = args.parse_arguments(COMMAND_STRUCTURE); - PathsPortFileProvider provider(paths, make_overlay_provider(paths, args.overlay_ports)); + PathsPortFileProvider provider(paths, make_overlay_provider(paths, paths.overlay_ports)); auto var_provider_storage = CMakeVars::make_triplet_cmake_var_provider(paths); auto& var_provider = *var_provider_storage; diff --git a/src/vcpkg/commands.find.cpp b/src/vcpkg/commands.find.cpp index 63062c24df..f70a691b87 100644 --- a/src/vcpkg/commands.find.cpp +++ b/src/vcpkg/commands.find.cpp @@ -259,7 +259,7 @@ namespace vcpkg::Commands } } // unlock metrics - perform_find_port_and_exit(paths, full_description, enable_json, filter, args.overlay_ports); + perform_find_port_and_exit(paths, full_description, enable_json, filter, paths.overlay_ports); } Checks::msg_exit_with_error(VCPKG_LINE_INFO, msgAddCommandFirstArg); diff --git a/src/vcpkg/commands.info.cpp b/src/vcpkg/commands.info.cpp index e179b8b26c..0e5ea7d082 100644 --- a/src/vcpkg/commands.info.cpp +++ b/src/vcpkg/commands.info.cpp @@ -115,7 +115,7 @@ namespace vcpkg::Commands::Info { Json::Object response; Json::Object results; - PathsPortFileProvider provider(paths, make_overlay_provider(paths, args.overlay_ports)); + PathsPortFileProvider provider(paths, make_overlay_provider(paths, paths.overlay_ports)); for (auto&& arg : args.command_arguments) { diff --git a/src/vcpkg/commands.search.cpp b/src/vcpkg/commands.search.cpp index a080fc782b..3634ab758b 100644 --- a/src/vcpkg/commands.search.cpp +++ b/src/vcpkg/commands.search.cpp @@ -5,6 +5,7 @@ #include #include #include +#include namespace vcpkg::Commands { @@ -32,6 +33,6 @@ namespace vcpkg::Commands filter = StringView{args.command_arguments[0]}; } - perform_find_port_and_exit(paths, full_description, args.json.value_or(false), filter, args.overlay_ports); + perform_find_port_and_exit(paths, full_description, args.json.value_or(false), filter, paths.overlay_ports); } } diff --git a/src/vcpkg/commands.setinstalled.cpp b/src/vcpkg/commands.setinstalled.cpp index 33562d6e92..e2f4e2c8e6 100644 --- a/src/vcpkg/commands.setinstalled.cpp +++ b/src/vcpkg/commands.setinstalled.cpp @@ -164,7 +164,7 @@ namespace vcpkg::Commands::SetInstalled ? KeepGoing::YES : KeepGoing::NO; - PathsPortFileProvider provider(paths, make_overlay_provider(paths, args.overlay_ports)); + PathsPortFileProvider provider(paths, make_overlay_provider(paths, paths.overlay_ports)); auto cmake_vars = CMakeVars::make_triplet_cmake_var_provider(paths); Optional pkgsconfig; diff --git a/src/vcpkg/commands.upgrade.cpp b/src/vcpkg/commands.upgrade.cpp index 5a88f42a9c..6bf9d471db 100644 --- a/src/vcpkg/commands.upgrade.cpp +++ b/src/vcpkg/commands.upgrade.cpp @@ -86,7 +86,7 @@ namespace vcpkg::Commands::Upgrade StatusParagraphs status_db = database_load_check(paths.get_filesystem(), paths.installed()); // Load ports from ports dirs - PathsPortFileProvider provider(paths, make_overlay_provider(paths, args.overlay_ports)); + PathsPortFileProvider provider(paths, make_overlay_provider(paths, paths.overlay_ports)); auto var_provider_storage = CMakeVars::make_triplet_cmake_var_provider(paths); auto& var_provider = *var_provider_storage; diff --git a/src/vcpkg/export.cpp b/src/vcpkg/export.cpp index 9b969b7e48..0dd6bf25f0 100644 --- a/src/vcpkg/export.cpp +++ b/src/vcpkg/export.cpp @@ -607,7 +607,7 @@ With a project open, go to Tools->NuGet Package Manager->Package Manager Console const auto opts = handle_export_command_arguments(paths, args, default_triplet, status_db); // Load ports from ports dirs - PathsPortFileProvider provider(paths, make_overlay_provider(paths, args.overlay_ports)); + PathsPortFileProvider provider(paths, make_overlay_provider(paths, paths.overlay_ports)); // create the plan std::vector export_plan = create_export_plan(opts.specs, status_db); diff --git a/src/vcpkg/install.cpp b/src/vcpkg/install.cpp index 6bf4d7b5b2..d09618db39 100644 --- a/src/vcpkg/install.cpp +++ b/src/vcpkg/install.cpp @@ -1065,8 +1065,8 @@ namespace vcpkg std::vector extended_overlay_ports; const bool add_builtin_ports_directory_as_overlay = paths.get_registry_set().is_default_builtin_registry() && !paths.use_git_default_registry(); - extended_overlay_ports.reserve(args.overlay_ports.size() + add_builtin_ports_directory_as_overlay); - extended_overlay_ports = args.overlay_ports; + extended_overlay_ports.reserve(paths.overlay_ports.size() + add_builtin_ports_directory_as_overlay); + extended_overlay_ports = paths.overlay_ports; if (add_builtin_ports_directory_as_overlay) { extended_overlay_ports.emplace_back(paths.builtin_ports_directory().native()); @@ -1114,7 +1114,7 @@ namespace vcpkg keep_going); } - PathsPortFileProvider provider(paths, make_overlay_provider(paths, args.overlay_ports)); + PathsPortFileProvider provider(paths, make_overlay_provider(paths, paths.overlay_ports)); const std::vector specs = Util::fmap(args.command_arguments, [&](auto&& arg) { return check_and_get_full_package_spec( diff --git a/src/vcpkg/remove.cpp b/src/vcpkg/remove.cpp index 2a483d4fbd..cc4428ef4f 100644 --- a/src/vcpkg/remove.cpp +++ b/src/vcpkg/remove.cpp @@ -209,7 +209,7 @@ namespace vcpkg::Remove } // Load ports from ports dirs - PathsPortFileProvider provider(paths, make_overlay_provider(paths, args.overlay_ports)); + PathsPortFileProvider provider(paths, make_overlay_provider(paths, paths.overlay_ports)); specs = Util::fmap(Update::find_outdated_packages(provider, status_db), [](auto&& outdated) { return outdated.spec; }); diff --git a/src/vcpkg/update.cpp b/src/vcpkg/update.cpp index a1f8c3b225..3ba05eb1f9 100644 --- a/src/vcpkg/update.cpp +++ b/src/vcpkg/update.cpp @@ -68,7 +68,7 @@ namespace vcpkg::Update const StatusParagraphs status_db = database_load_check(paths.get_filesystem(), paths.installed()); - PathsPortFileProvider provider(paths, make_overlay_provider(paths, args.overlay_ports)); + PathsPortFileProvider provider(paths, make_overlay_provider(paths, paths.overlay_ports)); const auto outdated_packages = SortedVector( find_outdated_packages(provider, status_db), &OutdatedPackage::compare_by_name); diff --git a/src/vcpkg/vcpkgcmdarguments.cpp b/src/vcpkg/vcpkgcmdarguments.cpp index 028a9b4dd6..f13477d872 100644 --- a/src/vcpkg/vcpkgcmdarguments.cpp +++ b/src/vcpkg/vcpkgcmdarguments.cpp @@ -304,8 +304,8 @@ namespace vcpkg constexpr static std::pair VcpkgCmdArguments::*> cojoined_multivalues[] = { - {OVERLAY_PORTS_ARG, &VcpkgCmdArguments::overlay_ports}, - {OVERLAY_TRIPLETS_ARG, &VcpkgCmdArguments::overlay_triplets}, + {OVERLAY_PORTS_ARG, &VcpkgCmdArguments::cli_overlay_ports}, + {OVERLAY_TRIPLETS_ARG, &VcpkgCmdArguments::cli_overlay_triplets}, {BINARY_SOURCES_ARG, &VcpkgCmdArguments::binary_sources}, {CMAKE_SCRIPT_ARG, &VcpkgCmdArguments::cmake_args}, }; @@ -636,24 +636,6 @@ namespace vcpkg msg::println(LocalizedString::from_raw(table.m_str)); } - // Merges overlay ports in the specific order - void VcpkgCmdArguments::merge_overlays() - { - overlay_ports.insert( - std::end(overlay_ports), std::begin(manifest_overlay_ports), std::end(manifest_overlay_ports)); - overlay_ports.insert(std::end(overlay_ports), std::begin(env_overlay_ports), std::end(env_overlay_ports)); - overlay_triplets.insert( - std::end(overlay_triplets), std::begin(manifest_overlay_triplets), std::end(manifest_overlay_triplets)); - overlay_triplets.insert( - std::end(overlay_triplets), std::begin(env_overlay_triplets), std::end(env_overlay_triplets)); - } - - void VcpkgCmdArguments::set_manifest_overlays(std::vector& op, std::vector& ot) - { - manifest_overlay_ports.insert(std::end(manifest_overlay_ports), std::begin(op), std::end(op)); - manifest_overlay_triplets.insert(std::end(manifest_overlay_triplets), std::begin(ot), std::end(ot)); - } - void VcpkgCmdArguments::append_common_options(HelpTableFormatter& table) { static auto opt = [](StringView arg, StringView joiner, StringView value) { diff --git a/src/vcpkg/vcpkgpaths.cpp b/src/vcpkg/vcpkgpaths.cpp index 0c1aeb6e57..b867746009 100644 --- a/src/vcpkg/vcpkgpaths.cpp +++ b/src/vcpkg/vcpkgpaths.cpp @@ -134,6 +134,18 @@ namespace vcpkg return parsed_config_opt; } + static std::vector merge_overlays(std::vector cli_overlays, + std::vector manifest_overlays, + std::vector env_overlays) + { + std::vector ret = cli_overlays; + + ret.insert(std::end(ret), std::begin(manifest_overlays), std::end(manifest_overlays)); + ret.insert(std::end(ret), std::begin(env_overlays), std::end(env_overlays)); + + return ret; + } + static ConfigurationAndSource merge_validate_configs(Optional&& manifest_data, const Path& manifest_dir, Optional&& config_data, @@ -482,7 +494,7 @@ namespace vcpkg : RequireExactVersions::NO)) , m_env_cache(m_ff_settings.compiler_tracking) , triplets_dirs( - Util::fmap(args.overlay_triplets, + Util::fmap(args.cli_overlay_triplets, [&fs](const std::string& p) { return fs.almost_canonical(p, VCPKG_LINE_INFO); })) , m_artifacts_dir(downloads / "artifacts") { @@ -620,7 +632,7 @@ namespace vcpkg #endif } - VcpkgPaths::VcpkgPaths(Filesystem& filesystem, VcpkgCmdArguments& args) + VcpkgPaths::VcpkgPaths(Filesystem& filesystem, const VcpkgCmdArguments& args) : original_cwd(preferred_current_path(filesystem)) , root(determine_root(filesystem, original_cwd, args)) // this is used during the initialization of the below public members @@ -656,8 +668,10 @@ namespace vcpkg m_pimpl->m_config_dir, *this); - args.set_manifest_overlays(m_pimpl->m_config.config.overlay_ports, - m_pimpl->m_config.config.overlay_triplets); + this->overlay_ports = merge_overlays( + args.cli_overlay_ports, this->get_configuration().config.overlay_ports, args.env_overlay_ports); + this->overlay_triplets = merge_overlays( + args.cli_overlay_triplets, this->get_configuration().config.overlay_triplets, args.env_overlay_triplets); m_pimpl->m_registry_set = m_pimpl->m_config.instantiate_registry_set(*this); } From 50dbc45271adfb489ed2cc2a832c1d9aee8f59c6 Mon Sep 17 00:00:00 2001 From: Valeria Conde Date: Wed, 12 Oct 2022 11:42:12 -0700 Subject: [PATCH 06/26] artifacts settings --- CMakeSettings.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CMakeSettings.json b/CMakeSettings.json index a4fdfa7fdf..255a15b1a9 100644 --- a/CMakeSettings.json +++ b/CMakeSettings.json @@ -13,7 +13,7 @@ "variables": [ { "name": "VCPKG_ARTIFACTS_DEVELOPMENT", - "value": "False", + "value": "True", "type": "BOOL" }, { From f1fbae0db462eb22ff7ccf288030715b502d8677 Mon Sep 17 00:00:00 2001 From: Valeria Conde Date: Wed, 12 Oct 2022 12:55:18 -0700 Subject: [PATCH 07/26] format --- src/vcpkg.cpp | 2 +- src/vcpkg/vcpkgpaths.cpp | 5 +++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/src/vcpkg.cpp b/src/vcpkg.cpp index 44ee11370d..c4f2ad6afb 100644 --- a/src/vcpkg.cpp +++ b/src/vcpkg.cpp @@ -120,7 +120,7 @@ static void inner(vcpkg::Filesystem& fs, const VcpkgCmdArguments& args) const VcpkgPaths paths(fs, args); paths.track_feature_flag_metrics(); - + LockGuardPtr(g_metrics)->track_bool_property(BoolMetric::OptionOverlayPorts, !paths.overlay_ports.empty()); if (const auto command_function = find_command(Commands::get_available_basic_commands())) diff --git a/src/vcpkg/vcpkgpaths.cpp b/src/vcpkg/vcpkgpaths.cpp index 03f0643b53..f88532a536 100644 --- a/src/vcpkg/vcpkgpaths.cpp +++ b/src/vcpkg/vcpkgpaths.cpp @@ -686,8 +686,9 @@ namespace vcpkg this->overlay_ports = merge_overlays( args.cli_overlay_ports, this->get_configuration().config.overlay_ports, args.env_overlay_ports); - this->overlay_triplets = merge_overlays( - args.cli_overlay_triplets, this->get_configuration().config.overlay_triplets, args.env_overlay_triplets); + this->overlay_triplets = merge_overlays(args.cli_overlay_triplets, + this->get_configuration().config.overlay_triplets, + args.env_overlay_triplets); m_pimpl->m_registry_set = m_pimpl->m_config.instantiate_registry_set(*this); } From 07e55f4ca6d5573ac42db15908d0a7e298cd3665 Mon Sep 17 00:00:00 2001 From: Valeria Conde Date: Thu, 13 Oct 2022 09:39:56 -0700 Subject: [PATCH 08/26] sending merged overlay triplets --- src/vcpkg/vcpkgpaths.cpp | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/src/vcpkg/vcpkgpaths.cpp b/src/vcpkg/vcpkgpaths.cpp index f88532a536..b7f3a31089 100644 --- a/src/vcpkg/vcpkgpaths.cpp +++ b/src/vcpkg/vcpkgpaths.cpp @@ -495,9 +495,7 @@ namespace vcpkg args.exact_abi_tools_versions.value_or(false) ? RequireExactVersions::YES : RequireExactVersions::NO)) , m_env_cache(m_ff_settings.compiler_tracking) - , triplets_dirs( - Util::fmap(args.cli_overlay_triplets, - [&fs](const std::string& p) { return fs.almost_canonical(p, VCPKG_LINE_INFO); })) + , triplets_dirs() , m_artifacts_dir(downloads / "artifacts") { if (auto i = m_installed.get()) @@ -671,9 +669,6 @@ namespace vcpkg Debug::print("Using builtin-registry: ", builtin_registry_versions, '\n'); Debug::print("Using downloads-root: ", downloads, '\n'); - m_pimpl->triplets_dirs.emplace_back(triplets); - m_pimpl->triplets_dirs.emplace_back(community_triplets); - { auto maybe_manifest_config = config_from_manifest(m_pimpl->m_manifest_path, m_pimpl->m_manifest_doc); auto maybe_config_json = config_from_json(m_pimpl->m_config_dir / "vcpkg-configuration.json", filesystem); @@ -693,6 +688,13 @@ namespace vcpkg m_pimpl->m_registry_set = m_pimpl->m_config.instantiate_registry_set(*this); } + for (std::string triplet : this->overlay_triplets) + { + m_pimpl->triplets_dirs.emplace_back(filesystem.almost_canonical(triplet, VCPKG_LINE_INFO)); + } + m_pimpl->triplets_dirs.emplace_back(triplets); + m_pimpl->triplets_dirs.emplace_back(community_triplets); + // metrics from configuration { auto default_registry = m_pimpl->m_registry_set->default_registry(); From 0a0e92f20561cb89d73e404373e06b986bebb78e Mon Sep 17 00:00:00 2001 From: Valeria Conde Date: Thu, 13 Oct 2022 09:51:19 -0700 Subject: [PATCH 09/26] moved constructor --- src/vcpkg.cpp | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/vcpkg.cpp b/src/vcpkg.cpp index c4f2ad6afb..6ee5411347 100644 --- a/src/vcpkg.cpp +++ b/src/vcpkg.cpp @@ -118,17 +118,17 @@ static void inner(vcpkg::Filesystem& fs, const VcpkgCmdArguments& args) } } - const VcpkgPaths paths(fs, args); - paths.track_feature_flag_metrics(); - - LockGuardPtr(g_metrics)->track_bool_property(BoolMetric::OptionOverlayPorts, !paths.overlay_ports.empty()); - if (const auto command_function = find_command(Commands::get_available_basic_commands())) { LockGuardPtr(g_metrics)->track_string_property(StringMetric::CommandName, command_function->name); return command_function->function->perform_and_exit(args, fs); } + const VcpkgPaths paths(fs, args); + paths.track_feature_flag_metrics(); + + LockGuardPtr(g_metrics)->track_bool_property(BoolMetric::OptionOverlayPorts, !paths.overlay_ports.empty()); + fs.current_path(paths.root, VCPKG_LINE_INFO); if (const auto command_function = find_command(Commands::get_available_paths_commands())) From 533898f63ce8bb169081e8be71535824d18a9f78 Mon Sep 17 00:00:00 2001 From: Valeria Conde Date: Thu, 13 Oct 2022 09:59:37 -0700 Subject: [PATCH 10/26] passing parameters by reference --- src/vcpkg/vcpkgpaths.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/vcpkg/vcpkgpaths.cpp b/src/vcpkg/vcpkgpaths.cpp index b7f3a31089..f746afe306 100644 --- a/src/vcpkg/vcpkgpaths.cpp +++ b/src/vcpkg/vcpkgpaths.cpp @@ -134,9 +134,9 @@ namespace vcpkg return parsed_config_opt; } - static std::vector merge_overlays(std::vector cli_overlays, - std::vector manifest_overlays, - std::vector env_overlays) + static std::vector merge_overlays(const std::vector& cli_overlays, + const std::vector& manifest_overlays, + const std::vector& env_overlays) { std::vector ret = cli_overlays; From 679ad17556b75302387a51bcc35486ec6efc3401 Mon Sep 17 00:00:00 2001 From: Valeria Conde Date: Thu, 13 Oct 2022 20:43:23 -0700 Subject: [PATCH 11/26] e2e tests --- .gitignore | 2 ++ .../another-vcpkg-empty-port/portfile.cmake | 1 + .../another-vcpkg-empty-port/vcpkg.json | 4 ++++ .../config-overlays/beicode/portfile.cmake | 21 +++++++++++++++++++ .../config-overlays/beicode/vcpkg.json | 6 ++++++ .../vcpkg-empty-port/portfile.cmake | 1 + .../env-overlays/vcpkg-empty-port/vcpkg.json | 4 ++++ .../my-triplets/x64-windows-static.cmake | 4 ++++ .../vcpkg.json | 12 +++++++++++ .../another-vcpkg-empty-port/portfile.cmake | 1 + .../another-vcpkg-empty-port/vcpkg.json | 4 ++++ .../config-overlays/beicode/portfile.cmake | 21 +++++++++++++++++++ .../config-overlays/beicode/vcpkg.json | 6 ++++++ .../vcpkg-empty-port/portfile.cmake | 1 + .../env-overlays/vcpkg-empty-port/vcpkg.json | 4 ++++ .../my-triplets/x64-windows-static.cmake | 4 ++++ .../vcpkg-configuration.json | 4 ++++ .../overlays-project-with-config/vcpkg.json | 8 +++++++ .../end-to-end-tests-dir/overlays.ps1 | 14 +++++++++++++ 19 files changed, 122 insertions(+) create mode 100644 azure-pipelines/e2e_projects/overlays-project-config-embedded/cli-overlays/another-vcpkg-empty-port/portfile.cmake create mode 100644 azure-pipelines/e2e_projects/overlays-project-config-embedded/cli-overlays/another-vcpkg-empty-port/vcpkg.json create mode 100644 azure-pipelines/e2e_projects/overlays-project-config-embedded/config-overlays/beicode/portfile.cmake create mode 100644 azure-pipelines/e2e_projects/overlays-project-config-embedded/config-overlays/beicode/vcpkg.json create mode 100644 azure-pipelines/e2e_projects/overlays-project-config-embedded/env-overlays/vcpkg-empty-port/portfile.cmake create mode 100644 azure-pipelines/e2e_projects/overlays-project-config-embedded/env-overlays/vcpkg-empty-port/vcpkg.json create mode 100644 azure-pipelines/e2e_projects/overlays-project-config-embedded/my-triplets/x64-windows-static.cmake create mode 100644 azure-pipelines/e2e_projects/overlays-project-config-embedded/vcpkg.json create mode 100644 azure-pipelines/e2e_projects/overlays-project-with-config/cli-overlays/another-vcpkg-empty-port/portfile.cmake create mode 100644 azure-pipelines/e2e_projects/overlays-project-with-config/cli-overlays/another-vcpkg-empty-port/vcpkg.json create mode 100644 azure-pipelines/e2e_projects/overlays-project-with-config/config-overlays/beicode/portfile.cmake create mode 100644 azure-pipelines/e2e_projects/overlays-project-with-config/config-overlays/beicode/vcpkg.json create mode 100644 azure-pipelines/e2e_projects/overlays-project-with-config/env-overlays/vcpkg-empty-port/portfile.cmake create mode 100644 azure-pipelines/e2e_projects/overlays-project-with-config/env-overlays/vcpkg-empty-port/vcpkg.json create mode 100644 azure-pipelines/e2e_projects/overlays-project-with-config/my-triplets/x64-windows-static.cmake create mode 100644 azure-pipelines/e2e_projects/overlays-project-with-config/vcpkg-configuration.json create mode 100644 azure-pipelines/e2e_projects/overlays-project-with-config/vcpkg.json create mode 100644 azure-pipelines/end-to-end-tests-dir/overlays.ps1 diff --git a/.gitignore b/.gitignore index edafc23ef8..597b5fd16a 100644 --- a/.gitignore +++ b/.gitignore @@ -23,3 +23,5 @@ node_modules/ /ce/common/temp /vcpkg-root /CMakePresets.json +/azure-pipelines/e2e_projects/overlays-project-config-embedded/vcpkg_installed +/azure-pipelines/e2e_projects/overlays-project-with-config/vcpkg_installed diff --git a/azure-pipelines/e2e_projects/overlays-project-config-embedded/cli-overlays/another-vcpkg-empty-port/portfile.cmake b/azure-pipelines/e2e_projects/overlays-project-config-embedded/cli-overlays/another-vcpkg-empty-port/portfile.cmake new file mode 100644 index 0000000000..065116c276 --- /dev/null +++ b/azure-pipelines/e2e_projects/overlays-project-config-embedded/cli-overlays/another-vcpkg-empty-port/portfile.cmake @@ -0,0 +1 @@ +set(VCPKG_POLICY_EMPTY_PACKAGE enabled) diff --git a/azure-pipelines/e2e_projects/overlays-project-config-embedded/cli-overlays/another-vcpkg-empty-port/vcpkg.json b/azure-pipelines/e2e_projects/overlays-project-config-embedded/cli-overlays/another-vcpkg-empty-port/vcpkg.json new file mode 100644 index 0000000000..baf6dd9a57 --- /dev/null +++ b/azure-pipelines/e2e_projects/overlays-project-config-embedded/cli-overlays/another-vcpkg-empty-port/vcpkg.json @@ -0,0 +1,4 @@ +{ + "name": "another-vcpkg-empty-port", + "version": "0" +} diff --git a/azure-pipelines/e2e_projects/overlays-project-config-embedded/config-overlays/beicode/portfile.cmake b/azure-pipelines/e2e_projects/overlays-project-config-embedded/config-overlays/beicode/portfile.cmake new file mode 100644 index 0000000000..2ea339ff3d --- /dev/null +++ b/azure-pipelines/e2e_projects/overlays-project-config-embedded/config-overlays/beicode/portfile.cmake @@ -0,0 +1,21 @@ +vcpkg_from_github( + OUT_SOURCE_PATH SOURCE_PATH + REPO northwindtraders/beicode + REF 19a1f95c2f56a27ced90227b5e2754a602a08e69 + SHA512 7b2bb7acb2a8ff07bff59cfa27247a7b2cced03828919cd65cc0c8cf1f724f5f1e947ed6992dcdbc913fb470694a52613d1861eaaadbf8903e94eb9cdfe4d000 + HEAD_REF main +) + +vcpkg_configure_cmake( + SOURCE_PATH "${SOURCE_PATH}" + PREFER_NINJA +) +vcpkg_install_cmake() +vcpkg_fixup_cmake_targets() + +file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/debug/include") + +file( + INSTALL "${SOURCE_PATH}/LICENSE" + DESTINATION "${CURRENT_PACKAGES_DIR}/share/${PORT}" + RENAME copyright) \ No newline at end of file diff --git a/azure-pipelines/e2e_projects/overlays-project-config-embedded/config-overlays/beicode/vcpkg.json b/azure-pipelines/e2e_projects/overlays-project-config-embedded/config-overlays/beicode/vcpkg.json new file mode 100644 index 0000000000..aad67c0e82 --- /dev/null +++ b/azure-pipelines/e2e_projects/overlays-project-config-embedded/config-overlays/beicode/vcpkg.json @@ -0,0 +1,6 @@ +{ + "name": "beicode", + "version": "1.0.0", + "description": "A simple utf-8 based unicode decoding and encoding library", + "homepage": "https://github.com/northwindtraders/beicode" +} \ No newline at end of file diff --git a/azure-pipelines/e2e_projects/overlays-project-config-embedded/env-overlays/vcpkg-empty-port/portfile.cmake b/azure-pipelines/e2e_projects/overlays-project-config-embedded/env-overlays/vcpkg-empty-port/portfile.cmake new file mode 100644 index 0000000000..065116c276 --- /dev/null +++ b/azure-pipelines/e2e_projects/overlays-project-config-embedded/env-overlays/vcpkg-empty-port/portfile.cmake @@ -0,0 +1 @@ +set(VCPKG_POLICY_EMPTY_PACKAGE enabled) diff --git a/azure-pipelines/e2e_projects/overlays-project-config-embedded/env-overlays/vcpkg-empty-port/vcpkg.json b/azure-pipelines/e2e_projects/overlays-project-config-embedded/env-overlays/vcpkg-empty-port/vcpkg.json new file mode 100644 index 0000000000..1f42aa9278 --- /dev/null +++ b/azure-pipelines/e2e_projects/overlays-project-config-embedded/env-overlays/vcpkg-empty-port/vcpkg.json @@ -0,0 +1,4 @@ +{ + "name": "vcpkg-empty-port", + "version": "0" +} diff --git a/azure-pipelines/e2e_projects/overlays-project-config-embedded/my-triplets/x64-windows-static.cmake b/azure-pipelines/e2e_projects/overlays-project-config-embedded/my-triplets/x64-windows-static.cmake new file mode 100644 index 0000000000..b227169ed5 --- /dev/null +++ b/azure-pipelines/e2e_projects/overlays-project-config-embedded/my-triplets/x64-windows-static.cmake @@ -0,0 +1,4 @@ +set(VCPKG_TARGET_ARCHITECTURE x64) +set(VCPKG_CRT_LINKAGE static) +set(VCPKG_LIBRARY_LINKAGE dynamic) + diff --git a/azure-pipelines/e2e_projects/overlays-project-config-embedded/vcpkg.json b/azure-pipelines/e2e_projects/overlays-project-config-embedded/vcpkg.json new file mode 100644 index 0000000000..50b23d0dbd --- /dev/null +++ b/azure-pipelines/e2e_projects/overlays-project-config-embedded/vcpkg.json @@ -0,0 +1,12 @@ +{ + "dependencies": [ + "fmt", + "vcpkg-empty-port", + "another-vcpkg-empty-port", + "beicode" + ], + "vcpkg-configuration": { + "overlay-ports": [ ".\\azure-pipelines\\e2e_projects\\overlays-project-with-config\\config-overlays" ], + "overlay-triplets": [ "../my-triplets" ] + } +} \ No newline at end of file diff --git a/azure-pipelines/e2e_projects/overlays-project-with-config/cli-overlays/another-vcpkg-empty-port/portfile.cmake b/azure-pipelines/e2e_projects/overlays-project-with-config/cli-overlays/another-vcpkg-empty-port/portfile.cmake new file mode 100644 index 0000000000..065116c276 --- /dev/null +++ b/azure-pipelines/e2e_projects/overlays-project-with-config/cli-overlays/another-vcpkg-empty-port/portfile.cmake @@ -0,0 +1 @@ +set(VCPKG_POLICY_EMPTY_PACKAGE enabled) diff --git a/azure-pipelines/e2e_projects/overlays-project-with-config/cli-overlays/another-vcpkg-empty-port/vcpkg.json b/azure-pipelines/e2e_projects/overlays-project-with-config/cli-overlays/another-vcpkg-empty-port/vcpkg.json new file mode 100644 index 0000000000..baf6dd9a57 --- /dev/null +++ b/azure-pipelines/e2e_projects/overlays-project-with-config/cli-overlays/another-vcpkg-empty-port/vcpkg.json @@ -0,0 +1,4 @@ +{ + "name": "another-vcpkg-empty-port", + "version": "0" +} diff --git a/azure-pipelines/e2e_projects/overlays-project-with-config/config-overlays/beicode/portfile.cmake b/azure-pipelines/e2e_projects/overlays-project-with-config/config-overlays/beicode/portfile.cmake new file mode 100644 index 0000000000..2ea339ff3d --- /dev/null +++ b/azure-pipelines/e2e_projects/overlays-project-with-config/config-overlays/beicode/portfile.cmake @@ -0,0 +1,21 @@ +vcpkg_from_github( + OUT_SOURCE_PATH SOURCE_PATH + REPO northwindtraders/beicode + REF 19a1f95c2f56a27ced90227b5e2754a602a08e69 + SHA512 7b2bb7acb2a8ff07bff59cfa27247a7b2cced03828919cd65cc0c8cf1f724f5f1e947ed6992dcdbc913fb470694a52613d1861eaaadbf8903e94eb9cdfe4d000 + HEAD_REF main +) + +vcpkg_configure_cmake( + SOURCE_PATH "${SOURCE_PATH}" + PREFER_NINJA +) +vcpkg_install_cmake() +vcpkg_fixup_cmake_targets() + +file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/debug/include") + +file( + INSTALL "${SOURCE_PATH}/LICENSE" + DESTINATION "${CURRENT_PACKAGES_DIR}/share/${PORT}" + RENAME copyright) \ No newline at end of file diff --git a/azure-pipelines/e2e_projects/overlays-project-with-config/config-overlays/beicode/vcpkg.json b/azure-pipelines/e2e_projects/overlays-project-with-config/config-overlays/beicode/vcpkg.json new file mode 100644 index 0000000000..aad67c0e82 --- /dev/null +++ b/azure-pipelines/e2e_projects/overlays-project-with-config/config-overlays/beicode/vcpkg.json @@ -0,0 +1,6 @@ +{ + "name": "beicode", + "version": "1.0.0", + "description": "A simple utf-8 based unicode decoding and encoding library", + "homepage": "https://github.com/northwindtraders/beicode" +} \ No newline at end of file diff --git a/azure-pipelines/e2e_projects/overlays-project-with-config/env-overlays/vcpkg-empty-port/portfile.cmake b/azure-pipelines/e2e_projects/overlays-project-with-config/env-overlays/vcpkg-empty-port/portfile.cmake new file mode 100644 index 0000000000..065116c276 --- /dev/null +++ b/azure-pipelines/e2e_projects/overlays-project-with-config/env-overlays/vcpkg-empty-port/portfile.cmake @@ -0,0 +1 @@ +set(VCPKG_POLICY_EMPTY_PACKAGE enabled) diff --git a/azure-pipelines/e2e_projects/overlays-project-with-config/env-overlays/vcpkg-empty-port/vcpkg.json b/azure-pipelines/e2e_projects/overlays-project-with-config/env-overlays/vcpkg-empty-port/vcpkg.json new file mode 100644 index 0000000000..1f42aa9278 --- /dev/null +++ b/azure-pipelines/e2e_projects/overlays-project-with-config/env-overlays/vcpkg-empty-port/vcpkg.json @@ -0,0 +1,4 @@ +{ + "name": "vcpkg-empty-port", + "version": "0" +} diff --git a/azure-pipelines/e2e_projects/overlays-project-with-config/my-triplets/x64-windows-static.cmake b/azure-pipelines/e2e_projects/overlays-project-with-config/my-triplets/x64-windows-static.cmake new file mode 100644 index 0000000000..b227169ed5 --- /dev/null +++ b/azure-pipelines/e2e_projects/overlays-project-with-config/my-triplets/x64-windows-static.cmake @@ -0,0 +1,4 @@ +set(VCPKG_TARGET_ARCHITECTURE x64) +set(VCPKG_CRT_LINKAGE static) +set(VCPKG_LIBRARY_LINKAGE dynamic) + diff --git a/azure-pipelines/e2e_projects/overlays-project-with-config/vcpkg-configuration.json b/azure-pipelines/e2e_projects/overlays-project-with-config/vcpkg-configuration.json new file mode 100644 index 0000000000..86cc423cff --- /dev/null +++ b/azure-pipelines/e2e_projects/overlays-project-with-config/vcpkg-configuration.json @@ -0,0 +1,4 @@ +{ + "overlay-ports": [ ".\\azure-pipelines\\e2e_projects\\overlays-project-with-config\\config-overlays" ], + "overlay-triplets": [ ".\\azure-pipelines\\e2e_projects\\overlays-project-with-config\\my-triplets" ] +} diff --git a/azure-pipelines/e2e_projects/overlays-project-with-config/vcpkg.json b/azure-pipelines/e2e_projects/overlays-project-with-config/vcpkg.json new file mode 100644 index 0000000000..63575270b2 --- /dev/null +++ b/azure-pipelines/e2e_projects/overlays-project-with-config/vcpkg.json @@ -0,0 +1,8 @@ +{ + "dependencies": [ + "fmt", + "vcpkg-empty-port", + "another-vcpkg-empty-port", + "beicode" + ] +} \ No newline at end of file diff --git a/azure-pipelines/end-to-end-tests-dir/overlays.ps1 b/azure-pipelines/end-to-end-tests-dir/overlays.ps1 new file mode 100644 index 0000000000..c8658faac8 --- /dev/null +++ b/azure-pipelines/end-to-end-tests-dir/overlays.ps1 @@ -0,0 +1,14 @@ +. $PSScriptRoot/../end-to-end-tests-prelude.ps1 + +# Tests a simple project with overlay ports and triplets configured on a vcpkg-configuration.json file +$e2eProjects = "$PSScriptRoot/../e2e_projects" + +$manifestRoot = "$e2eProjects/overlays-project-with-config" +$env:VCPKG_OVERLAY_PORTS = "$manifestRoot/env-overlays" + +Run-Vcpkg install --x-manifest-root=$manifestRoot --overlay-ports=$manifestRoot/cli-overlays --overlay-triplets=$manifestRoot/my-triplets + +# Tests overlays configured in env and cli on a project with configuration embedded on the manifest file +$manifestRoot = "$e2eProjects/overlays-project-config-embedded" +$env:VCPKG_OVERLAY_PORTS = "$manifestRoot/env-overlays" +Run-Vcpkg install --x-manifest-root=$manifestRoot --overlay-ports=$manifestRoot/cli-overlays --overlay-triplets=$manifestRoot/my-triplets \ No newline at end of file From a4f8cba72fa60c6b6a3f669923e82be225256776 Mon Sep 17 00:00:00 2001 From: Valeria Conde Date: Fri, 14 Oct 2022 16:42:13 -0700 Subject: [PATCH 12/26] bad paths test --- .../env-overlays/vcpkg-empty-port/portfile.cmake | 1 + .../env-overlays/vcpkg-empty-port/vcpkg.json | 4 ++++ .../my-triplets/x64-windows-static.cmake | 4 ++++ .../overlays-bad-paths/vcpkg-configuration.json | 4 ++++ .../e2e_projects/overlays-bad-paths/vcpkg.json | 8 ++++++++ azure-pipelines/end-to-end-tests-dir/overlays.ps1 | 10 +++++++++- 6 files changed, 30 insertions(+), 1 deletion(-) create mode 100644 azure-pipelines/e2e_projects/overlays-bad-paths/env-overlays/vcpkg-empty-port/portfile.cmake create mode 100644 azure-pipelines/e2e_projects/overlays-bad-paths/env-overlays/vcpkg-empty-port/vcpkg.json create mode 100644 azure-pipelines/e2e_projects/overlays-bad-paths/my-triplets/x64-windows-static.cmake create mode 100644 azure-pipelines/e2e_projects/overlays-bad-paths/vcpkg-configuration.json create mode 100644 azure-pipelines/e2e_projects/overlays-bad-paths/vcpkg.json diff --git a/azure-pipelines/e2e_projects/overlays-bad-paths/env-overlays/vcpkg-empty-port/portfile.cmake b/azure-pipelines/e2e_projects/overlays-bad-paths/env-overlays/vcpkg-empty-port/portfile.cmake new file mode 100644 index 0000000000..065116c276 --- /dev/null +++ b/azure-pipelines/e2e_projects/overlays-bad-paths/env-overlays/vcpkg-empty-port/portfile.cmake @@ -0,0 +1 @@ +set(VCPKG_POLICY_EMPTY_PACKAGE enabled) diff --git a/azure-pipelines/e2e_projects/overlays-bad-paths/env-overlays/vcpkg-empty-port/vcpkg.json b/azure-pipelines/e2e_projects/overlays-bad-paths/env-overlays/vcpkg-empty-port/vcpkg.json new file mode 100644 index 0000000000..1f42aa9278 --- /dev/null +++ b/azure-pipelines/e2e_projects/overlays-bad-paths/env-overlays/vcpkg-empty-port/vcpkg.json @@ -0,0 +1,4 @@ +{ + "name": "vcpkg-empty-port", + "version": "0" +} diff --git a/azure-pipelines/e2e_projects/overlays-bad-paths/my-triplets/x64-windows-static.cmake b/azure-pipelines/e2e_projects/overlays-bad-paths/my-triplets/x64-windows-static.cmake new file mode 100644 index 0000000000..b227169ed5 --- /dev/null +++ b/azure-pipelines/e2e_projects/overlays-bad-paths/my-triplets/x64-windows-static.cmake @@ -0,0 +1,4 @@ +set(VCPKG_TARGET_ARCHITECTURE x64) +set(VCPKG_CRT_LINKAGE static) +set(VCPKG_LIBRARY_LINKAGE dynamic) + diff --git a/azure-pipelines/e2e_projects/overlays-bad-paths/vcpkg-configuration.json b/azure-pipelines/e2e_projects/overlays-bad-paths/vcpkg-configuration.json new file mode 100644 index 0000000000..aae5b18dc8 --- /dev/null +++ b/azure-pipelines/e2e_projects/overlays-bad-paths/vcpkg-configuration.json @@ -0,0 +1,4 @@ +{ + "overlay-ports": [ ".\\azure-pipelines\\e2e_projects\\overlays-project-with-config\\config-overlays" ], + "overlay-triplets": [ 123 ] +} diff --git a/azure-pipelines/e2e_projects/overlays-bad-paths/vcpkg.json b/azure-pipelines/e2e_projects/overlays-bad-paths/vcpkg.json new file mode 100644 index 0000000000..63575270b2 --- /dev/null +++ b/azure-pipelines/e2e_projects/overlays-bad-paths/vcpkg.json @@ -0,0 +1,8 @@ +{ + "dependencies": [ + "fmt", + "vcpkg-empty-port", + "another-vcpkg-empty-port", + "beicode" + ] +} \ No newline at end of file diff --git a/azure-pipelines/end-to-end-tests-dir/overlays.ps1 b/azure-pipelines/end-to-end-tests-dir/overlays.ps1 index c8658faac8..c96fb0f785 100644 --- a/azure-pipelines/end-to-end-tests-dir/overlays.ps1 +++ b/azure-pipelines/end-to-end-tests-dir/overlays.ps1 @@ -7,8 +7,16 @@ $manifestRoot = "$e2eProjects/overlays-project-with-config" $env:VCPKG_OVERLAY_PORTS = "$manifestRoot/env-overlays" Run-Vcpkg install --x-manifest-root=$manifestRoot --overlay-ports=$manifestRoot/cli-overlays --overlay-triplets=$manifestRoot/my-triplets +Throw-IfFailed # Tests overlays configured in env and cli on a project with configuration embedded on the manifest file $manifestRoot = "$e2eProjects/overlays-project-config-embedded" $env:VCPKG_OVERLAY_PORTS = "$manifestRoot/env-overlays" -Run-Vcpkg install --x-manifest-root=$manifestRoot --overlay-ports=$manifestRoot/cli-overlays --overlay-triplets=$manifestRoot/my-triplets \ No newline at end of file +Run-Vcpkg install --x-manifest-root=$manifestRoot --overlay-ports=$manifestRoot/cli-overlays --overlay-triplets=$manifestRoot/my-triplets +Throw-IfFailed + +# Config with bad paths +$manifestRoot = "$e2eProjects/overlays-bad-paths" +$env:VCPKG_OVERLAY_PORTS = "$manifestRoot/env_overlays" +Run-Vcpkg install --x-manifest-root=$manifestRoot --overlay-triplets=$manifestRoot/my-triplets +Throw-IfNotFailed From 47c78160020d65a712b6909b85968aaf3c588ed0 Mon Sep 17 00:00:00 2001 From: Valeria Conde Date: Fri, 14 Oct 2022 17:01:10 -0700 Subject: [PATCH 13/26] fix --- azure-pipelines/e2e_projects/overlays-bad-paths/vcpkg.json | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/azure-pipelines/e2e_projects/overlays-bad-paths/vcpkg.json b/azure-pipelines/e2e_projects/overlays-bad-paths/vcpkg.json index 63575270b2..6b2860f121 100644 --- a/azure-pipelines/e2e_projects/overlays-bad-paths/vcpkg.json +++ b/azure-pipelines/e2e_projects/overlays-bad-paths/vcpkg.json @@ -1,8 +1,5 @@ { "dependencies": [ - "fmt", - "vcpkg-empty-port", - "another-vcpkg-empty-port", - "beicode" + "vcpkg-empty-port" ] } \ No newline at end of file From fe933d0bdf5b2b57e49de3db272297afaab91eda Mon Sep 17 00:00:00 2001 From: Valeria Conde Date: Sun, 16 Oct 2022 23:46:42 -0700 Subject: [PATCH 14/26] resolves overlay paths relative to vcpkg-configuration.json --- .../vcpkg.json | 4 +- .../vcpkg-configuration.json | 4 +- include/vcpkg/vcpkgpaths.h | 2 + src/vcpkg/vcpkgpaths.cpp | 42 ++++++++++++++++--- 4 files changed, 43 insertions(+), 9 deletions(-) diff --git a/azure-pipelines/e2e_projects/overlays-project-config-embedded/vcpkg.json b/azure-pipelines/e2e_projects/overlays-project-config-embedded/vcpkg.json index 50b23d0dbd..11626a084f 100644 --- a/azure-pipelines/e2e_projects/overlays-project-config-embedded/vcpkg.json +++ b/azure-pipelines/e2e_projects/overlays-project-config-embedded/vcpkg.json @@ -6,7 +6,7 @@ "beicode" ], "vcpkg-configuration": { - "overlay-ports": [ ".\\azure-pipelines\\e2e_projects\\overlays-project-with-config\\config-overlays" ], - "overlay-triplets": [ "../my-triplets" ] + "overlay-ports": [ ".\\config-overlays" ], + "overlay-triplets": [ ".\\my-triplets" ] } } \ No newline at end of file diff --git a/azure-pipelines/e2e_projects/overlays-project-with-config/vcpkg-configuration.json b/azure-pipelines/e2e_projects/overlays-project-with-config/vcpkg-configuration.json index 86cc423cff..cd046b1629 100644 --- a/azure-pipelines/e2e_projects/overlays-project-with-config/vcpkg-configuration.json +++ b/azure-pipelines/e2e_projects/overlays-project-with-config/vcpkg-configuration.json @@ -1,4 +1,4 @@ { - "overlay-ports": [ ".\\azure-pipelines\\e2e_projects\\overlays-project-with-config\\config-overlays" ], - "overlay-triplets": [ ".\\azure-pipelines\\e2e_projects\\overlays-project-with-config\\my-triplets" ] + "overlay-ports": [ "./config-overlays" ], + "overlay-triplets": [ "./my-triplets" ] } diff --git a/include/vcpkg/vcpkgpaths.h b/include/vcpkg/vcpkgpaths.h index 56d0a729d0..ca43851faa 100644 --- a/include/vcpkg/vcpkgpaths.h +++ b/include/vcpkg/vcpkgpaths.h @@ -103,6 +103,8 @@ namespace vcpkg Path baselines_output() const; Path versions_output() const; + void translateRelativePaths(); + const Path original_cwd; const Path root; diff --git a/src/vcpkg/vcpkgpaths.cpp b/src/vcpkg/vcpkgpaths.cpp index f746afe306..822d9fdbd2 100644 --- a/src/vcpkg/vcpkgpaths.cpp +++ b/src/vcpkg/vcpkgpaths.cpp @@ -679,11 +679,11 @@ namespace vcpkg m_pimpl->m_config_dir, *this); - this->overlay_ports = merge_overlays( - args.cli_overlay_ports, this->get_configuration().config.overlay_ports, args.env_overlay_ports); - this->overlay_triplets = merge_overlays(args.cli_overlay_triplets, - this->get_configuration().config.overlay_triplets, - args.env_overlay_triplets); + translateRelativePaths(); + overlay_ports = merge_overlays( + args.cli_overlay_ports, get_configuration().config.overlay_ports, args.env_overlay_ports); + overlay_triplets = merge_overlays( + args.cli_overlay_triplets, get_configuration().config.overlay_triplets, args.env_overlay_triplets); m_pimpl->m_registry_set = m_pimpl->m_config.instantiate_registry_set(*this); } @@ -723,6 +723,38 @@ namespace vcpkg } } + /// + /// This is used to translate relative paths in the configuration file + /// to be relative to the file instead of the working directory + /// + void VcpkgPaths::translateRelativePaths() + { + auto maybe_manifest_dir = get_manifest_directory(); + if (const auto manifest_dir = maybe_manifest_dir.get()) + { + std::string manifest_dir_str = manifest_dir->c_str(); + for (auto& port : m_pimpl->m_config.config.overlay_ports) + { + Path port_path(port); + if (port_path.is_relative()) + { + std::string result = manifest_dir_str; + port = result.append("\\" + port); + } + } + + for (auto& triplet : m_pimpl->m_config.config.overlay_triplets) + { + Path triplet_path(triplet); + if (triplet_path.is_relative()) + { + std::string result = manifest_dir_str; + triplet = result.append("\\" + triplet); + } + } + } + } + Path VcpkgPaths::package_dir(const PackageSpec& spec) const { return this->packages() / spec.dir(); } Path VcpkgPaths::build_dir(const PackageSpec& spec) const { return this->buildtrees() / spec.name(); } Path VcpkgPaths::build_dir(StringView package_name) const { return this->buildtrees() / package_name.to_string(); } From 485f99851bf7e5e27192decde837a2314b78a396 Mon Sep 17 00:00:00 2001 From: Valeria Conde Date: Mon, 17 Oct 2022 08:20:14 -0700 Subject: [PATCH 15/26] path fix --- src/vcpkg/vcpkgpaths.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/vcpkg/vcpkgpaths.cpp b/src/vcpkg/vcpkgpaths.cpp index 822d9fdbd2..800545eb4f 100644 --- a/src/vcpkg/vcpkgpaths.cpp +++ b/src/vcpkg/vcpkgpaths.cpp @@ -739,7 +739,7 @@ namespace vcpkg if (port_path.is_relative()) { std::string result = manifest_dir_str; - port = result.append("\\" + port); + port = result.append("/" + port); } } @@ -749,7 +749,7 @@ namespace vcpkg if (triplet_path.is_relative()) { std::string result = manifest_dir_str; - triplet = result.append("\\" + triplet); + triplet = result.append("/" + triplet); } } } From 5a613f08886d08c484eea5979d10e88556eda355 Mon Sep 17 00:00:00 2001 From: Valeria Conde Date: Mon, 17 Oct 2022 08:30:37 -0700 Subject: [PATCH 16/26] Update test config --- .../e2e_projects/overlays-bad-paths/vcpkg-configuration.json | 2 +- .../e2e_projects/overlays-project-config-embedded/vcpkg.json | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/azure-pipelines/e2e_projects/overlays-bad-paths/vcpkg-configuration.json b/azure-pipelines/e2e_projects/overlays-bad-paths/vcpkg-configuration.json index aae5b18dc8..ca49482b31 100644 --- a/azure-pipelines/e2e_projects/overlays-bad-paths/vcpkg-configuration.json +++ b/azure-pipelines/e2e_projects/overlays-bad-paths/vcpkg-configuration.json @@ -1,4 +1,4 @@ { - "overlay-ports": [ ".\\azure-pipelines\\e2e_projects\\overlays-project-with-config\\config-overlays" ], + "overlay-ports": [ "./azure-pipelines/e2e_projects/overlays-project-with-config/config-overlays" ], "overlay-triplets": [ 123 ] } diff --git a/azure-pipelines/e2e_projects/overlays-project-config-embedded/vcpkg.json b/azure-pipelines/e2e_projects/overlays-project-config-embedded/vcpkg.json index 11626a084f..2ab1841e93 100644 --- a/azure-pipelines/e2e_projects/overlays-project-config-embedded/vcpkg.json +++ b/azure-pipelines/e2e_projects/overlays-project-config-embedded/vcpkg.json @@ -6,7 +6,7 @@ "beicode" ], "vcpkg-configuration": { - "overlay-ports": [ ".\\config-overlays" ], - "overlay-triplets": [ ".\\my-triplets" ] + "overlay-ports": [ "./config-overlays" ], + "overlay-triplets": [ "./my-triplets" ] } } \ No newline at end of file From 1cfacb13e54c40488ffafc08adf8c4a71a4f2587 Mon Sep 17 00:00:00 2001 From: Valeria Conde Date: Mon, 17 Oct 2022 17:04:17 -0700 Subject: [PATCH 17/26] modified make_relative_to_manifest --- include/vcpkg/vcpkgpaths.h | 2 -- src/vcpkg/vcpkgpaths.cpp | 52 ++++++++++++++------------------------ 2 files changed, 19 insertions(+), 35 deletions(-) diff --git a/include/vcpkg/vcpkgpaths.h b/include/vcpkg/vcpkgpaths.h index ca43851faa..56d0a729d0 100644 --- a/include/vcpkg/vcpkgpaths.h +++ b/include/vcpkg/vcpkgpaths.h @@ -103,8 +103,6 @@ namespace vcpkg Path baselines_output() const; Path versions_output() const; - void translateRelativePaths(); - const Path original_cwd; const Path root; diff --git a/src/vcpkg/vcpkgpaths.cpp b/src/vcpkg/vcpkgpaths.cpp index 800545eb4f..980af7ecda 100644 --- a/src/vcpkg/vcpkgpaths.cpp +++ b/src/vcpkg/vcpkgpaths.cpp @@ -679,7 +679,25 @@ namespace vcpkg m_pimpl->m_config_dir, *this); - translateRelativePaths(); + auto make_relative_to_manifest = [&](std::string& overlay_path) -> std::string { + auto p = Path(overlay_path); + if (p.is_relative()) + { + if (auto manifest_directory = get_manifest_directory().get()) + { + Path tmp(*manifest_directory); + auto res = tmp / p; + overlay_path = res.generic_u8string(); + return overlay_path; + } + } + return overlay_path; + }; + auto& config_ports = m_pimpl->m_config.config.overlay_ports; + auto& config_triplets = m_pimpl->m_config.config.overlay_triplets; + Util::transform(config_ports, make_relative_to_manifest); + Util::transform(config_triplets, make_relative_to_manifest); + overlay_ports = merge_overlays( args.cli_overlay_ports, get_configuration().config.overlay_ports, args.env_overlay_ports); overlay_triplets = merge_overlays( @@ -723,38 +741,6 @@ namespace vcpkg } } - /// - /// This is used to translate relative paths in the configuration file - /// to be relative to the file instead of the working directory - /// - void VcpkgPaths::translateRelativePaths() - { - auto maybe_manifest_dir = get_manifest_directory(); - if (const auto manifest_dir = maybe_manifest_dir.get()) - { - std::string manifest_dir_str = manifest_dir->c_str(); - for (auto& port : m_pimpl->m_config.config.overlay_ports) - { - Path port_path(port); - if (port_path.is_relative()) - { - std::string result = manifest_dir_str; - port = result.append("/" + port); - } - } - - for (auto& triplet : m_pimpl->m_config.config.overlay_triplets) - { - Path triplet_path(triplet); - if (triplet_path.is_relative()) - { - std::string result = manifest_dir_str; - triplet = result.append("/" + triplet); - } - } - } - } - Path VcpkgPaths::package_dir(const PackageSpec& spec) const { return this->packages() / spec.dir(); } Path VcpkgPaths::build_dir(const PackageSpec& spec) const { return this->buildtrees() / spec.name(); } Path VcpkgPaths::build_dir(StringView package_name) const { return this->buildtrees() / package_name.to_string(); } From 934b316d28146d098da146b1d79453a1566f776b Mon Sep 17 00:00:00 2001 From: Valeria Conde Date: Mon, 17 Oct 2022 19:02:24 -0700 Subject: [PATCH 18/26] Fix build --- src/vcpkg/vcpkgpaths.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/vcpkg/vcpkgpaths.cpp b/src/vcpkg/vcpkgpaths.cpp index 980af7ecda..f441941971 100644 --- a/src/vcpkg/vcpkgpaths.cpp +++ b/src/vcpkg/vcpkgpaths.cpp @@ -683,7 +683,7 @@ namespace vcpkg auto p = Path(overlay_path); if (p.is_relative()) { - if (auto manifest_directory = get_manifest_directory().get()) + if (auto manifest_directory = this->get_manifest_directory().get()) { Path tmp(*manifest_directory); auto res = tmp / p; From b143bb7d4235d1c828675f7c8b67a7793a3d1487 Mon Sep 17 00:00:00 2001 From: Valeria Conde Date: Mon, 17 Oct 2022 20:44:26 -0700 Subject: [PATCH 19/26] changed lambda function --- include/vcpkg/vcpkgpaths.h | 2 ++ src/vcpkg/vcpkgpaths.cpp | 35 +++++++++++++++++++---------------- 2 files changed, 21 insertions(+), 16 deletions(-) diff --git a/include/vcpkg/vcpkgpaths.h b/include/vcpkg/vcpkgpaths.h index 56d0a729d0..9c78ac357e 100644 --- a/include/vcpkg/vcpkgpaths.h +++ b/include/vcpkg/vcpkgpaths.h @@ -125,6 +125,8 @@ namespace vcpkg std::vector overlay_ports; std::vector overlay_triplets; + void make_relative_to_manifest(std::vector&); + std::string get_toolver_diagnostics() const; const ToolCache& get_tool_cache() const; diff --git a/src/vcpkg/vcpkgpaths.cpp b/src/vcpkg/vcpkgpaths.cpp index f441941971..b7320b089b 100644 --- a/src/vcpkg/vcpkgpaths.cpp +++ b/src/vcpkg/vcpkgpaths.cpp @@ -679,24 +679,10 @@ namespace vcpkg m_pimpl->m_config_dir, *this); - auto make_relative_to_manifest = [&](std::string& overlay_path) -> std::string { - auto p = Path(overlay_path); - if (p.is_relative()) - { - if (auto manifest_directory = this->get_manifest_directory().get()) - { - Path tmp(*manifest_directory); - auto res = tmp / p; - overlay_path = res.generic_u8string(); - return overlay_path; - } - } - return overlay_path; - }; auto& config_ports = m_pimpl->m_config.config.overlay_ports; auto& config_triplets = m_pimpl->m_config.config.overlay_triplets; - Util::transform(config_ports, make_relative_to_manifest); - Util::transform(config_triplets, make_relative_to_manifest); + make_relative_to_manifest(config_ports); + make_relative_to_manifest(config_triplets); overlay_ports = merge_overlays( args.cli_overlay_ports, get_configuration().config.overlay_ports, args.env_overlay_ports); @@ -741,6 +727,23 @@ namespace vcpkg } } + void VcpkgPaths::make_relative_to_manifest(std::vector& overlays) + { + for (auto& path : overlays) + { + auto p = Path(path); + if (p.is_relative()) + { + if (auto manifest_directory = get_manifest_directory().get()) + { + Path tmp(*manifest_directory); + auto res = tmp / p; + path = res.generic_u8string(); + } + } + } + } + Path VcpkgPaths::package_dir(const PackageSpec& spec) const { return this->packages() / spec.dir(); } Path VcpkgPaths::build_dir(const PackageSpec& spec) const { return this->buildtrees() / spec.name(); } Path VcpkgPaths::build_dir(StringView package_name) const { return this->buildtrees() / package_name.to_string(); } From 1916cb690201826615e4939575c08367540ae08b Mon Sep 17 00:00:00 2001 From: Valeria Conde Date: Mon, 17 Oct 2022 21:00:52 -0700 Subject: [PATCH 20/26] made manifest directory const --- src/vcpkg/vcpkgpaths.cpp | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/vcpkg/vcpkgpaths.cpp b/src/vcpkg/vcpkgpaths.cpp index f441941971..c84fafc7e3 100644 --- a/src/vcpkg/vcpkgpaths.cpp +++ b/src/vcpkg/vcpkgpaths.cpp @@ -683,9 +683,10 @@ namespace vcpkg auto p = Path(overlay_path); if (p.is_relative()) { - if (auto manifest_directory = this->get_manifest_directory().get()) + auto maybe_manifest_dir = get_manifest_directory(); + if (const auto manifest_dir = maybe_manifest_dir.get()) { - Path tmp(*manifest_directory); + Path tmp(*manifest_dir); auto res = tmp / p; overlay_path = res.generic_u8string(); return overlay_path; From 9588151cf0d6d7e37847e2776d1db2ba30c006ba Mon Sep 17 00:00:00 2001 From: Valeria Conde Date: Mon, 17 Oct 2022 21:10:03 -0700 Subject: [PATCH 21/26] Revert --- src/vcpkg/vcpkgpaths.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/vcpkg/vcpkgpaths.cpp b/src/vcpkg/vcpkgpaths.cpp index 2f72accf07..c84fafc7e3 100644 --- a/src/vcpkg/vcpkgpaths.cpp +++ b/src/vcpkg/vcpkgpaths.cpp @@ -696,8 +696,8 @@ namespace vcpkg }; auto& config_ports = m_pimpl->m_config.config.overlay_ports; auto& config_triplets = m_pimpl->m_config.config.overlay_triplets; - make_relative_to_manifest(config_ports); - make_relative_to_manifest(config_triplets); + Util::transform(config_ports, make_relative_to_manifest); + Util::transform(config_triplets, make_relative_to_manifest); overlay_ports = merge_overlays( args.cli_overlay_ports, get_configuration().config.overlay_ports, args.env_overlay_ports); From 82943412abeda213a66b930c0f9a1f74d7be1503 Mon Sep 17 00:00:00 2001 From: Valeria Conde Date: Mon, 17 Oct 2022 21:12:41 -0700 Subject: [PATCH 22/26] Revert lambda function --- include/vcpkg/vcpkgpaths.h | 2 -- 1 file changed, 2 deletions(-) diff --git a/include/vcpkg/vcpkgpaths.h b/include/vcpkg/vcpkgpaths.h index 9c78ac357e..56d0a729d0 100644 --- a/include/vcpkg/vcpkgpaths.h +++ b/include/vcpkg/vcpkgpaths.h @@ -125,8 +125,6 @@ namespace vcpkg std::vector overlay_ports; std::vector overlay_triplets; - void make_relative_to_manifest(std::vector&); - std::string get_toolver_diagnostics() const; const ToolCache& get_tool_cache() const; From 0dda41a18f739a2453f51b7c66d0cbe33f6b375b Mon Sep 17 00:00:00 2001 From: Valeria Conde Date: Mon, 17 Oct 2022 22:40:48 -0700 Subject: [PATCH 23/26] Add get_manifest_directory() --- include/vcpkg/vcpkgpaths.h | 1 + src/vcpkg/vcpkgpaths.cpp | 11 +++++++++++ 2 files changed, 12 insertions(+) diff --git a/include/vcpkg/vcpkgpaths.h b/include/vcpkg/vcpkgpaths.h index 6de5d5e0a4..56d0a729d0 100644 --- a/include/vcpkg/vcpkgpaths.h +++ b/include/vcpkg/vcpkgpaths.h @@ -156,6 +156,7 @@ namespace vcpkg ExpectedS git_checkout_object_from_remote_registry(StringView tree) const; Optional get_manifest() const; + Optional get_manifest_directory() const; const ConfigurationAndSource& get_configuration() const; const RegistrySet& get_registry_set() const; diff --git a/src/vcpkg/vcpkgpaths.cpp b/src/vcpkg/vcpkgpaths.cpp index aa36cfc011..c84fafc7e3 100644 --- a/src/vcpkg/vcpkgpaths.cpp +++ b/src/vcpkg/vcpkgpaths.cpp @@ -1352,6 +1352,17 @@ namespace vcpkg return nullopt; } + Optional VcpkgPaths::get_manifest_directory() const + { + auto& maybe_manifest_dir = m_pimpl->m_manifest_dir; + if (maybe_manifest_dir.empty()) + { + return nullopt; + } + + return maybe_manifest_dir; + } + const ConfigurationAndSource& VcpkgPaths::get_configuration() const { return m_pimpl->m_config; } const RegistrySet& VcpkgPaths::get_registry_set() const From 9b9bfaae749deeb430f61ee4d1847f7aee6592d5 Mon Sep 17 00:00:00 2001 From: Valeria Conde Date: Tue, 18 Oct 2022 08:53:57 -0700 Subject: [PATCH 24/26] making make_relative_to_manifest cleaner --- src/vcpkg/vcpkgpaths.cpp | 25 +++++++++++-------------- 1 file changed, 11 insertions(+), 14 deletions(-) diff --git a/src/vcpkg/vcpkgpaths.cpp b/src/vcpkg/vcpkgpaths.cpp index c84fafc7e3..add52e7582 100644 --- a/src/vcpkg/vcpkgpaths.cpp +++ b/src/vcpkg/vcpkgpaths.cpp @@ -679,25 +679,22 @@ namespace vcpkg m_pimpl->m_config_dir, *this); - auto make_relative_to_manifest = [&](std::string& overlay_path) -> std::string { - auto p = Path(overlay_path); + auto make_relative_to_manifest = [&](std::string overlay_path) -> std::string { + auto const p = Path(overlay_path); if (p.is_relative()) { - auto maybe_manifest_dir = get_manifest_directory(); - if (const auto manifest_dir = maybe_manifest_dir.get()) - { - Path tmp(*manifest_dir); - auto res = tmp / p; - overlay_path = res.generic_u8string(); - return overlay_path; - } + Path ret = *get_manifest_directory().get() / overlay_path; + return ret.c_str(); } return overlay_path; }; - auto& config_ports = m_pimpl->m_config.config.overlay_ports; - auto& config_triplets = m_pimpl->m_config.config.overlay_triplets; - Util::transform(config_ports, make_relative_to_manifest); - Util::transform(config_triplets, make_relative_to_manifest); + if (const auto manifest_dir = get_manifest_directory().get()) + { + auto& config_ports = m_pimpl->m_config.config.overlay_ports; + auto& config_triplets = m_pimpl->m_config.config.overlay_triplets; + Util::transform(config_ports, make_relative_to_manifest); + Util::transform(config_triplets, make_relative_to_manifest); + } overlay_ports = merge_overlays( args.cli_overlay_ports, get_configuration().config.overlay_ports, args.env_overlay_ports); From 9ff35b829aa5bc5282e0e517fec7c6b189a92fef Mon Sep 17 00:00:00 2001 From: Valeria Conde Date: Tue, 18 Oct 2022 17:08:24 -0700 Subject: [PATCH 25/26] Comments --- .gitignore | 4 +--- azure-pipelines/end-to-end-tests-dir/overlays.ps1 | 14 +++++++++++--- src/vcpkg-test/configmetadata.cpp | 5 +++-- src/vcpkg/vcpkgpaths.cpp | 5 +++-- 4 files changed, 18 insertions(+), 10 deletions(-) diff --git a/.gitignore b/.gitignore index 597b5fd16a..ef5c56f3ea 100644 --- a/.gitignore +++ b/.gitignore @@ -22,6 +22,4 @@ node_modules/ /ce/test/vcpkg-ce.test.build.log /ce/common/temp /vcpkg-root -/CMakePresets.json -/azure-pipelines/e2e_projects/overlays-project-config-embedded/vcpkg_installed -/azure-pipelines/e2e_projects/overlays-project-with-config/vcpkg_installed +/CMakePresets.json \ No newline at end of file diff --git a/azure-pipelines/end-to-end-tests-dir/overlays.ps1 b/azure-pipelines/end-to-end-tests-dir/overlays.ps1 index c96fb0f785..b0382c2c82 100644 --- a/azure-pipelines/end-to-end-tests-dir/overlays.ps1 +++ b/azure-pipelines/end-to-end-tests-dir/overlays.ps1 @@ -6,17 +6,25 @@ $e2eProjects = "$PSScriptRoot/../e2e_projects" $manifestRoot = "$e2eProjects/overlays-project-with-config" $env:VCPKG_OVERLAY_PORTS = "$manifestRoot/env-overlays" -Run-Vcpkg install --x-manifest-root=$manifestRoot --overlay-ports=$manifestRoot/cli-overlays --overlay-triplets=$manifestRoot/my-triplets +Run-Vcpkg install --x-manifest-root=$manifestRoot ` + --overlay-ports=$manifestRoot/cli-overlays ` + --overlay-triplets=$manifestRoot/my-triplets ` + --x-install-root=$installRoot Throw-IfFailed # Tests overlays configured in env and cli on a project with configuration embedded on the manifest file $manifestRoot = "$e2eProjects/overlays-project-config-embedded" $env:VCPKG_OVERLAY_PORTS = "$manifestRoot/env-overlays" -Run-Vcpkg install --x-manifest-root=$manifestRoot --overlay-ports=$manifestRoot/cli-overlays --overlay-triplets=$manifestRoot/my-triplets +Run-Vcpkg install --x-manifest-root=$manifestRoot ` + --overlay-ports=$manifestRoot/cli-overlays ` + --overlay-triplets=$manifestRoot/my-triplets ` + --x-install-root=$installRoot Throw-IfFailed # Config with bad paths $manifestRoot = "$e2eProjects/overlays-bad-paths" $env:VCPKG_OVERLAY_PORTS = "$manifestRoot/env_overlays" -Run-Vcpkg install --x-manifest-root=$manifestRoot --overlay-triplets=$manifestRoot/my-triplets +Run-Vcpkg install --x-manifest-root=$manifestRoot ` + --overlay-triplets=$manifestRoot/my-triplets ` + --x-install-root=$installRoot Throw-IfNotFailed diff --git a/src/vcpkg-test/configmetadata.cpp b/src/vcpkg-test/configmetadata.cpp index a161e30d7e..4d21d904e3 100644 --- a/src/vcpkg-test/configmetadata.cpp +++ b/src/vcpkg-test/configmetadata.cpp @@ -470,9 +470,10 @@ TEST_CASE ("serialize configuration", "[ce-metadata]") { std::string raw = R"json({ "overlay-ports": [ - "./my-ports/fmt" , + "./my-ports/fmt", "/custom-ports", - "../share/team-ports" + "../share/team-ports", + "my-ports/fmt" ] })json"; // parsing of configuration is tested elsewhere diff --git a/src/vcpkg/vcpkgpaths.cpp b/src/vcpkg/vcpkgpaths.cpp index add52e7582..81762abfd9 100644 --- a/src/vcpkg/vcpkgpaths.cpp +++ b/src/vcpkg/vcpkgpaths.cpp @@ -683,12 +683,13 @@ namespace vcpkg auto const p = Path(overlay_path); if (p.is_relative()) { - Path ret = *get_manifest_directory().get() / overlay_path; + Path ret = m_pimpl->m_config.directory / overlay_path; return ret.c_str(); } return overlay_path; }; - if (const auto manifest_dir = get_manifest_directory().get()) + + if (!m_pimpl->m_config.directory.empty()) { auto& config_ports = m_pimpl->m_config.config.overlay_ports; auto& config_triplets = m_pimpl->m_config.config.overlay_triplets; From ed88c70da9d1ecd36336e177bcdaf9a9de314721 Mon Sep 17 00:00:00 2001 From: Valeria Conde Date: Wed, 19 Oct 2022 17:15:30 -0700 Subject: [PATCH 26/26] Comments --- include/vcpkg/vcpkgpaths.h | 1 - src/vcpkg/vcpkgpaths.cpp | 28 +++++----------------------- 2 files changed, 5 insertions(+), 24 deletions(-) diff --git a/include/vcpkg/vcpkgpaths.h b/include/vcpkg/vcpkgpaths.h index 56d0a729d0..6de5d5e0a4 100644 --- a/include/vcpkg/vcpkgpaths.h +++ b/include/vcpkg/vcpkgpaths.h @@ -156,7 +156,6 @@ namespace vcpkg ExpectedS git_checkout_object_from_remote_registry(StringView tree) const; Optional get_manifest() const; - Optional get_manifest_directory() const; const ConfigurationAndSource& get_configuration() const; const RegistrySet& get_registry_set() const; diff --git a/src/vcpkg/vcpkgpaths.cpp b/src/vcpkg/vcpkgpaths.cpp index 81762abfd9..40c9f29476 100644 --- a/src/vcpkg/vcpkgpaths.cpp +++ b/src/vcpkg/vcpkgpaths.cpp @@ -679,22 +679,15 @@ namespace vcpkg m_pimpl->m_config_dir, *this); - auto make_relative_to_manifest = [&](std::string overlay_path) -> std::string { - auto const p = Path(overlay_path); - if (p.is_relative()) - { - Path ret = m_pimpl->m_config.directory / overlay_path; - return ret.c_str(); - } - return overlay_path; + auto resolve_relative_to_config = [&](const std::string& overlay_path) { + return (m_pimpl->m_config.directory / overlay_path).native(); }; if (!m_pimpl->m_config.directory.empty()) { - auto& config_ports = m_pimpl->m_config.config.overlay_ports; - auto& config_triplets = m_pimpl->m_config.config.overlay_triplets; - Util::transform(config_ports, make_relative_to_manifest); - Util::transform(config_triplets, make_relative_to_manifest); + auto& config = m_pimpl->m_config.config; + Util::transform(config.overlay_ports, resolve_relative_to_config); + Util::transform(config.overlay_triplets, resolve_relative_to_config); } overlay_ports = merge_overlays( @@ -1350,17 +1343,6 @@ namespace vcpkg return nullopt; } - Optional VcpkgPaths::get_manifest_directory() const - { - auto& maybe_manifest_dir = m_pimpl->m_manifest_dir; - if (maybe_manifest_dir.empty()) - { - return nullopt; - } - - return maybe_manifest_dir; - } - const ConfigurationAndSource& VcpkgPaths::get_configuration() const { return m_pimpl->m_config; } const RegistrySet& VcpkgPaths::get_registry_set() const