aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRobert Schumacher <roschuma@microsoft.com>2020-02-06 14:40:28 -0800
committerRobert Schumacher <roschuma@microsoft.com>2020-02-06 14:40:28 -0800
commit5162592a3ad94b92f1e4edfeb35342cbaa68db70 (patch)
treee742c05f89551a853cb7b1768a54b0498e501689
parentaaddcb1afb3b2db595ba9d6cab5ddf0e9450a7c2 (diff)
downloadvcpkg-5162592a3ad94b92f1e4edfeb35342cbaa68db70.tar.gz
vcpkg-5162592a3ad94b92f1e4edfeb35342cbaa68db70.zip
[vcpkg] Improve error messages when failing to find a backing port
-rw-r--r--toolsrc/src/vcpkg/dependencies.cpp21
-rw-r--r--toolsrc/src/vcpkg/portfileprovider.cpp28
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());
}
}
}