aboutsummaryrefslogtreecommitdiff
path: root/toolsrc/src/vcpkg_Build.cpp
diff options
context:
space:
mode:
authorRobert Schumacher <roschuma@microsoft.com>2017-05-02 17:52:59 -0700
committerRobert Schumacher <roschuma@microsoft.com>2017-05-02 17:52:59 -0700
commitf10861fa7af9bd675cb4e80ea31d85d7e5c6d906 (patch)
tree7d3e91d469246b20ac651c24ec123184bc4b8e09 /toolsrc/src/vcpkg_Build.cpp
parent8c1b8b5ed7485079730dfe3d93416feba5f74d04 (diff)
downloadvcpkg-f10861fa7af9bd675cb4e80ea31d85d7e5c6d906.tar.gz
vcpkg-f10861fa7af9bd675cb4e80ea31d85d7e5c6d906.zip
[vcpkg] Reduce arguments to build_package() by bundling
Diffstat (limited to 'toolsrc/src/vcpkg_Build.cpp')
-rw-r--r--toolsrc/src/vcpkg_Build.cpp41
1 files changed, 21 insertions, 20 deletions
diff --git a/toolsrc/src/vcpkg_Build.cpp b/toolsrc/src/vcpkg_Build.cpp
index ca731e759..2573feb68 100644
--- a/toolsrc/src/vcpkg_Build.cpp
+++ b/toolsrc/src/vcpkg_Build.cpp
@@ -40,26 +40,25 @@ namespace vcpkg::Build
static void create_binary_control_file(const VcpkgPaths& paths,
const SourceParagraph& source_paragraph,
- const Triplet& triplet)
+ const Triplet& triplet,
+ const BuildInfo& build_info)
{
const BinaryParagraph bpgh = BinaryParagraph(source_paragraph, triplet);
const fs::path binary_control_file = paths.packages / bpgh.dir() / "CONTROL";
paths.get_filesystem().write_contents(binary_control_file, Strings::serialize(bpgh));
}
- ExtendedBuildResult build_package(const SourceParagraph& source_paragraph,
- const PackageSpec& spec,
- const VcpkgPaths& paths,
- const fs::path& port_dir,
+ ExtendedBuildResult build_package(const VcpkgPaths& paths,
+ const BuildPackageConfig& config,
const StatusParagraphs& status_db)
{
- Checks::check_exit(
- VCPKG_LINE_INFO, spec.name() == source_paragraph.name, "inconsistent arguments to build_package()");
+ const PackageSpec spec =
+ PackageSpec::from_name_and_triplet(config.src.name, config.triplet).value_or_exit(VCPKG_LINE_INFO);
- const Triplet& triplet = spec.triplet();
+ const Triplet& triplet = config.triplet;
{
std::vector<PackageSpec> missing_specs;
- for (auto&& dep : filter_dependencies(source_paragraph.depends, triplet))
+ for (auto&& dep : filter_dependencies(config.src.depends, triplet))
{
if (status_db.find_installed(dep, triplet) == status_db.end())
{
@@ -81,14 +80,15 @@ namespace vcpkg::Build
const Toolset& toolset = paths.get_toolset();
const auto cmd_set_environment = make_build_env_cmd(triplet, toolset);
- const std::wstring cmd_launch_cmake = make_cmake_cmd(cmake_exe_path,
- ports_cmake_script_path,
- {{L"CMD", L"BUILD"},
- {L"PORT", source_paragraph.name},
- {L"CURRENT_PORT_DIR", port_dir / "/."},
- {L"TARGET_TRIPLET", triplet.canonical_name()},
- {L"VCPKG_PLATFORM_TOOLSET", toolset.version},
- {L"GIT", git_exe_path}});
+ const std::wstring cmd_launch_cmake =
+ make_cmake_cmd(cmake_exe_path,
+ ports_cmake_script_path,
+ {{L"CMD", L"BUILD"},
+ {L"PORT", config.src.name},
+ {L"CURRENT_PORT_DIR", config.port_dir / "/."},
+ {L"TARGET_TRIPLET", triplet.canonical_name()},
+ {L"VCPKG_PLATFORM_TOOLSET", toolset.version},
+ {L"GIT", git_exe_path}});
const std::wstring command = Strings::wformat(LR"(%s && %s)", cmd_set_environment, cmd_launch_cmake);
@@ -96,12 +96,13 @@ namespace vcpkg::Build
int return_code = System::cmd_execute_clean(command);
auto buildtimeus = timer.microseconds();
- Metrics::track_metric("buildtimeus-" + spec.to_string(), buildtimeus);
+ const auto spec_string = spec.to_string();
+ Metrics::track_metric("buildtimeus-" + spec_string, buildtimeus);
if (return_code != 0)
{
Metrics::track_property("error", "build failed");
- Metrics::track_property("build_error", spec.to_string());
+ Metrics::track_property("build_error", spec_string);
return {BuildResult::BUILD_FAILED, {}};
}
@@ -113,7 +114,7 @@ namespace vcpkg::Build
return {BuildResult::POST_BUILD_CHECKS_FAILED, {}};
}
- create_binary_control_file(paths, source_paragraph, triplet);
+ create_binary_control_file(paths, config.src, triplet, build_info);
// const fs::path port_buildtrees_dir = paths.buildtrees / spec.name;
// delete_directory(port_buildtrees_dir);