aboutsummaryrefslogtreecommitdiff
path: root/toolsrc/src
diff options
context:
space:
mode:
authorAlexander Karatarakis <alkarata@microsoft.com>2017-12-06 14:42:17 -0800
committerAlexander Karatarakis <alkarata@microsoft.com>2017-12-06 14:42:17 -0800
commitd540915a3aaab722e9b627ae001168be52333662 (patch)
treee03d37abb3fdc76fbb639935fb89a271b692e6d7 /toolsrc/src
parent705c8f201273e9bdad9508903d26b21f5d76f1c3 (diff)
downloadvcpkg-d540915a3aaab722e9b627ae001168be52333662.tar.gz
vcpkg-d540915a3aaab722e9b627ae001168be52333662.zip
Improve error message on invalid dependency of package
Diffstat (limited to 'toolsrc/src')
-rw-r--r--toolsrc/src/vcpkg/dependencies.cpp6
-rw-r--r--toolsrc/src/vcpkg/packagespec.cpp27
2 files changed, 27 insertions, 6 deletions
diff --git a/toolsrc/src/vcpkg/dependencies.cpp b/toolsrc/src/vcpkg/dependencies.cpp
index 6f599afd4..0a1f79834 100644
--- a/toolsrc/src/vcpkg/dependencies.cpp
+++ b/toolsrc/src/vcpkg/dependencies.cpp
@@ -114,19 +114,19 @@ namespace vcpkg::Dependencies
{
if (const auto p = this->status_paragraph.get())
{
- return PackageSpec::to_package_specs(p->package.depends, triplet);
+ return PackageSpec::from_dependencies_of_port(p->package.spec.name(), p->package.depends, triplet);
}
if (const auto p = this->binary_control_file.get())
{
auto deps = Util::fmap_flatten(p->features, [](const BinaryParagraph& pgh) { return pgh.depends; });
deps.insert(deps.end(), p->core_paragraph.depends.cbegin(), p->core_paragraph.depends.cend());
- return PackageSpec::to_package_specs(deps, triplet);
+ return PackageSpec::from_dependencies_of_port(p->core_paragraph.spec.name(), deps, triplet);
}
if (const auto p = this->source_paragraph.get())
{
- return PackageSpec::to_package_specs(filter_dependencies(p->depends, triplet), triplet);
+ return PackageSpec::from_dependencies_of_port(p->name, filter_dependencies(p->depends, triplet), triplet);
}
Checks::exit_with_message(VCPKG_LINE_INFO,
diff --git a/toolsrc/src/vcpkg/packagespec.cpp b/toolsrc/src/vcpkg/packagespec.cpp
index 17189afcf..a9e072094 100644
--- a/toolsrc/src/vcpkg/packagespec.cpp
+++ b/toolsrc/src/vcpkg/packagespec.cpp
@@ -96,8 +96,8 @@ namespace vcpkg
std::vector<PackageSpec> PackageSpec::to_package_specs(const std::vector<std::string>& ports,
const Triplet& triplet)
{
- return Util::fmap(ports, [&](const std::string& s) -> PackageSpec {
- auto maybe_spec = PackageSpec::from_name_and_triplet(s, triplet);
+ return Util::fmap(ports, [&](const std::string& spec_as_string) -> PackageSpec {
+ auto maybe_spec = PackageSpec::from_name_and_triplet(spec_as_string, triplet);
if (auto spec = maybe_spec.get())
{
return std::move(*spec);
@@ -107,7 +107,28 @@ namespace vcpkg
Checks::exit_with_message(VCPKG_LINE_INFO,
"Invalid package: %s\n"
"%s",
- s,
+ spec_as_string,
+ vcpkg::to_string(error_type));
+ });
+ }
+
+ std::vector<PackageSpec> PackageSpec::from_dependencies_of_port(const std::string& port,
+ const std::vector<std::string>& dependencies,
+ const Triplet& triplet)
+ {
+ return Util::fmap(dependencies, [&](const std::string& spec_as_string) -> PackageSpec {
+ auto maybe_spec = PackageSpec::from_name_and_triplet(spec_as_string, triplet);
+ if (auto spec = maybe_spec.get())
+ {
+ return std::move(*spec);
+ }
+
+ const PackageSpecParseResult error_type = maybe_spec.error();
+ Checks::exit_with_message(VCPKG_LINE_INFO,
+ "Invalid dependency [%s] in package [%s]\n"
+ "%s",
+ spec_as_string,
+ port,
vcpkg::to_string(error_type));
});
}