diff options
| author | Robert Schumacher <roschuma@microsoft.com> | 2020-02-06 14:40:28 -0800 |
|---|---|---|
| committer | Robert Schumacher <roschuma@microsoft.com> | 2020-02-06 14:40:28 -0800 |
| commit | 5162592a3ad94b92f1e4edfeb35342cbaa68db70 (patch) | |
| tree | e742c05f89551a853cb7b1768a54b0498e501689 | |
| parent | aaddcb1afb3b2db595ba9d6cab5ddf0e9450a7c2 (diff) | |
| download | vcpkg-5162592a3ad94b92f1e4edfeb35342cbaa68db70.tar.gz vcpkg-5162592a3ad94b92f1e4edfeb35342cbaa68db70.zip | |
[vcpkg] Improve error messages when failing to find a backing port
| -rw-r--r-- | toolsrc/src/vcpkg/dependencies.cpp | 21 | ||||
| -rw-r--r-- | toolsrc/src/vcpkg/portfileprovider.cpp | 28 |
2 files changed, 31 insertions, 18 deletions
diff --git a/toolsrc/src/vcpkg/dependencies.cpp b/toolsrc/src/vcpkg/dependencies.cpp index a395b167f..5309501d9 100644 --- a/toolsrc/src/vcpkg/dependencies.cpp +++ b/toolsrc/src/vcpkg/dependencies.cpp @@ -265,12 +265,11 @@ namespace vcpkg::Dependencies m_port_provider.get_control_file(ipv.spec().name()); if (!maybe_scfl) - Checks::exit_with_message(VCPKG_LINE_INFO, - "We could not find a CONTROL file for ", - ipv.spec().to_string(), - ". Please run \"vcpkg remove ", - ipv.spec().to_string(), - "\" and re-attempt."); + Checks::exit_with_message( + VCPKG_LINE_INFO, + "We could not find a CONTROL file for '%s'. Please run \"vcpkg remove %s\" and re-attempt.", + ipv.spec().to_string(), + ipv.spec().to_string()); return m_graph .emplace(std::piecewise_construct, @@ -684,8 +683,8 @@ namespace vcpkg::Dependencies } // And it has at least one qualified dependency - if (paragraph_depends && Util::any_of(*paragraph_depends, - [](auto&& dep) { return !dep.qualifier.empty(); })) + if (paragraph_depends && + Util::any_of(*paragraph_depends, [](auto&& dep) { return !dep.qualifier.empty(); })) { // Add it to the next batch run qualified_dependencies.emplace_back(spec); @@ -864,9 +863,9 @@ namespace vcpkg::Dependencies continue; } auto&& dep_clust = m_graph->get(fspec.spec()); - const auto& default_features = - [&]{ - if (dep_clust.m_install_info.has_value()) return dep_clust.m_scfl.source_control_file->core_paragraph->default_features; + const auto& default_features = [&] { + if (dep_clust.m_install_info.has_value()) + return dep_clust.m_scfl.source_control_file->core_paragraph->default_features; if (auto p = dep_clust.m_installed.get()) return p->ipv.core->package.default_features; Checks::unreachable(VCPKG_LINE_INFO); }(); diff --git a/toolsrc/src/vcpkg/portfileprovider.cpp b/toolsrc/src/vcpkg/portfileprovider.cpp index 6540f2949..04ab918df 100644 --- a/toolsrc/src/vcpkg/portfileprovider.cpp +++ b/toolsrc/src/vcpkg/portfileprovider.cpp @@ -85,15 +85,29 @@ namespace vcpkg::PortFileProvider } } - auto found_scf = Paragraphs::try_load_port(filesystem, ports_dir / spec); - if (auto scf = found_scf.get()) + if (filesystem.exists(ports_dir / spec / "CONTROL")) { - if (scf->get()->core_paragraph->name == spec) + auto found_scf = Paragraphs::try_load_port(filesystem, ports_dir / spec); + if (auto scf = found_scf.get()) { - auto it = cache.emplace(std::piecewise_construct, - std::forward_as_tuple(spec), - std::forward_as_tuple(std::move(*scf), ports_dir / spec)); - return it.first->second; + if (scf->get()->core_paragraph->name == spec) + { + auto it = cache.emplace(std::piecewise_construct, + std::forward_as_tuple(spec), + std::forward_as_tuple(std::move(*scf), ports_dir / spec)); + return it.first->second; + } + Checks::exit_with_message(VCPKG_LINE_INFO, + "Error: Failed to load port from %s: names did not match: '%s' != '%s'", + (ports_dir / spec).u8string(), + spec, + scf->get()->core_paragraph->name); + } + else + { + vcpkg::print_error_message(found_scf.error()); + Checks::exit_with_message( + VCPKG_LINE_INFO, "Error: Failed to load port from %s", spec, ports_dir.u8string()); } } } |
