diff --git a/include/vcpkg/build.h b/include/vcpkg/build.h index f2af674304..1ee4f4030c 100644 --- a/include/vcpkg/build.h +++ b/include/vcpkg/build.h @@ -38,7 +38,8 @@ namespace vcpkg::Build CASCADED_DUE_TO_MISSING_DEPENDENCIES, EXCLUDED, CACHE_MISSING, - DOWNLOADED + DOWNLOADED, + REMOVED }; struct IBuildLogsRecorder @@ -204,6 +205,7 @@ namespace vcpkg::Build int excluded = 0; int cache_missing = 0; int downloaded = 0; + int removed = 0; void increment(const BuildResult build_result); void println(const Triplet& triplet) const; diff --git a/locales/messages.en.json b/locales/messages.en.json index 6a83aaff31..44920c4f70 100644 --- a/locales/messages.en.json +++ b/locales/messages.en.json @@ -17,6 +17,7 @@ "BuildResultExcluded": "EXCLUDED", "BuildResultFileConflicts": "FILE_CONFLICTS", "BuildResultPostBuildChecksFailed": "POST_BUILD_CHECKS_FAILED", + "BuildResultRemoved": "REMOVED", "BuildResultSucceeded": "SUCCEEDED", "BuildResultSummaryHeader": "SUMMARY FOR {triplet}", "BuildResultSummaryLine": " {build_result}: {count}", diff --git a/locales/messages.json b/locales/messages.json index dbae709942..50f6b12384 100644 --- a/locales/messages.json +++ b/locales/messages.json @@ -34,6 +34,8 @@ "_BuildResultFileConflicts.comment": "Printed after the name of an installed entity to indicate that it conflicts with something already installed\n", "BuildResultPostBuildChecksFailed": "POST_BUILD_CHECKS_FAILED", "_BuildResultPostBuildChecksFailed.comment": "Printed after the name of an installed entity to indicate that it built successfully, but that it failed post build checks.\n", + "BuildResultRemoved": "REMOVED", + "_BuildResultRemoved.comment": "Printed after the name of an uninstalled entity to indicate that it was successfully uninstalled.\n", "BuildResultSucceeded": "SUCCEEDED", "_BuildResultSucceeded.comment": "Printed after the name of an installed entity to indicate that it was built and installed successfully.\n", "BuildResultSummaryHeader": "SUMMARY FOR {triplet}", diff --git a/src/vcpkg/build.cpp b/src/vcpkg/build.cpp index 3b00b5575f..b9d195dff2 100644 --- a/src/vcpkg/build.cpp +++ b/src/vcpkg/build.cpp @@ -111,6 +111,12 @@ namespace "downloaded but no build or install was requested.", "DOWNLOADED"); + DECLARE_AND_REGISTER_MESSAGE( + BuildResultRemoved, + (), + "Printed after the name of an uninstalled entity to indicate that it was successfully uninstalled.", + "REMOVED"); + DECLARE_AND_REGISTER_MESSAGE(BuildingPackageFailed, (msg::spec, msg::build_result), "", @@ -1463,37 +1469,34 @@ namespace vcpkg::Build case BuildResult::EXCLUDED: ++excluded; return; case BuildResult::CACHE_MISSING: ++cache_missing; return; case BuildResult::DOWNLOADED: ++downloaded; return; + case BuildResult::REMOVED: ++removed; return; default: Checks::unreachable(VCPKG_LINE_INFO); } } + template + static void print_build_result_summary_line(Message build_result_message, int count) + { + if (count != 0) + { + msg::println( + msgBuildResultSummaryLine, msg::build_result = msg::format(build_result_message), msg::count = count); + } + } + void BuildResultCounts::println(const Triplet& triplet) const { msg::println(msgBuildResultSummaryHeader, msg::triplet = triplet); - // NULLVALUE intentionally not printed - msg::println(msgBuildResultSummaryLine, - msg::build_result = msg::format(msgBuildResultSucceeded), - msg::count = succeeded); - msg::println(msgBuildResultSummaryLine, - msg::build_result = msg::format(msgBuildResultBuildFailed), - msg::count = build_failed); - msg::println(msgBuildResultSummaryLine, - msg::build_result = msg::format(msgBuildResultPostBuildChecksFailed), - msg::count = post_build_checks_failed); - msg::println(msgBuildResultSummaryLine, - msg::build_result = msg::format(msgBuildResultFileConflicts), - msg::count = file_conflicts); - msg::println(msgBuildResultSummaryLine, - msg::build_result = msg::format(msgBuildResultCascadeDueToMissingDependencies), - msg::count = cascaded_due_to_missing_dependencies); - msg::println( - msgBuildResultSummaryLine, msg::build_result = msg::format(msgBuildResultExcluded), msg::count = excluded); - msg::println(msgBuildResultSummaryLine, - msg::build_result = msg::format(msgBuildResultCacheMissing), - msg::count = cache_missing); - msg::println(msgBuildResultSummaryLine, - msg::build_result = msg::format(msgBuildResultDownloaded), - msg::count = downloaded); + print_build_result_summary_line(msgBuildResultSucceeded, succeeded); + print_build_result_summary_line(msgBuildResultBuildFailed, build_failed); + print_build_result_summary_line(msgBuildResultPostBuildChecksFailed, post_build_checks_failed); + print_build_result_summary_line(msgBuildResultFileConflicts, file_conflicts); + print_build_result_summary_line(msgBuildResultCascadeDueToMissingDependencies, + cascaded_due_to_missing_dependencies); + print_build_result_summary_line(msgBuildResultExcluded, excluded); + print_build_result_summary_line(msgBuildResultCacheMissing, cache_missing); + print_build_result_summary_line(msgBuildResultDownloaded, downloaded); + print_build_result_summary_line(msgBuildResultRemoved, removed); } StringLiteral to_string_locale_invariant(const BuildResult build_result) @@ -1508,6 +1511,7 @@ namespace vcpkg::Build case BuildResult::EXCLUDED: return "EXCLUDED"; case BuildResult::CACHE_MISSING: return "CACHE_MISSING"; case BuildResult::DOWNLOADED: return "DOWNLOADED"; + case BuildResult::REMOVED: return "REMOVED"; default: Checks::unreachable(VCPKG_LINE_INFO); } } @@ -1525,6 +1529,7 @@ namespace vcpkg::Build case BuildResult::EXCLUDED: return msg::format(msgBuildResultExcluded); case BuildResult::CACHE_MISSING: return msg::format(msgBuildResultCacheMissing); case BuildResult::DOWNLOADED: return msg::format(msgBuildResultDownloaded); + case BuildResult::REMOVED: return msg::format(msgBuildResultRemoved); default: Checks::unreachable(VCPKG_LINE_INFO); } } diff --git a/src/vcpkg/install.cpp b/src/vcpkg/install.cpp index 0f5ea43aeb..abf258735f 100644 --- a/src/vcpkg/install.cpp +++ b/src/vcpkg/install.cpp @@ -528,6 +528,7 @@ namespace vcpkg::Install { TrackedPackageInstallGuard this_install(action_index++, action_count, results, action); Remove::perform_remove_plan_action(paths, action, Remove::Purge::YES, &status_db); + results.back().build_result.emplace(BuildResult::REMOVED); } for (auto&& action : action_plan.already_installed)