diff options
| author | Robert Schumacher <roschuma@microsoft.com> | 2017-06-19 15:09:54 -0700 |
|---|---|---|
| committer | Robert Schumacher <roschuma@microsoft.com> | 2017-06-19 15:09:54 -0700 |
| commit | 34c08e2b15777c86c5aaacfee5f04eed986c62da (patch) | |
| tree | 5a65eed065343bcb2f999da6937d423fff00c93e /toolsrc/src/commands_build.cpp | |
| parent | 8d955c83b53d42983ebd9a046a0a0a5ade08537f (diff) | |
| parent | bca0988023a8c7bfc896d0f5787eb02e74c6fb59 (diff) | |
| download | vcpkg-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.cpp | 32 |
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); } } |
