aboutsummaryrefslogtreecommitdiff
path: root/toolsrc/src/commands_build.cpp
diff options
context:
space:
mode:
authorRobert Schumacher <roschuma@microsoft.com>2017-06-19 15:09:54 -0700
committerRobert Schumacher <roschuma@microsoft.com>2017-06-19 15:09:54 -0700
commit34c08e2b15777c86c5aaacfee5f04eed986c62da (patch)
tree5a65eed065343bcb2f999da6937d423fff00c93e /toolsrc/src/commands_build.cpp
parent8d955c83b53d42983ebd9a046a0a0a5ade08537f (diff)
parentbca0988023a8c7bfc896d0f5787eb02e74c6fb59 (diff)
downloadvcpkg-34c08e2b15777c86c5aaacfee5f04eed986c62da.tar.gz
vcpkg-34c08e2b15777c86c5aaacfee5f04eed986c62da.zip
Merge branch 'feature_package_implementation'
Diffstat (limited to 'toolsrc/src/commands_build.cpp')
-rw-r--r--toolsrc/src/commands_build.cpp32
1 files changed, 20 insertions, 12 deletions
diff --git a/toolsrc/src/commands_build.cpp b/toolsrc/src/commands_build.cpp
index 5a5cd462e..a9e4f574e 100644
--- a/toolsrc/src/commands_build.cpp
+++ b/toolsrc/src/commands_build.cpp
@@ -19,11 +19,12 @@ namespace vcpkg::Commands::BuildCommand
static const std::string OPTION_CHECKS_ONLY = "--checks-only";
- void perform_and_exit(const PackageSpec& spec,
+ void perform_and_exit(const FullPackageSpec& full_spec,
const fs::path& port_dir,
const std::unordered_set<std::string>& options,
const VcpkgPaths& paths)
{
+ const PackageSpec& spec = full_spec.package_spec;
if (options.find(OPTION_CHECKS_ONLY) != options.end())
{
auto pre_build_info = Build::PreBuildInfo::from_triplet_file(paths, spec.triplet());
@@ -33,25 +34,32 @@ namespace vcpkg::Commands::BuildCommand
Checks::exit_success(VCPKG_LINE_INFO);
}
- const ExpectedT<SourceParagraph, ParseControlErrorInfo> maybe_spgh =
+ const ExpectedT<SourceControlFile, ParseControlErrorInfo> source_control_file =
Paragraphs::try_load_port(paths.get_filesystem(), port_dir);
- if (!maybe_spgh)
+ if (!source_control_file.has_value())
{
- print_error_message(maybe_spgh.error());
+ print_error_message(source_control_file.error());
Checks::exit_fail(VCPKG_LINE_INFO);
}
- const SourceParagraph& spgh = maybe_spgh.value_or_exit(VCPKG_LINE_INFO);
+ for (std::string str : full_spec.features)
+ {
+ System::println("%s \n", str);
+ }
+ const SourceControlFile& scf = source_control_file.value_or_exit(VCPKG_LINE_INFO);
Checks::check_exit(VCPKG_LINE_INFO,
- spec.name() == spgh.name,
+ spec.name() == scf.core_paragraph.name,
"The Name: field inside the CONTROL does not match the port directory: '%s' != '%s'",
- spgh.name,
+ scf.core_paragraph.name,
spec.name());
StatusParagraphs status_db = database_load_check(paths);
Build::BuildPackageOptions build_package_options{Build::UseHeadVersion::NO, Build::AllowDownloads::YES};
- const Build::BuildPackageConfig build_config{spgh, spec.triplet(), paths.port_dir(spec), build_package_options};
+
+ const Build::BuildPackageConfig build_config{
+ scf.core_paragraph, spec.triplet(), paths.port_dir(spec), build_package_options};
+
const auto result = Build::build_package(paths, build_config, status_db);
if (result.code == BuildResult::CASCADED_DUE_TO_MISSING_DEPENDENCIES)
{
@@ -82,11 +90,11 @@ namespace vcpkg::Commands::BuildCommand
static const std::string example = Commands::Help::create_example_string("build zlib:x64-windows");
args.check_exact_arg_count(
1, example); // Build only takes a single package and all dependencies must already be installed
- const PackageSpec spec =
- Input::check_and_get_package_spec(args.command_arguments.at(0), default_triplet, example);
- Input::check_triplet(spec.triplet(), paths);
+ std::string command_argument = args.command_arguments.at(0);
+ const FullPackageSpec spec = Input::check_and_get_full_package_spec(command_argument, default_triplet, example);
+ Input::check_triplet(spec.package_spec.triplet(), paths);
const std::unordered_set<std::string> options =
args.check_and_get_optional_command_arguments({OPTION_CHECKS_ONLY});
- perform_and_exit(spec, paths.port_dir(spec), options, paths);
+ perform_and_exit(spec, paths.port_dir(spec.package_spec), options, paths);
}
}