From 09ae1d1a1c4564eae4cc4b42f3ec5bbdd6d055b5 Mon Sep 17 00:00:00 2001 From: Thomas1664 <46387399+Thomas1664@users.noreply.github.com> Date: Sun, 8 Oct 2023 12:19:49 +0200 Subject: [PATCH 01/60] wip --- include/vcpkg/abi.h | 56 ++++ include/vcpkg/commands.build.h | 34 --- include/vcpkg/commands.install.h | 8 +- include/vcpkg/dependencies.h | 1 + include/vcpkg/fwd/abi.h | 7 + include/vcpkg/fwd/build.h | 2 - src/vcpkg-test/binarycaching.cpp | 1 + src/vcpkg-test/spdx.cpp | 1 + src/vcpkg/abi.cpp | 459 +++++++++++++++++++++++++++++++ src/vcpkg/commands.build.cpp | 269 +----------------- src/vcpkg/commands.ci.cpp | 1 + src/vcpkg/dependencies.cpp | 1 + 12 files changed, 534 insertions(+), 306 deletions(-) create mode 100644 include/vcpkg/abi.h create mode 100644 include/vcpkg/fwd/abi.h create mode 100644 src/vcpkg/abi.cpp diff --git a/include/vcpkg/abi.h b/include/vcpkg/abi.h new file mode 100644 index 0000000000..e0270b01f9 --- /dev/null +++ b/include/vcpkg/abi.h @@ -0,0 +1,56 @@ +#pragma once + +#include +#include + +#include +#include +#include +#include + +#include +#include +#include +#include + + +#include +#include +#include + +namespace vcpkg +{ + struct AbiEntry + { + std::string key; + std::string value; + + AbiEntry() = default; + AbiEntry(std::string key, std::string value) : key(std::move(key)), value(std::move(value)) { } + + bool operator<(const AbiEntry& other) const noexcept + { + return key < other.key || (key == other.key && value < other.value); + } + }; + + struct AbiInfo + { + // These should always be known if an AbiInfo exists + std::unique_ptr pre_build_info; + Optional toolset; + // These might not be known if compiler tracking is turned off or the port is --editable + Optional compiler_info; + Optional triplet_abi; + std::string package_abi; + Optional abi_tag_file; + std::vector relative_port_files; + std::vector relative_port_hashes; + std::vector heuristic_resources; + }; + + void compute_all_abis(const VcpkgPaths& paths, + ActionPlan& action_plan, + const CMakeVars::CMakeVarProvider& var_provider, + const StatusParagraphs& status_db); +} // namespace vcpkg diff --git a/include/vcpkg/commands.build.h b/include/vcpkg/commands.build.h index 5a4e2efe46..a4e4356134 100644 --- a/include/vcpkg/commands.build.h +++ b/include/vcpkg/commands.build.h @@ -237,20 +237,6 @@ namespace vcpkg BuildInfo read_build_info(const ReadOnlyFilesystem& fs, const Path& filepath); - struct AbiEntry - { - std::string key; - std::string value; - - AbiEntry() = default; - AbiEntry(StringView key, StringView value) : key(key.to_string()), value(value.to_string()) { } - - bool operator<(const AbiEntry& other) const - { - return key < other.key || (key == other.key && value < other.value); - } - }; - struct CompilerInfo { std::string id; @@ -258,26 +244,6 @@ namespace vcpkg std::string hash; }; - struct AbiInfo - { - // These should always be known if an AbiInfo exists - std::unique_ptr pre_build_info; - Optional toolset; - // These might not be known if compiler tracking is turned off or the port is --editable - Optional compiler_info; - Optional triplet_abi; - std::string package_abi; - Optional abi_tag_file; - std::vector relative_port_files; - std::vector relative_port_hashes; - std::vector heuristic_resources; - }; - - void compute_all_abis(const VcpkgPaths& paths, - ActionPlan& action_plan, - const CMakeVars::CMakeVarProvider& var_provider, - const StatusParagraphs& status_db); - struct EnvCache { explicit EnvCache(bool compiler_tracking) : m_compiler_tracking(compiler_tracking) { } diff --git a/include/vcpkg/commands.install.h b/include/vcpkg/commands.install.h index 33c9eb0b60..9eb7af89f5 100644 --- a/include/vcpkg/commands.install.h +++ b/include/vcpkg/commands.install.h @@ -59,14 +59,18 @@ namespace vcpkg const Path& destination() const; const Path& listfile() const; }; - + #define INSTALL_FILES_PERF void install_package_and_write_listfile(const Filesystem& fs, const Path& source_dir, const InstallDir& destination_dir); void install_files_and_write_listfile(const Filesystem& fs, const Path& source_dir, - const std::vector& files, + #ifdef INSTALL_FILES_PERF + std::vector&& files, + #else + const std::vector& files, + #endif const InstallDir& destination_dir); InstallResult install_package(const VcpkgPaths& paths, diff --git a/include/vcpkg/dependencies.h b/include/vcpkg/dependencies.h index 303d5c493c..a65baf2b30 100644 --- a/include/vcpkg/dependencies.h +++ b/include/vcpkg/dependencies.h @@ -5,6 +5,7 @@ #include +#include #include #include #include diff --git a/include/vcpkg/fwd/abi.h b/include/vcpkg/fwd/abi.h new file mode 100644 index 0000000000..4ad715d847 --- /dev/null +++ b/include/vcpkg/fwd/abi.h @@ -0,0 +1,7 @@ +#pragma once + +namespace vcpkg +{ + struct AbiInfo; + struct AbiEntry; +} diff --git a/include/vcpkg/fwd/build.h b/include/vcpkg/fwd/build.h index c65ca91036..ec80c0123e 100644 --- a/include/vcpkg/fwd/build.h +++ b/include/vcpkg/fwd/build.h @@ -117,9 +117,7 @@ namespace vcpkg struct PreBuildInfo; struct ExtendedBuildResult; struct BuildInfo; - struct AbiEntry; struct CompilerInfo; - struct AbiInfo; struct EnvCache; struct BuildCommand; } diff --git a/src/vcpkg-test/binarycaching.cpp b/src/vcpkg-test/binarycaching.cpp index e49924d4a2..f14d9efc9e 100644 --- a/src/vcpkg-test/binarycaching.cpp +++ b/src/vcpkg-test/binarycaching.cpp @@ -3,6 +3,7 @@ #include #include +#include #include #include #include diff --git a/src/vcpkg-test/spdx.cpp b/src/vcpkg-test/spdx.cpp index 937dcda4a8..d736fa922c 100644 --- a/src/vcpkg-test/spdx.cpp +++ b/src/vcpkg-test/spdx.cpp @@ -1,3 +1,4 @@ +#include #include #include diff --git a/src/vcpkg/abi.cpp b/src/vcpkg/abi.cpp new file mode 100644 index 0000000000..e68584c4a7 --- /dev/null +++ b/src/vcpkg/abi.cpp @@ -0,0 +1,459 @@ +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include +#include + +#include +#include +#include + +namespace +{ + using namespace vcpkg; + + std::string grdk_hash(const Filesystem& fs, + Cache>& grdk_cache, + const PreBuildInfo& pre_build_info) + { + if (auto game_dk_latest = pre_build_info.gamedk_latest_path.get()) + { + const auto grdk_header_path = *game_dk_latest / "GRDK/gameKit/Include/grdk.h"; + const auto& maybe_header_hash = grdk_cache.get_lazy(grdk_header_path, [&]() -> Optional { + auto maybe_hash = Hash::get_file_hash(fs, grdk_header_path, Hash::Algorithm::Sha256); + if (auto hash = maybe_hash.get()) + { + return std::move(*hash); + } + else + { + return nullopt; + } + }); + + if (auto header_hash = maybe_header_hash.get()) + { + return *header_hash; + } + } + + return "none"; + } + + void abi_entries_from_pre_build_info(const Filesystem& fs, + Cache>& grdk_cache, + const PreBuildInfo& pre_build_info, + std::vector& abi_tag_entries) + { + if (pre_build_info.public_abi_override) + { + abi_tag_entries.emplace_back( + "public_abi_override", + Hash::get_string_hash(pre_build_info.public_abi_override.value_or_exit(VCPKG_LINE_INFO), + Hash::Algorithm::Sha256)); + } + + for (const auto& env_var : pre_build_info.passthrough_env_vars_tracked) + { + auto maybe_env_var_value = get_environment_variable(env_var); + if (auto env_var_value = maybe_env_var_value.get()) + { + abi_tag_entries.emplace_back("ENV:" + env_var, + Hash::get_string_hash(*env_var_value, Hash::Algorithm::Sha256)); + } + } + + if (pre_build_info.target_is_xbox) + { + abi_tag_entries.emplace_back("grdk.h", grdk_hash(fs, grdk_cache, pre_build_info)); + } + } + + // Calculate abi hashes that are the same for each port during one run + void get_system_abi(const VcpkgPaths& paths, std::vector& abi_entries) + { + abi_entries.emplace_back("cmake", paths.get_tool_version(Tools::CMAKE, stdout_sink)); + abi_entries.emplace_back("ports.cmake", paths.get_ports_cmake_hash().to_string()); + abi_entries.emplace_back("post_build_checks", "2"); + + // This #ifdef is mirrored in tools.cpp's PowershellProvider +#if defined(_WIN32) + abi_entries.emplace_back("powershell", paths.get_tool_version("powershell-core", stdout_sink)); +#endif + } + + std::vector> get_ports_files_and_contents(const Filesystem& fs, + const Path& port_root_dir) + { + auto files = fs.get_regular_files_recursive_lexically_proximate(port_root_dir, VCPKG_LINE_INFO); + + std::vector> files_and_content; + files_and_content.reserve(files.size()); + + for (auto&& file : files) + { + if (file.filename() == ".DS_Store") + { + continue; + } + std::string contents = fs.read_contents(port_root_dir / file, VCPKG_LINE_INFO); + files_and_content.emplace_back(std::move(file), std::move(contents)); + } + return files_and_content; + } + + // Get abi for per-port files + std::pair, std::string> get_port_files(const Filesystem& fs, + std::vector abi_entries, + const SourceControlFileAndLocation& scfl) + { + auto files_and_content = get_ports_files_and_contents(fs, scfl.source_location); + auto& paragraph = scfl.source_control_file->core_paragraph; + + // If there is an unusually large number of files in the port then + // something suspicious is going on. + constexpr size_t max_port_file_count = 100; + + if (files_and_content.size() > max_port_file_count) + { + msg::println_warning( + msgHashPortManyFiles, msg::package_name = paragraph->name, msg::count = files_and_content.size()); + } + + std::vector port_files; + abi_entries.reserve(files_and_content.size()); + + std::string portfile_cmake_contents; + for (auto&& [port_file, contents] : files_and_content) + { + if (port_file.extension() == ".cmake") + { + portfile_cmake_contents += contents; + } + + auto path_str = std::move(port_file).native(); + port_files.emplace_back(path_str); + abi_entries.emplace_back(std::move(path_str), Hash::get_string_sha256(contents)); + } + return {std::move(port_files), std::move(portfile_cmake_contents)}; + } + + + void get_feature_abi(InternalFeatureSet sorted_feature_list, std::vector& abi_entries) + { + // Check that no "default" feature is present. Default features must be resolved before attempting to calculate + // a package ABI, so the "default" should not have made it here. + static constexpr StringLiteral default_literal{"default"}; + const bool has_no_pseudo_features = std::none_of( + sorted_feature_list.begin(), sorted_feature_list.end(), [](StringView s) { return s == default_literal; }); + Checks::check_exit(VCPKG_LINE_INFO, has_no_pseudo_features); + Util::sort_unique_erase(sorted_feature_list); + + // Check that the "core" feature is present. After resolution into InternalFeatureSet "core" meaning "not + // default" should have already been handled so "core" should be here. + Checks::check_exit( + VCPKG_LINE_INFO, + std::binary_search(sorted_feature_list.begin(), sorted_feature_list.end(), StringLiteral{"core"})); + + abi_entries.emplace_back("features", Strings::join(";", sorted_feature_list)); + } + + + // calculate abi of port-internal files and system environment + Optional> make_private_abi(const VcpkgPaths& paths, + InstallPlanAction& action, + std::unique_ptr&& proto_pre_build_info, + Cache>& grdk_cache) + { + const auto& pre_build_info = *proto_pre_build_info; + const auto& toolset = paths.get_toolset(pre_build_info); + auto& abi_info = action.abi_info.emplace(); + abi_info.pre_build_info = std::move(proto_pre_build_info); + abi_info.toolset.emplace(toolset); + + if (Util::Enum::to_bool(action.build_options.only_downloads)) + return nullopt; + + if (action.build_options.use_head_version == UseHeadVersion::YES) + { + Debug::print("Binary caching for package ", action.spec, " is disabled due to --head\n"); + return nullopt; + } + if (action.build_options.editable == Editable::YES) + { + Debug::print("Binary caching for package ", action.spec, " is disabled due to --editable\n"); + return nullopt; + } + + + auto& fs = paths.get_filesystem(); + std::vector abi_tag_entries; + abi_entries_from_pre_build_info(fs, grdk_cache, *action.abi_info.get()->pre_build_info, abi_tag_entries); + get_system_abi(paths, abi_tag_entries); + + auto& scfl = action.source_control_file_and_location.value_or_exit(VCPKG_LINE_INFO); + auto&& [port_files, cmake_contents] = get_port_files(fs, abi_tag_entries, scfl); + + for (auto&& helper : paths.get_cmake_script_hashes()) + { + if (Strings::case_insensitive_ascii_contains(cmake_contents, helper.first)) + { + abi_tag_entries.emplace_back(helper.first, helper.second); + } + } + abi_info.heuristic_resources.push_back(run_resource_heuristics(cmake_contents, scfl.source_control_file->core_paragraph->raw_version)); + + get_feature_abi(action.feature_list, abi_tag_entries); + + return abi_tag_entries; + } + +} // anonymos namespace + +namespace vcpkg +{ + +#define ABI_PERF +#ifdef ABI_PERF + static Optional> populate_abi_tag(const VcpkgPaths& paths, +#else + static void populate_abi_tag(const VcpkgPaths& paths, +#endif + InstallPlanAction& action, + Cache>& grdk_cache) + { + std::vector abi_tag_entries(dependency_abis.begin(), dependency_abis.end()); + + const auto& triplet_abi = paths.get_triplet_info(*abi_info.pre_build_info, *abi_info.toolset.get()); + abi_info.triplet_abi.emplace(triplet_abi); + const auto& triplet_canonical_name = action.spec.triplet().canonical_name(); + abi_tag_entries.emplace_back("triplet", triplet_canonical_name); + abi_tag_entries.emplace_back("triplet_abi", triplet_abi); + auto& fs = paths.get_filesystem(); + abi_entries_from_pre_build_info(fs, grdk_cache, *abi_info.pre_build_info, abi_tag_entries); + + abi_info.compiler_info = paths.get_compiler_info(*abi_info.pre_build_info, toolset); + for (auto&& dep_abi : dependency_abis) + { + if (dep_abi.value.empty()) + { + Debug::print("Binary caching for package ", + action.spec, + " is disabled due to missing abi info for ", + dep_abi.key, + '\n'); + return false; + } + } + return true; + + auto system_abi = get_system_abi(paths); + abi_tag_entries.insert(abi_tag_entries.end(), system_abi.begin(), system_abi.end()); + + auto&& scfl = action.source_control_file_and_location.value_or_exit(VCPKG_LINE_INFO); + auto&& [port_files_abi, cmake_contents] = get_port_abi_and_cmake_content(fs, scfl); + + for (auto&& helper : paths.get_cmake_script_hashes()) + { + if (Strings::case_insensitive_ascii_contains(cmake_contents, helper.first)) + { +#ifdef PERF + abi_tag_entries.emplace_back(helper.first, helper.second.value_or_exit(VCPKG_LINE_INFO)); +#else + abi_tag_entries.emplace_back(helper.first, helper.second); +#endif + } + } + + InternalFeatureSet sorted_feature_list = action.feature_list; + // Check that no "default" feature is present. Default features must be resolved before attempting to calculate + // a package ABI, so the "default" should not have made it here. + static constexpr StringLiteral default_literal{"default"}; + const bool has_no_pseudo_features = std::none_of( + sorted_feature_list.begin(), sorted_feature_list.end(), [](StringView s) { return s == default_literal; }); + Checks::check_exit(VCPKG_LINE_INFO, has_no_pseudo_features); + Util::sort_unique_erase(sorted_feature_list); + + // Check that the "core" feature is present. After resolution into InternalFeatureSet "core" meaning "not + // default" should have already been handled so "core" should be here. + Checks::check_exit( + VCPKG_LINE_INFO, + std::binary_search(sorted_feature_list.begin(), sorted_feature_list.end(), StringLiteral{"core"})); + + abi_tag_entries.emplace_back("features", Strings::join(";", sorted_feature_list)); + + Util::sort(abi_tag_entries); + + std::string full_abi_info = + Strings::join("", abi_tag_entries, [](const AbiEntry& p) { return p.key + " " + p.value + "\n"; }); + + if (Debug::g_debugging) + { + std::string message = Strings::concat("[DEBUG] \n"); + for (auto&& entry : abi_tag_entries) + { + Strings::append(message, "[DEBUG] ", entry.key, "|", entry.value, "\n"); + } + Strings::append(message, "[DEBUG] \n"); + msg::write_unlocalized_text_to_stdout(Color::none, message); + } + + auto abi_tag_entries_missing = Util::filter(abi_tag_entries, [](const AbiEntry& p) { return p.value.empty(); }); + if (!abi_tag_entries_missing.empty()) + { + Debug::println("Warning: abi keys are missing values:\n", + Strings::join("\n", abi_tag_entries_missing, [](const AbiEntry& e) -> const std::string& { + return e.key; + })); +#ifdef ABI_PERF + return nullopt; +#else + return; +#endif + } +#ifdef ABI_PERF + auto abi_file_path = paths.build_dir(action.spec); + abi_file_path /= triplet_canonical_name + ".vcpkg_abi_info.txt"; + + abi_info.package_abi = Hash::get_string_sha256(full_abi_info); + abi_info.abi_tag_file.emplace(abi_file_path); + + return std::make_pair(std::move(abi_file_path), std::move(full_abi_info)); +#else + auto abi_file_path = paths.build_dir(action.spec); + fs.create_directory(abi_file_path, VCPKG_LINE_INFO); + abi_file_path /= triplet_canonical_name + ".vcpkg_abi_info.txt"; + fs.write_contents(abi_file_path, full_abi_info, VCPKG_LINE_INFO); + + auto& scf = action.source_control_file_and_location.value_or_exit(VCPKG_LINE_INFO).source_control_file; + + abi_info.package_abi = Hash::get_string_sha256(full_abi_info); + abi_info.abi_tag_file.emplace(std::move(abi_file_path)); + abi_info.relative_port_files = std::move(files); + abi_info.relative_port_hashes = std::move(hashes); + abi_info.heuristic_resources.push_back( + run_resource_heuristics(portfile_cmake_contents, scf->core_paragraph->raw_version)); +#endif + } + + void compute_all_abis(const VcpkgPaths& paths, + ActionPlan& action_plan, + const CMakeVars::CMakeVarProvider& var_provider, + const StatusParagraphs& status_db) + { + Cache> grdk_cache; +#ifdef ABI_PERF + std::vector> abi_files_and_contents; +#endif + + std::vector> must_make_private_abi; + + for (auto& action : action_plan.install_actions) + { + if (action.abi_info.has_value()) continue; + + must_make_private_abi.push_back(action); + } + + std::vector>> action_private_abis(must_make_private_abi.size()); + + // get "private" abi + parallel_transform(must_make_private_abi.begin(), + must_make_private_abi.size(), + action_private_abis.begin(), + [&](auto&& action) { + return populate_abi_tag(paths, action, grdk_cache); + make_private_abi( + paths, + action, + std::make_unique( + paths, + action.spec.triplet(), + var_provider.get_tag_vars(action.spec).value_or_exit(VCPKG_LINE_INFO)), + grdk_cache); + }); + + for (auto&& maybe_abi_entry : action_private_abis) + { + if (!maybe_abi_entry.has_value()) + { + continue; + } + + } + + // get dependencies abi + for (auto it = action_plan.install_actions.begin(); it != action_plan.install_actions.end(); ++it) + { + auto& action = *it; + std::vector dependency_abis; + for (auto&& pspec : action.package_dependencies) + { + if (pspec == action.spec) continue; + + auto pred = [&](const InstallPlanAction& ipa) { return ipa.spec == pspec; }; + auto it2 = std::find_if(action_plan.install_actions.begin(), it, pred); + if (it2 == it) + { + // Finally, look in current installed + auto status_it = status_db.find(pspec); + if (status_it == status_db.end()) + { + Checks::unreachable( + VCPKG_LINE_INFO, + fmt::format("Failed to find dependency abi for {} -> {}", action.spec, pspec)); + } + + dependency_abis.emplace_back(pspec.name(), status_it->get()->package.abi); + } + else + { + dependency_abis.emplace_back(pspec.name(), it2->public_abi()); + } + } + +#ifdef ABI_PERF + auto maybe_abi_path_and_file = +#endif + populate_abi_tag(paths, action, dependency_abis, grdk_cache); +#ifdef ABI_PERF + if (auto abi_path_and_file = maybe_abi_path_and_file.get()) + { + abi_files_and_contents.emplace_back(std::move(*abi_path_and_file)); + } +#endif + } +#ifdef ABI_PERF + std::mutex mtx; + auto& fs = paths.get_filesystem(); + bool should_exit = false; + parallel_for_each_n(abi_files_and_contents.begin(), abi_files_and_contents.size(), [&](const auto& abi_entry) { + std::error_code ec; + + fs.write_contents_and_dirs(abi_entry.first, abi_entry.second, ec); + if (ec) + { + std::lock_guard lock(mtx); + msg::println_error(format_filesystem_call_error(ec, "create_directory", {abi_entry.first})); + should_exit = true; + } + }); + if (should_exit) + { + Checks::exit_fail(VCPKG_LINE_INFO); + } +#endif + } +} // namespace vcpkg diff --git a/src/vcpkg/commands.build.cpp b/src/vcpkg/commands.build.cpp index 95915895a7..f16a4c81b2 100644 --- a/src/vcpkg/commands.build.cpp +++ b/src/vcpkg/commands.build.cpp @@ -14,6 +14,7 @@ #include #include +#include #include #include #include @@ -1065,274 +1066,6 @@ namespace vcpkg return result; } - static std::string grdk_hash(const Filesystem& fs, - Cache>& grdk_cache, - const PreBuildInfo& pre_build_info) - { - if (auto game_dk_latest = pre_build_info.gamedk_latest_path.get()) - { - const auto grdk_header_path = *game_dk_latest / "GRDK/gameKit/Include/grdk.h"; - const auto& maybe_header_hash = grdk_cache.get_lazy(grdk_header_path, [&]() -> Optional { - auto maybe_hash = Hash::get_file_hash(fs, grdk_header_path, Hash::Algorithm::Sha256); - if (auto hash = maybe_hash.get()) - { - return std::move(*hash); - } - else - { - return nullopt; - } - }); - - if (auto header_hash = maybe_header_hash.get()) - { - return *header_hash; - } - } - - return "none"; - } - - static void abi_entries_from_pre_build_info(const Filesystem& fs, - Cache>& grdk_cache, - const PreBuildInfo& pre_build_info, - std::vector& abi_tag_entries) - { - if (pre_build_info.public_abi_override) - { - abi_tag_entries.emplace_back( - "public_abi_override", - Hash::get_string_hash(pre_build_info.public_abi_override.value_or_exit(VCPKG_LINE_INFO), - Hash::Algorithm::Sha256)); - } - - for (const auto& env_var : pre_build_info.passthrough_env_vars_tracked) - { - if (auto e = get_environment_variable(env_var)) - { - abi_tag_entries.emplace_back( - "ENV:" + env_var, Hash::get_string_hash(e.value_or_exit(VCPKG_LINE_INFO), Hash::Algorithm::Sha256)); - } - } - - if (pre_build_info.target_is_xbox) - { - abi_tag_entries.emplace_back("grdk.h", grdk_hash(fs, grdk_cache, pre_build_info)); - } - } - - static void populate_abi_tag(const VcpkgPaths& paths, - InstallPlanAction& action, - std::unique_ptr&& proto_pre_build_info, - Span dependency_abis, - Cache>& grdk_cache) - { - Checks::check_exit(VCPKG_LINE_INFO, static_cast(proto_pre_build_info)); - const auto& pre_build_info = *proto_pre_build_info; - const auto& toolset = paths.get_toolset(pre_build_info); - auto& abi_info = action.abi_info.emplace(); - abi_info.pre_build_info = std::move(proto_pre_build_info); - abi_info.toolset.emplace(toolset); - - if (action.build_options.use_head_version == UseHeadVersion::YES) - { - Debug::print("Binary caching for package ", action.spec, " is disabled due to --head\n"); - return; - } - if (action.build_options.editable == Editable::YES) - { - Debug::print("Binary caching for package ", action.spec, " is disabled due to --editable\n"); - return; - } - - abi_info.compiler_info = paths.get_compiler_info(*abi_info.pre_build_info, toolset); - for (auto&& dep_abi : dependency_abis) - { - if (dep_abi.value.empty()) - { - Debug::print("Binary caching for package ", - action.spec, - " is disabled due to missing abi info for ", - dep_abi.key, - '\n'); - return; - } - } - - std::vector abi_tag_entries(dependency_abis.begin(), dependency_abis.end()); - - const auto& triplet_abi = paths.get_triplet_info(pre_build_info, toolset); - abi_info.triplet_abi.emplace(triplet_abi); - const auto& triplet_canonical_name = action.spec.triplet().canonical_name(); - abi_tag_entries.emplace_back("triplet", triplet_canonical_name); - abi_tag_entries.emplace_back("triplet_abi", triplet_abi); - auto& fs = paths.get_filesystem(); - abi_entries_from_pre_build_info(fs, grdk_cache, pre_build_info, abi_tag_entries); - - // If there is an unusually large number of files in the port then - // something suspicious is going on. - constexpr int max_port_file_count = 100; - - std::string portfile_cmake_contents; - auto&& port_dir = action.source_control_file_and_location.value_or_exit(VCPKG_LINE_INFO).source_location; - auto raw_files = fs.get_regular_files_recursive_lexically_proximate(port_dir, VCPKG_LINE_INFO); - if (raw_files.size() > max_port_file_count) - { - msg::println_warning( - msgHashPortManyFiles, msg::package_name = action.spec.name(), msg::count = raw_files.size()); - } - - std::vector files; // will be port_files without .DS_Store entries - std::vector hashes; // will be corresponding hashes - for (auto& port_file : raw_files) - { - if (port_file.filename() == ".DS_Store") - { - continue; - } - - const auto& abs_port_file = files.emplace_back(port_dir / port_file); - if (port_file.extension() == ".cmake") - { - auto contents = fs.read_contents(abs_port_file, VCPKG_LINE_INFO); - portfile_cmake_contents += contents; - hashes.push_back(vcpkg::Hash::get_string_sha256(contents)); - } - else - { - hashes.push_back(vcpkg::Hash::get_file_hash(fs, abs_port_file, Hash::Algorithm::Sha256) - .value_or_exit(VCPKG_LINE_INFO)); - } - - abi_tag_entries.emplace_back(port_file, hashes.back()); - } - - abi_tag_entries.emplace_back("cmake", paths.get_tool_version(Tools::CMAKE, stdout_sink)); - - // This #ifdef is mirrored in tools.cpp's PowershellProvider -#if defined(_WIN32) - abi_tag_entries.emplace_back("powershell", paths.get_tool_version("powershell-core", stdout_sink)); -#endif - - auto& helpers = paths.get_cmake_script_hashes(); - for (auto&& helper : helpers) - { - if (Strings::case_insensitive_ascii_contains(portfile_cmake_contents, helper.first)) - { - abi_tag_entries.emplace_back(helper.first, helper.second); - } - } - - abi_tag_entries.emplace_back("ports.cmake", paths.get_ports_cmake_hash().to_string()); - abi_tag_entries.emplace_back("post_build_checks", "2"); - InternalFeatureSet sorted_feature_list = action.feature_list; - // Check that no "default" feature is present. Default features must be resolved before attempting to calculate - // a package ABI, so the "default" should not have made it here. - static constexpr StringLiteral default_literal{"default"}; - const bool has_no_pseudo_features = std::none_of( - sorted_feature_list.begin(), sorted_feature_list.end(), [](StringView s) { return s == default_literal; }); - Checks::check_exit(VCPKG_LINE_INFO, has_no_pseudo_features); - Util::sort_unique_erase(sorted_feature_list); - - // Check that the "core" feature is present. After resolution into InternalFeatureSet "core" meaning "not - // default" should have already been handled so "core" should be here. - Checks::check_exit( - VCPKG_LINE_INFO, - std::binary_search(sorted_feature_list.begin(), sorted_feature_list.end(), StringLiteral{"core"})); - - abi_tag_entries.emplace_back("features", Strings::join(";", sorted_feature_list)); - - Util::sort(abi_tag_entries); - - const std::string full_abi_info = - Strings::join("", abi_tag_entries, [](const AbiEntry& p) { return p.key + " " + p.value + "\n"; }); - - if (Debug::g_debugging) - { - std::string message = Strings::concat("[DEBUG] \n"); - for (auto&& entry : abi_tag_entries) - { - Strings::append(message, "[DEBUG] ", entry.key, "|", entry.value, "\n"); - } - Strings::append(message, "[DEBUG] \n"); - msg::write_unlocalized_text_to_stdout(Color::none, message); - } - - auto abi_tag_entries_missing = Util::filter(abi_tag_entries, [](const AbiEntry& p) { return p.value.empty(); }); - if (!abi_tag_entries_missing.empty()) - { - Debug::println("Warning: abi keys are missing values:\n", - Strings::join("\n", abi_tag_entries_missing, [](const AbiEntry& e) -> const std::string& { - return e.key; - })); - return; - } - - auto abi_file_path = paths.build_dir(action.spec); - fs.create_directory(abi_file_path, VCPKG_LINE_INFO); - abi_file_path /= triplet_canonical_name + ".vcpkg_abi_info.txt"; - fs.write_contents(abi_file_path, full_abi_info, VCPKG_LINE_INFO); - - auto& scf = action.source_control_file_and_location.value_or_exit(VCPKG_LINE_INFO).source_control_file; - - abi_info.package_abi = Hash::get_string_sha256(full_abi_info); - abi_info.abi_tag_file.emplace(std::move(abi_file_path)); - abi_info.relative_port_files = std::move(files); - abi_info.relative_port_hashes = std::move(hashes); - abi_info.heuristic_resources.push_back( - run_resource_heuristics(portfile_cmake_contents, scf->core_paragraph->raw_version)); - } - - void compute_all_abis(const VcpkgPaths& paths, - ActionPlan& action_plan, - const CMakeVars::CMakeVarProvider& var_provider, - const StatusParagraphs& status_db) - { - Cache> grdk_cache; - for (auto it = action_plan.install_actions.begin(); it != action_plan.install_actions.end(); ++it) - { - auto& action = *it; - if (action.abi_info.has_value()) continue; - - std::vector dependency_abis; - if (!Util::Enum::to_bool(action.build_options.only_downloads)) - { - for (auto&& pspec : action.package_dependencies) - { - if (pspec == action.spec) continue; - - auto pred = [&](const InstallPlanAction& ipa) { return ipa.spec == pspec; }; - auto it2 = std::find_if(action_plan.install_actions.begin(), it, pred); - if (it2 == it) - { - // Finally, look in current installed - auto status_it = status_db.find(pspec); - if (status_it == status_db.end()) - { - Checks::unreachable( - VCPKG_LINE_INFO, - fmt::format("Failed to find dependency abi for {} -> {}", action.spec, pspec)); - } - - dependency_abis.emplace_back(pspec.name(), status_it->get()->package.abi); - } - else - { - dependency_abis.emplace_back(pspec.name(), it2->public_abi()); - } - } - } - - populate_abi_tag( - paths, - action, - std::make_unique(paths, - action.spec.triplet(), - var_provider.get_tag_vars(action.spec).value_or_exit(VCPKG_LINE_INFO)), - dependency_abis, - grdk_cache); - } - } ExtendedBuildResult build_package(const VcpkgCmdArguments& args, const VcpkgPaths& paths, diff --git a/src/vcpkg/commands.ci.cpp b/src/vcpkg/commands.ci.cpp index 28d008efae..f9af44f883 100644 --- a/src/vcpkg/commands.ci.cpp +++ b/src/vcpkg/commands.ci.cpp @@ -9,6 +9,7 @@ #include #include +#include #include #include #include diff --git a/src/vcpkg/dependencies.cpp b/src/vcpkg/dependencies.cpp index fa7fccd69c..4e42228f8e 100644 --- a/src/vcpkg/dependencies.cpp +++ b/src/vcpkg/dependencies.cpp @@ -4,6 +4,7 @@ #include #include +#include #include #include #include From f5de1c69b28f6f4367fd37aa41f4bfea9ffa3fab Mon Sep 17 00:00:00 2001 From: Thomas1664 <46387399+Thomas1664@users.noreply.github.com> Date: Sun, 8 Oct 2023 10:24:30 +0000 Subject: [PATCH 02/60] revert unrelated changes --- include/vcpkg/commands.install.h | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/include/vcpkg/commands.install.h b/include/vcpkg/commands.install.h index 9eb7af89f5..5055fc23d4 100644 --- a/include/vcpkg/commands.install.h +++ b/include/vcpkg/commands.install.h @@ -59,18 +59,13 @@ namespace vcpkg const Path& destination() const; const Path& listfile() const; }; - #define INSTALL_FILES_PERF void install_package_and_write_listfile(const Filesystem& fs, const Path& source_dir, const InstallDir& destination_dir); void install_files_and_write_listfile(const Filesystem& fs, const Path& source_dir, - #ifdef INSTALL_FILES_PERF - std::vector&& files, - #else - const std::vector& files, - #endif + const std::vector& files, const InstallDir& destination_dir); InstallResult install_package(const VcpkgPaths& paths, From 2ccb2cf0409a99f4aa6e29bf2aa6f17e2b20ed5d Mon Sep 17 00:00:00 2001 From: Thomas1664 <46387399+Thomas1664@users.noreply.github.com> Date: Sun, 8 Oct 2023 10:25:34 +0000 Subject: [PATCH 03/60] revert unrelated changes --- include/vcpkg/commands.install.h | 1 + 1 file changed, 1 insertion(+) diff --git a/include/vcpkg/commands.install.h b/include/vcpkg/commands.install.h index 5055fc23d4..677cb1734d 100644 --- a/include/vcpkg/commands.install.h +++ b/include/vcpkg/commands.install.h @@ -63,6 +63,7 @@ namespace vcpkg const Path& source_dir, const InstallDir& destination_dir); + void install_files_and_write_listfile(const Filesystem& fs, const Path& source_dir, const std::vector& files, From 7c70020847319b3eae3ed2b6c9d8649cfee67313 Mon Sep 17 00:00:00 2001 From: Thomas1664 <46387399+Thomas1664@users.noreply.github.com> Date: Sun, 8 Oct 2023 10:26:23 +0000 Subject: [PATCH 04/60] revert unrelated changes --- include/vcpkg/commands.install.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/include/vcpkg/commands.install.h b/include/vcpkg/commands.install.h index 677cb1734d..33c9eb0b60 100644 --- a/include/vcpkg/commands.install.h +++ b/include/vcpkg/commands.install.h @@ -59,11 +59,11 @@ namespace vcpkg const Path& destination() const; const Path& listfile() const; }; + void install_package_and_write_listfile(const Filesystem& fs, const Path& source_dir, const InstallDir& destination_dir); - void install_files_and_write_listfile(const Filesystem& fs, const Path& source_dir, const std::vector& files, From 4a2a33f25ee669baf593a394d2b3c664e1d30750 Mon Sep 17 00:00:00 2001 From: Thomas1664 <46387399+Thomas1664@users.noreply.github.com> Date: Sun, 8 Oct 2023 11:17:48 +0000 Subject: [PATCH 05/60] remove abi things from vcpkg paths --- include/vcpkg/vcpkgpaths.h | 2 - src/vcpkg/abi.cpp | 184 +++++++++---------------------------- src/vcpkg/vcpkgpaths.cpp | 29 ------ 3 files changed, 42 insertions(+), 173 deletions(-) diff --git a/include/vcpkg/vcpkgpaths.h b/include/vcpkg/vcpkgpaths.h index 79339089c9..4ee58304ff 100644 --- a/include/vcpkg/vcpkgpaths.h +++ b/include/vcpkg/vcpkgpaths.h @@ -59,8 +59,6 @@ namespace vcpkg Path build_info_file_path(const PackageSpec& spec) const; const TripletDatabase& get_triplet_db() const; - const std::map& get_cmake_script_hashes() const; - StringView get_ports_cmake_hash() const; LockFile& get_installed_lockfile() const; void flush_lockfile() const; diff --git a/src/vcpkg/abi.cpp b/src/vcpkg/abi.cpp index e68584c4a7..b08588421c 100644 --- a/src/vcpkg/abi.cpp +++ b/src/vcpkg/abi.cpp @@ -20,11 +20,17 @@ #include #include -namespace +namespace vcpkg { - using namespace vcpkg; + // This struct caches precomputable abis + struct AbiCache + { + std::vector cmake_script_hashes; + }; + + - std::string grdk_hash(const Filesystem& fs, + static std::string grdk_hash(const Filesystem& fs, Cache>& grdk_cache, const PreBuildInfo& pre_build_info) { @@ -52,7 +58,7 @@ namespace return "none"; } - void abi_entries_from_pre_build_info(const Filesystem& fs, + static void abi_entries_from_pre_build_info(const Filesystem& fs, Cache>& grdk_cache, const PreBuildInfo& pre_build_info, std::vector& abi_tag_entries) @@ -81,11 +87,14 @@ namespace } } - // Calculate abi hashes that are the same for each port during one run - void get_system_abi(const VcpkgPaths& paths, std::vector& abi_entries) + + static std::vector get_common_abi(const VcpkgPaths& paths) { + std::vector abi_entries; + auto& fs = paths.get_filesystem(); + abi_entries.emplace_back("cmake", paths.get_tool_version(Tools::CMAKE, stdout_sink)); - abi_entries.emplace_back("ports.cmake", paths.get_ports_cmake_hash().to_string()); + abi_entries.emplace_back("ports.cmake", Hash::get_file_hash(fs, paths.ports_cmake, Hash::Algorithm::Sha256)); abi_entries.emplace_back("post_build_checks", "2"); // This #ifdef is mirrored in tools.cpp's PowershellProvider @@ -94,7 +103,28 @@ namespace #endif } - std::vector> get_ports_files_and_contents(const Filesystem& fs, + + static std::vector get_cmake_script_hashes(Filesystem& fs, const Path& scripts_dir) + { + auto files = fs.get_regular_files_non_recursive(scripts_dir / "cmake", VCPKG_LINE_INFO); + + std::vector helpers; + helpers.reserve(files.size()); + + for (auto&& file : files) + { + if (file.filename() == ".DS_Store") + { + continue; + } + helpers.emplace_back(file.stem().to_string(), + Hash::get_file_hash(fs, file, Hash::Algorithm::Sha256).value_or_exit(VCPKG_LINE_INFO)); + } + return helpers; + } + + + static std::vector> get_ports_files_and_contents(const Filesystem& fs, const Path& port_root_dir) { auto files = fs.get_regular_files_recursive_lexically_proximate(port_root_dir, VCPKG_LINE_INFO); @@ -115,7 +145,7 @@ namespace } // Get abi for per-port files - std::pair, std::string> get_port_files(const Filesystem& fs, + static std::pair, std::string> get_port_files(const Filesystem& fs, std::vector abi_entries, const SourceControlFileAndLocation& scfl) { @@ -151,7 +181,7 @@ namespace } - void get_feature_abi(InternalFeatureSet sorted_feature_list, std::vector& abi_entries) + static void get_feature_abi(InternalFeatureSet sorted_feature_list, std::vector& abi_entries) { // Check that no "default" feature is present. Default features must be resolved before attempting to calculate // a package ABI, so the "default" should not have made it here. @@ -172,12 +202,13 @@ namespace // calculate abi of port-internal files and system environment - Optional> make_private_abi(const VcpkgPaths& paths, + static Optional> make_private_abi(const VcpkgPaths& paths, InstallPlanAction& action, std::unique_ptr&& proto_pre_build_info, Cache>& grdk_cache) { const auto& pre_build_info = *proto_pre_build_info; + // Cant't be called in parallel const auto& toolset = paths.get_toolset(pre_build_info); auto& abi_info = action.abi_info.emplace(); abi_info.pre_build_info = std::move(proto_pre_build_info); @@ -201,7 +232,6 @@ namespace auto& fs = paths.get_filesystem(); std::vector abi_tag_entries; abi_entries_from_pre_build_info(fs, grdk_cache, *action.abi_info.get()->pre_build_info, abi_tag_entries); - get_system_abi(paths, abi_tag_entries); auto& scfl = action.source_control_file_and_location.value_or_exit(VCPKG_LINE_INFO); auto&& [port_files, cmake_contents] = get_port_files(fs, abi_tag_entries, scfl); @@ -220,133 +250,6 @@ namespace return abi_tag_entries; } -} // anonymos namespace - -namespace vcpkg -{ - -#define ABI_PERF -#ifdef ABI_PERF - static Optional> populate_abi_tag(const VcpkgPaths& paths, -#else - static void populate_abi_tag(const VcpkgPaths& paths, -#endif - InstallPlanAction& action, - Cache>& grdk_cache) - { - std::vector abi_tag_entries(dependency_abis.begin(), dependency_abis.end()); - - const auto& triplet_abi = paths.get_triplet_info(*abi_info.pre_build_info, *abi_info.toolset.get()); - abi_info.triplet_abi.emplace(triplet_abi); - const auto& triplet_canonical_name = action.spec.triplet().canonical_name(); - abi_tag_entries.emplace_back("triplet", triplet_canonical_name); - abi_tag_entries.emplace_back("triplet_abi", triplet_abi); - auto& fs = paths.get_filesystem(); - abi_entries_from_pre_build_info(fs, grdk_cache, *abi_info.pre_build_info, abi_tag_entries); - - abi_info.compiler_info = paths.get_compiler_info(*abi_info.pre_build_info, toolset); - for (auto&& dep_abi : dependency_abis) - { - if (dep_abi.value.empty()) - { - Debug::print("Binary caching for package ", - action.spec, - " is disabled due to missing abi info for ", - dep_abi.key, - '\n'); - return false; - } - } - return true; - - auto system_abi = get_system_abi(paths); - abi_tag_entries.insert(abi_tag_entries.end(), system_abi.begin(), system_abi.end()); - - auto&& scfl = action.source_control_file_and_location.value_or_exit(VCPKG_LINE_INFO); - auto&& [port_files_abi, cmake_contents] = get_port_abi_and_cmake_content(fs, scfl); - - for (auto&& helper : paths.get_cmake_script_hashes()) - { - if (Strings::case_insensitive_ascii_contains(cmake_contents, helper.first)) - { -#ifdef PERF - abi_tag_entries.emplace_back(helper.first, helper.second.value_or_exit(VCPKG_LINE_INFO)); -#else - abi_tag_entries.emplace_back(helper.first, helper.second); -#endif - } - } - - InternalFeatureSet sorted_feature_list = action.feature_list; - // Check that no "default" feature is present. Default features must be resolved before attempting to calculate - // a package ABI, so the "default" should not have made it here. - static constexpr StringLiteral default_literal{"default"}; - const bool has_no_pseudo_features = std::none_of( - sorted_feature_list.begin(), sorted_feature_list.end(), [](StringView s) { return s == default_literal; }); - Checks::check_exit(VCPKG_LINE_INFO, has_no_pseudo_features); - Util::sort_unique_erase(sorted_feature_list); - - // Check that the "core" feature is present. After resolution into InternalFeatureSet "core" meaning "not - // default" should have already been handled so "core" should be here. - Checks::check_exit( - VCPKG_LINE_INFO, - std::binary_search(sorted_feature_list.begin(), sorted_feature_list.end(), StringLiteral{"core"})); - - abi_tag_entries.emplace_back("features", Strings::join(";", sorted_feature_list)); - - Util::sort(abi_tag_entries); - - std::string full_abi_info = - Strings::join("", abi_tag_entries, [](const AbiEntry& p) { return p.key + " " + p.value + "\n"; }); - - if (Debug::g_debugging) - { - std::string message = Strings::concat("[DEBUG] \n"); - for (auto&& entry : abi_tag_entries) - { - Strings::append(message, "[DEBUG] ", entry.key, "|", entry.value, "\n"); - } - Strings::append(message, "[DEBUG] \n"); - msg::write_unlocalized_text_to_stdout(Color::none, message); - } - - auto abi_tag_entries_missing = Util::filter(abi_tag_entries, [](const AbiEntry& p) { return p.value.empty(); }); - if (!abi_tag_entries_missing.empty()) - { - Debug::println("Warning: abi keys are missing values:\n", - Strings::join("\n", abi_tag_entries_missing, [](const AbiEntry& e) -> const std::string& { - return e.key; - })); -#ifdef ABI_PERF - return nullopt; -#else - return; -#endif - } -#ifdef ABI_PERF - auto abi_file_path = paths.build_dir(action.spec); - abi_file_path /= triplet_canonical_name + ".vcpkg_abi_info.txt"; - - abi_info.package_abi = Hash::get_string_sha256(full_abi_info); - abi_info.abi_tag_file.emplace(abi_file_path); - - return std::make_pair(std::move(abi_file_path), std::move(full_abi_info)); -#else - auto abi_file_path = paths.build_dir(action.spec); - fs.create_directory(abi_file_path, VCPKG_LINE_INFO); - abi_file_path /= triplet_canonical_name + ".vcpkg_abi_info.txt"; - fs.write_contents(abi_file_path, full_abi_info, VCPKG_LINE_INFO); - - auto& scf = action.source_control_file_and_location.value_or_exit(VCPKG_LINE_INFO).source_control_file; - - abi_info.package_abi = Hash::get_string_sha256(full_abi_info); - abi_info.abi_tag_file.emplace(std::move(abi_file_path)); - abi_info.relative_port_files = std::move(files); - abi_info.relative_port_hashes = std::move(hashes); - abi_info.heuristic_resources.push_back( - run_resource_heuristics(portfile_cmake_contents, scf->core_paragraph->raw_version)); -#endif - } void compute_all_abis(const VcpkgPaths& paths, ActionPlan& action_plan, @@ -354,9 +257,6 @@ namespace vcpkg const StatusParagraphs& status_db) { Cache> grdk_cache; -#ifdef ABI_PERF - std::vector> abi_files_and_contents; -#endif std::vector> must_make_private_abi; diff --git a/src/vcpkg/vcpkgpaths.cpp b/src/vcpkg/vcpkgpaths.cpp index 5289bc985d..15dbeabcbd 100644 --- a/src/vcpkg/vcpkgpaths.cpp +++ b/src/vcpkg/vcpkgpaths.cpp @@ -258,8 +258,6 @@ namespace { Lazy triplets_db; Lazy toolsets; - Lazy> cmake_script_hashes; - Lazy ports_cmake_hash; Optional m_installed_lock; }; @@ -723,33 +721,6 @@ namespace vcpkg }); } - const std::map& VcpkgPaths::get_cmake_script_hashes() const - { - return m_pimpl->cmake_script_hashes.get_lazy([this]() -> std::map { - auto& fs = this->get_filesystem(); - std::map helpers; - auto files = fs.get_regular_files_non_recursive(this->scripts / "cmake", VCPKG_LINE_INFO); - for (auto&& file : files) - { - if (file.filename() == ".DS_Store") - { - continue; - } - helpers.emplace(file.stem().to_string(), - Hash::get_file_hash(fs, file, Hash::Algorithm::Sha256).value_or_exit(VCPKG_LINE_INFO)); - } - return helpers; - }); - } - - StringView VcpkgPaths::get_ports_cmake_hash() const - { - return m_pimpl->ports_cmake_hash.get_lazy([this]() -> std::string { - return Hash::get_file_hash(get_filesystem(), ports_cmake, Hash::Algorithm::Sha256) - .value_or_exit(VCPKG_LINE_INFO); - }); - } - LockFile& VcpkgPaths::get_installed_lockfile() const { if (!m_pimpl->m_installed_lock.has_value()) From a89aec4f5536be47470170a4602babe5ebe4fdc6 Mon Sep 17 00:00:00 2001 From: Thomas1664 <46387399+Thomas1664@users.noreply.github.com> Date: Sun, 8 Oct 2023 20:49:04 +0000 Subject: [PATCH 06/60] dependency abis --- src/vcpkg/abi.cpp | 154 +++++++++++++++++++++++++++++++++++++--------- 1 file changed, 125 insertions(+), 29 deletions(-) diff --git a/src/vcpkg/abi.cpp b/src/vcpkg/abi.cpp index b08588421c..b631b67da0 100644 --- a/src/vcpkg/abi.cpp +++ b/src/vcpkg/abi.cpp @@ -27,12 +27,10 @@ namespace vcpkg { std::vector cmake_script_hashes; }; - - static std::string grdk_hash(const Filesystem& fs, - Cache>& grdk_cache, - const PreBuildInfo& pre_build_info) + Cache>& grdk_cache, + const PreBuildInfo& pre_build_info) { if (auto game_dk_latest = pre_build_info.gamedk_latest_path.get()) { @@ -59,9 +57,9 @@ namespace vcpkg } static void abi_entries_from_pre_build_info(const Filesystem& fs, - Cache>& grdk_cache, - const PreBuildInfo& pre_build_info, - std::vector& abi_tag_entries) + Cache>& grdk_cache, + const PreBuildInfo& pre_build_info, + std::vector& abi_tag_entries) { if (pre_build_info.public_abi_override) { @@ -87,12 +85,11 @@ namespace vcpkg } } - static std::vector get_common_abi(const VcpkgPaths& paths) { std::vector abi_entries; auto& fs = paths.get_filesystem(); - + abi_entries.emplace_back("cmake", paths.get_tool_version(Tools::CMAKE, stdout_sink)); abi_entries.emplace_back("ports.cmake", Hash::get_file_hash(fs, paths.ports_cmake, Hash::Algorithm::Sha256)); abi_entries.emplace_back("post_build_checks", "2"); @@ -103,8 +100,7 @@ namespace vcpkg #endif } - - static std::vector get_cmake_script_hashes(Filesystem& fs, const Path& scripts_dir) + static std::vector get_cmake_script_hashes(const Filesystem& fs, const Path& scripts_dir) { auto files = fs.get_regular_files_non_recursive(scripts_dir / "cmake", VCPKG_LINE_INFO); @@ -118,14 +114,13 @@ namespace vcpkg continue; } helpers.emplace_back(file.stem().to_string(), - Hash::get_file_hash(fs, file, Hash::Algorithm::Sha256).value_or_exit(VCPKG_LINE_INFO)); + Hash::get_file_hash(fs, file, Hash::Algorithm::Sha256).value_or_exit(VCPKG_LINE_INFO)); } return helpers; } - static std::vector> get_ports_files_and_contents(const Filesystem& fs, - const Path& port_root_dir) + const Path& port_root_dir) { auto files = fs.get_regular_files_recursive_lexically_proximate(port_root_dir, VCPKG_LINE_INFO); @@ -146,8 +141,8 @@ namespace vcpkg // Get abi for per-port files static std::pair, std::string> get_port_files(const Filesystem& fs, - std::vector abi_entries, - const SourceControlFileAndLocation& scfl) + std::vector abi_entries, + const SourceControlFileAndLocation& scfl) { auto files_and_content = get_ports_files_and_contents(fs, scfl.source_location); auto& paragraph = scfl.source_control_file->core_paragraph; @@ -180,7 +175,6 @@ namespace vcpkg return {std::move(port_files), std::move(portfile_cmake_contents)}; } - static void get_feature_abi(InternalFeatureSet sorted_feature_list, std::vector& abi_entries) { // Check that no "default" feature is present. Default features must be resolved before attempting to calculate @@ -200,12 +194,11 @@ namespace vcpkg abi_entries.emplace_back("features", Strings::join(";", sorted_feature_list)); } - // calculate abi of port-internal files and system environment static Optional> make_private_abi(const VcpkgPaths& paths, - InstallPlanAction& action, - std::unique_ptr&& proto_pre_build_info, - Cache>& grdk_cache) + InstallPlanAction& action, + std::unique_ptr&& proto_pre_build_info, + Cache>& grdk_cache) { const auto& pre_build_info = *proto_pre_build_info; // Cant't be called in parallel @@ -214,8 +207,7 @@ namespace vcpkg abi_info.pre_build_info = std::move(proto_pre_build_info); abi_info.toolset.emplace(toolset); - if (Util::Enum::to_bool(action.build_options.only_downloads)) - return nullopt; + if (Util::Enum::to_bool(action.build_options.only_downloads)) return nullopt; if (action.build_options.use_head_version == UseHeadVersion::YES) { @@ -228,7 +220,6 @@ namespace vcpkg return nullopt; } - auto& fs = paths.get_filesystem(); std::vector abi_tag_entries; abi_entries_from_pre_build_info(fs, grdk_cache, *action.abi_info.get()->pre_build_info, abi_tag_entries); @@ -243,13 +234,119 @@ namespace vcpkg abi_tag_entries.emplace_back(helper.first, helper.second); } } - abi_info.heuristic_resources.push_back(run_resource_heuristics(cmake_contents, scfl.source_control_file->core_paragraph->raw_version)); - + abi_info.heuristic_resources.push_back( + run_resource_heuristics(cmake_contents, scfl.source_control_file->core_paragraph->raw_version)); + get_feature_abi(action.feature_list, abi_tag_entries); return abi_tag_entries; } + void populate_abi_tag_ex() + { + // get toolset (not in parallel) + // get prebuildinfo + // return when using editable or head flags + + // get compiler info (not in parallel) + + // check if all dependencies have a hash if not, return (not in parallel) (sequencial) + + // get triplet info (not in parallel) + + // abi tags from prebuildinfo + + // portfile hashes/contents + // cmake helpers (access to cmake helper hashes in cache not in parallel) + + // cmake/ PS version (precompute, same for all) + // ports.cmake version (precompute, same for all) + + // ports.cmake + // post build lint (not updated in 3 years! still needed?) + + // port features + + // sort + // debug output + + // check for missing abi tags + + // fillout port abi + // fillout infos for sbom + // write abi file + + // write sbom file? + } + + static std::vector get_dependency_abis(std::vector::iterator action_plan_begin, + std::vector::iterator current_action, + const StatusParagraphs& status_db) + { + std::vector dependency_abis; + dependency_abis.reserve(current_action->package_dependencies.size()); + + for (const auto& dependency_spec : current_action->package_dependencies) + { + // depends on itself? + if (dependency_spec == current_action->spec) + { + continue; + } + + // find dependency in downstream ports + auto dependency_it = + std::find_if(action_plan_begin, current_action, [&dependency_spec](const auto& action) { + return action.spec == dependency_spec; + }); + + if (dependency_it == current_action) + { + // dependency not found + // dependency already installed and therefore not in action plan? + auto status_it = status_db.find(dependency_spec); + if (status_it == status_db.end()) + { + // also not installed --> can't be true + Checks::unreachable( + VCPKG_LINE_INFO, + fmt::format("Failed to find dependency abi for {} -> {}", current_action->spec, dependency_spec)); + } + + dependency_abis.emplace_back(dependency_spec.name(), status_it->get()->package.abi); + } + else + { + // dependency found in action plan + dependency_abis.emplace_back(dependency_spec.name(), dependency_it->public_abi()); + } + } + return dependency_abis; + } + + void compute_all_abis_ex(const VcpkgPaths& paths, + ActionPlan& action_plan, + const CMakeVars::CMakeVarProvider& var_provider, + const StatusParagraphs& status_db) + { + const auto cmake_script_hashes = get_cmake_script_hashes(paths.get_filesystem(), paths.scripts); + // 1. system abi (ports.cmake/ PS version/ CMake version) + const auto common_abi = get_common_abi(paths); + + for (auto it = action_plan.install_actions.begin(); it != action_plan.install_actions.end(); ++it) + { + auto& action = *it; + std::vector dependency_abis; + + if (!Util::Enum::to_bool(action.build_options.only_downloads)) + { + dependency_abis = get_dependency_abis(action_plan.install_actions.begin(), it, status_db); + } + } + + // get prebuildinfo (not in parallel) + // populate abi tag + } void compute_all_abis(const VcpkgPaths& paths, ActionPlan& action_plan, @@ -274,7 +371,7 @@ namespace vcpkg must_make_private_abi.size(), action_private_abis.begin(), [&](auto&& action) { - return populate_abi_tag(paths, action, grdk_cache); + return populate_abi_tag(paths, action, grdk_cache); make_private_abi( paths, action, @@ -283,7 +380,7 @@ namespace vcpkg action.spec.triplet(), var_provider.get_tag_vars(action.spec).value_or_exit(VCPKG_LINE_INFO)), grdk_cache); - }); + }); for (auto&& maybe_abi_entry : action_private_abis) { @@ -291,7 +388,6 @@ namespace vcpkg { continue; } - } // get dependencies abi From 8c0ed22a43a031f3b1ba7a468d6ab05aafc4814b Mon Sep 17 00:00:00 2001 From: Thomas1664 <46387399+Thomas1664@users.noreply.github.com> Date: Mon, 9 Oct 2023 19:16:16 +0000 Subject: [PATCH 07/60] AsyncLazy --- include/vcpkg/base/lazy.h | 26 ++++++++++++++++++++++++- src/vcpkg/abi.cpp | 41 +++++++++++++++++++++++---------------- 2 files changed, 49 insertions(+), 18 deletions(-) diff --git a/include/vcpkg/base/lazy.h b/include/vcpkg/base/lazy.h index 4867172b86..ffdfc244bf 100644 --- a/include/vcpkg/base/lazy.h +++ b/include/vcpkg/base/lazy.h @@ -1,5 +1,8 @@ #pragma once +#include +#include + namespace vcpkg { template @@ -8,7 +11,7 @@ namespace vcpkg Lazy() : value(T()), initialized(false) { } template - T const& get_lazy(const F& f) const + const T& get_lazy(const F& f) const { if (!initialized) { @@ -22,4 +25,25 @@ namespace vcpkg mutable T value; mutable bool initialized; }; + + template + struct AsyncLazy + { + template + AsyncLazy(F work) : value(std::async(std::launch::async | std::launch::deferred, [&work]() { return work(); })) + { + } + + const T& get() const + { + if (std::holds_alternative>(value)) + { + value = std::get>(value).get(); + } + return std::get(value); + } + + private: + mutable std::variant, T> value; + }; } diff --git a/src/vcpkg/abi.cpp b/src/vcpkg/abi.cpp index b631b67da0..2e797baff4 100644 --- a/src/vcpkg/abi.cpp +++ b/src/vcpkg/abi.cpp @@ -2,6 +2,7 @@ #include #include #include +#include #include #include #include @@ -103,19 +104,13 @@ namespace vcpkg static std::vector get_cmake_script_hashes(const Filesystem& fs, const Path& scripts_dir) { auto files = fs.get_regular_files_non_recursive(scripts_dir / "cmake", VCPKG_LINE_INFO); + Util::erase_remove_if(files, [](const Path& file) { return file.filename() == ".DS_Store"; }); - std::vector helpers; - helpers.reserve(files.size()); + std::vector helpers(files.size()); - for (auto&& file : files) - { - if (file.filename() == ".DS_Store") - { - continue; - } - helpers.emplace_back(file.stem().to_string(), - Hash::get_file_hash(fs, file, Hash::Algorithm::Sha256).value_or_exit(VCPKG_LINE_INFO)); - } + parallel_transform(files.begin(), files.size(), helpers.begin(), [&fs](auto&& file) { + return AbiEntry{file.stem().to_string(), Hash::get_file_hash(fs, file, Hash::Algorithm::Sha256)}; + }); return helpers; } @@ -242,7 +237,11 @@ namespace vcpkg return abi_tag_entries; } - void populate_abi_tag_ex() + void populate_abi_tag_ex(const VcpkgPaths& paths, + InstallPlanAction& action, + std::unique_ptr&& proto_pre_build_info, + Span dependency_abis, + const AsyncLazy>& cmake_script_hashes) { // get toolset (not in parallel) // get prebuildinfo @@ -308,9 +307,10 @@ namespace vcpkg if (status_it == status_db.end()) { // also not installed --> can't be true - Checks::unreachable( - VCPKG_LINE_INFO, - fmt::format("Failed to find dependency abi for {} -> {}", current_action->spec, dependency_spec)); + Checks::unreachable(VCPKG_LINE_INFO, + fmt::format("Failed to find dependency abi for {} -> {}", + current_action->spec, + dependency_spec)); } dependency_abis.emplace_back(dependency_spec.name(), status_it->get()->package.abi); @@ -329,19 +329,26 @@ namespace vcpkg const CMakeVars::CMakeVarProvider& var_provider, const StatusParagraphs& status_db) { - const auto cmake_script_hashes = get_cmake_script_hashes(paths.get_filesystem(), paths.scripts); + const AsyncLazy> cmake_script_hashes( + [&paths]() { get_cmake_script_hashes(paths.get_filesystem(), paths.scripts); }); // 1. system abi (ports.cmake/ PS version/ CMake version) const auto common_abi = get_common_abi(paths); + std::vector dependency_abis; + for (auto it = action_plan.install_actions.begin(); it != action_plan.install_actions.end(); ++it) { auto& action = *it; - std::vector dependency_abis; if (!Util::Enum::to_bool(action.build_options.only_downloads)) { dependency_abis = get_dependency_abis(action_plan.install_actions.begin(), it, status_db); } + auto pre_build_info = std::make_unique( + paths, action.spec.triplet(), var_provider.get_tag_vars(action.spec).value_or_exit(VCPKG_LINE_INFO)); + + populate_abi_tag_ex(paths, action, std::move(pre_build_info), dependency_abis, cmake_script_hashes); + dependency_abis.clear(); } // get prebuildinfo (not in parallel) From 2b4fef5104abd430006e09b411f849ca584bc473 Mon Sep 17 00:00:00 2001 From: Thomas1664 <46387399+Thomas1664@users.noreply.github.com> Date: Tue, 10 Oct 2023 16:23:16 +0000 Subject: [PATCH 08/60] Fix dangling thread in AsyncLazy --- include/vcpkg/base/lazy.h | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/include/vcpkg/base/lazy.h b/include/vcpkg/base/lazy.h index ffdfc244bf..488518984e 100644 --- a/include/vcpkg/base/lazy.h +++ b/include/vcpkg/base/lazy.h @@ -43,6 +43,14 @@ namespace vcpkg return std::get(value); } + ~AsyncLazy() + { + if (std::holds_alternative>(value)) + { + value = std::get>(value).get(); + } + } + private: mutable std::variant, T> value; }; From fc895735473c17d2a900c68b649a9591a2a195fb Mon Sep 17 00:00:00 2001 From: Thomas1664 <46387399+Thomas1664@users.noreply.github.com> Date: Tue, 10 Oct 2023 16:25:09 +0000 Subject: [PATCH 09/60] ~future does this already --- include/vcpkg/base/lazy.h | 8 -------- 1 file changed, 8 deletions(-) diff --git a/include/vcpkg/base/lazy.h b/include/vcpkg/base/lazy.h index 488518984e..ffdfc244bf 100644 --- a/include/vcpkg/base/lazy.h +++ b/include/vcpkg/base/lazy.h @@ -43,14 +43,6 @@ namespace vcpkg return std::get(value); } - ~AsyncLazy() - { - if (std::holds_alternative>(value)) - { - value = std::get>(value).get(); - } - } - private: mutable std::variant, T> value; }; From 49485da79247bd26cb24abf3ed439305d628d365 Mon Sep 17 00:00:00 2001 From: Thomas1664 <46387399+Thomas1664@users.noreply.github.com> Date: Sat, 14 Oct 2023 12:01:55 +0000 Subject: [PATCH 10/60] wip --- include/vcpkg/abi.h | 3 - src/vcpkg/abi.cpp | 264 ++++++++++++++++++-------------------------- 2 files changed, 107 insertions(+), 160 deletions(-) diff --git a/include/vcpkg/abi.h b/include/vcpkg/abi.h index e0270b01f9..5fc781ca4c 100644 --- a/include/vcpkg/abi.h +++ b/include/vcpkg/abi.h @@ -44,9 +44,6 @@ namespace vcpkg Optional triplet_abi; std::string package_abi; Optional abi_tag_file; - std::vector relative_port_files; - std::vector relative_port_hashes; - std::vector heuristic_resources; }; void compute_all_abis(const VcpkgPaths& paths, diff --git a/src/vcpkg/abi.cpp b/src/vcpkg/abi.cpp index 2e797baff4..c326f20022 100644 --- a/src/vcpkg/abi.cpp +++ b/src/vcpkg/abi.cpp @@ -136,7 +136,7 @@ namespace vcpkg // Get abi for per-port files static std::pair, std::string> get_port_files(const Filesystem& fs, - std::vector abi_entries, + std::vector& abi_entries, const SourceControlFileAndLocation& scfl) { auto files_and_content = get_ports_files_and_contents(fs, scfl.source_location); @@ -153,7 +153,6 @@ namespace vcpkg } std::vector port_files; - abi_entries.reserve(files_and_content.size()); std::string portfile_cmake_contents; for (auto&& [port_file, contents] : files_and_content) @@ -189,93 +188,141 @@ namespace vcpkg abi_entries.emplace_back("features", Strings::join(";", sorted_feature_list)); } - // calculate abi of port-internal files and system environment - static Optional> make_private_abi(const VcpkgPaths& paths, - InstallPlanAction& action, - std::unique_ptr&& proto_pre_build_info, - Cache>& grdk_cache) + // PRE: Check if debugging is enabled + static void print_debug_info(const PackageSpec& spec, View abi_entries) + { + std::string message = Strings::concat("[DEBUG] \n"); + for (auto&& entry : abi_entries) + { + Strings::append(message, "[DEBUG] ", entry.key, "|", entry.value, "\n"); + } + Strings::append(message, "[DEBUG] \n"); + msg::write_unlocalized_text_to_stdout(Color::none, message); + } + + static void print_missing_abi_tags(View abi_entries) + { + bool printed_first_line = false; + for (const auto& abi_tag : abi_entries) + { + if (!abi_tag.value.empty()) + { + continue; + } + if (!printed_first_line) + { + Debug::print("Warning: abi keys are missing values:\n"); + printed_first_line = true; + } + Debug::println(abi_tag.key); + } + } + + bool initialize_abi_info(const VcpkgPaths& paths, + InstallPlanAction& action, + std::unique_ptr&& proto_pre_build_info) { const auto& pre_build_info = *proto_pre_build_info; - // Cant't be called in parallel + // get toolset (not in parallel) const auto& toolset = paths.get_toolset(pre_build_info); auto& abi_info = action.abi_info.emplace(); abi_info.pre_build_info = std::move(proto_pre_build_info); - abi_info.toolset.emplace(toolset); - - if (Util::Enum::to_bool(action.build_options.only_downloads)) return nullopt; + // return when using editable or head flags if (action.build_options.use_head_version == UseHeadVersion::YES) { Debug::print("Binary caching for package ", action.spec, " is disabled due to --head\n"); - return nullopt; + return false; } if (action.build_options.editable == Editable::YES) { Debug::print("Binary caching for package ", action.spec, " is disabled due to --editable\n"); - return nullopt; + return false; } - auto& fs = paths.get_filesystem(); - std::vector abi_tag_entries; - abi_entries_from_pre_build_info(fs, grdk_cache, *action.abi_info.get()->pre_build_info, abi_tag_entries); + // get compiler info (not in parallel) + abi_info.compiler_info = paths.get_compiler_info(pre_build_info, toolset); + // get triplet info (not in parallel) + abi_info.triplet_abi.emplace(paths.get_triplet_info(pre_build_info, toolset)); - auto& scfl = action.source_control_file_and_location.value_or_exit(VCPKG_LINE_INFO); - auto&& [port_files, cmake_contents] = get_port_files(fs, abi_tag_entries, scfl); + return true; + } - for (auto&& helper : paths.get_cmake_script_hashes()) + // check if all dependencies have a hash + static bool check_dependency_hashes(View dependency_abis, const PackageSpec& spec) + { + auto dep_no_hash_it = std::find_if( + dependency_abis.begin(), dependency_abis.end(), [](const auto& dep_abi) { return dep_abi.value.empty(); }); + if (dep_no_hash_it != dependency_abis.end()) { - if (Strings::case_insensitive_ascii_contains(cmake_contents, helper.first)) - { - abi_tag_entries.emplace_back(helper.first, helper.second); - } + Debug::print("Binary caching for package ", + spec, + " is disabled due to missing abi info for ", + dep_no_hash_it->key, + '\n'); + return false; } - abi_info.heuristic_resources.push_back( - run_resource_heuristics(cmake_contents, scfl.source_control_file->core_paragraph->raw_version)); - - get_feature_abi(action.feature_list, abi_tag_entries); - - return abi_tag_entries; } - void populate_abi_tag_ex(const VcpkgPaths& paths, - InstallPlanAction& action, - std::unique_ptr&& proto_pre_build_info, - Span dependency_abis, - const AsyncLazy>& cmake_script_hashes) + // PRE: initialize_abi_tag() was called and returned true + void make_abi_tag(const Filesystem& fs, + InstallPlanAction& action, + View common_abi, + std::vector&& dependency_abis, + const AsyncLazy>& cmake_script_hashes) { - // get toolset (not in parallel) - // get prebuildinfo - // return when using editable or head flags - - // get compiler info (not in parallel) + auto& abi_info = action.abi_info; + auto abi_tag_entries = std::move(dependency_abis); - // check if all dependencies have a hash if not, return (not in parallel) (sequencial) - - // get triplet info (not in parallel) + abi_tag_entries.emplace_back("triplet", action.spec.triplet().canonical_name()); + abi_tag_entries.emplace_back("triplet_abi", *abi_info.triplet_abi.get()); // abi tags from prebuildinfo + abi_entries_from_pre_build_info(fs, grdk_cache, *abi_info.pre_build_info, abi_tag_entries); + + auto& scfl = action.source_control_file_and_location.value_or_exit(VCPKG_LINE_INFO); // portfile hashes/contents + auto&& [port_files, cmake_contents] = get_port_files(fs, abi_tag_entries, scfl); + // cmake helpers (access to cmake helper hashes in cache not in parallel) + for (auto&& helper : cmake_script_hashes.get()) + { + if (Strings::case_insensitive_ascii_contains(cmake_contents, helper.key)) + { + abi_tag_entries.emplace_back(helper.key, helper.value); + } + } // cmake/ PS version (precompute, same for all) // ports.cmake version (precompute, same for all) - - // ports.cmake + // ports.cmake (precompute, same for all) // post build lint (not updated in 3 years! still needed?) + abi_tag_entries.insert(abi_tag_entries.end(), common_abi.begin(), common_abi.end()); // port features + get_feature_abi(action.feature_list, abi_tag_entries); // sort - // debug output + Util::sort(abi_tag_entries); + + if (Debug::g_debugging) + { + // debug output + print_debug_info(action.spec, abi_tag_entries); - // check for missing abi tags + // check for missing abi tags + print_missing_abi_tags(abi_tag_entries); + } - // fillout port abi - // fillout infos for sbom + // fill out port abi + // fill out infos for sbom // write abi file // write sbom file? + + std::string full_abi_info = + Strings::join("", abi_tag_entries, [](const AbiEntry& p) { return p.key + " " + p.value + "\n"; }); } static std::vector get_dependency_abis(std::vector::iterator action_plan_begin, @@ -324,139 +371,42 @@ namespace vcpkg return dependency_abis; } - void compute_all_abis_ex(const VcpkgPaths& paths, - ActionPlan& action_plan, - const CMakeVars::CMakeVarProvider& var_provider, - const StatusParagraphs& status_db) + void compute_all_abis(const VcpkgPaths& paths, + ActionPlan& action_plan, + const CMakeVars::CMakeVarProvider& var_provider, + const StatusParagraphs& status_db) { const AsyncLazy> cmake_script_hashes( [&paths]() { get_cmake_script_hashes(paths.get_filesystem(), paths.scripts); }); // 1. system abi (ports.cmake/ PS version/ CMake version) const auto common_abi = get_common_abi(paths); - std::vector dependency_abis; - for (auto it = action_plan.install_actions.begin(); it != action_plan.install_actions.end(); ++it) { auto& action = *it; - if (!Util::Enum::to_bool(action.build_options.only_downloads)) - { - dependency_abis = get_dependency_abis(action_plan.install_actions.begin(), it, status_db); - } + // get prebuildinfo (not in parallel) auto pre_build_info = std::make_unique( paths, action.spec.triplet(), var_provider.get_tag_vars(action.spec).value_or_exit(VCPKG_LINE_INFO)); - populate_abi_tag_ex(paths, action, std::move(pre_build_info), dependency_abis, cmake_script_hashes); - dependency_abis.clear(); - } - - // get prebuildinfo (not in parallel) - // populate abi tag - } - - void compute_all_abis(const VcpkgPaths& paths, - ActionPlan& action_plan, - const CMakeVars::CMakeVarProvider& var_provider, - const StatusParagraphs& status_db) - { - Cache> grdk_cache; - - std::vector> must_make_private_abi; - - for (auto& action : action_plan.install_actions) - { - if (action.abi_info.has_value()) continue; - - must_make_private_abi.push_back(action); - } + bool should_proceed = initialize_abi_info(paths, action, std::move(pre_build_info)); - std::vector>> action_private_abis(must_make_private_abi.size()); - - // get "private" abi - parallel_transform(must_make_private_abi.begin(), - must_make_private_abi.size(), - action_private_abis.begin(), - [&](auto&& action) { - return populate_abi_tag(paths, action, grdk_cache); - make_private_abi( - paths, - action, - std::make_unique( - paths, - action.spec.triplet(), - var_provider.get_tag_vars(action.spec).value_or_exit(VCPKG_LINE_INFO)), - grdk_cache); - }); - - for (auto&& maybe_abi_entry : action_private_abis) - { - if (!maybe_abi_entry.has_value()) + if (!should_proceed) { continue; } - } - // get dependencies abi - for (auto it = action_plan.install_actions.begin(); it != action_plan.install_actions.end(); ++it) - { - auto& action = *it; std::vector dependency_abis; - for (auto&& pspec : action.package_dependencies) + if (!Util::Enum::to_bool(action.build_options.only_downloads)) { - if (pspec == action.spec) continue; - - auto pred = [&](const InstallPlanAction& ipa) { return ipa.spec == pspec; }; - auto it2 = std::find_if(action_plan.install_actions.begin(), it, pred); - if (it2 == it) - { - // Finally, look in current installed - auto status_it = status_db.find(pspec); - if (status_it == status_db.end()) - { - Checks::unreachable( - VCPKG_LINE_INFO, - fmt::format("Failed to find dependency abi for {} -> {}", action.spec, pspec)); - } - - dependency_abis.emplace_back(pspec.name(), status_it->get()->package.abi); - } - else + dependency_abis = get_dependency_abis(action_plan.install_actions.begin(), it, status_db); + if (!check_dependency_hashes(dependency_abis, action.spec)) { - dependency_abis.emplace_back(pspec.name(), it2->public_abi()); + continue; } } -#ifdef ABI_PERF - auto maybe_abi_path_and_file = -#endif - populate_abi_tag(paths, action, dependency_abis, grdk_cache); -#ifdef ABI_PERF - if (auto abi_path_and_file = maybe_abi_path_and_file.get()) - { - abi_files_and_contents.emplace_back(std::move(*abi_path_and_file)); - } -#endif - } -#ifdef ABI_PERF - std::mutex mtx; - auto& fs = paths.get_filesystem(); - bool should_exit = false; - parallel_for_each_n(abi_files_and_contents.begin(), abi_files_and_contents.size(), [&](const auto& abi_entry) { - std::error_code ec; - - fs.write_contents_and_dirs(abi_entry.first, abi_entry.second, ec); - if (ec) - { - std::lock_guard lock(mtx); - msg::println_error(format_filesystem_call_error(ec, "create_directory", {abi_entry.first})); - should_exit = true; - } - }); - if (should_exit) - { - Checks::exit_fail(VCPKG_LINE_INFO); } -#endif + // populate abi tag } } // namespace vcpkg From 4e61638795fd8b044c42001de654f4ddcd557aa1 Mon Sep 17 00:00:00 2001 From: Thomas1664 <46387399+Thomas1664@users.noreply.github.com> Date: Sat, 14 Oct 2023 12:16:43 +0000 Subject: [PATCH 11/60] fix some compile errors --- src/vcpkg/abi.cpp | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/src/vcpkg/abi.cpp b/src/vcpkg/abi.cpp index c326f20022..5c3ddfe92a 100644 --- a/src/vcpkg/abi.cpp +++ b/src/vcpkg/abi.cpp @@ -20,6 +20,7 @@ #include #include #include +#include namespace vcpkg { @@ -92,13 +93,14 @@ namespace vcpkg auto& fs = paths.get_filesystem(); abi_entries.emplace_back("cmake", paths.get_tool_version(Tools::CMAKE, stdout_sink)); - abi_entries.emplace_back("ports.cmake", Hash::get_file_hash(fs, paths.ports_cmake, Hash::Algorithm::Sha256)); + abi_entries.emplace_back("ports.cmake", Hash::get_file_hash(fs, paths.ports_cmake, Hash::Algorithm::Sha256).value_or("")); abi_entries.emplace_back("post_build_checks", "2"); // This #ifdef is mirrored in tools.cpp's PowershellProvider #if defined(_WIN32) abi_entries.emplace_back("powershell", paths.get_tool_version("powershell-core", stdout_sink)); #endif + return abi_entries; } static std::vector get_cmake_script_hashes(const Filesystem& fs, const Path& scripts_dir) @@ -109,7 +111,7 @@ namespace vcpkg std::vector helpers(files.size()); parallel_transform(files.begin(), files.size(), helpers.begin(), [&fs](auto&& file) { - return AbiEntry{file.stem().to_string(), Hash::get_file_hash(fs, file, Hash::Algorithm::Sha256)}; + return AbiEntry{file.stem().to_string(), Hash::get_file_hash(fs, file, Hash::Algorithm::Sha256).value_or("")}; }); return helpers; } @@ -218,7 +220,7 @@ namespace vcpkg } } - bool initialize_abi_info(const VcpkgPaths& paths, + static bool initialize_abi_info(const VcpkgPaths& paths, InstallPlanAction& action, std::unique_ptr&& proto_pre_build_info) { @@ -262,16 +264,17 @@ namespace vcpkg '\n'); return false; } + return true; } // PRE: initialize_abi_tag() was called and returned true - void make_abi_tag(const Filesystem& fs, + static void make_abi_tag(const Filesystem& fs, InstallPlanAction& action, View common_abi, std::vector&& dependency_abis, const AsyncLazy>& cmake_script_hashes) { - auto& abi_info = action.abi_info; + AbiInfo& abi_info = *action.abi_info.get(); auto abi_tag_entries = std::move(dependency_abis); abi_tag_entries.emplace_back("triplet", action.spec.triplet().canonical_name()); @@ -377,7 +380,7 @@ namespace vcpkg const StatusParagraphs& status_db) { const AsyncLazy> cmake_script_hashes( - [&paths]() { get_cmake_script_hashes(paths.get_filesystem(), paths.scripts); }); + [&paths]() { return get_cmake_script_hashes(paths.get_filesystem(), paths.scripts); }); // 1. system abi (ports.cmake/ PS version/ CMake version) const auto common_abi = get_common_abi(paths); From 0a605088922db976939d5a1b422208a300621a04 Mon Sep 17 00:00:00 2001 From: Thomas1664 <46387399+Thomas1664@users.noreply.github.com> Date: Sat, 14 Oct 2023 12:22:14 +0000 Subject: [PATCH 12/60] Satisfy preconditions --- src/vcpkg/abi.cpp | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/vcpkg/abi.cpp b/src/vcpkg/abi.cpp index 5c3ddfe92a..a3cdf4d6e7 100644 --- a/src/vcpkg/abi.cpp +++ b/src/vcpkg/abi.cpp @@ -220,9 +220,10 @@ namespace vcpkg } } + // PRE: !action.abi_info.has_value() static bool initialize_abi_info(const VcpkgPaths& paths, - InstallPlanAction& action, - std::unique_ptr&& proto_pre_build_info) + InstallPlanAction& action, + std::unique_ptr&& proto_pre_build_info) { const auto& pre_build_info = *proto_pre_build_info; // get toolset (not in parallel) @@ -388,6 +389,8 @@ namespace vcpkg { auto& action = *it; + Checks::check_exit(VCPKG_LINE_INFO, !action.abi_info.has_value()); + // get prebuildinfo (not in parallel) auto pre_build_info = std::make_unique( paths, action.spec.triplet(), var_provider.get_tag_vars(action.spec).value_or_exit(VCPKG_LINE_INFO)); @@ -409,6 +412,7 @@ namespace vcpkg } } + } // populate abi tag } From e03aaa5cada4340eae4939788c4008ef28530a18 Mon Sep 17 00:00:00 2001 From: Thomas1664 <46387399+Thomas1664@users.noreply.github.com> Date: Sat, 14 Oct 2023 12:30:20 +0000 Subject: [PATCH 13/60] Fix bug --- src/vcpkg/abi.cpp | 22 +++++++++++++--------- 1 file changed, 13 insertions(+), 9 deletions(-) diff --git a/src/vcpkg/abi.cpp b/src/vcpkg/abi.cpp index a3cdf4d6e7..bbe87c7a79 100644 --- a/src/vcpkg/abi.cpp +++ b/src/vcpkg/abi.cpp @@ -254,16 +254,19 @@ namespace vcpkg // check if all dependencies have a hash static bool check_dependency_hashes(View dependency_abis, const PackageSpec& spec) { - auto dep_no_hash_it = std::find_if( - dependency_abis.begin(), dependency_abis.end(), [](const auto& dep_abi) { return dep_abi.value.empty(); }); - if (dep_no_hash_it != dependency_abis.end()) + if (!dependency_abis.empty()) { - Debug::print("Binary caching for package ", - spec, - " is disabled due to missing abi info for ", - dep_no_hash_it->key, - '\n'); - return false; + auto dep_no_hash_it = std::find_if( + dependency_abis.begin(), dependency_abis.end(), [](const auto& dep_abi) { return dep_abi.value.empty(); }); + if (dep_no_hash_it != dependency_abis.end()) + { + Debug::print("Binary caching for package ", + spec, + " is disabled due to missing abi info for ", + dep_no_hash_it->key, + '\n'); + return false; + } } return true; } @@ -382,6 +385,7 @@ namespace vcpkg { const AsyncLazy> cmake_script_hashes( [&paths]() { return get_cmake_script_hashes(paths.get_filesystem(), paths.scripts); }); + // 1. system abi (ports.cmake/ PS version/ CMake version) const auto common_abi = get_common_abi(paths); From 01a61a199a86a8f5f1cb6a62f8940e7c010a3b81 Mon Sep 17 00:00:00 2001 From: Thomas1664 <46387399+Thomas1664@users.noreply.github.com> Date: Sun, 15 Oct 2023 14:07:25 +0000 Subject: [PATCH 14/60] static grdk cache --- src/vcpkg/abi.cpp | 26 ++++++++++++-------------- 1 file changed, 12 insertions(+), 14 deletions(-) diff --git a/src/vcpkg/abi.cpp b/src/vcpkg/abi.cpp index bbe87c7a79..a616cb2451 100644 --- a/src/vcpkg/abi.cpp +++ b/src/vcpkg/abi.cpp @@ -31,9 +31,9 @@ namespace vcpkg }; static std::string grdk_hash(const Filesystem& fs, - Cache>& grdk_cache, const PreBuildInfo& pre_build_info) { + static const Cache> grdk_cache; if (auto game_dk_latest = pre_build_info.gamedk_latest_path.get()) { const auto grdk_header_path = *game_dk_latest / "GRDK/gameKit/Include/grdk.h"; @@ -59,7 +59,6 @@ namespace vcpkg } static void abi_entries_from_pre_build_info(const Filesystem& fs, - Cache>& grdk_cache, const PreBuildInfo& pre_build_info, std::vector& abi_tag_entries) { @@ -67,8 +66,7 @@ namespace vcpkg { abi_tag_entries.emplace_back( "public_abi_override", - Hash::get_string_hash(pre_build_info.public_abi_override.value_or_exit(VCPKG_LINE_INFO), - Hash::Algorithm::Sha256)); + Hash::get_string_sha256(pre_build_info.public_abi_override.value_or_exit(VCPKG_LINE_INFO))); } for (const auto& env_var : pre_build_info.passthrough_env_vars_tracked) @@ -76,14 +74,13 @@ namespace vcpkg auto maybe_env_var_value = get_environment_variable(env_var); if (auto env_var_value = maybe_env_var_value.get()) { - abi_tag_entries.emplace_back("ENV:" + env_var, - Hash::get_string_hash(*env_var_value, Hash::Algorithm::Sha256)); + abi_tag_entries.emplace_back("ENV:" + env_var, Hash::get_string_sha256(*env_var_value)); } } if (pre_build_info.target_is_xbox) { - abi_tag_entries.emplace_back("grdk.h", grdk_hash(fs, grdk_cache, pre_build_info)); + abi_tag_entries.emplace_back("grdk.h", grdk_hash(fs, pre_build_info)); } } @@ -273,10 +270,10 @@ namespace vcpkg // PRE: initialize_abi_tag() was called and returned true static void make_abi_tag(const Filesystem& fs, - InstallPlanAction& action, - View common_abi, - std::vector&& dependency_abis, - const AsyncLazy>& cmake_script_hashes) + InstallPlanAction& action, + View common_abi, + std::vector&& dependency_abis, + const AsyncLazy>& cmake_script_hashes) { AbiInfo& abi_info = *action.abi_info.get(); auto abi_tag_entries = std::move(dependency_abis); @@ -285,7 +282,7 @@ namespace vcpkg abi_tag_entries.emplace_back("triplet_abi", *abi_info.triplet_abi.get()); // abi tags from prebuildinfo - abi_entries_from_pre_build_info(fs, grdk_cache, *abi_info.pre_build_info, abi_tag_entries); + abi_entries_from_pre_build_info(fs, *abi_info.pre_build_info, abi_tag_entries); auto& scfl = action.source_control_file_and_location.value_or_exit(VCPKG_LINE_INFO); @@ -330,6 +327,7 @@ namespace vcpkg std::string full_abi_info = Strings::join("", abi_tag_entries, [](const AbiEntry& p) { return p.key + " " + p.value + "\n"; }); + abi_info.package_abi = Hash::get_string_sha256(full_abi_info); } static std::vector get_dependency_abis(std::vector::iterator action_plan_begin, @@ -383,11 +381,11 @@ namespace vcpkg const CMakeVars::CMakeVarProvider& var_provider, const StatusParagraphs& status_db) { - const AsyncLazy> cmake_script_hashes( + static const AsyncLazy> cmake_script_hashes( [&paths]() { return get_cmake_script_hashes(paths.get_filesystem(), paths.scripts); }); // 1. system abi (ports.cmake/ PS version/ CMake version) - const auto common_abi = get_common_abi(paths); + static const auto common_abi = get_common_abi(paths); for (auto it = action_plan.install_actions.begin(); it != action_plan.install_actions.end(); ++it) { From 425840c7e0f4c98a9b621bdefe13fb6ad0a577e3 Mon Sep 17 00:00:00 2001 From: Thomas1664 <46387399+Thomas1664@users.noreply.github.com> Date: Sun, 15 Oct 2023 21:33:34 +0000 Subject: [PATCH 15/60] Write abi and spdx files --- include/vcpkg/base/path.h | 3 +- include/vcpkg/spdx.h | 10 ++++-- src/vcpkg-test/spdx.cpp | 18 ++++++++--- src/vcpkg/abi.cpp | 59 ++++++++++++++++++++++++------------ src/vcpkg/base/files.cpp | 13 +++++++- src/vcpkg/commands.build.cpp | 30 ------------------ src/vcpkg/spdx.cpp | 46 ++++++++++++++++++++++------ 7 files changed, 112 insertions(+), 67 deletions(-) diff --git a/include/vcpkg/base/path.h b/include/vcpkg/base/path.h index 1552b2afb7..6ec85f37e4 100644 --- a/include/vcpkg/base/path.h +++ b/include/vcpkg/base/path.h @@ -26,7 +26,8 @@ namespace vcpkg const char* c_str() const noexcept; - std::string generic_u8string() const; + std::string generic_u8string() const&; + std::string generic_u8string() &&; bool empty() const noexcept; diff --git a/include/vcpkg/spdx.h b/include/vcpkg/spdx.h index fe093311e0..98e4df172d 100644 --- a/include/vcpkg/spdx.h +++ b/include/vcpkg/spdx.h @@ -7,7 +7,10 @@ #include +#include + #include +#include namespace vcpkg { @@ -21,11 +24,14 @@ namespace vcpkg /// @param resource_docs Additional documents to concatenate into the created document. These are intended to /// capture fetched resources, such as tools or source archives. std::string create_spdx_sbom(const InstallPlanAction& action, - View relative_paths, - View hashes, + View port_files_abi, std::string created_time, std::string document_namespace, std::vector&& resource_docs); Json::Value run_resource_heuristics(StringView contents, StringView portRawVersion); + void write_sbom(const VcpkgPaths& paths, + const InstallPlanAction& action, + std::vector heuristic_resources, + const std::vector& port_files_abi); } diff --git a/src/vcpkg-test/spdx.cpp b/src/vcpkg-test/spdx.cpp index d736fa922c..f9cfdc9923 100644 --- a/src/vcpkg-test/spdx.cpp +++ b/src/vcpkg-test/spdx.cpp @@ -26,10 +26,15 @@ TEST_CASE ("spdx maximum serialization", "[spdx]") auto& abi = *(ipa.abi_info = AbiInfo{}).get(); abi.package_abi = "ABIHASH"; + std::vector port_abi{ + {"vcpkg.json", "vcpkg.json-hash"}, + {"portfile.cmake", "portfile.cmake-hash"}, + {"patches/patch1.diff", "patch1.diff-hash"} + }; + const auto sbom = create_spdx_sbom(ipa, - std::vector{"vcpkg.json", "portfile.cmake", "patches/patch1.diff"}, - std::vector{"vcpkg.json-hash", "portfile.cmake-hash", "patch1.diff-hash"}, + port_abi, "now", "https://test-document-namespace", {}); @@ -179,10 +184,13 @@ TEST_CASE ("spdx minimum serialization", "[spdx]") InstallPlanAction ipa(spec, scfl, "test_packages_root", RequestType::USER_REQUESTED, Test::X86_WINDOWS, {}, {}, {}); auto& abi = *(ipa.abi_info = AbiInfo{}).get(); abi.package_abi = "deadbeef"; + std::vector port_abi{ + {"vcpkg.json", "hash-vcpkg.json"}, + {"portfile.cmake", "hash-portfile.cmake"} + }; const auto sbom = create_spdx_sbom(ipa, - std::vector{"vcpkg.json", "portfile.cmake"}, - std::vector{"hash-vcpkg.json", "hash-portfile.cmake"}, + port_abi, "now+1", "https://test-document-namespace-2", {}); @@ -323,7 +331,7 @@ TEST_CASE ("spdx concat resources", "[spdx]") .value(VCPKG_LINE_INFO) .value; - const auto sbom = create_spdx_sbom(ipa, {}, {}, "now+1", "ns", {std::move(doc1), std::move(doc2)}); + const auto sbom = create_spdx_sbom(ipa, {}, "now+1", "ns", {std::move(doc1), std::move(doc2)}); auto expected = Json::parse(R"json( { diff --git a/src/vcpkg/abi.cpp b/src/vcpkg/abi.cpp index a616cb2451..c5d199af2d 100644 --- a/src/vcpkg/abi.cpp +++ b/src/vcpkg/abi.cpp @@ -30,6 +30,14 @@ namespace vcpkg std::vector cmake_script_hashes; }; + struct PackageAbiResult + { + const InstallPlanAction& action; + std::string abi_str; + std::string cmake_content; + std::vector port_files_abi; + }; + static std::string grdk_hash(const Filesystem& fs, const PreBuildInfo& pre_build_info) { @@ -134,24 +142,24 @@ namespace vcpkg } // Get abi for per-port files - static std::pair, std::string> get_port_files(const Filesystem& fs, - std::vector& abi_entries, - const SourceControlFileAndLocation& scfl) + static std::pair, std::string> get_port_files(const Filesystem& fs, + const SourceControlFileAndLocation& scfl) { auto files_and_content = get_ports_files_and_contents(fs, scfl.source_location); - auto& paragraph = scfl.source_control_file->core_paragraph; // If there is an unusually large number of files in the port then // something suspicious is going on. - constexpr size_t max_port_file_count = 100; + static constexpr size_t max_port_file_count = 100; if (files_and_content.size() > max_port_file_count) { + auto& paragraph = scfl.source_control_file->core_paragraph; msg::println_warning( msgHashPortManyFiles, msg::package_name = paragraph->name, msg::count = files_and_content.size()); } - std::vector port_files; + std::vector abi_entries; + abi_entries.reserve(files_and_content.size()); std::string portfile_cmake_contents; for (auto&& [port_file, contents] : files_and_content) @@ -161,11 +169,10 @@ namespace vcpkg portfile_cmake_contents += contents; } - auto path_str = std::move(port_file).native(); - port_files.emplace_back(path_str); + std::string path_str = std::move(port_file).generic_u8string(); abi_entries.emplace_back(std::move(path_str), Hash::get_string_sha256(contents)); } - return {std::move(port_files), std::move(portfile_cmake_contents)}; + return {std::move(abi_entries), std::move(portfile_cmake_contents)}; } static void get_feature_abi(InternalFeatureSet sorted_feature_list, std::vector& abi_entries) @@ -269,12 +276,13 @@ namespace vcpkg } // PRE: initialize_abi_tag() was called and returned true - static void make_abi_tag(const Filesystem& fs, + static PackageAbiResult make_abi_tag(const VcpkgPaths& paths, InstallPlanAction& action, View common_abi, std::vector&& dependency_abis, const AsyncLazy>& cmake_script_hashes) { + auto& fs = paths.get_filesystem(); AbiInfo& abi_info = *action.abi_info.get(); auto abi_tag_entries = std::move(dependency_abis); @@ -287,7 +295,8 @@ namespace vcpkg auto& scfl = action.source_control_file_and_location.value_or_exit(VCPKG_LINE_INFO); // portfile hashes/contents - auto&& [port_files, cmake_contents] = get_port_files(fs, abi_tag_entries, scfl); + auto&& [port_files_abi, cmake_contents] = get_port_files(fs, scfl); + abi_tag_entries.insert(abi_tag_entries.end(), port_files_abi.cbegin(), port_files_abi.cend()); // cmake helpers (access to cmake helper hashes in cache not in parallel) for (auto&& helper : cmake_script_hashes.get()) @@ -320,14 +329,12 @@ namespace vcpkg } // fill out port abi - // fill out infos for sbom - // write abi file - - // write sbom file? - std::string full_abi_info = Strings::join("", abi_tag_entries, [](const AbiEntry& p) { return p.key + " " + p.value + "\n"; }); abi_info.package_abi = Hash::get_string_sha256(full_abi_info); + abi_info.abi_tag_file.emplace(paths.build_dir(action.spec) / action.spec.triplet().canonical_name() + ".vcpkg_abi_info.txt"); + + return {action, std::move(full_abi_info), std::move(cmake_contents), std::move(port_files_abi)}; } static std::vector get_dependency_abis(std::vector::iterator action_plan_begin, @@ -375,18 +382,22 @@ namespace vcpkg } return dependency_abis; } - + void compute_all_abis(const VcpkgPaths& paths, ActionPlan& action_plan, const CMakeVars::CMakeVarProvider& var_provider, const StatusParagraphs& status_db) { + auto& fs = paths.get_filesystem(); static const AsyncLazy> cmake_script_hashes( - [&paths]() { return get_cmake_script_hashes(paths.get_filesystem(), paths.scripts); }); + [&paths, &fs]() { return get_cmake_script_hashes(fs, paths.scripts); }); // 1. system abi (ports.cmake/ PS version/ CMake version) static const auto common_abi = get_common_abi(paths); + std::vector abi_results; + abi_results.reserve(action_plan.install_actions.size()); + for (auto it = action_plan.install_actions.begin(); it != action_plan.install_actions.end(); ++it) { auto& action = *it; @@ -414,8 +425,18 @@ namespace vcpkg } } - + abi_results.push_back(make_abi_tag(paths, action, common_abi, std::move(dependency_abis), cmake_script_hashes)); } // populate abi tag + for (auto&& abi_result : abi_results) + { + // write abi tag file + fs.write_contents_and_dirs(abi_result.action.abi_info.value_or_exit(VCPKG_LINE_INFO).abi_tag_file.value_or_exit(VCPKG_LINE_INFO), abi_result.abi_str, VCPKG_LINE_INFO); + + // make and write sbom file + auto& scf = abi_result.action.source_control_file_and_location.value_or_exit(VCPKG_LINE_INFO).source_control_file; + std::vector heuristic_resources{run_resource_heuristics(abi_result.cmake_content, scf->core_paragraph->raw_version)}; + write_sbom(paths, abi_result.action, std::move(heuristic_resources), abi_result.port_files_abi); + } } } // namespace vcpkg diff --git a/src/vcpkg/base/files.cpp b/src/vcpkg/base/files.cpp index 0ff799233b..b48dd169e2 100644 --- a/src/vcpkg/base/files.cpp +++ b/src/vcpkg/base/files.cpp @@ -972,7 +972,7 @@ namespace vcpkg const char* Path::c_str() const noexcept { return m_str.c_str(); } - std::string Path::generic_u8string() const + std::string Path::generic_u8string() const& { #if defined(_WIN32) auto result = m_str; @@ -983,6 +983,17 @@ namespace vcpkg #endif } + std::string Path::generic_u8string() && + { +#if defined(_WIN32) + auto result = std::move(m_str); + std::replace(result.begin(), result.end(), '\\', '/'); + return result; +#else + return std::move(m_str); +#endif + } + bool Path::empty() const noexcept { return m_str.empty(); } Path Path::operator/(StringView sv) const& diff --git a/src/vcpkg/commands.build.cpp b/src/vcpkg/commands.build.cpp index f16a4c81b2..edecc1732f 100644 --- a/src/vcpkg/commands.build.cpp +++ b/src/vcpkg/commands.build.cpp @@ -899,35 +899,6 @@ namespace vcpkg } } - static void write_sbom(const VcpkgPaths& paths, - const InstallPlanAction& action, - std::vector heuristic_resources) - { - auto& fs = paths.get_filesystem(); - const auto& scfl = action.source_control_file_and_location.value_or_exit(VCPKG_LINE_INFO); - const auto& scf = *scfl.source_control_file; - - auto doc_ns = Strings::concat("https://spdx.org/spdxdocs/", - scf.core_paragraph->name, - '-', - action.spec.triplet(), - '-', - scf.to_version(), - '-', - generate_random_UUID()); - - const auto now = CTime::now_string(); - const auto& abi = action.abi_info.value_or_exit(VCPKG_LINE_INFO); - - const auto json_path = - action.package_dir.value_or_exit(VCPKG_LINE_INFO) / "share" / action.spec.name() / "vcpkg.spdx.json"; - fs.write_contents_and_dirs( - json_path, - create_spdx_sbom( - action, abi.relative_port_files, abi.relative_port_hashes, now, doc_ns, std::move(heuristic_resources)), - VCPKG_LINE_INFO); - } - static ExtendedBuildResult do_build_package(const VcpkgCmdArguments& args, const VcpkgPaths& paths, const InstallPlanAction& action, @@ -1040,7 +1011,6 @@ namespace vcpkg std::unique_ptr bcf = create_binary_control_file(action, build_info); - write_sbom(paths, action, abi_info.heuristic_resources); write_binary_control_file(paths.get_filesystem(), action.package_dir.value_or_exit(VCPKG_LINE_INFO), *bcf); return {BuildResult::SUCCEEDED, std::move(bcf)}; } diff --git a/src/vcpkg/spdx.cpp b/src/vcpkg/spdx.cpp index 374e36a1f6..59c0d47357 100644 --- a/src/vcpkg/spdx.cpp +++ b/src/vcpkg/spdx.cpp @@ -1,6 +1,8 @@ +#include #include #include #include +#include #include #include @@ -133,14 +135,11 @@ Json::Value vcpkg::run_resource_heuristics(StringView contents, StringView portR } std::string vcpkg::create_spdx_sbom(const InstallPlanAction& action, - View relative_paths, - View hashes, + View port_files_abi, std::string created_time, std::string document_namespace, std::vector&& resource_docs) { - Checks::check_exit(VCPKG_LINE_INFO, relative_paths.size() == hashes.size()); - const std::string noassert = "NOASSERTION"; const auto& scfl = action.source_control_file_and_location.value_or_exit(VCPKG_LINE_INFO); const auto& cpgh = *scfl.source_control_file->core_paragraph; @@ -184,7 +183,7 @@ std::string vcpkg::create_spdx_sbom(const InstallPlanAction& action, rel.insert("relationshipType", "GENERATES"); rel.insert("relatedSpdxElement", "SPDXRef-binary"); } - for (size_t i = 0; i < relative_paths.size(); ++i) + for (size_t i = 0; i < port_files_abi.size(); ++i) { auto& rel = rels.push_back(Json::Object()); rel.insert("spdxElementId", "SPDXRef-port"); @@ -212,13 +211,13 @@ std::string vcpkg::create_spdx_sbom(const InstallPlanAction& action, auto& files = doc.insert("files", Json::Array()); { - for (size_t i = 0; i < relative_paths.size(); ++i) + for (size_t i = 0; i < port_files_abi.size(); ++i) { - const auto& path = relative_paths[i]; - const auto& hash = hashes[i]; + const auto& path = port_files_abi[i].key; + const auto& hash = port_files_abi[i].value; auto& obj = files.push_back(Json::Object()); - obj.insert("fileName", "./" + path.generic_u8string()); + obj.insert("fileName", "./" + path); const auto ref = fmt::format("SPDXRef-file-{}", i); obj.insert("SPDXID", ref); auto& checksum = obj.insert("checksums", Json::Array()); @@ -254,3 +253,32 @@ std::string vcpkg::create_spdx_sbom(const InstallPlanAction& action, return Json::stringify(doc); } + +void vcpkg::write_sbom(const VcpkgPaths& paths, + const InstallPlanAction& action, + std::vector heuristic_resources, + const std::vector& port_files_abi) + { + auto& fs = paths.get_filesystem(); + const auto& scfl = action.source_control_file_and_location.value_or_exit(VCPKG_LINE_INFO); + const auto& scf = *scfl.source_control_file; + + auto doc_ns = Strings::concat("https://spdx.org/spdxdocs/", + scf.core_paragraph->name, + '-', + action.spec.triplet(), + '-', + scf.to_version(), + '-', + generate_random_UUID()); + + const auto now = CTime::now_string(); + + const auto json_path = + action.package_dir.value_or_exit(VCPKG_LINE_INFO) / "share" / action.spec.name() / "vcpkg.spdx.json"; + fs.write_contents_and_dirs( + json_path, + create_spdx_sbom( + action, port_files_abi, now, doc_ns, std::move(heuristic_resources)), + VCPKG_LINE_INFO); + } From 5b6f45d0bf988c1d048d44707463a557769c2918 Mon Sep 17 00:00:00 2001 From: Thomas1664 <46387399+Thomas1664@users.noreply.github.com> Date: Sun, 15 Oct 2023 21:44:49 +0000 Subject: [PATCH 16/60] Fix stack buffer overflow --- src/vcpkg/abi.cpp | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/vcpkg/abi.cpp b/src/vcpkg/abi.cpp index c5d199af2d..a7cd34376d 100644 --- a/src/vcpkg/abi.cpp +++ b/src/vcpkg/abi.cpp @@ -389,8 +389,7 @@ namespace vcpkg const StatusParagraphs& status_db) { auto& fs = paths.get_filesystem(); - static const AsyncLazy> cmake_script_hashes( - [&paths, &fs]() { return get_cmake_script_hashes(fs, paths.scripts); }); + static const std::vector cmake_script_hashes = get_cmake_script_hashes(fs, paths.scripts); // 1. system abi (ports.cmake/ PS version/ CMake version) static const auto common_abi = get_common_abi(paths); From 2450ad87be2de2f81f34d65778148bfba9171656 Mon Sep 17 00:00:00 2001 From: Thomas1664 <46387399+Thomas1664@users.noreply.github.com> Date: Sun, 15 Oct 2023 21:53:01 +0000 Subject: [PATCH 17/60] format --- include/vcpkg/abi.h | 1 - src/vcpkg-test/spdx.cpp | 26 ++++------------- src/vcpkg/abi.cpp | 55 +++++++++++++++++++++--------------- src/vcpkg/commands.build.cpp | 1 - src/vcpkg/spdx.cpp | 40 +++++++++++++------------- 5 files changed, 57 insertions(+), 66 deletions(-) diff --git a/include/vcpkg/abi.h b/include/vcpkg/abi.h index 5fc781ca4c..d11ad0d3fa 100644 --- a/include/vcpkg/abi.h +++ b/include/vcpkg/abi.h @@ -13,7 +13,6 @@ #include #include - #include #include #include diff --git a/src/vcpkg-test/spdx.cpp b/src/vcpkg-test/spdx.cpp index f9cfdc9923..047a4fe9e1 100644 --- a/src/vcpkg-test/spdx.cpp +++ b/src/vcpkg-test/spdx.cpp @@ -26,18 +26,11 @@ TEST_CASE ("spdx maximum serialization", "[spdx]") auto& abi = *(ipa.abi_info = AbiInfo{}).get(); abi.package_abi = "ABIHASH"; - std::vector port_abi{ - {"vcpkg.json", "vcpkg.json-hash"}, - {"portfile.cmake", "portfile.cmake-hash"}, - {"patches/patch1.diff", "patch1.diff-hash"} - }; + std::vector port_abi{{"vcpkg.json", "vcpkg.json-hash"}, + {"portfile.cmake", "portfile.cmake-hash"}, + {"patches/patch1.diff", "patch1.diff-hash"}}; - const auto sbom = - create_spdx_sbom(ipa, - port_abi, - "now", - "https://test-document-namespace", - {}); + const auto sbom = create_spdx_sbom(ipa, port_abi, "now", "https://test-document-namespace", {}); auto expected = Json::parse(R"json( { @@ -184,16 +177,9 @@ TEST_CASE ("spdx minimum serialization", "[spdx]") InstallPlanAction ipa(spec, scfl, "test_packages_root", RequestType::USER_REQUESTED, Test::X86_WINDOWS, {}, {}, {}); auto& abi = *(ipa.abi_info = AbiInfo{}).get(); abi.package_abi = "deadbeef"; - std::vector port_abi{ - {"vcpkg.json", "hash-vcpkg.json"}, - {"portfile.cmake", "hash-portfile.cmake"} - }; + std::vector port_abi{{"vcpkg.json", "hash-vcpkg.json"}, {"portfile.cmake", "hash-portfile.cmake"}}; - const auto sbom = create_spdx_sbom(ipa, - port_abi, - "now+1", - "https://test-document-namespace-2", - {}); + const auto sbom = create_spdx_sbom(ipa, port_abi, "now+1", "https://test-document-namespace-2", {}); auto expected = Json::parse(R"json( { diff --git a/src/vcpkg/abi.cpp b/src/vcpkg/abi.cpp index a7cd34376d..4312d62ac9 100644 --- a/src/vcpkg/abi.cpp +++ b/src/vcpkg/abi.cpp @@ -38,8 +38,7 @@ namespace vcpkg std::vector port_files_abi; }; - static std::string grdk_hash(const Filesystem& fs, - const PreBuildInfo& pre_build_info) + static std::string grdk_hash(const Filesystem& fs, const PreBuildInfo& pre_build_info) { static const Cache> grdk_cache; if (auto game_dk_latest = pre_build_info.gamedk_latest_path.get()) @@ -98,7 +97,8 @@ namespace vcpkg auto& fs = paths.get_filesystem(); abi_entries.emplace_back("cmake", paths.get_tool_version(Tools::CMAKE, stdout_sink)); - abi_entries.emplace_back("ports.cmake", Hash::get_file_hash(fs, paths.ports_cmake, Hash::Algorithm::Sha256).value_or("")); + abi_entries.emplace_back("ports.cmake", + Hash::get_file_hash(fs, paths.ports_cmake, Hash::Algorithm::Sha256).value_or("")); abi_entries.emplace_back("post_build_checks", "2"); // This #ifdef is mirrored in tools.cpp's PowershellProvider @@ -116,7 +116,8 @@ namespace vcpkg std::vector helpers(files.size()); parallel_transform(files.begin(), files.size(), helpers.begin(), [&fs](auto&& file) { - return AbiEntry{file.stem().to_string(), Hash::get_file_hash(fs, file, Hash::Algorithm::Sha256).value_or("")}; + return AbiEntry{file.stem().to_string(), + Hash::get_file_hash(fs, file, Hash::Algorithm::Sha256).value_or("")}; }); return helpers; } @@ -260,15 +261,16 @@ namespace vcpkg { if (!dependency_abis.empty()) { - auto dep_no_hash_it = std::find_if( - dependency_abis.begin(), dependency_abis.end(), [](const auto& dep_abi) { return dep_abi.value.empty(); }); + auto dep_no_hash_it = std::find_if(dependency_abis.begin(), dependency_abis.end(), [](const auto& dep_abi) { + return dep_abi.value.empty(); + }); if (dep_no_hash_it != dependency_abis.end()) { Debug::print("Binary caching for package ", - spec, - " is disabled due to missing abi info for ", - dep_no_hash_it->key, - '\n'); + spec, + " is disabled due to missing abi info for ", + dep_no_hash_it->key, + '\n'); return false; } } @@ -277,10 +279,10 @@ namespace vcpkg // PRE: initialize_abi_tag() was called and returned true static PackageAbiResult make_abi_tag(const VcpkgPaths& paths, - InstallPlanAction& action, - View common_abi, - std::vector&& dependency_abis, - const AsyncLazy>& cmake_script_hashes) + InstallPlanAction& action, + View common_abi, + std::vector&& dependency_abis, + const AsyncLazy>& cmake_script_hashes) { auto& fs = paths.get_filesystem(); AbiInfo& abi_info = *action.abi_info.get(); @@ -291,13 +293,13 @@ namespace vcpkg // abi tags from prebuildinfo abi_entries_from_pre_build_info(fs, *abi_info.pre_build_info, abi_tag_entries); - + auto& scfl = action.source_control_file_and_location.value_or_exit(VCPKG_LINE_INFO); // portfile hashes/contents auto&& [port_files_abi, cmake_contents] = get_port_files(fs, scfl); abi_tag_entries.insert(abi_tag_entries.end(), port_files_abi.cbegin(), port_files_abi.cend()); - + // cmake helpers (access to cmake helper hashes in cache not in parallel) for (auto&& helper : cmake_script_hashes.get()) { @@ -332,7 +334,8 @@ namespace vcpkg std::string full_abi_info = Strings::join("", abi_tag_entries, [](const AbiEntry& p) { return p.key + " " + p.value + "\n"; }); abi_info.package_abi = Hash::get_string_sha256(full_abi_info); - abi_info.abi_tag_file.emplace(paths.build_dir(action.spec) / action.spec.triplet().canonical_name() + ".vcpkg_abi_info.txt"); + abi_info.abi_tag_file.emplace(paths.build_dir(action.spec) / action.spec.triplet().canonical_name() + + ".vcpkg_abi_info.txt"); return {action, std::move(full_abi_info), std::move(cmake_contents), std::move(port_files_abi)}; } @@ -382,7 +385,7 @@ namespace vcpkg } return dependency_abis; } - + void compute_all_abis(const VcpkgPaths& paths, ActionPlan& action_plan, const CMakeVars::CMakeVarProvider& var_provider, @@ -424,17 +427,23 @@ namespace vcpkg } } - abi_results.push_back(make_abi_tag(paths, action, common_abi, std::move(dependency_abis), cmake_script_hashes)); + abi_results.push_back( + make_abi_tag(paths, action, common_abi, std::move(dependency_abis), cmake_script_hashes)); } // populate abi tag for (auto&& abi_result : abi_results) { // write abi tag file - fs.write_contents_and_dirs(abi_result.action.abi_info.value_or_exit(VCPKG_LINE_INFO).abi_tag_file.value_or_exit(VCPKG_LINE_INFO), abi_result.abi_str, VCPKG_LINE_INFO); - + fs.write_contents_and_dirs( + abi_result.action.abi_info.value_or_exit(VCPKG_LINE_INFO).abi_tag_file.value_or_exit(VCPKG_LINE_INFO), + abi_result.abi_str, + VCPKG_LINE_INFO); + // make and write sbom file - auto& scf = abi_result.action.source_control_file_and_location.value_or_exit(VCPKG_LINE_INFO).source_control_file; - std::vector heuristic_resources{run_resource_heuristics(abi_result.cmake_content, scf->core_paragraph->raw_version)}; + auto& scf = + abi_result.action.source_control_file_and_location.value_or_exit(VCPKG_LINE_INFO).source_control_file; + std::vector heuristic_resources{ + run_resource_heuristics(abi_result.cmake_content, scf->core_paragraph->raw_version)}; write_sbom(paths, abi_result.action, std::move(heuristic_resources), abi_result.port_files_abi); } } diff --git a/src/vcpkg/commands.build.cpp b/src/vcpkg/commands.build.cpp index edecc1732f..269ee9f9a1 100644 --- a/src/vcpkg/commands.build.cpp +++ b/src/vcpkg/commands.build.cpp @@ -1036,7 +1036,6 @@ namespace vcpkg return result; } - ExtendedBuildResult build_package(const VcpkgCmdArguments& args, const VcpkgPaths& paths, const InstallPlanAction& action, diff --git a/src/vcpkg/spdx.cpp b/src/vcpkg/spdx.cpp index 59c0d47357..0f80474313 100644 --- a/src/vcpkg/spdx.cpp +++ b/src/vcpkg/spdx.cpp @@ -258,27 +258,25 @@ void vcpkg::write_sbom(const VcpkgPaths& paths, const InstallPlanAction& action, std::vector heuristic_resources, const std::vector& port_files_abi) - { - auto& fs = paths.get_filesystem(); - const auto& scfl = action.source_control_file_and_location.value_or_exit(VCPKG_LINE_INFO); - const auto& scf = *scfl.source_control_file; +{ + auto& fs = paths.get_filesystem(); + const auto& scfl = action.source_control_file_and_location.value_or_exit(VCPKG_LINE_INFO); + const auto& scf = *scfl.source_control_file; - auto doc_ns = Strings::concat("https://spdx.org/spdxdocs/", - scf.core_paragraph->name, - '-', - action.spec.triplet(), - '-', - scf.to_version(), - '-', - generate_random_UUID()); + auto doc_ns = Strings::concat("https://spdx.org/spdxdocs/", + scf.core_paragraph->name, + '-', + action.spec.triplet(), + '-', + scf.to_version(), + '-', + generate_random_UUID()); - const auto now = CTime::now_string(); + const auto now = CTime::now_string(); - const auto json_path = - action.package_dir.value_or_exit(VCPKG_LINE_INFO) / "share" / action.spec.name() / "vcpkg.spdx.json"; - fs.write_contents_and_dirs( - json_path, - create_spdx_sbom( - action, port_files_abi, now, doc_ns, std::move(heuristic_resources)), - VCPKG_LINE_INFO); - } + const auto json_path = + action.package_dir.value_or_exit(VCPKG_LINE_INFO) / "share" / action.spec.name() / "vcpkg.spdx.json"; + fs.write_contents_and_dirs(json_path, + create_spdx_sbom(action, port_files_abi, now, doc_ns, std::move(heuristic_resources)), + VCPKG_LINE_INFO); +} From 4365002c72bbb02ccaae19fc03cc834a789c123a Mon Sep 17 00:00:00 2001 From: Thomas1664 <46387399+Thomas1664@users.noreply.github.com> Date: Mon, 16 Oct 2023 10:16:04 +0000 Subject: [PATCH 18/60] Fix build --- src/vcpkg/abi.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/vcpkg/abi.cpp b/src/vcpkg/abi.cpp index 4312d62ac9..39c59ba7b6 100644 --- a/src/vcpkg/abi.cpp +++ b/src/vcpkg/abi.cpp @@ -282,7 +282,7 @@ namespace vcpkg InstallPlanAction& action, View common_abi, std::vector&& dependency_abis, - const AsyncLazy>& cmake_script_hashes) + const std::vector& cmake_script_hashes) { auto& fs = paths.get_filesystem(); AbiInfo& abi_info = *action.abi_info.get(); @@ -301,7 +301,7 @@ namespace vcpkg abi_tag_entries.insert(abi_tag_entries.end(), port_files_abi.cbegin(), port_files_abi.cend()); // cmake helpers (access to cmake helper hashes in cache not in parallel) - for (auto&& helper : cmake_script_hashes.get()) + for (auto&& helper : cmake_script_hashes) { if (Strings::case_insensitive_ascii_contains(cmake_contents, helper.key)) { From 935037a2244f368fe3b44290ac26c215342622ab Mon Sep 17 00:00:00 2001 From: Thomas1664 <46387399+Thomas1664@users.noreply.github.com> Date: Mon, 16 Oct 2023 17:35:45 +0200 Subject: [PATCH 19/60] Fill in toolset --- src/vcpkg/abi.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/src/vcpkg/abi.cpp b/src/vcpkg/abi.cpp index 39c59ba7b6..ea08ed575f 100644 --- a/src/vcpkg/abi.cpp +++ b/src/vcpkg/abi.cpp @@ -235,6 +235,7 @@ namespace vcpkg const auto& toolset = paths.get_toolset(pre_build_info); auto& abi_info = action.abi_info.emplace(); abi_info.pre_build_info = std::move(proto_pre_build_info); + abi_info.toolset.emplace(toolset); // return when using editable or head flags if (action.build_options.use_head_version == UseHeadVersion::YES) From 3c79afb5df2f3566d81349d49130a48c201c3ef2 Mon Sep 17 00:00:00 2001 From: Thomas1664 <46387399+Thomas1664@users.noreply.github.com> Date: Mon, 16 Oct 2023 19:19:15 +0200 Subject: [PATCH 20/60] Properly save files --- include/vcpkg/abi.h | 18 +++++++++++- include/vcpkg/spdx.h | 3 +- src/vcpkg/abi.cpp | 57 +++++++++++++----------------------- src/vcpkg/commands.build.cpp | 9 ++---- src/vcpkg/spdx.cpp | 10 ++----- 5 files changed, 43 insertions(+), 54 deletions(-) diff --git a/include/vcpkg/abi.h b/include/vcpkg/abi.h index d11ad0d3fa..9f58a134a0 100644 --- a/include/vcpkg/abi.h +++ b/include/vcpkg/abi.h @@ -42,7 +42,23 @@ namespace vcpkg Optional compiler_info; Optional triplet_abi; std::string package_abi; - Optional abi_tag_file; + + // Checks if full abi tag was created + bool abi_tag_complete() const noexcept { return package_abi.size() != 0; } + + void abi_file_contents(std::string&& abi_tag, std::string&& sbom_file) noexcept + { + abi_tag_file_contents.emplace(std::move(abi_tag)); + sbom_file_contents.emplace(std::move(sbom_file)); + } + + //PRE: abi_tag_complete() == true + // dir: Directory where the files should be saved, usually packages_dir/share + void save_abi_files(const Filesystem& fs, Path&& dir) const; + + private: + Optional abi_tag_file_contents; + Optional sbom_file_contents; }; void compute_all_abis(const VcpkgPaths& paths, diff --git a/include/vcpkg/spdx.h b/include/vcpkg/spdx.h index 98e4df172d..4a291a3df0 100644 --- a/include/vcpkg/spdx.h +++ b/include/vcpkg/spdx.h @@ -30,8 +30,7 @@ namespace vcpkg std::vector&& resource_docs); Json::Value run_resource_heuristics(StringView contents, StringView portRawVersion); - void write_sbom(const VcpkgPaths& paths, - const InstallPlanAction& action, + std::string write_sbom(const InstallPlanAction& action, std::vector heuristic_resources, const std::vector& port_files_abi); } diff --git a/src/vcpkg/abi.cpp b/src/vcpkg/abi.cpp index ea08ed575f..d31dc07281 100644 --- a/src/vcpkg/abi.cpp +++ b/src/vcpkg/abi.cpp @@ -24,20 +24,6 @@ namespace vcpkg { - // This struct caches precomputable abis - struct AbiCache - { - std::vector cmake_script_hashes; - }; - - struct PackageAbiResult - { - const InstallPlanAction& action; - std::string abi_str; - std::string cmake_content; - std::vector port_files_abi; - }; - static std::string grdk_hash(const Filesystem& fs, const PreBuildInfo& pre_build_info) { static const Cache> grdk_cache; @@ -279,7 +265,7 @@ namespace vcpkg } // PRE: initialize_abi_tag() was called and returned true - static PackageAbiResult make_abi_tag(const VcpkgPaths& paths, + static void make_abi_tag(const VcpkgPaths& paths, InstallPlanAction& action, View common_abi, std::vector&& dependency_abis, @@ -335,10 +321,13 @@ namespace vcpkg std::string full_abi_info = Strings::join("", abi_tag_entries, [](const AbiEntry& p) { return p.key + " " + p.value + "\n"; }); abi_info.package_abi = Hash::get_string_sha256(full_abi_info); - abi_info.abi_tag_file.emplace(paths.build_dir(action.spec) / action.spec.triplet().canonical_name() + - ".vcpkg_abi_info.txt"); - return {action, std::move(full_abi_info), std::move(cmake_contents), std::move(port_files_abi)}; + // make sbom file + std::vector heuristic_resources{ + run_resource_heuristics(cmake_contents, scfl.source_control_file->core_paragraph->raw_version)}; + std::string sbom_str = write_sbom(action, std::move(heuristic_resources), port_files_abi); + + abi_info.abi_file_contents(std::move(full_abi_info), std::move(sbom_str)); } static std::vector get_dependency_abis(std::vector::iterator action_plan_begin, @@ -398,9 +387,6 @@ namespace vcpkg // 1. system abi (ports.cmake/ PS version/ CMake version) static const auto common_abi = get_common_abi(paths); - std::vector abi_results; - abi_results.reserve(action_plan.install_actions.size()); - for (auto it = action_plan.install_actions.begin(); it != action_plan.install_actions.end(); ++it) { auto& action = *it; @@ -428,24 +414,21 @@ namespace vcpkg } } - abi_results.push_back( - make_abi_tag(paths, action, common_abi, std::move(dependency_abis), cmake_script_hashes)); + make_abi_tag(paths, action, common_abi, std::move(dependency_abis), cmake_script_hashes); } - // populate abi tag - for (auto&& abi_result : abi_results) + } + + void AbiInfo::save_abi_files(const Filesystem& fs, Path&& dir) const + { + if (!abi_tag_file_contents.has_value() || !sbom_file_contents.has_value()) { - // write abi tag file - fs.write_contents_and_dirs( - abi_result.action.abi_info.value_or_exit(VCPKG_LINE_INFO).abi_tag_file.value_or_exit(VCPKG_LINE_INFO), - abi_result.abi_str, - VCPKG_LINE_INFO); - - // make and write sbom file - auto& scf = - abi_result.action.source_control_file_and_location.value_or_exit(VCPKG_LINE_INFO).source_control_file; - std::vector heuristic_resources{ - run_resource_heuristics(abi_result.cmake_content, scf->core_paragraph->raw_version)}; - write_sbom(paths, abi_result.action, std::move(heuristic_resources), abi_result.port_files_abi); + Checks::unreachable(VCPKG_LINE_INFO); } + + // write abi tag file + fs.write_contents_and_dirs(dir / "vcpkg_abi_info.txt", *abi_tag_file_contents.get(), VCPKG_LINE_INFO); + + // write sbom file + fs.write_contents(std::move(dir) / "vcpkg.spdx.json", *sbom_file_contents.get(), VCPKG_LINE_INFO); } } // namespace vcpkg diff --git a/src/vcpkg/commands.build.cpp b/src/vcpkg/commands.build.cpp index 269ee9f9a1..a5ade0789c 100644 --- a/src/vcpkg/commands.build.cpp +++ b/src/vcpkg/commands.build.cpp @@ -1081,14 +1081,11 @@ namespace vcpkg auto& abi_info = action.abi_info.value_or_exit(VCPKG_LINE_INFO); ExtendedBuildResult result = do_build_package_and_clean_buildtrees(args, paths, action, all_dependencies_satisfied); - if (abi_info.abi_tag_file) + if (abi_info.abi_tag_complete()) { - auto& abi_file = *abi_info.abi_tag_file.get(); - const auto abi_package_dir = action.package_dir.value_or_exit(VCPKG_LINE_INFO) / "share" / spec.name(); - const auto abi_file_in_package = abi_package_dir / "vcpkg_abi_info.txt"; build_logs_recorder.record_build_result(paths, spec, result.code); - filesystem.create_directories(abi_package_dir, VCPKG_LINE_INFO); - filesystem.copy_file(abi_file, abi_file_in_package, CopyOptions::none, VCPKG_LINE_INFO); + auto abi_package_dir = action.package_dir.value_or_exit(VCPKG_LINE_INFO) / "share" / spec.name(); + abi_info.save_abi_files(filesystem, std::move(abi_package_dir)); } return result; diff --git a/src/vcpkg/spdx.cpp b/src/vcpkg/spdx.cpp index 0f80474313..e12882e6bf 100644 --- a/src/vcpkg/spdx.cpp +++ b/src/vcpkg/spdx.cpp @@ -254,12 +254,11 @@ std::string vcpkg::create_spdx_sbom(const InstallPlanAction& action, return Json::stringify(doc); } -void vcpkg::write_sbom(const VcpkgPaths& paths, +std::string vcpkg::write_sbom( const InstallPlanAction& action, std::vector heuristic_resources, const std::vector& port_files_abi) { - auto& fs = paths.get_filesystem(); const auto& scfl = action.source_control_file_and_location.value_or_exit(VCPKG_LINE_INFO); const auto& scf = *scfl.source_control_file; @@ -273,10 +272,5 @@ void vcpkg::write_sbom(const VcpkgPaths& paths, generate_random_UUID()); const auto now = CTime::now_string(); - - const auto json_path = - action.package_dir.value_or_exit(VCPKG_LINE_INFO) / "share" / action.spec.name() / "vcpkg.spdx.json"; - fs.write_contents_and_dirs(json_path, - create_spdx_sbom(action, port_files_abi, now, doc_ns, std::move(heuristic_resources)), - VCPKG_LINE_INFO); + return create_spdx_sbom(action, port_files_abi, now, doc_ns, std::move(heuristic_resources)); } From 512ffd5b084cf29a12b57069d7e121d812113f13 Mon Sep 17 00:00:00 2001 From: Thomas1664 <46387399+Thomas1664@users.noreply.github.com> Date: Mon, 16 Oct 2023 22:08:41 +0200 Subject: [PATCH 21/60] format --- include/vcpkg/abi.h | 4 ++-- include/vcpkg/fwd/abi.h | 8 ++++---- include/vcpkg/spdx.h | 4 ++-- src/vcpkg/abi.cpp | 12 ++++++------ src/vcpkg/spdx.cpp | 7 +++---- 5 files changed, 17 insertions(+), 18 deletions(-) diff --git a/include/vcpkg/abi.h b/include/vcpkg/abi.h index 9f58a134a0..26fc6cf1bc 100644 --- a/include/vcpkg/abi.h +++ b/include/vcpkg/abi.h @@ -52,8 +52,8 @@ namespace vcpkg sbom_file_contents.emplace(std::move(sbom_file)); } - //PRE: abi_tag_complete() == true - // dir: Directory where the files should be saved, usually packages_dir/share + // PRE: abi_tag_complete() == true + // dir: Directory where the files should be saved, usually packages_dir/share void save_abi_files(const Filesystem& fs, Path&& dir) const; private: diff --git a/include/vcpkg/fwd/abi.h b/include/vcpkg/fwd/abi.h index 4ad715d847..d5843cb0c5 100644 --- a/include/vcpkg/fwd/abi.h +++ b/include/vcpkg/fwd/abi.h @@ -1,7 +1,7 @@ -#pragma once - -namespace vcpkg +#pragma once + +namespace vcpkg { struct AbiInfo; struct AbiEntry; -} +} diff --git a/include/vcpkg/spdx.h b/include/vcpkg/spdx.h index 4a291a3df0..2d4e180c8e 100644 --- a/include/vcpkg/spdx.h +++ b/include/vcpkg/spdx.h @@ -31,6 +31,6 @@ namespace vcpkg Json::Value run_resource_heuristics(StringView contents, StringView portRawVersion); std::string write_sbom(const InstallPlanAction& action, - std::vector heuristic_resources, - const std::vector& port_files_abi); + std::vector heuristic_resources, + const std::vector& port_files_abi); } diff --git a/src/vcpkg/abi.cpp b/src/vcpkg/abi.cpp index d31dc07281..c39ed298bc 100644 --- a/src/vcpkg/abi.cpp +++ b/src/vcpkg/abi.cpp @@ -266,10 +266,10 @@ namespace vcpkg // PRE: initialize_abi_tag() was called and returned true static void make_abi_tag(const VcpkgPaths& paths, - InstallPlanAction& action, - View common_abi, - std::vector&& dependency_abis, - const std::vector& cmake_script_hashes) + InstallPlanAction& action, + View common_abi, + std::vector&& dependency_abis, + const std::vector& cmake_script_hashes) { auto& fs = paths.get_filesystem(); AbiInfo& abi_info = *action.abi_info.get(); @@ -383,7 +383,7 @@ namespace vcpkg { auto& fs = paths.get_filesystem(); static const std::vector cmake_script_hashes = get_cmake_script_hashes(fs, paths.scripts); - + // 1. system abi (ports.cmake/ PS version/ CMake version) static const auto common_abi = get_common_abi(paths); @@ -424,7 +424,7 @@ namespace vcpkg { Checks::unreachable(VCPKG_LINE_INFO); } - + // write abi tag file fs.write_contents_and_dirs(dir / "vcpkg_abi_info.txt", *abi_tag_file_contents.get(), VCPKG_LINE_INFO); diff --git a/src/vcpkg/spdx.cpp b/src/vcpkg/spdx.cpp index e12882e6bf..9d9a701283 100644 --- a/src/vcpkg/spdx.cpp +++ b/src/vcpkg/spdx.cpp @@ -254,10 +254,9 @@ std::string vcpkg::create_spdx_sbom(const InstallPlanAction& action, return Json::stringify(doc); } -std::string vcpkg::write_sbom( - const InstallPlanAction& action, - std::vector heuristic_resources, - const std::vector& port_files_abi) +std::string vcpkg::write_sbom(const InstallPlanAction& action, + std::vector heuristic_resources, + const std::vector& port_files_abi) { const auto& scfl = action.source_control_file_and_location.value_or_exit(VCPKG_LINE_INFO); const auto& scf = *scfl.source_control_file; From f09aebe298bd3f8416f7104e1f1e324b82732f5c Mon Sep 17 00:00:00 2001 From: Thomas1664 <46387399+Thomas1664@users.noreply.github.com> Date: Sat, 28 Oct 2023 10:46:49 +0000 Subject: [PATCH 22/60] async --- src/vcpkg/abi.cpp | 143 ++++++++++++++++++++++++++++------------------ 1 file changed, 86 insertions(+), 57 deletions(-) diff --git a/src/vcpkg/abi.cpp b/src/vcpkg/abi.cpp index c39ed298bc..a478b7a282 100644 --- a/src/vcpkg/abi.cpp +++ b/src/vcpkg/abi.cpp @@ -24,6 +24,14 @@ namespace vcpkg { + using AbiEntries = std::vector; + + struct PrivateAbi + { + AbiEntries abi_entries; + std::string sbom_str; + }; + static std::string grdk_hash(const Filesystem& fs, const PreBuildInfo& pre_build_info) { static const Cache> grdk_cache; @@ -53,7 +61,7 @@ namespace vcpkg static void abi_entries_from_pre_build_info(const Filesystem& fs, const PreBuildInfo& pre_build_info, - std::vector& abi_tag_entries) + AbiEntries& abi_tag_entries) { if (pre_build_info.public_abi_override) { @@ -77,9 +85,9 @@ namespace vcpkg } } - static std::vector get_common_abi(const VcpkgPaths& paths) + static AbiEntries get_common_abi(const VcpkgPaths& paths) { - std::vector abi_entries; + AbiEntries abi_entries; auto& fs = paths.get_filesystem(); abi_entries.emplace_back("cmake", paths.get_tool_version(Tools::CMAKE, stdout_sink)); @@ -94,12 +102,12 @@ namespace vcpkg return abi_entries; } - static std::vector get_cmake_script_hashes(const Filesystem& fs, const Path& scripts_dir) + static AbiEntries get_cmake_script_hashes(const Filesystem& fs, const Path& scripts_dir) { auto files = fs.get_regular_files_non_recursive(scripts_dir / "cmake", VCPKG_LINE_INFO); Util::erase_remove_if(files, [](const Path& file) { return file.filename() == ".DS_Store"; }); - std::vector helpers(files.size()); + AbiEntries helpers(files.size()); parallel_transform(files.begin(), files.size(), helpers.begin(), [&fs](auto&& file) { return AbiEntry{file.stem().to_string(), @@ -129,7 +137,7 @@ namespace vcpkg } // Get abi for per-port files - static std::pair, std::string> get_port_files(const Filesystem& fs, + static std::pair get_port_files(const Filesystem& fs, const SourceControlFileAndLocation& scfl) { auto files_and_content = get_ports_files_and_contents(fs, scfl.source_location); @@ -145,7 +153,7 @@ namespace vcpkg msgHashPortManyFiles, msg::package_name = paragraph->name, msg::count = files_and_content.size()); } - std::vector abi_entries; + AbiEntries abi_entries; abi_entries.reserve(files_and_content.size()); std::string portfile_cmake_contents; @@ -162,7 +170,7 @@ namespace vcpkg return {std::move(abi_entries), std::move(portfile_cmake_contents)}; } - static void get_feature_abi(InternalFeatureSet sorted_feature_list, std::vector& abi_entries) + static void get_feature_abi(InternalFeatureSet sorted_feature_list, AbiEntries& abi_entries) { // Check that no "default" feature is present. Default features must be resolved before attempting to calculate // a package ABI, so the "default" should not have made it here. @@ -212,14 +220,15 @@ namespace vcpkg } // PRE: !action.abi_info.has_value() - static bool initialize_abi_info(const VcpkgPaths& paths, - InstallPlanAction& action, + static void initialize_abi_info(const VcpkgPaths& paths, + Optional& proto_abi_info, + const InstallPlanAction& action, std::unique_ptr&& proto_pre_build_info) { const auto& pre_build_info = *proto_pre_build_info; // get toolset (not in parallel) const auto& toolset = paths.get_toolset(pre_build_info); - auto& abi_info = action.abi_info.emplace(); + auto& abi_info = proto_abi_info.emplace(); abi_info.pre_build_info = std::move(proto_pre_build_info); abi_info.toolset.emplace(toolset); @@ -227,20 +236,18 @@ namespace vcpkg if (action.build_options.use_head_version == UseHeadVersion::YES) { Debug::print("Binary caching for package ", action.spec, " is disabled due to --head\n"); - return false; + return; } if (action.build_options.editable == Editable::YES) { Debug::print("Binary caching for package ", action.spec, " is disabled due to --editable\n"); - return false; + return; } // get compiler info (not in parallel) abi_info.compiler_info = paths.get_compiler_info(pre_build_info, toolset); // get triplet info (not in parallel) abi_info.triplet_abi.emplace(paths.get_triplet_info(pre_build_info, toolset)); - - return true; } // check if all dependencies have a hash @@ -264,35 +271,27 @@ namespace vcpkg return true; } - // PRE: initialize_abi_tag() was called and returned true - static void make_abi_tag(const VcpkgPaths& paths, - InstallPlanAction& action, - View common_abi, - std::vector&& dependency_abis, - const std::vector& cmake_script_hashes) + static Optional get_private_abi(const Filesystem& fs, const InstallPlanAction& action, View common_abi, View cmake_script_hashes) { - auto& fs = paths.get_filesystem(); - AbiInfo& abi_info = *action.abi_info.get(); - auto abi_tag_entries = std::move(dependency_abis); - - abi_tag_entries.emplace_back("triplet", action.spec.triplet().canonical_name()); - abi_tag_entries.emplace_back("triplet_abi", *abi_info.triplet_abi.get()); - - // abi tags from prebuildinfo - abi_entries_from_pre_build_info(fs, *abi_info.pre_build_info, abi_tag_entries); + if (action.build_options.use_head_version == UseHeadVersion::YES || action.build_options.editable == Editable::YES) + { + return nullopt; + } + AbiEntries abi_entries; + abi_entries.emplace_back("triplet", action.spec.triplet().canonical_name()); auto& scfl = action.source_control_file_and_location.value_or_exit(VCPKG_LINE_INFO); // portfile hashes/contents auto&& [port_files_abi, cmake_contents] = get_port_files(fs, scfl); - abi_tag_entries.insert(abi_tag_entries.end(), port_files_abi.cbegin(), port_files_abi.cend()); + abi_entries.insert(abi_entries.end(), port_files_abi.cbegin(), port_files_abi.cend()); // cmake helpers (access to cmake helper hashes in cache not in parallel) for (auto&& helper : cmake_script_hashes) { if (Strings::case_insensitive_ascii_contains(cmake_contents, helper.key)) { - abi_tag_entries.emplace_back(helper.key, helper.value); + abi_entries.emplace_back(helper.key, helper.value); } } @@ -300,10 +299,35 @@ namespace vcpkg // ports.cmake version (precompute, same for all) // ports.cmake (precompute, same for all) // post build lint (not updated in 3 years! still needed?) - abi_tag_entries.insert(abi_tag_entries.end(), common_abi.begin(), common_abi.end()); + abi_entries.insert(abi_entries.end(), common_abi.begin(), common_abi.end()); // port features - get_feature_abi(action.feature_list, abi_tag_entries); + get_feature_abi(action.feature_list, abi_entries); + + + // make sbom file + std::vector heuristic_resources{ + run_resource_heuristics(cmake_contents, scfl.source_control_file->core_paragraph->raw_version)}; + std::string sbom_str = write_sbom(action, std::move(heuristic_resources), port_files_abi); + + return PrivateAbi{std::move(abi_entries), std::move(sbom_str)}; + } + + // PRE: initialize_abi_tag() was called and returned true + static void make_abi_tag(const VcpkgPaths& paths, + InstallPlanAction& action, + AbiEntries&& dependency_abis, + PrivateAbi&& private_abi) + { + auto& fs = paths.get_filesystem(); + auto& abi_info = *action.abi_info.get(); + auto abi_tag_entries = std::move(private_abi.abi_entries); + std::move(dependency_abis.begin(), dependency_abis.end(), std::back_inserter(abi_tag_entries)); + + abi_tag_entries.emplace_back("triplet_abi", *abi_info.triplet_abi.get()); + + // abi tags from prebuildinfo + abi_entries_from_pre_build_info(fs, *abi_info.pre_build_info, abi_tag_entries); // sort Util::sort(abi_tag_entries); @@ -321,20 +345,14 @@ namespace vcpkg std::string full_abi_info = Strings::join("", abi_tag_entries, [](const AbiEntry& p) { return p.key + " " + p.value + "\n"; }); abi_info.package_abi = Hash::get_string_sha256(full_abi_info); - - // make sbom file - std::vector heuristic_resources{ - run_resource_heuristics(cmake_contents, scfl.source_control_file->core_paragraph->raw_version)}; - std::string sbom_str = write_sbom(action, std::move(heuristic_resources), port_files_abi); - - abi_info.abi_file_contents(std::move(full_abi_info), std::move(sbom_str)); + abi_info.abi_file_contents(std::move(full_abi_info), std::move(private_abi.sbom_str)); } - static std::vector get_dependency_abis(std::vector::iterator action_plan_begin, - std::vector::iterator current_action, + static AbiEntries get_dependency_abis(std::vector::iterator action_plan_begin, + std::vector::iterator current_action, const StatusParagraphs& status_db) { - std::vector dependency_abis; + AbiEntries dependency_abis; dependency_abis.reserve(current_action->package_dependencies.size()); for (const auto& dependency_spec : current_action->package_dependencies) @@ -382,29 +400,39 @@ namespace vcpkg const StatusParagraphs& status_db) { auto& fs = paths.get_filesystem(); - static const std::vector cmake_script_hashes = get_cmake_script_hashes(fs, paths.scripts); - // 1. system abi (ports.cmake/ PS version/ CMake version) - static const auto common_abi = get_common_abi(paths); + auto private_abi_future = std::async(std::launch::async | std::launch::deferred, [&](){ + static AbiEntries cmake_script_hashes = get_cmake_script_hashes(fs, paths.scripts); - for (auto it = action_plan.install_actions.begin(); it != action_plan.install_actions.end(); ++it) - { - auto& action = *it; + // 1. system abi (ports.cmake/ PS version/ CMake version) + static AbiEntries common_abi = get_common_abi(paths); + + std::vector> ret(action_plan.install_actions.size()); + parallel_transform(action_plan.install_actions.begin(), action_plan.install_actions.size(), ret.begin(), [&](const InstallPlanAction& action){ + return get_private_abi(fs, action, common_abi, cmake_script_hashes); + }); + return ret; + }); + + for (auto& action : action_plan.install_actions) + { Checks::check_exit(VCPKG_LINE_INFO, !action.abi_info.has_value()); // get prebuildinfo (not in parallel) auto pre_build_info = std::make_unique( paths, action.spec.triplet(), var_provider.get_tag_vars(action.spec).value_or_exit(VCPKG_LINE_INFO)); - bool should_proceed = initialize_abi_info(paths, action, std::move(pre_build_info)); + initialize_abi_info(paths, action.abi_info, action, std::move(pre_build_info)); + } + + auto private_abis = private_abi_future.get(); - if (!should_proceed) - { - continue; - } + for (auto it = action_plan.install_actions.begin(); it != action_plan.install_actions.end(); ++it) + { + auto& action = *it; - std::vector dependency_abis; + AbiEntries dependency_abis; if (!Util::Enum::to_bool(action.build_options.only_downloads)) { dependency_abis = get_dependency_abis(action_plan.install_actions.begin(), it, status_db); @@ -414,7 +442,8 @@ namespace vcpkg } } - make_abi_tag(paths, action, common_abi, std::move(dependency_abis), cmake_script_hashes); + size_t i = static_cast(std::distance(action_plan.install_actions.begin(), it)); + make_abi_tag(paths, action, std::move(dependency_abis), std::move(*private_abis[i].get())); } } From 5e4acb3786a7f10a52f63aa1096437b3bab67c46 Mon Sep 17 00:00:00 2001 From: Thomas1664 <46387399+Thomas1664@users.noreply.github.com> Date: Sat, 28 Oct 2023 13:02:48 +0000 Subject: [PATCH 23/60] reorder to avoid vector copy --- src/vcpkg/abi.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/vcpkg/abi.cpp b/src/vcpkg/abi.cpp index a478b7a282..a80db2ff38 100644 --- a/src/vcpkg/abi.cpp +++ b/src/vcpkg/abi.cpp @@ -284,7 +284,6 @@ namespace vcpkg // portfile hashes/contents auto&& [port_files_abi, cmake_contents] = get_port_files(fs, scfl); - abi_entries.insert(abi_entries.end(), port_files_abi.cbegin(), port_files_abi.cend()); // cmake helpers (access to cmake helper hashes in cache not in parallel) for (auto&& helper : cmake_script_hashes) @@ -304,12 +303,13 @@ namespace vcpkg // port features get_feature_abi(action.feature_list, abi_entries); - // make sbom file std::vector heuristic_resources{ run_resource_heuristics(cmake_contents, scfl.source_control_file->core_paragraph->raw_version)}; std::string sbom_str = write_sbom(action, std::move(heuristic_resources), port_files_abi); + std::move(port_files_abi.begin(), port_files_abi.end(), std::back_inserter(abi_entries)); + return PrivateAbi{std::move(abi_entries), std::move(sbom_str)}; } From e129cd26196604a14e2cae02218ede45df28a98e Mon Sep 17 00:00:00 2001 From: Thomas1664 <46387399+Thomas1664@users.noreply.github.com> Date: Sat, 28 Oct 2023 13:11:08 +0000 Subject: [PATCH 24/60] avoid potential bad optional access --- src/vcpkg/abi.cpp | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/vcpkg/abi.cpp b/src/vcpkg/abi.cpp index a80db2ff38..9861bfc5b0 100644 --- a/src/vcpkg/abi.cpp +++ b/src/vcpkg/abi.cpp @@ -431,6 +431,12 @@ namespace vcpkg for (auto it = action_plan.install_actions.begin(); it != action_plan.install_actions.end(); ++it) { auto& action = *it; + size_t i = static_cast(std::distance(action_plan.install_actions.begin(), it)); + + if (!private_abis[i].has_value()) + { + continue; + } AbiEntries dependency_abis; if (!Util::Enum::to_bool(action.build_options.only_downloads)) @@ -442,7 +448,6 @@ namespace vcpkg } } - size_t i = static_cast(std::distance(action_plan.install_actions.begin(), it)); make_abi_tag(paths, action, std::move(dependency_abis), std::move(*private_abis[i].get())); } } From e1b9a8a9326c9bb488ac2274950687a9a6bb755d Mon Sep 17 00:00:00 2001 From: Thomas1664 <46387399+Thomas1664@users.noreply.github.com> Date: Sat, 28 Oct 2023 13:14:16 +0000 Subject: [PATCH 25/60] format --- src/vcpkg/abi.cpp | 25 ++++++++++++++++--------- 1 file changed, 16 insertions(+), 9 deletions(-) diff --git a/src/vcpkg/abi.cpp b/src/vcpkg/abi.cpp index 9861bfc5b0..754dae1c2a 100644 --- a/src/vcpkg/abi.cpp +++ b/src/vcpkg/abi.cpp @@ -138,7 +138,7 @@ namespace vcpkg // Get abi for per-port files static std::pair get_port_files(const Filesystem& fs, - const SourceControlFileAndLocation& scfl) + const SourceControlFileAndLocation& scfl) { auto files_and_content = get_ports_files_and_contents(fs, scfl.source_location); @@ -271,9 +271,13 @@ namespace vcpkg return true; } - static Optional get_private_abi(const Filesystem& fs, const InstallPlanAction& action, View common_abi, View cmake_script_hashes) + static Optional get_private_abi(const Filesystem& fs, + const InstallPlanAction& action, + View common_abi, + View cmake_script_hashes) { - if (action.build_options.use_head_version == UseHeadVersion::YES || action.build_options.editable == Editable::YES) + if (action.build_options.use_head_version == UseHeadVersion::YES || + action.build_options.editable == Editable::YES) { return nullopt; } @@ -349,8 +353,8 @@ namespace vcpkg } static AbiEntries get_dependency_abis(std::vector::iterator action_plan_begin, - std::vector::iterator current_action, - const StatusParagraphs& status_db) + std::vector::iterator current_action, + const StatusParagraphs& status_db) { AbiEntries dependency_abis; dependency_abis.reserve(current_action->package_dependencies.size()); @@ -401,7 +405,7 @@ namespace vcpkg { auto& fs = paths.get_filesystem(); - auto private_abi_future = std::async(std::launch::async | std::launch::deferred, [&](){ + auto private_abi_future = std::async(std::launch::async | std::launch::deferred, [&]() { static AbiEntries cmake_script_hashes = get_cmake_script_hashes(fs, paths.scripts); // 1. system abi (ports.cmake/ PS version/ CMake version) @@ -409,9 +413,12 @@ namespace vcpkg std::vector> ret(action_plan.install_actions.size()); - parallel_transform(action_plan.install_actions.begin(), action_plan.install_actions.size(), ret.begin(), [&](const InstallPlanAction& action){ - return get_private_abi(fs, action, common_abi, cmake_script_hashes); - }); + parallel_transform(action_plan.install_actions.begin(), + action_plan.install_actions.size(), + ret.begin(), + [&](const InstallPlanAction& action) { + return get_private_abi(fs, action, common_abi, cmake_script_hashes); + }); return ret; }); From 840c684f7d1325327cd4bc66e2c7104f2fd8997d Mon Sep 17 00:00:00 2001 From: Thomas1664 <46387399+Thomas1664@users.noreply.github.com> Date: Sat, 28 Oct 2023 17:33:35 +0200 Subject: [PATCH 26/60] common abi causes race when trying to download pwsh --- src/vcpkg/abi.cpp | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/src/vcpkg/abi.cpp b/src/vcpkg/abi.cpp index 754dae1c2a..8cc85777b9 100644 --- a/src/vcpkg/abi.cpp +++ b/src/vcpkg/abi.cpp @@ -1,4 +1,5 @@ #include +#include #include #include #include @@ -404,13 +405,14 @@ namespace vcpkg const StatusParagraphs& status_db) { auto& fs = paths.get_filesystem(); + ElapsedTimer timer; + + // 1. system abi (ports.cmake/ PS version/ CMake version) + static AbiEntries common_abi = get_common_abi(paths); auto private_abi_future = std::async(std::launch::async | std::launch::deferred, [&]() { static AbiEntries cmake_script_hashes = get_cmake_script_hashes(fs, paths.scripts); - // 1. system abi (ports.cmake/ PS version/ CMake version) - static AbiEntries common_abi = get_common_abi(paths); - std::vector> ret(action_plan.install_actions.size()); parallel_transform(action_plan.install_actions.begin(), @@ -457,6 +459,8 @@ namespace vcpkg make_abi_tag(paths, action, std::move(dependency_abis), std::move(*private_abis[i].get())); } + msg::write_unlocalized_text_to_stdout( + Color::none, fmt::format("Calculated abi in {}\n", timer.elapsed().to_string())); } void AbiInfo::save_abi_files(const Filesystem& fs, Path&& dir) const From 0e934c948297acb18885a4c78d8d08c052c56018 Mon Sep 17 00:00:00 2001 From: Thomas1664 <46387399+Thomas1664@users.noreply.github.com> Date: Sat, 28 Oct 2023 17:51:28 +0200 Subject: [PATCH 27/60] remove debug code --- src/vcpkg/abi.cpp | 11 +++-------- 1 file changed, 3 insertions(+), 8 deletions(-) diff --git a/src/vcpkg/abi.cpp b/src/vcpkg/abi.cpp index 8cc85777b9..57649290f2 100644 --- a/src/vcpkg/abi.cpp +++ b/src/vcpkg/abi.cpp @@ -118,7 +118,7 @@ namespace vcpkg } static std::vector> get_ports_files_and_contents(const Filesystem& fs, - const Path& port_root_dir) + Path port_root_dir) { auto files = fs.get_regular_files_recursive_lexically_proximate(port_root_dir, VCPKG_LINE_INFO); @@ -131,7 +131,7 @@ namespace vcpkg { continue; } - std::string contents = fs.read_contents(port_root_dir / file, VCPKG_LINE_INFO); + std::string contents = fs.read_contents(std::move(port_root_dir) / file, VCPKG_LINE_INFO); files_and_content.emplace_back(std::move(file), std::move(contents)); } return files_and_content; @@ -164,9 +164,7 @@ namespace vcpkg { portfile_cmake_contents += contents; } - - std::string path_str = std::move(port_file).generic_u8string(); - abi_entries.emplace_back(std::move(path_str), Hash::get_string_sha256(contents)); + abi_entries.emplace_back(std::move(port_file).generic_u8string(), Hash::get_string_sha256(contents)); } return {std::move(abi_entries), std::move(portfile_cmake_contents)}; } @@ -405,7 +403,6 @@ namespace vcpkg const StatusParagraphs& status_db) { auto& fs = paths.get_filesystem(); - ElapsedTimer timer; // 1. system abi (ports.cmake/ PS version/ CMake version) static AbiEntries common_abi = get_common_abi(paths); @@ -459,8 +456,6 @@ namespace vcpkg make_abi_tag(paths, action, std::move(dependency_abis), std::move(*private_abis[i].get())); } - msg::write_unlocalized_text_to_stdout( - Color::none, fmt::format("Calculated abi in {}\n", timer.elapsed().to_string())); } void AbiInfo::save_abi_files(const Filesystem& fs, Path&& dir) const From 256a515ed1ce1195a1dc1764ca94d35c8391ccc9 Mon Sep 17 00:00:00 2001 From: Thomas1664 <46387399+Thomas1664@users.noreply.github.com> Date: Sat, 28 Oct 2023 17:52:49 +0200 Subject: [PATCH 28/60] remove async lazy --- include/vcpkg/base/lazy.h | 21 --------------------- 1 file changed, 21 deletions(-) diff --git a/include/vcpkg/base/lazy.h b/include/vcpkg/base/lazy.h index ffdfc244bf..a250571a59 100644 --- a/include/vcpkg/base/lazy.h +++ b/include/vcpkg/base/lazy.h @@ -25,25 +25,4 @@ namespace vcpkg mutable T value; mutable bool initialized; }; - - template - struct AsyncLazy - { - template - AsyncLazy(F work) : value(std::async(std::launch::async | std::launch::deferred, [&work]() { return work(); })) - { - } - - const T& get() const - { - if (std::holds_alternative>(value)) - { - value = std::get>(value).get(); - } - return std::get(value); - } - - private: - mutable std::variant, T> value; - }; } From 33178d5e0c72529dd39f62d2993e5c3374af9ecc Mon Sep 17 00:00:00 2001 From: Thomas1664 <46387399+Thomas1664@users.noreply.github.com> Date: Sat, 28 Oct 2023 17:55:23 +0200 Subject: [PATCH 29/60] revert any changes to lazy.h --- include/vcpkg/base/lazy.h | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/include/vcpkg/base/lazy.h b/include/vcpkg/base/lazy.h index a250571a59..4867172b86 100644 --- a/include/vcpkg/base/lazy.h +++ b/include/vcpkg/base/lazy.h @@ -1,8 +1,5 @@ #pragma once -#include -#include - namespace vcpkg { template @@ -11,7 +8,7 @@ namespace vcpkg Lazy() : value(T()), initialized(false) { } template - const T& get_lazy(const F& f) const + T const& get_lazy(const F& f) const { if (!initialized) { From 93fb0f4f85608513fe9e206804f33f8b211d30c2 Mon Sep 17 00:00:00 2001 From: Thomas1664 <46387399+Thomas1664@users.noreply.github.com> Date: Sat, 28 Oct 2023 18:48:17 +0200 Subject: [PATCH 30/60] back to const& --- src/vcpkg/abi.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/vcpkg/abi.cpp b/src/vcpkg/abi.cpp index 57649290f2..e00abda872 100644 --- a/src/vcpkg/abi.cpp +++ b/src/vcpkg/abi.cpp @@ -118,7 +118,7 @@ namespace vcpkg } static std::vector> get_ports_files_and_contents(const Filesystem& fs, - Path port_root_dir) + const Path& port_root_dir) { auto files = fs.get_regular_files_recursive_lexically_proximate(port_root_dir, VCPKG_LINE_INFO); @@ -131,7 +131,7 @@ namespace vcpkg { continue; } - std::string contents = fs.read_contents(std::move(port_root_dir) / file, VCPKG_LINE_INFO); + std::string contents = fs.read_contents(port_root_dir / file, VCPKG_LINE_INFO); files_and_content.emplace_back(std::move(file), std::move(contents)); } return files_and_content; From 16189f11dc918196af41e560f22363656cab1430 Mon Sep 17 00:00:00 2001 From: Thomas1664 <46387399+Thomas1664@users.noreply.github.com> Date: Sat, 28 Oct 2023 18:50:44 +0200 Subject: [PATCH 31/60] format --- src/vcpkg/abi.cpp | 1 - 1 file changed, 1 deletion(-) diff --git a/src/vcpkg/abi.cpp b/src/vcpkg/abi.cpp index e00abda872..341e1aef3c 100644 --- a/src/vcpkg/abi.cpp +++ b/src/vcpkg/abi.cpp @@ -1,5 +1,4 @@ #include -#include #include #include #include From 110317691fc6906c98cbc339d17185d9c8ae95ca Mon Sep 17 00:00:00 2001 From: Thomas1664 <46387399+Thomas1664@users.noreply.github.com> Date: Sat, 28 Oct 2023 20:10:02 +0200 Subject: [PATCH 32/60] const_iterator --- src/vcpkg/abi.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/vcpkg/abi.cpp b/src/vcpkg/abi.cpp index 341e1aef3c..06026ad8ca 100644 --- a/src/vcpkg/abi.cpp +++ b/src/vcpkg/abi.cpp @@ -350,8 +350,8 @@ namespace vcpkg abi_info.abi_file_contents(std::move(full_abi_info), std::move(private_abi.sbom_str)); } - static AbiEntries get_dependency_abis(std::vector::iterator action_plan_begin, - std::vector::iterator current_action, + static AbiEntries get_dependency_abis(std::vector::const_iterator action_plan_begin, + std::vector::const_iterator current_action, const StatusParagraphs& status_db) { AbiEntries dependency_abis; From a0695cad0273a69d2b0c289b7a4689c736393ce2 Mon Sep 17 00:00:00 2001 From: Thomas1664 <46387399+Thomas1664@users.noreply.github.com> Date: Sat, 28 Oct 2023 20:39:04 +0200 Subject: [PATCH 33/60] Fix sbom data race --- src/vcpkg/abi.cpp | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/src/vcpkg/abi.cpp b/src/vcpkg/abi.cpp index 06026ad8ca..a434e51e87 100644 --- a/src/vcpkg/abi.cpp +++ b/src/vcpkg/abi.cpp @@ -29,7 +29,8 @@ namespace vcpkg struct PrivateAbi { AbiEntries abi_entries; - std::string sbom_str; + std::vector heuristic_resources; + AbiEntries port_files_abi; }; static std::string grdk_hash(const Filesystem& fs, const PreBuildInfo& pre_build_info) @@ -286,6 +287,7 @@ namespace vcpkg // portfile hashes/contents auto&& [port_files_abi, cmake_contents] = get_port_files(fs, scfl); + std::copy(port_files_abi.begin(), port_files_abi.end(), std::back_inserter(abi_entries)); // cmake helpers (access to cmake helper hashes in cache not in parallel) for (auto&& helper : cmake_script_hashes) @@ -308,11 +310,8 @@ namespace vcpkg // make sbom file std::vector heuristic_resources{ run_resource_heuristics(cmake_contents, scfl.source_control_file->core_paragraph->raw_version)}; - std::string sbom_str = write_sbom(action, std::move(heuristic_resources), port_files_abi); - std::move(port_files_abi.begin(), port_files_abi.end(), std::back_inserter(abi_entries)); - - return PrivateAbi{std::move(abi_entries), std::move(sbom_str)}; + return PrivateAbi{std::move(abi_entries), std::move(heuristic_resources), std::move(port_files_abi)}; } // PRE: initialize_abi_tag() was called and returned true @@ -347,7 +346,10 @@ namespace vcpkg std::string full_abi_info = Strings::join("", abi_tag_entries, [](const AbiEntry& p) { return p.key + " " + p.value + "\n"; }); abi_info.package_abi = Hash::get_string_sha256(full_abi_info); - abi_info.abi_file_contents(std::move(full_abi_info), std::move(private_abi.sbom_str)); + + std::string sbom_str = write_sbom(action, std::move(private_abi.heuristic_resources), private_abi.port_files_abi); + + abi_info.abi_file_contents(std::move(full_abi_info), std::move(sbom_str)); } static AbiEntries get_dependency_abis(std::vector::const_iterator action_plan_begin, From 0f67c8924f039f401c5c69df23c270bc47402817 Mon Sep 17 00:00:00 2001 From: Thomas1664 <46387399+Thomas1664@users.noreply.github.com> Date: Sat, 28 Oct 2023 21:04:34 +0200 Subject: [PATCH 34/60] Generate UUID in parallel --- include/vcpkg/spdx.h | 9 +++++---- src/vcpkg/abi.cpp | 8 ++++++-- src/vcpkg/spdx.cpp | 8 ++++---- 3 files changed, 15 insertions(+), 10 deletions(-) diff --git a/include/vcpkg/spdx.h b/include/vcpkg/spdx.h index 2d4e180c8e..08405111fb 100644 --- a/include/vcpkg/spdx.h +++ b/include/vcpkg/spdx.h @@ -3,11 +3,11 @@ #include #include +#include #include #include - -#include +#include #include #include @@ -31,6 +31,7 @@ namespace vcpkg Json::Value run_resource_heuristics(StringView contents, StringView portRawVersion); std::string write_sbom(const InstallPlanAction& action, - std::vector heuristic_resources, - const std::vector& port_files_abi); + std::vector&& heuristic_resources, + const std::vector& port_files_abi, + StringView uuid); } diff --git a/src/vcpkg/abi.cpp b/src/vcpkg/abi.cpp index a434e51e87..825013476d 100644 --- a/src/vcpkg/abi.cpp +++ b/src/vcpkg/abi.cpp @@ -10,6 +10,7 @@ #include #include #include +#include #include #include @@ -31,6 +32,7 @@ namespace vcpkg AbiEntries abi_entries; std::vector heuristic_resources; AbiEntries port_files_abi; + std::string sbom_uuid; }; static std::string grdk_hash(const Filesystem& fs, const PreBuildInfo& pre_build_info) @@ -311,7 +313,8 @@ namespace vcpkg std::vector heuristic_resources{ run_resource_heuristics(cmake_contents, scfl.source_control_file->core_paragraph->raw_version)}; - return PrivateAbi{std::move(abi_entries), std::move(heuristic_resources), std::move(port_files_abi)}; + return PrivateAbi{ + std::move(abi_entries), std::move(heuristic_resources), std::move(port_files_abi), generate_random_UUID()}; } // PRE: initialize_abi_tag() was called and returned true @@ -347,7 +350,8 @@ namespace vcpkg Strings::join("", abi_tag_entries, [](const AbiEntry& p) { return p.key + " " + p.value + "\n"; }); abi_info.package_abi = Hash::get_string_sha256(full_abi_info); - std::string sbom_str = write_sbom(action, std::move(private_abi.heuristic_resources), private_abi.port_files_abi); + std::string sbom_str = write_sbom( + action, std::move(private_abi.heuristic_resources), private_abi.port_files_abi, private_abi.sbom_uuid); abi_info.abi_file_contents(std::move(full_abi_info), std::move(sbom_str)); } diff --git a/src/vcpkg/spdx.cpp b/src/vcpkg/spdx.cpp index 9d9a701283..6e5522d78c 100644 --- a/src/vcpkg/spdx.cpp +++ b/src/vcpkg/spdx.cpp @@ -2,7 +2,6 @@ #include #include #include -#include #include #include @@ -255,8 +254,9 @@ std::string vcpkg::create_spdx_sbom(const InstallPlanAction& action, } std::string vcpkg::write_sbom(const InstallPlanAction& action, - std::vector heuristic_resources, - const std::vector& port_files_abi) + std::vector&& heuristic_resources, + const std::vector& port_files_abi, + StringView uuid) { const auto& scfl = action.source_control_file_and_location.value_or_exit(VCPKG_LINE_INFO); const auto& scf = *scfl.source_control_file; @@ -268,7 +268,7 @@ std::string vcpkg::write_sbom(const InstallPlanAction& action, '-', scf.to_version(), '-', - generate_random_UUID()); + uuid); const auto now = CTime::now_string(); return create_spdx_sbom(action, port_files_abi, now, doc_ns, std::move(heuristic_resources)); From ace0d3d45b482d83564d41a7d65bc83a6653ef2f Mon Sep 17 00:00:00 2001 From: Thomas1664 <46387399+Thomas1664@users.noreply.github.com> Date: Sat, 28 Oct 2023 21:46:57 +0200 Subject: [PATCH 35/60] Avoid Strings::join --- src/vcpkg/abi.cpp | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/src/vcpkg/abi.cpp b/src/vcpkg/abi.cpp index 825013476d..9865f673d2 100644 --- a/src/vcpkg/abi.cpp +++ b/src/vcpkg/abi.cpp @@ -317,6 +317,19 @@ namespace vcpkg std::move(abi_entries), std::move(heuristic_resources), std::move(port_files_abi), generate_random_UUID()}; } + static std::string abi_entries_to_string(View abi_entries) + { + std::string out; + for (const auto& abi_entry : abi_entries) + { + out.append(abi_entry.key); + out.push_back(' '); + out.append(abi_entry.value); + out.push_back('\n'); + } + return out; + } + // PRE: initialize_abi_tag() was called and returned true static void make_abi_tag(const VcpkgPaths& paths, InstallPlanAction& action, @@ -346,8 +359,7 @@ namespace vcpkg } // fill out port abi - std::string full_abi_info = - Strings::join("", abi_tag_entries, [](const AbiEntry& p) { return p.key + " " + p.value + "\n"; }); + std::string full_abi_info = abi_entries_to_string(abi_tag_entries); abi_info.package_abi = Hash::get_string_sha256(full_abi_info); std::string sbom_str = write_sbom( From f475440a2968b7ef76b85bcf8afe0ed89a2c28d4 Mon Sep 17 00:00:00 2001 From: Thomas1664 <46387399+Thomas1664@users.noreply.github.com> Date: Sat, 4 Nov 2023 10:15:12 +0000 Subject: [PATCH 36/60] Fix merge --- src/vcpkg/abi.cpp | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) diff --git a/src/vcpkg/abi.cpp b/src/vcpkg/abi.cpp index 9865f673d2..33f8ac654e 100644 --- a/src/vcpkg/abi.cpp +++ b/src/vcpkg/abi.cpp @@ -112,7 +112,7 @@ namespace vcpkg AbiEntries helpers(files.size()); - parallel_transform(files.begin(), files.size(), helpers.begin(), [&fs](auto&& file) { + parallel_transform(files, helpers.begin(), [&fs](auto&& file) { return AbiEntry{file.stem().to_string(), Hash::get_file_hash(fs, file, Hash::Algorithm::Sha256).value_or("")}; }); @@ -429,12 +429,9 @@ namespace vcpkg std::vector> ret(action_plan.install_actions.size()); - parallel_transform(action_plan.install_actions.begin(), - action_plan.install_actions.size(), - ret.begin(), - [&](const InstallPlanAction& action) { - return get_private_abi(fs, action, common_abi, cmake_script_hashes); - }); + parallel_transform(action_plan.install_actions, ret.begin(), [&](const InstallPlanAction& action) { + return get_private_abi(fs, action, common_abi, cmake_script_hashes); + }); return ret; }); From cdc412efb035b6a3f140920273f40dd24f2fe71e Mon Sep 17 00:00:00 2001 From: Thomas1664 <46387399+Thomas1664@users.noreply.github.com> Date: Thu, 9 Nov 2023 07:52:53 +0000 Subject: [PATCH 37/60] Fix merge --- src/vcpkg/abi.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/vcpkg/abi.cpp b/src/vcpkg/abi.cpp index 33f8ac654e..677dc75930 100644 --- a/src/vcpkg/abi.cpp +++ b/src/vcpkg/abi.cpp @@ -311,7 +311,7 @@ namespace vcpkg // make sbom file std::vector heuristic_resources{ - run_resource_heuristics(cmake_contents, scfl.source_control_file->core_paragraph->raw_version)}; + run_resource_heuristics(cmake_contents, scfl.source_control_file->core_paragraph->version.text)}; return PrivateAbi{ std::move(abi_entries), std::move(heuristic_resources), std::move(port_files_abi), generate_random_UUID()}; From 7ba0ddff3d848c6fa6e6c9c080bd52501fe849aa Mon Sep 17 00:00:00 2001 From: Thomas1664 <46387399+Thomas1664@users.noreply.github.com> Date: Thu, 16 Nov 2023 14:45:49 +0000 Subject: [PATCH 38/60] prepare merge --- src/vcpkg/abi.cpp | 16 +++++++--------- src/vcpkg/spdx.cpp | 2 +- 2 files changed, 8 insertions(+), 10 deletions(-) diff --git a/src/vcpkg/abi.cpp b/src/vcpkg/abi.cpp index 677dc75930..dfe23c6e94 100644 --- a/src/vcpkg/abi.cpp +++ b/src/vcpkg/abi.cpp @@ -143,7 +143,7 @@ namespace vcpkg static std::pair get_port_files(const Filesystem& fs, const SourceControlFileAndLocation& scfl) { - auto files_and_content = get_ports_files_and_contents(fs, scfl.source_location); + auto files_and_content = get_ports_files_and_contents(fs, scfl.port_directory()); // If there is an unusually large number of files in the port then // something suspicious is going on. @@ -151,9 +151,8 @@ namespace vcpkg if (files_and_content.size() > max_port_file_count) { - auto& paragraph = scfl.source_control_file->core_paragraph; msg::println_warning( - msgHashPortManyFiles, msg::package_name = paragraph->name, msg::count = files_and_content.size()); + msgHashPortManyFiles, msg::package_name = scfl.to_name(), msg::count = files_and_content.size()); } AbiEntries abi_entries; @@ -175,10 +174,9 @@ namespace vcpkg { // Check that no "default" feature is present. Default features must be resolved before attempting to calculate // a package ABI, so the "default" should not have made it here. - static constexpr StringLiteral default_literal{"default"}; - const bool has_no_pseudo_features = std::none_of( - sorted_feature_list.begin(), sorted_feature_list.end(), [](StringView s) { return s == default_literal; }); - Checks::check_exit(VCPKG_LINE_INFO, has_no_pseudo_features); + const bool has_pseudo_features = std::binary_search( + sorted_feature_list.begin(), sorted_feature_list.end(), StringLiteral{"default"}); + Checks::check_exit(VCPKG_LINE_INFO, !has_pseudo_features); Util::sort_unique_erase(sorted_feature_list); // Check that the "core" feature is present. After resolution into InternalFeatureSet "core" meaning "not @@ -289,7 +287,7 @@ namespace vcpkg // portfile hashes/contents auto&& [port_files_abi, cmake_contents] = get_port_files(fs, scfl); - std::copy(port_files_abi.begin(), port_files_abi.end(), std::back_inserter(abi_entries)); + Util::Vectors::append(&abi_entries, port_files_abi); // cmake helpers (access to cmake helper hashes in cache not in parallel) for (auto&& helper : cmake_script_hashes) @@ -339,7 +337,7 @@ namespace vcpkg auto& fs = paths.get_filesystem(); auto& abi_info = *action.abi_info.get(); auto abi_tag_entries = std::move(private_abi.abi_entries); - std::move(dependency_abis.begin(), dependency_abis.end(), std::back_inserter(abi_tag_entries)); + Util::Vectors::append(&abi_tag_entries, dependency_abis); abi_tag_entries.emplace_back("triplet_abi", *abi_info.triplet_abi.get()); diff --git a/src/vcpkg/spdx.cpp b/src/vcpkg/spdx.cpp index 5f76ffed91..272b7ccdde 100644 --- a/src/vcpkg/spdx.cpp +++ b/src/vcpkg/spdx.cpp @@ -262,7 +262,7 @@ std::string vcpkg::write_sbom(const InstallPlanAction& action, const auto& scf = *scfl.source_control_file; auto doc_ns = Strings::concat("https://spdx.org/spdxdocs/", - scf.core_paragraph->name, + scf.to_name(), '-', action.spec.triplet(), '-', From 972435e50a64ae21010035ec8ee9d272582c91de Mon Sep 17 00:00:00 2001 From: Thomas1664 <46387399+Thomas1664@users.noreply.github.com> Date: Thu, 16 Nov 2023 15:02:03 +0000 Subject: [PATCH 39/60] format --- src/vcpkg/abi.cpp | 4 ++-- src/vcpkg/spdx.cpp | 10 ++-------- 2 files changed, 4 insertions(+), 10 deletions(-) diff --git a/src/vcpkg/abi.cpp b/src/vcpkg/abi.cpp index dfe23c6e94..a9a64bd722 100644 --- a/src/vcpkg/abi.cpp +++ b/src/vcpkg/abi.cpp @@ -174,8 +174,8 @@ namespace vcpkg { // Check that no "default" feature is present. Default features must be resolved before attempting to calculate // a package ABI, so the "default" should not have made it here. - const bool has_pseudo_features = std::binary_search( - sorted_feature_list.begin(), sorted_feature_list.end(), StringLiteral{"default"}); + const bool has_pseudo_features = + std::binary_search(sorted_feature_list.begin(), sorted_feature_list.end(), StringLiteral{"default"}); Checks::check_exit(VCPKG_LINE_INFO, !has_pseudo_features); Util::sort_unique_erase(sorted_feature_list); diff --git a/src/vcpkg/spdx.cpp b/src/vcpkg/spdx.cpp index 272b7ccdde..fc2be195eb 100644 --- a/src/vcpkg/spdx.cpp +++ b/src/vcpkg/spdx.cpp @@ -261,14 +261,8 @@ std::string vcpkg::write_sbom(const InstallPlanAction& action, const auto& scfl = action.source_control_file_and_location.value_or_exit(VCPKG_LINE_INFO); const auto& scf = *scfl.source_control_file; - auto doc_ns = Strings::concat("https://spdx.org/spdxdocs/", - scf.to_name(), - '-', - action.spec.triplet(), - '-', - scf.to_version(), - '-', - uuid); + auto doc_ns = Strings::concat( + "https://spdx.org/spdxdocs/", scf.to_name(), '-', action.spec.triplet(), '-', scf.to_version(), '-', uuid); const auto now = CTime::now_string(); return create_spdx_sbom(action, port_files_abi, now, doc_ns, std::move(heuristic_resources)); From 65863625687b126332a518c29dbde8f106ddfca3 Mon Sep 17 00:00:00 2001 From: Thomas1664 <46387399+Thomas1664@users.noreply.github.com> Date: Thu, 16 Nov 2023 15:36:58 +0000 Subject: [PATCH 40/60] sanitize includes --- include/vcpkg/abi.h | 6 ++---- src/vcpkg/abi.cpp | 3 ++- 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/include/vcpkg/abi.h b/include/vcpkg/abi.h index 26fc6cf1bc..e2ff538fb8 100644 --- a/include/vcpkg/abi.h +++ b/include/vcpkg/abi.h @@ -1,17 +1,15 @@ #pragma once #include +#include #include +#include -#include #include #include -#include -#include #include #include -#include #include #include diff --git a/src/vcpkg/abi.cpp b/src/vcpkg/abi.cpp index a9a64bd722..7745e44ed8 100644 --- a/src/vcpkg/abi.cpp +++ b/src/vcpkg/abi.cpp @@ -13,12 +13,13 @@ #include #include +#include #include #include #include #include +#include -#include #include #include #include From f8e00402e94461bc4b543e86e9c5d2c887d466bf Mon Sep 17 00:00:00 2001 From: Thomas1664 <46387399+Thomas1664@users.noreply.github.com> Date: Thu, 16 Nov 2023 15:40:46 +0000 Subject: [PATCH 41/60] sanitize includes --- src/vcpkg/abi.cpp | 1 - 1 file changed, 1 deletion(-) diff --git a/src/vcpkg/abi.cpp b/src/vcpkg/abi.cpp index 7745e44ed8..2165e11e17 100644 --- a/src/vcpkg/abi.cpp +++ b/src/vcpkg/abi.cpp @@ -2,7 +2,6 @@ #include #include #include -#include #include #include #include From 75d720c57ce4e59171cae6d3e67a9b9b6675f603 Mon Sep 17 00:00:00 2001 From: Thomas1664 <46387399+Thomas1664@users.noreply.github.com> Date: Thu, 16 Nov 2023 16:37:50 +0000 Subject: [PATCH 42/60] Sanitize includes --- include/vcpkg/spdx.h | 1 - 1 file changed, 1 deletion(-) diff --git a/include/vcpkg/spdx.h b/include/vcpkg/spdx.h index b6117ce6c5..d3c1998fd1 100644 --- a/include/vcpkg/spdx.h +++ b/include/vcpkg/spdx.h @@ -8,7 +8,6 @@ #include #include -#include #include #include From c4c028221c33ce10271445ab49af6bb5dc5e6536 Mon Sep 17 00:00:00 2001 From: Thomas1664 <46387399+Thomas1664@users.noreply.github.com> Date: Thu, 16 Nov 2023 17:02:10 +0000 Subject: [PATCH 43/60] sanitize comments --- src/vcpkg/abi.cpp | 17 +++-------------- 1 file changed, 3 insertions(+), 14 deletions(-) diff --git a/src/vcpkg/abi.cpp b/src/vcpkg/abi.cpp index 2165e11e17..b4c1d15a61 100644 --- a/src/vcpkg/abi.cpp +++ b/src/vcpkg/abi.cpp @@ -225,7 +225,6 @@ namespace vcpkg std::unique_ptr&& proto_pre_build_info) { const auto& pre_build_info = *proto_pre_build_info; - // get toolset (not in parallel) const auto& toolset = paths.get_toolset(pre_build_info); auto& abi_info = proto_abi_info.emplace(); abi_info.pre_build_info = std::move(proto_pre_build_info); @@ -243,9 +242,7 @@ namespace vcpkg return; } - // get compiler info (not in parallel) abi_info.compiler_info = paths.get_compiler_info(pre_build_info, toolset); - // get triplet info (not in parallel) abi_info.triplet_abi.emplace(paths.get_triplet_info(pre_build_info, toolset)); } @@ -289,7 +286,7 @@ namespace vcpkg auto&& [port_files_abi, cmake_contents] = get_port_files(fs, scfl); Util::Vectors::append(&abi_entries, port_files_abi); - // cmake helpers (access to cmake helper hashes in cache not in parallel) + // cmake helpers for (auto&& helper : cmake_script_hashes) { if (Strings::case_insensitive_ascii_contains(cmake_contents, helper.key)) @@ -298,10 +295,6 @@ namespace vcpkg } } - // cmake/ PS version (precompute, same for all) - // ports.cmake version (precompute, same for all) - // ports.cmake (precompute, same for all) - // post build lint (not updated in 3 years! still needed?) abi_entries.insert(abi_entries.end(), common_abi.begin(), common_abi.end()); // port features @@ -328,7 +321,7 @@ namespace vcpkg return out; } - // PRE: initialize_abi_tag() was called and returned true + // PRE: action.abi_info.has_value() static void make_abi_tag(const VcpkgPaths& paths, InstallPlanAction& action, AbiEntries&& dependency_abis, @@ -341,10 +334,8 @@ namespace vcpkg abi_tag_entries.emplace_back("triplet_abi", *abi_info.triplet_abi.get()); - // abi tags from prebuildinfo abi_entries_from_pre_build_info(fs, *abi_info.pre_build_info, abi_tag_entries); - // sort Util::sort(abi_tag_entries); if (Debug::g_debugging) @@ -418,8 +409,6 @@ namespace vcpkg const StatusParagraphs& status_db) { auto& fs = paths.get_filesystem(); - - // 1. system abi (ports.cmake/ PS version/ CMake version) static AbiEntries common_abi = get_common_abi(paths); auto private_abi_future = std::async(std::launch::async | std::launch::deferred, [&]() { @@ -437,7 +426,7 @@ namespace vcpkg { Checks::check_exit(VCPKG_LINE_INFO, !action.abi_info.has_value()); - // get prebuildinfo (not in parallel) + // get prebuildinfo auto pre_build_info = std::make_unique( paths, action.spec.triplet(), var_provider.get_tag_vars(action.spec).value_or_exit(VCPKG_LINE_INFO)); From 99b1b017eaf1158216239709e6d7cc1169027605 Mon Sep 17 00:00:00 2001 From: Thomas1664 <46387399+Thomas1664@users.noreply.github.com> Date: Tue, 28 Nov 2023 16:34:05 +0000 Subject: [PATCH 44/60] small improvements --- src/vcpkg/abi.cpp | 13 +++++-------- 1 file changed, 5 insertions(+), 8 deletions(-) diff --git a/src/vcpkg/abi.cpp b/src/vcpkg/abi.cpp index b4c1d15a61..33f33e11ed 100644 --- a/src/vcpkg/abi.cpp +++ b/src/vcpkg/abi.cpp @@ -96,7 +96,7 @@ namespace vcpkg abi_entries.emplace_back("cmake", paths.get_tool_version(Tools::CMAKE, stdout_sink)); abi_entries.emplace_back("ports.cmake", Hash::get_file_hash(fs, paths.ports_cmake, Hash::Algorithm::Sha256).value_or("")); - abi_entries.emplace_back("post_build_checks", "2"); + abi_entries.emplace_back("post_build_checks", '2'); // This #ifdef is mirrored in tools.cpp's PowershellProvider #if defined(_WIN32) @@ -133,8 +133,7 @@ namespace vcpkg { continue; } - std::string contents = fs.read_contents(port_root_dir / file, VCPKG_LINE_INFO); - files_and_content.emplace_back(std::move(file), std::move(contents)); + files_and_content.emplace_back(std::move(file), fs.read_contents(port_root_dir / file, VCPKG_LINE_INFO)); } return files_and_content; } @@ -291,7 +290,7 @@ namespace vcpkg { if (Strings::case_insensitive_ascii_contains(cmake_contents, helper.key)) { - abi_entries.emplace_back(helper.key, helper.value); + abi_entries.push_back(helper); } } @@ -351,10 +350,8 @@ namespace vcpkg std::string full_abi_info = abi_entries_to_string(abi_tag_entries); abi_info.package_abi = Hash::get_string_sha256(full_abi_info); - std::string sbom_str = write_sbom( - action, std::move(private_abi.heuristic_resources), private_abi.port_files_abi, private_abi.sbom_uuid); - - abi_info.abi_file_contents(std::move(full_abi_info), std::move(sbom_str)); + abi_info.abi_file_contents(std::move(full_abi_info), write_sbom( + action, std::move(private_abi.heuristic_resources), private_abi.port_files_abi, private_abi.sbom_uuid)); } static AbiEntries get_dependency_abis(std::vector::const_iterator action_plan_begin, From 1a5a1285943efa1c89daa88c3247c0c16abdb027 Mon Sep 17 00:00:00 2001 From: Thomas1664 <46387399+Thomas1664@users.noreply.github.com> Date: Tue, 28 Nov 2023 16:42:26 +0000 Subject: [PATCH 45/60] fix '2' --- src/vcpkg/abi.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/vcpkg/abi.cpp b/src/vcpkg/abi.cpp index 33f33e11ed..5253784ed9 100644 --- a/src/vcpkg/abi.cpp +++ b/src/vcpkg/abi.cpp @@ -96,7 +96,7 @@ namespace vcpkg abi_entries.emplace_back("cmake", paths.get_tool_version(Tools::CMAKE, stdout_sink)); abi_entries.emplace_back("ports.cmake", Hash::get_file_hash(fs, paths.ports_cmake, Hash::Algorithm::Sha256).value_or("")); - abi_entries.emplace_back("post_build_checks", '2'); + abi_entries.emplace_back("post_build_checks", "2"); // This #ifdef is mirrored in tools.cpp's PowershellProvider #if defined(_WIN32) From 5c5398893e0b319d60200ac54573af482f099f92 Mon Sep 17 00:00:00 2001 From: Thomas1664 <46387399+Thomas1664@users.noreply.github.com> Date: Tue, 28 Nov 2023 16:47:39 +0000 Subject: [PATCH 46/60] format --- src/vcpkg/abi.cpp | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/vcpkg/abi.cpp b/src/vcpkg/abi.cpp index 5253784ed9..6f218e22e6 100644 --- a/src/vcpkg/abi.cpp +++ b/src/vcpkg/abi.cpp @@ -350,8 +350,10 @@ namespace vcpkg std::string full_abi_info = abi_entries_to_string(abi_tag_entries); abi_info.package_abi = Hash::get_string_sha256(full_abi_info); - abi_info.abi_file_contents(std::move(full_abi_info), write_sbom( - action, std::move(private_abi.heuristic_resources), private_abi.port_files_abi, private_abi.sbom_uuid)); + abi_info.abi_file_contents( + std::move(full_abi_info), + write_sbom( + action, std::move(private_abi.heuristic_resources), private_abi.port_files_abi, private_abi.sbom_uuid)); } static AbiEntries get_dependency_abis(std::vector::const_iterator action_plan_begin, From b2a48ccb18c8720fafcc36a8c63bbeb56fe6166a Mon Sep 17 00:00:00 2001 From: Thomas1664 <46387399+Thomas1664@users.noreply.github.com> Date: Sat, 16 Dec 2023 17:12:29 +0000 Subject: [PATCH 47/60] Fix merge --- src/vcpkg/abi.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/vcpkg/abi.cpp b/src/vcpkg/abi.cpp index 6f218e22e6..6f1193b019 100644 --- a/src/vcpkg/abi.cpp +++ b/src/vcpkg/abi.cpp @@ -93,14 +93,14 @@ namespace vcpkg AbiEntries abi_entries; auto& fs = paths.get_filesystem(); - abi_entries.emplace_back("cmake", paths.get_tool_version(Tools::CMAKE, stdout_sink)); + abi_entries.emplace_back("cmake", paths.get_tool_version(Tools::CMAKE, out_sink)); abi_entries.emplace_back("ports.cmake", Hash::get_file_hash(fs, paths.ports_cmake, Hash::Algorithm::Sha256).value_or("")); abi_entries.emplace_back("post_build_checks", "2"); // This #ifdef is mirrored in tools.cpp's PowershellProvider #if defined(_WIN32) - abi_entries.emplace_back("powershell", paths.get_tool_version("powershell-core", stdout_sink)); + abi_entries.emplace_back("powershell", paths.get_tool_version("powershell-core", out_sink)); #endif return abi_entries; } @@ -196,7 +196,7 @@ namespace vcpkg Strings::append(message, "[DEBUG] ", entry.key, "|", entry.value, "\n"); } Strings::append(message, "[DEBUG] \n"); - msg::write_unlocalized_text_to_stdout(Color::none, message); + msg::write_unlocalized_text(Color::none, message); } static void print_missing_abi_tags(View abi_entries) From 17b12b5fbbbdde799fee9324576b03ff5835a140 Mon Sep 17 00:00:00 2001 From: Thomas1664 <46387399+Thomas1664@users.noreply.github.com> Date: Mon, 18 Mar 2024 12:07:31 +0000 Subject: [PATCH 48/60] fix merge --- src/vcpkg/abi.cpp | 18 ++++++++++-------- src/vcpkg/spdx.cpp | 2 -- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/src/vcpkg/abi.cpp b/src/vcpkg/abi.cpp index 6f1193b019..6c243cc18a 100644 --- a/src/vcpkg/abi.cpp +++ b/src/vcpkg/abi.cpp @@ -1,5 +1,6 @@ #include #include +#include #include #include #include @@ -19,6 +20,7 @@ #include #include +#include #include #include #include @@ -129,7 +131,7 @@ namespace vcpkg for (auto&& file : files) { - if (file.filename() == ".DS_Store") + if (file.filename() == FileDotDsStore) { continue; } @@ -174,7 +176,7 @@ namespace vcpkg // Check that no "default" feature is present. Default features must be resolved before attempting to calculate // a package ABI, so the "default" should not have made it here. const bool has_pseudo_features = - std::binary_search(sorted_feature_list.begin(), sorted_feature_list.end(), StringLiteral{"default"}); + std::binary_search(sorted_feature_list.begin(), sorted_feature_list.end(), FeatureNameDefault); Checks::check_exit(VCPKG_LINE_INFO, !has_pseudo_features); Util::sort_unique_erase(sorted_feature_list); @@ -182,7 +184,7 @@ namespace vcpkg // default" should have already been handled so "core" should be here. Checks::check_exit( VCPKG_LINE_INFO, - std::binary_search(sorted_feature_list.begin(), sorted_feature_list.end(), StringLiteral{"core"})); + std::binary_search(sorted_feature_list.begin(), sorted_feature_list.end(), FeatureNameCore)); abi_entries.emplace_back("features", Strings::join(";", sorted_feature_list)); } @@ -230,12 +232,12 @@ namespace vcpkg abi_info.toolset.emplace(toolset); // return when using editable or head flags - if (action.build_options.use_head_version == UseHeadVersion::YES) + if (action.build_options.use_head_version == UseHeadVersion::Yes) { Debug::print("Binary caching for package ", action.spec, " is disabled due to --head\n"); return; } - if (action.build_options.editable == Editable::YES) + if (action.build_options.editable == Editable::Yes) { Debug::print("Binary caching for package ", action.spec, " is disabled due to --editable\n"); return; @@ -271,8 +273,8 @@ namespace vcpkg View common_abi, View cmake_script_hashes) { - if (action.build_options.use_head_version == UseHeadVersion::YES || - action.build_options.editable == Editable::YES) + if (action.build_options.use_head_version == UseHeadVersion::Yes || + action.build_options.editable == Editable::Yes) { return nullopt; } @@ -466,7 +468,7 @@ namespace vcpkg } // write abi tag file - fs.write_contents_and_dirs(dir / "vcpkg_abi_info.txt", *abi_tag_file_contents.get(), VCPKG_LINE_INFO); + fs.write_contents_and_dirs(dir / FileVcpkgAbiInfo, *abi_tag_file_contents.get(), VCPKG_LINE_INFO); // write sbom file fs.write_contents(std::move(dir) / "vcpkg.spdx.json", *sbom_file_contents.get(), VCPKG_LINE_INFO); diff --git a/src/vcpkg/spdx.cpp b/src/vcpkg/spdx.cpp index 84a5290e14..bfd65d27ba 100644 --- a/src/vcpkg/spdx.cpp +++ b/src/vcpkg/spdx.cpp @@ -140,8 +140,6 @@ std::string vcpkg::create_spdx_sbom(const InstallPlanAction& action, std::string document_namespace, std::vector&& resource_docs) { - Checks::check_exit(VCPKG_LINE_INFO, relative_paths.size() == hashes.size()); - const auto& scfl = action.source_control_file_and_location.value_or_exit(VCPKG_LINE_INFO); const auto& cpgh = *scfl.source_control_file->core_paragraph; StringView abi{SpdxNone}; From ba828dae46870e89e930bed4fe0dc8c91a685592 Mon Sep 17 00:00:00 2001 From: Thomas1664 <46387399+Thomas1664@users.noreply.github.com> Date: Mon, 18 Mar 2024 12:12:08 +0000 Subject: [PATCH 49/60] format --- src/vcpkg/abi.cpp | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/src/vcpkg/abi.cpp b/src/vcpkg/abi.cpp index 6c243cc18a..2c1c8a2c2d 100644 --- a/src/vcpkg/abi.cpp +++ b/src/vcpkg/abi.cpp @@ -182,9 +182,8 @@ namespace vcpkg // Check that the "core" feature is present. After resolution into InternalFeatureSet "core" meaning "not // default" should have already been handled so "core" should be here. - Checks::check_exit( - VCPKG_LINE_INFO, - std::binary_search(sorted_feature_list.begin(), sorted_feature_list.end(), FeatureNameCore)); + Checks::check_exit(VCPKG_LINE_INFO, + std::binary_search(sorted_feature_list.begin(), sorted_feature_list.end(), FeatureNameCore)); abi_entries.emplace_back("features", Strings::join(";", sorted_feature_list)); } From 323e93c665cfef721056050d4166d5329b0647d8 Mon Sep 17 00:00:00 2001 From: Thomas1664 <46387399+Thomas1664@users.noreply.github.com> Date: Fri, 22 Mar 2024 10:35:30 +0000 Subject: [PATCH 50/60] try fix e2e --- .../vcpkg-test-hash-additional/portfile.cmake | 2 +- .../end-to-end-tests-dir/hash-additional.ps1 | 10 +++++++++- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/azure-pipelines/e2e_ports/hash-additional/vcpkg-test-hash-additional/portfile.cmake b/azure-pipelines/e2e_ports/hash-additional/vcpkg-test-hash-additional/portfile.cmake index ef699645c3..7374e1f099 100644 --- a/azure-pipelines/e2e_ports/hash-additional/vcpkg-test-hash-additional/portfile.cmake +++ b/azure-pipelines/e2e_ports/hash-additional/vcpkg-test-hash-additional/portfile.cmake @@ -1,4 +1,4 @@ -file(STRINGS "${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}.vcpkg_abi_info.txt" lines) +file(STRINGS "${CURRENT_PACKAGES_DIR}/share/vcpkg-test-hash-additional/vcpkg_abi_info.txt" lines) list(GET lines 0 first_line) set(expected "additional_file_0 61ba0c7fc1f696e28c1b7aa9460980a571025ff8c97bb90a57e990463aa25660") diff --git a/azure-pipelines/end-to-end-tests-dir/hash-additional.ps1 b/azure-pipelines/end-to-end-tests-dir/hash-additional.ps1 index a995dd0bf9..8fbb305b58 100644 --- a/azure-pipelines/end-to-end-tests-dir/hash-additional.ps1 +++ b/azure-pipelines/end-to-end-tests-dir/hash-additional.ps1 @@ -1,3 +1,11 @@ . $PSScriptRoot/../end-to-end-tests-prelude.ps1 -Run-Vcpkg "--overlay-triplets=$PSScriptRoot/../e2e_ports/hash-additional" "--overlay-ports=$PSScriptRoot/../e2e_ports/hash-additional" install vcpkg-test-hash-additional --triplet hash-additional-e2e + +[string]$out = Run-VcpkgAndCaptureOutput -TestArgs @("help", "--overlay-triplets=$PSScriptRoot/../e2e_ports/hash-additional", "--overlay-ports=$PSScriptRoot/../e2e_ports/hash-additional", "install", "vcpkg-test-hash-additional", "--triplet", "hash-additional-e2e", "--debug") +Throw-IfFailed +if (-Not ($out.Contains("additional_file_0|61ba0c7fc1f696e28c1b7aa9460980a571025ff8c97bb90a57e990463aa25660"))) +{ + throw "Additional file hash not found in output" +} + +Run-Vcpkg Throw-IfFailed From 497b96736fc52d0bca550456dfebe53a35c38675 Mon Sep 17 00:00:00 2001 From: Thomas1664 <46387399+Thomas1664@users.noreply.github.com> Date: Fri, 22 Mar 2024 10:41:52 +0000 Subject: [PATCH 51/60] fix e2e --- .../vcpkg-test-hash-additional/portfile.cmake | 11 ----------- 1 file changed, 11 deletions(-) diff --git a/azure-pipelines/e2e_ports/hash-additional/vcpkg-test-hash-additional/portfile.cmake b/azure-pipelines/e2e_ports/hash-additional/vcpkg-test-hash-additional/portfile.cmake index 7374e1f099..9aefc82414 100644 --- a/azure-pipelines/e2e_ports/hash-additional/vcpkg-test-hash-additional/portfile.cmake +++ b/azure-pipelines/e2e_ports/hash-additional/vcpkg-test-hash-additional/portfile.cmake @@ -1,12 +1 @@ -file(STRINGS "${CURRENT_PACKAGES_DIR}/share/vcpkg-test-hash-additional/vcpkg_abi_info.txt" lines) -list(GET lines 0 first_line) - -set(expected "additional_file_0 61ba0c7fc1f696e28c1b7aa9460980a571025ff8c97bb90a57e990463aa25660") - -if(first_line STREQUAL "${expected}") - message(STATUS "Test succesful!") -else() - message(FATAL_ERROR "First line in abi info is not the additional file to be hashed but:\n first_line: '${first_line}'\n expected: '${expected}' ") -endif() - set(VCPKG_POLICY_EMPTY_PACKAGE enabled) From 5d9be8000c932a03ca5e512fe2d2ba123db16ba5 Mon Sep 17 00:00:00 2001 From: Thomas1664 <46387399+Thomas1664@users.noreply.github.com> Date: Fri, 22 Mar 2024 11:14:10 +0000 Subject: [PATCH 52/60] try again --- azure-pipelines/end-to-end-tests-dir/hash-additional.ps1 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/azure-pipelines/end-to-end-tests-dir/hash-additional.ps1 b/azure-pipelines/end-to-end-tests-dir/hash-additional.ps1 index 8fbb305b58..febc8d17f1 100644 --- a/azure-pipelines/end-to-end-tests-dir/hash-additional.ps1 +++ b/azure-pipelines/end-to-end-tests-dir/hash-additional.ps1 @@ -1,6 +1,6 @@ . $PSScriptRoot/../end-to-end-tests-prelude.ps1 -[string]$out = Run-VcpkgAndCaptureOutput -TestArgs @("help", "--overlay-triplets=$PSScriptRoot/../e2e_ports/hash-additional", "--overlay-ports=$PSScriptRoot/../e2e_ports/hash-additional", "install", "vcpkg-test-hash-additional", "--triplet", "hash-additional-e2e", "--debug") +[string]$out = Run-VcpkgAndCaptureOutput -TestArgs @("--overlay-triplets=$PSScriptRoot/../e2e_ports/hash-additional", "--overlay-ports=$PSScriptRoot/../e2e_ports/hash-additional", "x-set-installed", "vcpkg-test-hash-additional", "--triplet", "hash-additional-e2e", "--debug") Throw-IfFailed if (-Not ($out.Contains("additional_file_0|61ba0c7fc1f696e28c1b7aa9460980a571025ff8c97bb90a57e990463aa25660"))) { From 3fe1e3e382c0eba9711b6ec6322649ad428b9492 Mon Sep 17 00:00:00 2001 From: Thomas1664 <46387399+Thomas1664@users.noreply.github.com> Date: Fri, 22 Mar 2024 11:28:38 +0000 Subject: [PATCH 53/60] remove old e2e code --- azure-pipelines/end-to-end-tests-dir/hash-additional.ps1 | 3 --- 1 file changed, 3 deletions(-) diff --git a/azure-pipelines/end-to-end-tests-dir/hash-additional.ps1 b/azure-pipelines/end-to-end-tests-dir/hash-additional.ps1 index febc8d17f1..ef03f19f7a 100644 --- a/azure-pipelines/end-to-end-tests-dir/hash-additional.ps1 +++ b/azure-pipelines/end-to-end-tests-dir/hash-additional.ps1 @@ -6,6 +6,3 @@ if (-Not ($out.Contains("additional_file_0|61ba0c7fc1f696e28c1b7aa9460980a571025 { throw "Additional file hash not found in output" } - -Run-Vcpkg -Throw-IfFailed From 33d08f69637a6005b41599a08a0c5790cf5b3b4f Mon Sep 17 00:00:00 2001 From: Thomas1664 <46387399+Thomas1664@users.noreply.github.com> Date: Mon, 8 Apr 2024 11:37:29 +0000 Subject: [PATCH 54/60] fix merge --- src/vcpkg/abi.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/vcpkg/abi.cpp b/src/vcpkg/abi.cpp index ae497d5542..5cd82c6232 100644 --- a/src/vcpkg/abi.cpp +++ b/src/vcpkg/abi.cpp @@ -65,12 +65,12 @@ namespace vcpkg } static void hash_additional_files(const Filesystem& fs, - const std::vector& files, + const std::vector& files, AbiEntries& abi_tag_entries) { for (size_t i = 0; i < files.size(); ++i) { - Path file = files[i]; + auto& file = files[i]; if (file.is_relative() || !fs.is_regular_file(file)) { Checks::msg_exit_with_message(VCPKG_LINE_INFO, msgInvalidValueHashAdditionalFiles, msg::path = file); From c12f20eea85cce097009c9b74f306e21f1a06d71 Mon Sep 17 00:00:00 2001 From: Thomas1664 <46387399+Thomas1664@users.noreply.github.com> Date: Mon, 8 Apr 2024 12:23:38 +0000 Subject: [PATCH 55/60] format --- src/vcpkg/abi.cpp | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/src/vcpkg/abi.cpp b/src/vcpkg/abi.cpp index 5cd82c6232..d5882b82c9 100644 --- a/src/vcpkg/abi.cpp +++ b/src/vcpkg/abi.cpp @@ -64,9 +64,7 @@ namespace vcpkg return "none"; } - static void hash_additional_files(const Filesystem& fs, - const std::vector& files, - AbiEntries& abi_tag_entries) + static void hash_additional_files(const Filesystem& fs, const std::vector& files, AbiEntries& abi_tag_entries) { for (size_t i = 0; i < files.size(); ++i) { From 03fbb314b5be16f550ccbfc83436871b6d9de27f Mon Sep 17 00:00:00 2001 From: Thomas1664 <46387399+Thomas1664@users.noreply.github.com> Date: Mon, 26 Aug 2024 00:12:22 +0200 Subject: [PATCH 56/60] Merge remote-tracking branch 'upstream/main' into parallel-abi-hashes --- .github/workflows/build.yaml | 6 +- .github/workflows/ci.yaml | 1 + .github/workflows/pr.yaml | 28 + .vscode/settings.json | 3 +- CMakeLists.txt | 13 +- .../arch-independent-signing.signproj | 3 + .../.gitattributes | 1 + .../bad-git-tree-1.0}/portfile.cmake | 0 .../bad-git-tree-1.0/vcpkg.json | 4 + .../bad-history-name-1.0}/portfile.cmake | 0 .../bad-history-name-1.0/vcpkg.json | 4 + .../portfile.cmake | 1 + .../baseline-version-mismatch-1.0/vcpkg.json | 4 + .../has-local-edits/portfile.cmake | 1 + .../has-local-edits/vcpkg.json | 4 + .../malformed-1.0/portfile.cmake | 1 + .../malformed-1.0/vcpkg.json | 5 + .../mismatch-git-tree-1.0/portfile.cmake | 1 + .../mismatch-git-tree-1.0/vcpkg.json | 4 + .../version-mismatch-1.0/portfile.cmake | 1 + .../version-mismatch-1.0/vcpkg.json | 4 + .../version-missing-1.0/portfile.cmake | 1 + .../version-missing-1.0/vcpkg.json | 4 + .../portfile.cmake | 1 + .../version-scheme-mismatch-1.0/vcpkg.json | 4 + .../ports/bad-git-tree/portfile.cmake | 1 + .../ports/bad-git-tree/vcpkg.json | 4 + .../ports/bad-history-name/portfile.cmake | 1 + .../ports/bad-history-name/vcpkg.json | 4 + .../baseline-version-mismatch/portfile.cmake | 1 + .../baseline-version-mismatch/vcpkg.json | 4 + .../baseline-version-missing/portfile.cmake | 1 + .../ports/baseline-version-missing/vcpkg.json | 4 + .../portfile.cmake | 1 + .../vcpkg.json | 12 + .../portfile.cmake | 1 + .../vcpkg.json | 7 + .../portfile.cmake | 1 + .../vcpkg.json | 15 + .../portfile.cmake | 1 + .../vcpkg.json | 10 + .../ports/good/portfile.cmake | 1 + .../ports/good/vcpkg.json | 4 + .../ports/malformed/portfile.cmake | 1 + .../ports/malformed/vcpkg.json | 5 + .../ports/mismatch-git-tree/portfile.cmake | 1 + .../ports/mismatch-git-tree/vcpkg.json | 5 + .../ports/no-versions/portfile.cmake | 1 + .../ports/no-versions/vcpkg.json | 4 + .../portfile.cmake | 1 + .../vcpkg.json | 10 + .../portfile.cmake | 1 + .../vcpkg.json | 10 + .../ports/version-mismatch/portfile.cmake | 1 + .../ports/version-mismatch/vcpkg.json | 4 + .../ports/version-missing/portfile.cmake | 1 + .../ports/version-missing/vcpkg.json | 4 + .../version-scheme-mismatch/portfile.cmake | 1 + .../ports/version-scheme-mismatch/vcpkg.json | 4 + .../versions/b-/bad-git-tree.json | 14 + .../versions/b-/bad-history-name.json | 14 + .../b-/baseline-version-mismatch.json | 14 + .../versions/b-/baseline-version-missing.json | 9 + .../versions/baseline.json | 76 + ...ency-not-in-versions-database-feature.json | 9 + .../dependency-not-in-versions-database.json | 9 + ...sion-not-in-versions-database-feature.json | 9 + ...ency-version-not-in-versions-database.json | 9 + .../versions/g-/good.json | 9 + .../versions/h-/has-local-edits.json | 9 + .../versions/m-/malformed.json | 14 + .../versions/m-/mismatch-git-tree.json | 9 + .../o-/override-not-in-versions-database.json | 9 + ...ride-version-not-in-versions-database.json | 9 + .../versions/v-/version-mismatch.json | 14 + .../versions/v-/version-missing.json | 9 + .../versions/v-/version-scheme-mismatch.json | 14 + .../test-dll-port-template/portfile.cmake | 77 +- .../test-dll-port-template/vcpkg.json | 57 +- .../test-exe-port-template/build.cmd | 4 + .../test-exe-port-template/portfile.cmake | 17 + .../e2e-assets/test-exe-port-template/test.c | 7 + .../test-exe-port-template/vcpkg.json | 12 + .../build.cmd | 6 + .../portfile.cmake | 16 + .../test.c | 6 + .../test.h | 1 + .../vcpkg.json | 12 + .../portfile.cmake | 3 + .../vcpkg.json | 7 +- .../broken-no-name/portfile.cmake | 1 + .../broken-no-name/vcpkg.json | 0 .../broken-no-version/portfile.cmake | 1 + .../broken-no-version/vcpkg.json | 0 .../broken-manifests/malformed/portfile.cmake | 1 + .../broken-manifests/malformed/vcpkg.json | 4 + .../ci/feature-dep-missing/portfile.cmake | 1 + .../ci/feature-dep-missing/vcpkg.json | 12 + .../additional_abi_file.txt | 0 .../hash-additional-e2e.cmake | 0 .../vcpkg-test-hash-additional/portfile.cmake | 0 .../vcpkg-test-hash-additional/vcpkg.json | 0 .../hash-additional/additional_abi_file.txt | 0 .../hash-additional/hash-additional-e2e.cmake | 0 .../vcpkg-test-hash-additional/portfile.cmake | 0 .../vcpkg-test-hash-additional/vcpkg.json | 0 .../overlays/vcpkg-header-only/portfile.cmake | 4 + .../overlays/vcpkg-header-only/vcpkg.json | 4 + .../invalid.extension | 0 .../post-portfile-includes.cmake | 9 + .../portfile.cmake | 1 + .../vcpkg-post-portfile-includes/vcpkg.json | 5 + .../post-portfile-includes.cmake | 9 + .../post-portfile-includes/test1.cmake | 2 + .../post-portfile-includes/test2.cmake | 10 + .../portfile.cmake | 35 + .../vcpkg-post-portfile-includes/vcpkg.json | 5 + .../vcpkg-bad-spdx-license/portfile.cmake | 1 + .../vcpkg-bad-spdx-license/vcpkg.json | 5 + .../portfile.cmake | 3 + .../vcpkg.json | 7 +- .../e2e-ports/vcpkg-msvc-2013/build.cmd | 5 + .../vcpkg-msvc-2013/debug/test_dll.dll | Bin 0 -> 7680 bytes .../vcpkg-msvc-2013/debug/test_dll.lib | Bin 0 -> 1716 bytes .../e2e-ports/vcpkg-msvc-2013/portfile.cmake | 23 + .../vcpkg-msvc-2013/release/test_dll.dll | Bin 0 -> 6144 bytes .../vcpkg-msvc-2013/release/test_dll.lib | Bin 0 -> 1716 bytes .../e2e-ports/vcpkg-msvc-2013/test.c | 17 + .../e2e-ports/vcpkg-msvc-2013/test.def | 4 + .../e2e-ports/vcpkg-msvc-2013/test.h | 1 + .../e2e-ports/vcpkg-msvc-2013/vcpkg.json | 12 + .../portfile.cmake | 30 + .../vcpkg-policy-absolute-paths/vcpkg.json | 24 + .../vcpkg-policy-copyright/portfile.cmake | 26 + .../vcpkg-policy-copyright/vcpkg.json | 18 + .../vcpkg-policy-empty-folders/portfile.cmake | 8 + .../vcpkg-policy-empty-folders/vcpkg.json | 9 + .../vcpkg-policy-empty-package/portfile.cmake | 1 + .../vcpkg-policy-empty-package/vcpkg.json | 4 + .../vcpkg-policy-forgot-usage/portfile.cmake | 6 + .../e2e-ports/vcpkg-policy-forgot-usage/usage | 1 + .../vcpkg-policy-forgot-usage/vcpkg.json | 9 + .../portfile.cmake | 46 + .../vcpkg-policy-include-folder/vcpkg.json | 36 + .../portfile.cmake | 29 + .../vcpkg.json | 18 + .../portfile.cmake | 124 ++ .../vcpkg.json | 58 + .../portfile.cmake | 16 + .../vcpkg.json | 9 + .../portfile.cmake | 1 + .../vcpkg-policy-set-incorrectly/vcpkg.json | 4 + .../portfile.cmake | 1 + .../vcpkg.json | 4 + .../e2e-ports/versions/baseline.json | 5 - .../v-/vcpkg-internal-e2e-test-port.json | 8 - .../end-to-end-tests-dir/artifacts.ps1 | 8 +- .../end-to-end-tests-dir/asset-caching.ps1 | 101 + .../end-to-end-tests-dir/build-test-ports.ps1 | 49 +- .../ci-verify-versions.ps1 | 176 ++ azure-pipelines/end-to-end-tests-dir/ci.ps1 | 37 +- .../hash-additional-fail.ps1 | 7 - .../end-to-end-tests-dir/hash-additional.ps1 | 9 +- .../end-to-end-tests-dir/manifests.ps1 | 75 + .../post-build-checks.ps1 | 1017 +++++++++- .../post-portfile-includes.ps1 | 23 + .../end-to-end-tests-dir/registries.ps1 | 102 + .../end-to-end-tests-dir/usage.ps1 | 10 +- azure-pipelines/end-to-end-tests-prelude.ps1 | 23 + azure-pipelines/end-to-end-tests.ps1 | 4 +- .../json-schema-bvt.test.ps1 | 117 ++ .../vcpkg-ports-json.test.ps1 | 19 + azure-pipelines/json-schema-tests.ps1 | 52 + azure-pipelines/signing.yml | 39 +- cgmanifest.json | 6 +- cmake/Findfmt.cmake | 8 +- docs/artifact.schema.json | 3 +- docs/vcpkg-configuration.schema.json | 3 +- docs/vcpkg-schema-definitions.schema.json | 53 +- docs/vcpkg.schema.json | 6 +- docs/vcpkg_tool_release_process.md | 26 +- include/vcpkg/base/contractual-constants.h | 36 + include/vcpkg/base/downloads.h | 9 +- include/vcpkg/base/expected.h | 20 +- include/vcpkg/base/files.h | 11 +- include/vcpkg/base/fmt.h | 9 +- include/vcpkg/base/fwd/fmt.h | 2 +- include/vcpkg/base/jsonreader.h | 4 +- include/vcpkg/base/message-args.inc.h | 1 + include/vcpkg/base/message-data.inc.h | 769 ++++---- include/vcpkg/base/optional.h | 4 +- include/vcpkg/base/path.h | 1 + include/vcpkg/base/span.h | 1 - include/vcpkg/base/stringview.h | 20 +- include/vcpkg/base/system.process.h | 29 +- include/vcpkg/base/util.h | 50 +- include/vcpkg/binarycaching.h | 3 +- include/vcpkg/commands.build.h | 57 +- include/vcpkg/commands.install.h | 7 +- include/vcpkg/commands.set-installed.h | 8 +- include/vcpkg/dependencies.h | 55 +- include/vcpkg/documentation.h | 48 +- include/vcpkg/fwd/build.h | 27 +- include/vcpkg/fwd/commands.install.h | 6 - include/vcpkg/fwd/sourceparagraph.h | 2 +- include/vcpkg/metrics.h | 2 +- include/vcpkg/paragraphs.h | 29 +- include/vcpkg/portfileprovider.h | 6 +- include/vcpkg/registries.h | 52 +- include/vcpkg/sourceparagraph.h | 11 + locales/messages.cs.json | 255 ++- locales/messages.de.json | 255 ++- locales/messages.es.json | 257 ++- locales/messages.fr.json | 257 ++- locales/messages.it.json | 255 ++- locales/messages.ja.json | 255 ++- locales/messages.json | 354 ++-- locales/messages.ko.json | 255 ++- locales/messages.pl.json | 253 ++- locales/messages.pt-BR.json | 259 ++- locales/messages.ru.json | 259 ++- locales/messages.tr.json | 257 ++- locales/messages.zh-Hans.json | 257 ++- locales/messages.zh-Hant.json | 259 ++- scripts/posh-vcpkg.psd1 | 31 + scripts/verifyMessages.ps1 | 52 + src/localization/cs/messages.json.lcl | 1576 ++++++++-------- src/localization/de/messages.json.lcl | 1572 ++++++++-------- src/localization/es/messages.json.lcl | 1574 ++++++++-------- src/localization/fr/messages.json.lcl | 1578 ++++++++-------- src/localization/it/messages.json.lcl | 1572 ++++++++-------- src/localization/ja/messages.json.lcl | 1576 ++++++++-------- src/localization/ko/messages.json.lcl | 1576 ++++++++-------- src/localization/pl/messages.json.lcl | 1580 ++++++++-------- src/localization/pt-BR/messages.json.lcl | 1584 ++++++++-------- src/localization/ru/messages.json.lcl | 1580 ++++++++-------- src/localization/tr/messages.json.lcl | 1582 ++++++++-------- src/localization/zh-Hans/messages.json.lcl | 1582 ++++++++-------- src/localization/zh-Hant/messages.json.lcl | 1576 ++++++++-------- src/vcpkg-in-development.ps1 | 4 +- src/vcpkg-test/binarycaching.cpp | 12 +- src/vcpkg-test/configparser.cpp | 29 + src/vcpkg-test/dependencies.cpp | 94 +- src/vcpkg-test/input.cpp | 22 +- src/vcpkg-test/manifests.cpp | 25 +- src/vcpkg-test/plan.cpp | 9 +- src/vcpkg-test/registries.cpp | 39 +- src/vcpkg-test/spdx.cpp | 15 +- src/vcpkg-test/specifier.cpp | 4 +- src/vcpkg-test/system.process.cpp | 63 + src/vcpkg-test/tools.cpp | 2 - src/vcpkg-test/util-tests.cpp | 6 +- src/vcpkg-test/versionplan.cpp | 3 +- src/vcpkg/abi.cpp | 36 +- src/vcpkg/archives.cpp | 3 +- src/vcpkg/base/checks.cpp | 1 + src/vcpkg/base/downloads.cpp | 247 ++- src/vcpkg/base/files.cpp | 83 + src/vcpkg/base/json.cpp | 21 +- src/vcpkg/base/strings.cpp | 2 - src/vcpkg/base/system.process.cpp | 65 +- src/vcpkg/binarycaching.cpp | 172 +- src/vcpkg/cmakevars.cpp | 1 + src/vcpkg/commands.activate.cpp | 2 +- src/vcpkg/commands.add-version.cpp | 96 +- src/vcpkg/commands.add.cpp | 18 +- src/vcpkg/commands.autocomplete.cpp | 4 +- src/vcpkg/commands.build-external.cpp | 16 +- src/vcpkg/commands.build.cpp | 212 ++- src/vcpkg/commands.check-support.cpp | 7 +- src/vcpkg/commands.ci-verify-versions.cpp | 749 +++++--- src/vcpkg/commands.ci.cpp | 77 +- src/vcpkg/commands.depend-info.cpp | 28 +- src/vcpkg/commands.env.cpp | 4 +- src/vcpkg/commands.export.cpp | 4 +- src/vcpkg/commands.find.cpp | 7 +- src/vcpkg/commands.format-manifest.cpp | 198 +- src/vcpkg/commands.help.cpp | 2 +- src/vcpkg/commands.install.cpp | 147 +- src/vcpkg/commands.integrate.cpp | 13 +- src/vcpkg/commands.package-info.cpp | 4 +- src/vcpkg/commands.portsdiff.cpp | 43 +- src/vcpkg/commands.remove.cpp | 9 +- src/vcpkg/commands.set-installed.cpp | 83 +- src/vcpkg/commands.update.cpp | 4 +- src/vcpkg/commands.upgrade.cpp | 45 +- src/vcpkg/commands.use.cpp | 2 +- src/vcpkg/configuration.cpp | 36 +- src/vcpkg/dependencies.cpp | 213 ++- src/vcpkg/export.prefab.cpp | 2 +- src/vcpkg/paragraphs.cpp | 112 +- src/vcpkg/platform-expression.cpp | 6 +- src/vcpkg/portfileprovider.cpp | 123 +- src/vcpkg/postbuildlint.cpp | 1653 +++++++++++------ src/vcpkg/registries.cpp | 642 ++++--- src/vcpkg/sourceparagraph.cpp | 2 + src/vcpkg/spdx.cpp | 2 +- src/vcpkg/tools.cpp | 9 +- src/vcpkg/vcpkgpaths.cpp | 38 +- src/vcpkg/visualstudio.cpp | 1 + vcpkg-artifacts/artifacts/activation.ts | 2 +- vcpkg-artifacts/cli/commands/add.ts | 2 +- vcpkg-artifacts/locales/messages.json | 4 +- vcpkg-artifacts/package-lock.json | 28 +- vcpkg-init/mint-standalone-bundle.ps1 | 4 +- vcpkg-init/vcpkg-init | 6 +- vcpkg-init/vcpkg-init.ps1 | 12 +- vcpkg-init/vcpkg-scripts-sha.txt | 2 +- 308 files changed, 18978 insertions(+), 15570 deletions(-) create mode 100644 azure-pipelines/e2e-assets/ci-verify-versions-registry/.gitattributes rename azure-pipelines/{e2e-ports/overlays/broken-no-name => e2e-assets/ci-verify-versions-registry/old-port-versions/bad-git-tree-1.0}/portfile.cmake (100%) create mode 100644 azure-pipelines/e2e-assets/ci-verify-versions-registry/old-port-versions/bad-git-tree-1.0/vcpkg.json rename azure-pipelines/{e2e-ports/overlays/broken-no-version => e2e-assets/ci-verify-versions-registry/old-port-versions/bad-history-name-1.0}/portfile.cmake (100%) create mode 100644 azure-pipelines/e2e-assets/ci-verify-versions-registry/old-port-versions/bad-history-name-1.0/vcpkg.json create mode 100644 azure-pipelines/e2e-assets/ci-verify-versions-registry/old-port-versions/baseline-version-mismatch-1.0/portfile.cmake create mode 100644 azure-pipelines/e2e-assets/ci-verify-versions-registry/old-port-versions/baseline-version-mismatch-1.0/vcpkg.json create mode 100644 azure-pipelines/e2e-assets/ci-verify-versions-registry/old-port-versions/has-local-edits/portfile.cmake create mode 100644 azure-pipelines/e2e-assets/ci-verify-versions-registry/old-port-versions/has-local-edits/vcpkg.json create mode 100644 azure-pipelines/e2e-assets/ci-verify-versions-registry/old-port-versions/malformed-1.0/portfile.cmake create mode 100644 azure-pipelines/e2e-assets/ci-verify-versions-registry/old-port-versions/malformed-1.0/vcpkg.json create mode 100644 azure-pipelines/e2e-assets/ci-verify-versions-registry/old-port-versions/mismatch-git-tree-1.0/portfile.cmake create mode 100644 azure-pipelines/e2e-assets/ci-verify-versions-registry/old-port-versions/mismatch-git-tree-1.0/vcpkg.json create mode 100644 azure-pipelines/e2e-assets/ci-verify-versions-registry/old-port-versions/version-mismatch-1.0/portfile.cmake create mode 100644 azure-pipelines/e2e-assets/ci-verify-versions-registry/old-port-versions/version-mismatch-1.0/vcpkg.json create mode 100644 azure-pipelines/e2e-assets/ci-verify-versions-registry/old-port-versions/version-missing-1.0/portfile.cmake create mode 100644 azure-pipelines/e2e-assets/ci-verify-versions-registry/old-port-versions/version-missing-1.0/vcpkg.json create mode 100644 azure-pipelines/e2e-assets/ci-verify-versions-registry/old-port-versions/version-scheme-mismatch-1.0/portfile.cmake create mode 100644 azure-pipelines/e2e-assets/ci-verify-versions-registry/old-port-versions/version-scheme-mismatch-1.0/vcpkg.json create mode 100644 azure-pipelines/e2e-assets/ci-verify-versions-registry/ports/bad-git-tree/portfile.cmake create mode 100644 azure-pipelines/e2e-assets/ci-verify-versions-registry/ports/bad-git-tree/vcpkg.json create mode 100644 azure-pipelines/e2e-assets/ci-verify-versions-registry/ports/bad-history-name/portfile.cmake create mode 100644 azure-pipelines/e2e-assets/ci-verify-versions-registry/ports/bad-history-name/vcpkg.json create mode 100644 azure-pipelines/e2e-assets/ci-verify-versions-registry/ports/baseline-version-mismatch/portfile.cmake create mode 100644 azure-pipelines/e2e-assets/ci-verify-versions-registry/ports/baseline-version-mismatch/vcpkg.json create mode 100644 azure-pipelines/e2e-assets/ci-verify-versions-registry/ports/baseline-version-missing/portfile.cmake create mode 100644 azure-pipelines/e2e-assets/ci-verify-versions-registry/ports/baseline-version-missing/vcpkg.json create mode 100644 azure-pipelines/e2e-assets/ci-verify-versions-registry/ports/dependency-not-in-versions-database-feature/portfile.cmake create mode 100644 azure-pipelines/e2e-assets/ci-verify-versions-registry/ports/dependency-not-in-versions-database-feature/vcpkg.json create mode 100644 azure-pipelines/e2e-assets/ci-verify-versions-registry/ports/dependency-not-in-versions-database/portfile.cmake create mode 100644 azure-pipelines/e2e-assets/ci-verify-versions-registry/ports/dependency-not-in-versions-database/vcpkg.json create mode 100644 azure-pipelines/e2e-assets/ci-verify-versions-registry/ports/dependency-version-not-in-versions-database-feature/portfile.cmake create mode 100644 azure-pipelines/e2e-assets/ci-verify-versions-registry/ports/dependency-version-not-in-versions-database-feature/vcpkg.json create mode 100644 azure-pipelines/e2e-assets/ci-verify-versions-registry/ports/dependency-version-not-in-versions-database/portfile.cmake create mode 100644 azure-pipelines/e2e-assets/ci-verify-versions-registry/ports/dependency-version-not-in-versions-database/vcpkg.json create mode 100644 azure-pipelines/e2e-assets/ci-verify-versions-registry/ports/good/portfile.cmake create mode 100644 azure-pipelines/e2e-assets/ci-verify-versions-registry/ports/good/vcpkg.json create mode 100644 azure-pipelines/e2e-assets/ci-verify-versions-registry/ports/malformed/portfile.cmake create mode 100644 azure-pipelines/e2e-assets/ci-verify-versions-registry/ports/malformed/vcpkg.json create mode 100644 azure-pipelines/e2e-assets/ci-verify-versions-registry/ports/mismatch-git-tree/portfile.cmake create mode 100644 azure-pipelines/e2e-assets/ci-verify-versions-registry/ports/mismatch-git-tree/vcpkg.json create mode 100644 azure-pipelines/e2e-assets/ci-verify-versions-registry/ports/no-versions/portfile.cmake create mode 100644 azure-pipelines/e2e-assets/ci-verify-versions-registry/ports/no-versions/vcpkg.json create mode 100644 azure-pipelines/e2e-assets/ci-verify-versions-registry/ports/override-not-in-versions-database/portfile.cmake create mode 100644 azure-pipelines/e2e-assets/ci-verify-versions-registry/ports/override-not-in-versions-database/vcpkg.json create mode 100644 azure-pipelines/e2e-assets/ci-verify-versions-registry/ports/override-version-not-in-versions-database/portfile.cmake create mode 100644 azure-pipelines/e2e-assets/ci-verify-versions-registry/ports/override-version-not-in-versions-database/vcpkg.json create mode 100644 azure-pipelines/e2e-assets/ci-verify-versions-registry/ports/version-mismatch/portfile.cmake create mode 100644 azure-pipelines/e2e-assets/ci-verify-versions-registry/ports/version-mismatch/vcpkg.json create mode 100644 azure-pipelines/e2e-assets/ci-verify-versions-registry/ports/version-missing/portfile.cmake create mode 100644 azure-pipelines/e2e-assets/ci-verify-versions-registry/ports/version-missing/vcpkg.json create mode 100644 azure-pipelines/e2e-assets/ci-verify-versions-registry/ports/version-scheme-mismatch/portfile.cmake create mode 100644 azure-pipelines/e2e-assets/ci-verify-versions-registry/ports/version-scheme-mismatch/vcpkg.json create mode 100644 azure-pipelines/e2e-assets/ci-verify-versions-registry/versions/b-/bad-git-tree.json create mode 100644 azure-pipelines/e2e-assets/ci-verify-versions-registry/versions/b-/bad-history-name.json create mode 100644 azure-pipelines/e2e-assets/ci-verify-versions-registry/versions/b-/baseline-version-mismatch.json create mode 100644 azure-pipelines/e2e-assets/ci-verify-versions-registry/versions/b-/baseline-version-missing.json create mode 100644 azure-pipelines/e2e-assets/ci-verify-versions-registry/versions/baseline.json create mode 100644 azure-pipelines/e2e-assets/ci-verify-versions-registry/versions/d-/dependency-not-in-versions-database-feature.json create mode 100644 azure-pipelines/e2e-assets/ci-verify-versions-registry/versions/d-/dependency-not-in-versions-database.json create mode 100644 azure-pipelines/e2e-assets/ci-verify-versions-registry/versions/d-/dependency-version-not-in-versions-database-feature.json create mode 100644 azure-pipelines/e2e-assets/ci-verify-versions-registry/versions/d-/dependency-version-not-in-versions-database.json create mode 100644 azure-pipelines/e2e-assets/ci-verify-versions-registry/versions/g-/good.json create mode 100644 azure-pipelines/e2e-assets/ci-verify-versions-registry/versions/h-/has-local-edits.json create mode 100644 azure-pipelines/e2e-assets/ci-verify-versions-registry/versions/m-/malformed.json create mode 100644 azure-pipelines/e2e-assets/ci-verify-versions-registry/versions/m-/mismatch-git-tree.json create mode 100644 azure-pipelines/e2e-assets/ci-verify-versions-registry/versions/o-/override-not-in-versions-database.json create mode 100644 azure-pipelines/e2e-assets/ci-verify-versions-registry/versions/o-/override-version-not-in-versions-database.json create mode 100644 azure-pipelines/e2e-assets/ci-verify-versions-registry/versions/v-/version-mismatch.json create mode 100644 azure-pipelines/e2e-assets/ci-verify-versions-registry/versions/v-/version-missing.json create mode 100644 azure-pipelines/e2e-assets/ci-verify-versions-registry/versions/v-/version-scheme-mismatch.json create mode 100644 azure-pipelines/e2e-assets/test-exe-port-template/build.cmd create mode 100644 azure-pipelines/e2e-assets/test-exe-port-template/portfile.cmake create mode 100644 azure-pipelines/e2e-assets/test-exe-port-template/test.c create mode 100644 azure-pipelines/e2e-assets/test-exe-port-template/vcpkg.json create mode 100644 azure-pipelines/e2e-assets/test-lib-port-template-dynamic-crt-release-only/build.cmd create mode 100644 azure-pipelines/e2e-assets/test-lib-port-template-dynamic-crt-release-only/portfile.cmake create mode 100644 azure-pipelines/e2e-assets/test-lib-port-template-dynamic-crt-release-only/test.c create mode 100644 azure-pipelines/e2e-assets/test-lib-port-template-dynamic-crt-release-only/test.h create mode 100644 azure-pipelines/e2e-assets/test-lib-port-template-dynamic-crt-release-only/vcpkg.json create mode 100644 azure-pipelines/e2e-ports/broken-manifests/broken-no-name/portfile.cmake rename azure-pipelines/e2e-ports/{overlays => broken-manifests}/broken-no-name/vcpkg.json (100%) create mode 100644 azure-pipelines/e2e-ports/broken-manifests/broken-no-version/portfile.cmake rename azure-pipelines/e2e-ports/{overlays => broken-manifests}/broken-no-version/vcpkg.json (100%) create mode 100644 azure-pipelines/e2e-ports/broken-manifests/malformed/portfile.cmake create mode 100644 azure-pipelines/e2e-ports/broken-manifests/malformed/vcpkg.json create mode 100644 azure-pipelines/e2e-ports/ci/feature-dep-missing/portfile.cmake create mode 100644 azure-pipelines/e2e-ports/ci/feature-dep-missing/vcpkg.json rename azure-pipelines/{e2e_ports => e2e-ports}/hash-additional-fail/additional_abi_file.txt (100%) rename azure-pipelines/{e2e_ports => e2e-ports}/hash-additional-fail/hash-additional-e2e.cmake (100%) rename azure-pipelines/{e2e_ports => e2e-ports}/hash-additional-fail/vcpkg-test-hash-additional/portfile.cmake (100%) rename azure-pipelines/{e2e_ports => e2e-ports}/hash-additional-fail/vcpkg-test-hash-additional/vcpkg.json (100%) rename azure-pipelines/{e2e_ports => e2e-ports}/hash-additional/additional_abi_file.txt (100%) rename azure-pipelines/{e2e_ports => e2e-ports}/hash-additional/hash-additional-e2e.cmake (100%) rename azure-pipelines/{e2e_ports => e2e-ports}/hash-additional/vcpkg-test-hash-additional/portfile.cmake (100%) rename azure-pipelines/{e2e_ports => e2e-ports}/hash-additional/vcpkg-test-hash-additional/vcpkg.json (100%) create mode 100644 azure-pipelines/e2e-ports/overlays/vcpkg-header-only/portfile.cmake create mode 100644 azure-pipelines/e2e-ports/overlays/vcpkg-header-only/vcpkg.json create mode 100644 azure-pipelines/e2e-ports/post-portfile-includes-fail/invalid.extension create mode 100644 azure-pipelines/e2e-ports/post-portfile-includes-fail/post-portfile-includes.cmake create mode 100644 azure-pipelines/e2e-ports/post-portfile-includes-fail/vcpkg-post-portfile-includes/portfile.cmake create mode 100644 azure-pipelines/e2e-ports/post-portfile-includes-fail/vcpkg-post-portfile-includes/vcpkg.json create mode 100644 azure-pipelines/e2e-ports/post-portfile-includes/post-portfile-includes.cmake create mode 100644 azure-pipelines/e2e-ports/post-portfile-includes/test1.cmake create mode 100644 azure-pipelines/e2e-ports/post-portfile-includes/test2.cmake create mode 100644 azure-pipelines/e2e-ports/post-portfile-includes/vcpkg-post-portfile-includes/portfile.cmake create mode 100644 azure-pipelines/e2e-ports/post-portfile-includes/vcpkg-post-portfile-includes/vcpkg.json create mode 100644 azure-pipelines/e2e-ports/vcpkg-bad-spdx-license/portfile.cmake create mode 100644 azure-pipelines/e2e-ports/vcpkg-bad-spdx-license/vcpkg.json create mode 100644 azure-pipelines/e2e-ports/vcpkg-msvc-2013/build.cmd create mode 100644 azure-pipelines/e2e-ports/vcpkg-msvc-2013/debug/test_dll.dll create mode 100644 azure-pipelines/e2e-ports/vcpkg-msvc-2013/debug/test_dll.lib create mode 100644 azure-pipelines/e2e-ports/vcpkg-msvc-2013/portfile.cmake create mode 100644 azure-pipelines/e2e-ports/vcpkg-msvc-2013/release/test_dll.dll create mode 100644 azure-pipelines/e2e-ports/vcpkg-msvc-2013/release/test_dll.lib create mode 100644 azure-pipelines/e2e-ports/vcpkg-msvc-2013/test.c create mode 100644 azure-pipelines/e2e-ports/vcpkg-msvc-2013/test.def create mode 100644 azure-pipelines/e2e-ports/vcpkg-msvc-2013/test.h create mode 100644 azure-pipelines/e2e-ports/vcpkg-msvc-2013/vcpkg.json create mode 100644 azure-pipelines/e2e-ports/vcpkg-policy-absolute-paths/portfile.cmake create mode 100644 azure-pipelines/e2e-ports/vcpkg-policy-absolute-paths/vcpkg.json create mode 100644 azure-pipelines/e2e-ports/vcpkg-policy-copyright/portfile.cmake create mode 100644 azure-pipelines/e2e-ports/vcpkg-policy-copyright/vcpkg.json create mode 100644 azure-pipelines/e2e-ports/vcpkg-policy-empty-folders/portfile.cmake create mode 100644 azure-pipelines/e2e-ports/vcpkg-policy-empty-folders/vcpkg.json create mode 100644 azure-pipelines/e2e-ports/vcpkg-policy-empty-package/portfile.cmake create mode 100644 azure-pipelines/e2e-ports/vcpkg-policy-empty-package/vcpkg.json create mode 100644 azure-pipelines/e2e-ports/vcpkg-policy-forgot-usage/portfile.cmake create mode 100644 azure-pipelines/e2e-ports/vcpkg-policy-forgot-usage/usage create mode 100644 azure-pipelines/e2e-ports/vcpkg-policy-forgot-usage/vcpkg.json create mode 100644 azure-pipelines/e2e-ports/vcpkg-policy-include-folder/portfile.cmake create mode 100644 azure-pipelines/e2e-ports/vcpkg-policy-include-folder/vcpkg.json create mode 100644 azure-pipelines/e2e-ports/vcpkg-policy-misplaced-cmake-files/portfile.cmake create mode 100644 azure-pipelines/e2e-ports/vcpkg-policy-misplaced-cmake-files/vcpkg.json create mode 100644 azure-pipelines/e2e-ports/vcpkg-policy-misplaced-pkgconfig/portfile.cmake create mode 100644 azure-pipelines/e2e-ports/vcpkg-policy-misplaced-pkgconfig/vcpkg.json create mode 100644 azure-pipelines/e2e-ports/vcpkg-policy-misplaced-regular-files/portfile.cmake create mode 100644 azure-pipelines/e2e-ports/vcpkg-policy-misplaced-regular-files/vcpkg.json create mode 100644 azure-pipelines/e2e-ports/vcpkg-policy-set-incorrectly/portfile.cmake create mode 100644 azure-pipelines/e2e-ports/vcpkg-policy-set-incorrectly/vcpkg.json create mode 100644 azure-pipelines/e2e-ports/vcpkg-policy-skip-all-post-build-checks/portfile.cmake create mode 100644 azure-pipelines/e2e-ports/vcpkg-policy-skip-all-post-build-checks/vcpkg.json delete mode 100644 azure-pipelines/e2e-ports/versions/baseline.json delete mode 100644 azure-pipelines/e2e-ports/versions/v-/vcpkg-internal-e2e-test-port.json create mode 100644 azure-pipelines/end-to-end-tests-dir/ci-verify-versions.ps1 delete mode 100644 azure-pipelines/end-to-end-tests-dir/hash-additional-fail.ps1 create mode 100644 azure-pipelines/end-to-end-tests-dir/post-portfile-includes.ps1 create mode 100644 azure-pipelines/json-schema-tests-dir/json-schema-bvt.test.ps1 create mode 100644 azure-pipelines/json-schema-tests-dir/vcpkg-ports-json.test.ps1 create mode 100644 azure-pipelines/json-schema-tests.ps1 create mode 100644 scripts/posh-vcpkg.psd1 create mode 100644 scripts/verifyMessages.ps1 diff --git a/.github/workflows/build.yaml b/.github/workflows/build.yaml index e5808302bd..fd78339f98 100644 --- a/.github/workflows/build.yaml +++ b/.github/workflows/build.yaml @@ -35,9 +35,9 @@ jobs: run: echo "::add-matcher::.github/workflows/matchers.json" - name: '[CI Only] Initialize CodeQL' if: inputs.codeql - uses: github/codeql-action/init@v2 + uses: github/codeql-action/init@v3 with: - languages: cpp, javascript + languages: javascript - name: Configure and Build if: matrix.preset != 'windows-ci' run: | @@ -57,7 +57,7 @@ jobs: cmake --build --preset ${{ matrix.preset }} -- -k0 - name: '[CI Only] Perform CodeQL Analysis' if: inputs.codeql - uses: github/codeql-action/analyze@v2 + uses: github/codeql-action/analyze@v3 - name: Run vcpkg unit tests run: ctest --preset ${{ matrix.preset }} --output-on-failure 2>&1 - name: Run vcpkg-artifacts unit tests diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index 653ed4f013..9c4229e0bb 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -4,6 +4,7 @@ on: push: branches: - main + workflow_dispatch: permissions: # Required for CodeQL diff --git a/.github/workflows/pr.yaml b/.github/workflows/pr.yaml index 3fda7f7bfe..ab6c0a15eb 100644 --- a/.github/workflows/pr.yaml +++ b/.github/workflows/pr.yaml @@ -39,6 +39,10 @@ jobs: cmake --preset windows-ci IF %ERRORLEVEL% NEQ 0 exit /B %ERRORLEVEL% cmake --build --preset windows-ci --target generate-message-map -- -k0 + - name: Verify Messages + shell: pwsh + run: | + cmake --build --preset windows-ci --target verify-messages -- -k0 - name: 'Format C++' shell: pwsh run: ./azure-pipelines/Format-CxxCode.ps1 @@ -66,3 +70,27 @@ jobs: with: name: format.patch path: out/format.patch + + json-schema: + runs-on: windows-2022 + timeout-minutes: 10 + steps: + - uses: actions/checkout@v3 + - name: Get microsoft/vcpkg pinned sha into VCPKG_SHA + id: vcpkg_sha + shell: pwsh + run: | + "VCPKG_SHA="+(Get-Content vcpkg-init/vcpkg-scripts-sha.txt -Raw).Trim() >> $env:GITHUB_OUTPUT + - name: Checkout microsoft/vcpkg for end-to-end tests + uses: actions/checkout@v3 + with: + fetch-depth: 0 + path: ${{ github.workspace }}/vcpkg-root + repository: microsoft/vcpkg + ref: ${{ steps.vcpkg_sha.outputs.VCPKG_SHA }} + - name: Run vcpkg json-schema end-to-end tests + shell: pwsh + run: | + ${{ github.workspace }}/azure-pipelines/json-schema-tests.ps1 + env: + VCPKG_ROOT: ${{ github.workspace }}/vcpkg-root diff --git a/.vscode/settings.json b/.vscode/settings.json index f1da23c28e..60fa0d6111 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -98,6 +98,7 @@ "cinttypes": "cpp", "typeindex": "cpp", "typeinfo": "cpp", - "variant": "cpp" + "variant": "cpp", + "__bit_reference": "cpp" } } diff --git a/CMakeLists.txt b/CMakeLists.txt index 960e2b06ca..23dc3aea13 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -444,14 +444,14 @@ endif() # === Target: vcpkg-ps1 === add_custom_command( OUTPUT - "${CMAKE_CURRENT_BINARY_DIR}/vcpkg.ps1" + "${CMAKE_CURRENT_BINARY_DIR}/vcpkg-shell.ps1" COMMAND - "${CMAKE_COMMAND}" ARGS -E copy "${CMAKE_CURRENT_SOURCE_DIR}/src/vcpkg-in-development.ps1" "${CMAKE_CURRENT_BINARY_DIR}/vcpkg.ps1" + "${CMAKE_COMMAND}" ARGS -E copy "${CMAKE_CURRENT_SOURCE_DIR}/src/vcpkg-in-development.ps1" "${CMAKE_CURRENT_BINARY_DIR}/vcpkg-shell.ps1" DEPENDS "${CMAKE_CURRENT_SOURCE_DIR}/src/vcpkg-in-development.ps1" VERBATIM ) -add_custom_target(vcpkg-ps1 ALL DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/vcpkg.ps1") +add_custom_target(vcpkg-ps1 ALL DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/vcpkg-shell.ps1") # === Target: vcpkg === @@ -560,6 +560,13 @@ add_executable(test-script-asset-cache ${TEST_SCRIPT_ASSET_CACHE_SOURCES} "${CMA set_property(TARGET test-script-asset-cache PROPERTY PDB_NAME "test-script-asset-cache${VCPKG_PDB_SUFFIX}") endif() +# === Target: verify_messages === +add_custom_target( + verify-messages + COMMAND pwsh -File "${CMAKE_CURRENT_SOURCE_DIR}/scripts/verifyMessages.ps1" + COMMENT "Running PowerShell script to verify message usage..." +) + # === Target: format === find_program(CLANG_FORMAT clang-format PATHS "$ENV{PROGRAMFILES}/LLVM/bin") diff --git a/azure-pipelines/arch-independent-signing.signproj b/azure-pipelines/arch-independent-signing.signproj index 0bc8963bfd..a6c34a09a0 100644 --- a/azure-pipelines/arch-independent-signing.signproj +++ b/azure-pipelines/arch-independent-signing.signproj @@ -29,6 +29,9 @@ Microsoft400 + + Microsoft400 + diff --git a/azure-pipelines/e2e-assets/ci-verify-versions-registry/.gitattributes b/azure-pipelines/e2e-assets/ci-verify-versions-registry/.gitattributes new file mode 100644 index 0000000000..fa1385d99a --- /dev/null +++ b/azure-pipelines/e2e-assets/ci-verify-versions-registry/.gitattributes @@ -0,0 +1 @@ +* -text diff --git a/azure-pipelines/e2e-ports/overlays/broken-no-name/portfile.cmake b/azure-pipelines/e2e-assets/ci-verify-versions-registry/old-port-versions/bad-git-tree-1.0/portfile.cmake similarity index 100% rename from azure-pipelines/e2e-ports/overlays/broken-no-name/portfile.cmake rename to azure-pipelines/e2e-assets/ci-verify-versions-registry/old-port-versions/bad-git-tree-1.0/portfile.cmake diff --git a/azure-pipelines/e2e-assets/ci-verify-versions-registry/old-port-versions/bad-git-tree-1.0/vcpkg.json b/azure-pipelines/e2e-assets/ci-verify-versions-registry/old-port-versions/bad-git-tree-1.0/vcpkg.json new file mode 100644 index 0000000000..cc29e93073 --- /dev/null +++ b/azure-pipelines/e2e-assets/ci-verify-versions-registry/old-port-versions/bad-git-tree-1.0/vcpkg.json @@ -0,0 +1,4 @@ +{ + "name": "bad-git-tree", + "version": "1.0" +} diff --git a/azure-pipelines/e2e-ports/overlays/broken-no-version/portfile.cmake b/azure-pipelines/e2e-assets/ci-verify-versions-registry/old-port-versions/bad-history-name-1.0/portfile.cmake similarity index 100% rename from azure-pipelines/e2e-ports/overlays/broken-no-version/portfile.cmake rename to azure-pipelines/e2e-assets/ci-verify-versions-registry/old-port-versions/bad-history-name-1.0/portfile.cmake diff --git a/azure-pipelines/e2e-assets/ci-verify-versions-registry/old-port-versions/bad-history-name-1.0/vcpkg.json b/azure-pipelines/e2e-assets/ci-verify-versions-registry/old-port-versions/bad-history-name-1.0/vcpkg.json new file mode 100644 index 0000000000..b95ea8e159 --- /dev/null +++ b/azure-pipelines/e2e-assets/ci-verify-versions-registry/old-port-versions/bad-history-name-1.0/vcpkg.json @@ -0,0 +1,4 @@ +{ + "name": "bad-history-name-is-bad", + "version": "1.0" +} diff --git a/azure-pipelines/e2e-assets/ci-verify-versions-registry/old-port-versions/baseline-version-mismatch-1.0/portfile.cmake b/azure-pipelines/e2e-assets/ci-verify-versions-registry/old-port-versions/baseline-version-mismatch-1.0/portfile.cmake new file mode 100644 index 0000000000..065116c276 --- /dev/null +++ b/azure-pipelines/e2e-assets/ci-verify-versions-registry/old-port-versions/baseline-version-mismatch-1.0/portfile.cmake @@ -0,0 +1 @@ +set(VCPKG_POLICY_EMPTY_PACKAGE enabled) diff --git a/azure-pipelines/e2e-assets/ci-verify-versions-registry/old-port-versions/baseline-version-mismatch-1.0/vcpkg.json b/azure-pipelines/e2e-assets/ci-verify-versions-registry/old-port-versions/baseline-version-mismatch-1.0/vcpkg.json new file mode 100644 index 0000000000..6fddfd04d8 --- /dev/null +++ b/azure-pipelines/e2e-assets/ci-verify-versions-registry/old-port-versions/baseline-version-mismatch-1.0/vcpkg.json @@ -0,0 +1,4 @@ +{ + "name": "baseline-version-mismatch", + "version": "1.0" +} diff --git a/azure-pipelines/e2e-assets/ci-verify-versions-registry/old-port-versions/has-local-edits/portfile.cmake b/azure-pipelines/e2e-assets/ci-verify-versions-registry/old-port-versions/has-local-edits/portfile.cmake new file mode 100644 index 0000000000..065116c276 --- /dev/null +++ b/azure-pipelines/e2e-assets/ci-verify-versions-registry/old-port-versions/has-local-edits/portfile.cmake @@ -0,0 +1 @@ +set(VCPKG_POLICY_EMPTY_PACKAGE enabled) diff --git a/azure-pipelines/e2e-assets/ci-verify-versions-registry/old-port-versions/has-local-edits/vcpkg.json b/azure-pipelines/e2e-assets/ci-verify-versions-registry/old-port-versions/has-local-edits/vcpkg.json new file mode 100644 index 0000000000..5adb003ec5 --- /dev/null +++ b/azure-pipelines/e2e-assets/ci-verify-versions-registry/old-port-versions/has-local-edits/vcpkg.json @@ -0,0 +1,4 @@ +{ + "name": "has-local-edits", + "version": "1.0.0" +} diff --git a/azure-pipelines/e2e-assets/ci-verify-versions-registry/old-port-versions/malformed-1.0/portfile.cmake b/azure-pipelines/e2e-assets/ci-verify-versions-registry/old-port-versions/malformed-1.0/portfile.cmake new file mode 100644 index 0000000000..065116c276 --- /dev/null +++ b/azure-pipelines/e2e-assets/ci-verify-versions-registry/old-port-versions/malformed-1.0/portfile.cmake @@ -0,0 +1 @@ +set(VCPKG_POLICY_EMPTY_PACKAGE enabled) diff --git a/azure-pipelines/e2e-assets/ci-verify-versions-registry/old-port-versions/malformed-1.0/vcpkg.json b/azure-pipelines/e2e-assets/ci-verify-versions-registry/old-port-versions/malformed-1.0/vcpkg.json new file mode 100644 index 0000000000..fc9f86f7b9 --- /dev/null +++ b/azure-pipelines/e2e-assets/ci-verify-versions-registry/old-port-versions/malformed-1.0/vcpkg.json @@ -0,0 +1,5 @@ +{ + "name": "malformed", + "version": "1.0", + ~broken +} diff --git a/azure-pipelines/e2e-assets/ci-verify-versions-registry/old-port-versions/mismatch-git-tree-1.0/portfile.cmake b/azure-pipelines/e2e-assets/ci-verify-versions-registry/old-port-versions/mismatch-git-tree-1.0/portfile.cmake new file mode 100644 index 0000000000..065116c276 --- /dev/null +++ b/azure-pipelines/e2e-assets/ci-verify-versions-registry/old-port-versions/mismatch-git-tree-1.0/portfile.cmake @@ -0,0 +1 @@ +set(VCPKG_POLICY_EMPTY_PACKAGE enabled) diff --git a/azure-pipelines/e2e-assets/ci-verify-versions-registry/old-port-versions/mismatch-git-tree-1.0/vcpkg.json b/azure-pipelines/e2e-assets/ci-verify-versions-registry/old-port-versions/mismatch-git-tree-1.0/vcpkg.json new file mode 100644 index 0000000000..e3f2c372d8 --- /dev/null +++ b/azure-pipelines/e2e-assets/ci-verify-versions-registry/old-port-versions/mismatch-git-tree-1.0/vcpkg.json @@ -0,0 +1,4 @@ +{ + "name": "mismatch-git-tree", + "version": "1.0" +} diff --git a/azure-pipelines/e2e-assets/ci-verify-versions-registry/old-port-versions/version-mismatch-1.0/portfile.cmake b/azure-pipelines/e2e-assets/ci-verify-versions-registry/old-port-versions/version-mismatch-1.0/portfile.cmake new file mode 100644 index 0000000000..065116c276 --- /dev/null +++ b/azure-pipelines/e2e-assets/ci-verify-versions-registry/old-port-versions/version-mismatch-1.0/portfile.cmake @@ -0,0 +1 @@ +set(VCPKG_POLICY_EMPTY_PACKAGE enabled) diff --git a/azure-pipelines/e2e-assets/ci-verify-versions-registry/old-port-versions/version-mismatch-1.0/vcpkg.json b/azure-pipelines/e2e-assets/ci-verify-versions-registry/old-port-versions/version-mismatch-1.0/vcpkg.json new file mode 100644 index 0000000000..3ee37270e8 --- /dev/null +++ b/azure-pipelines/e2e-assets/ci-verify-versions-registry/old-port-versions/version-mismatch-1.0/vcpkg.json @@ -0,0 +1,4 @@ +{ + "name": "version-mismatch", + "version": "1.0" +} diff --git a/azure-pipelines/e2e-assets/ci-verify-versions-registry/old-port-versions/version-missing-1.0/portfile.cmake b/azure-pipelines/e2e-assets/ci-verify-versions-registry/old-port-versions/version-missing-1.0/portfile.cmake new file mode 100644 index 0000000000..065116c276 --- /dev/null +++ b/azure-pipelines/e2e-assets/ci-verify-versions-registry/old-port-versions/version-missing-1.0/portfile.cmake @@ -0,0 +1 @@ +set(VCPKG_POLICY_EMPTY_PACKAGE enabled) diff --git a/azure-pipelines/e2e-assets/ci-verify-versions-registry/old-port-versions/version-missing-1.0/vcpkg.json b/azure-pipelines/e2e-assets/ci-verify-versions-registry/old-port-versions/version-missing-1.0/vcpkg.json new file mode 100644 index 0000000000..5e1d6e8427 --- /dev/null +++ b/azure-pipelines/e2e-assets/ci-verify-versions-registry/old-port-versions/version-missing-1.0/vcpkg.json @@ -0,0 +1,4 @@ +{ + "name": "version-missing", + "version": "1.0" +} diff --git a/azure-pipelines/e2e-assets/ci-verify-versions-registry/old-port-versions/version-scheme-mismatch-1.0/portfile.cmake b/azure-pipelines/e2e-assets/ci-verify-versions-registry/old-port-versions/version-scheme-mismatch-1.0/portfile.cmake new file mode 100644 index 0000000000..065116c276 --- /dev/null +++ b/azure-pipelines/e2e-assets/ci-verify-versions-registry/old-port-versions/version-scheme-mismatch-1.0/portfile.cmake @@ -0,0 +1 @@ +set(VCPKG_POLICY_EMPTY_PACKAGE enabled) diff --git a/azure-pipelines/e2e-assets/ci-verify-versions-registry/old-port-versions/version-scheme-mismatch-1.0/vcpkg.json b/azure-pipelines/e2e-assets/ci-verify-versions-registry/old-port-versions/version-scheme-mismatch-1.0/vcpkg.json new file mode 100644 index 0000000000..428c44f8a5 --- /dev/null +++ b/azure-pipelines/e2e-assets/ci-verify-versions-registry/old-port-versions/version-scheme-mismatch-1.0/vcpkg.json @@ -0,0 +1,4 @@ +{ + "name": "version-scheme-mismatch", + "version": "1.0" +} diff --git a/azure-pipelines/e2e-assets/ci-verify-versions-registry/ports/bad-git-tree/portfile.cmake b/azure-pipelines/e2e-assets/ci-verify-versions-registry/ports/bad-git-tree/portfile.cmake new file mode 100644 index 0000000000..065116c276 --- /dev/null +++ b/azure-pipelines/e2e-assets/ci-verify-versions-registry/ports/bad-git-tree/portfile.cmake @@ -0,0 +1 @@ +set(VCPKG_POLICY_EMPTY_PACKAGE enabled) diff --git a/azure-pipelines/e2e-assets/ci-verify-versions-registry/ports/bad-git-tree/vcpkg.json b/azure-pipelines/e2e-assets/ci-verify-versions-registry/ports/bad-git-tree/vcpkg.json new file mode 100644 index 0000000000..506a46ce93 --- /dev/null +++ b/azure-pipelines/e2e-assets/ci-verify-versions-registry/ports/bad-git-tree/vcpkg.json @@ -0,0 +1,4 @@ +{ + "name": "bad-git-tree", + "version": "1.1" +} diff --git a/azure-pipelines/e2e-assets/ci-verify-versions-registry/ports/bad-history-name/portfile.cmake b/azure-pipelines/e2e-assets/ci-verify-versions-registry/ports/bad-history-name/portfile.cmake new file mode 100644 index 0000000000..065116c276 --- /dev/null +++ b/azure-pipelines/e2e-assets/ci-verify-versions-registry/ports/bad-history-name/portfile.cmake @@ -0,0 +1 @@ +set(VCPKG_POLICY_EMPTY_PACKAGE enabled) diff --git a/azure-pipelines/e2e-assets/ci-verify-versions-registry/ports/bad-history-name/vcpkg.json b/azure-pipelines/e2e-assets/ci-verify-versions-registry/ports/bad-history-name/vcpkg.json new file mode 100644 index 0000000000..b490211723 --- /dev/null +++ b/azure-pipelines/e2e-assets/ci-verify-versions-registry/ports/bad-history-name/vcpkg.json @@ -0,0 +1,4 @@ +{ + "name": "bad-history-name", + "version": "1.1" +} diff --git a/azure-pipelines/e2e-assets/ci-verify-versions-registry/ports/baseline-version-mismatch/portfile.cmake b/azure-pipelines/e2e-assets/ci-verify-versions-registry/ports/baseline-version-mismatch/portfile.cmake new file mode 100644 index 0000000000..065116c276 --- /dev/null +++ b/azure-pipelines/e2e-assets/ci-verify-versions-registry/ports/baseline-version-mismatch/portfile.cmake @@ -0,0 +1 @@ +set(VCPKG_POLICY_EMPTY_PACKAGE enabled) diff --git a/azure-pipelines/e2e-assets/ci-verify-versions-registry/ports/baseline-version-mismatch/vcpkg.json b/azure-pipelines/e2e-assets/ci-verify-versions-registry/ports/baseline-version-mismatch/vcpkg.json new file mode 100644 index 0000000000..acb5a35f53 --- /dev/null +++ b/azure-pipelines/e2e-assets/ci-verify-versions-registry/ports/baseline-version-mismatch/vcpkg.json @@ -0,0 +1,4 @@ +{ + "name": "baseline-version-mismatch", + "version": "1.1" +} diff --git a/azure-pipelines/e2e-assets/ci-verify-versions-registry/ports/baseline-version-missing/portfile.cmake b/azure-pipelines/e2e-assets/ci-verify-versions-registry/ports/baseline-version-missing/portfile.cmake new file mode 100644 index 0000000000..065116c276 --- /dev/null +++ b/azure-pipelines/e2e-assets/ci-verify-versions-registry/ports/baseline-version-missing/portfile.cmake @@ -0,0 +1 @@ +set(VCPKG_POLICY_EMPTY_PACKAGE enabled) diff --git a/azure-pipelines/e2e-assets/ci-verify-versions-registry/ports/baseline-version-missing/vcpkg.json b/azure-pipelines/e2e-assets/ci-verify-versions-registry/ports/baseline-version-missing/vcpkg.json new file mode 100644 index 0000000000..5b9b5b2204 --- /dev/null +++ b/azure-pipelines/e2e-assets/ci-verify-versions-registry/ports/baseline-version-missing/vcpkg.json @@ -0,0 +1,4 @@ +{ + "name": "baseline-version-missing", + "version": "1.0" +} diff --git a/azure-pipelines/e2e-assets/ci-verify-versions-registry/ports/dependency-not-in-versions-database-feature/portfile.cmake b/azure-pipelines/e2e-assets/ci-verify-versions-registry/ports/dependency-not-in-versions-database-feature/portfile.cmake new file mode 100644 index 0000000000..065116c276 --- /dev/null +++ b/azure-pipelines/e2e-assets/ci-verify-versions-registry/ports/dependency-not-in-versions-database-feature/portfile.cmake @@ -0,0 +1 @@ +set(VCPKG_POLICY_EMPTY_PACKAGE enabled) diff --git a/azure-pipelines/e2e-assets/ci-verify-versions-registry/ports/dependency-not-in-versions-database-feature/vcpkg.json b/azure-pipelines/e2e-assets/ci-verify-versions-registry/ports/dependency-not-in-versions-database-feature/vcpkg.json new file mode 100644 index 0000000000..ea2024dd89 --- /dev/null +++ b/azure-pipelines/e2e-assets/ci-verify-versions-registry/ports/dependency-not-in-versions-database-feature/vcpkg.json @@ -0,0 +1,12 @@ +{ + "name": "dependency-not-in-versions-database-feature", + "version": "1.0", + "features": { + "add-things": { + "description": "an example feature that adds some things", + "dependencies": [ + "no-versions" + ] + } + } +} diff --git a/azure-pipelines/e2e-assets/ci-verify-versions-registry/ports/dependency-not-in-versions-database/portfile.cmake b/azure-pipelines/e2e-assets/ci-verify-versions-registry/ports/dependency-not-in-versions-database/portfile.cmake new file mode 100644 index 0000000000..065116c276 --- /dev/null +++ b/azure-pipelines/e2e-assets/ci-verify-versions-registry/ports/dependency-not-in-versions-database/portfile.cmake @@ -0,0 +1 @@ +set(VCPKG_POLICY_EMPTY_PACKAGE enabled) diff --git a/azure-pipelines/e2e-assets/ci-verify-versions-registry/ports/dependency-not-in-versions-database/vcpkg.json b/azure-pipelines/e2e-assets/ci-verify-versions-registry/ports/dependency-not-in-versions-database/vcpkg.json new file mode 100644 index 0000000000..4a252a2a78 --- /dev/null +++ b/azure-pipelines/e2e-assets/ci-verify-versions-registry/ports/dependency-not-in-versions-database/vcpkg.json @@ -0,0 +1,7 @@ +{ + "name": "dependency-not-in-versions-database", + "version": "1.0", + "dependencies": [ + "no-versions" + ] +} diff --git a/azure-pipelines/e2e-assets/ci-verify-versions-registry/ports/dependency-version-not-in-versions-database-feature/portfile.cmake b/azure-pipelines/e2e-assets/ci-verify-versions-registry/ports/dependency-version-not-in-versions-database-feature/portfile.cmake new file mode 100644 index 0000000000..065116c276 --- /dev/null +++ b/azure-pipelines/e2e-assets/ci-verify-versions-registry/ports/dependency-version-not-in-versions-database-feature/portfile.cmake @@ -0,0 +1 @@ +set(VCPKG_POLICY_EMPTY_PACKAGE enabled) diff --git a/azure-pipelines/e2e-assets/ci-verify-versions-registry/ports/dependency-version-not-in-versions-database-feature/vcpkg.json b/azure-pipelines/e2e-assets/ci-verify-versions-registry/ports/dependency-version-not-in-versions-database-feature/vcpkg.json new file mode 100644 index 0000000000..74fb7c7850 --- /dev/null +++ b/azure-pipelines/e2e-assets/ci-verify-versions-registry/ports/dependency-version-not-in-versions-database-feature/vcpkg.json @@ -0,0 +1,15 @@ +{ + "name": "dependency-version-not-in-versions-database-feature", + "version": "1.0", + "features": { + "add-things": { + "description": "an example feature that adds some things", + "dependencies": [ + { + "name": "good", + "version>=": "0.9" + } + ] + } + } +} diff --git a/azure-pipelines/e2e-assets/ci-verify-versions-registry/ports/dependency-version-not-in-versions-database/portfile.cmake b/azure-pipelines/e2e-assets/ci-verify-versions-registry/ports/dependency-version-not-in-versions-database/portfile.cmake new file mode 100644 index 0000000000..065116c276 --- /dev/null +++ b/azure-pipelines/e2e-assets/ci-verify-versions-registry/ports/dependency-version-not-in-versions-database/portfile.cmake @@ -0,0 +1 @@ +set(VCPKG_POLICY_EMPTY_PACKAGE enabled) diff --git a/azure-pipelines/e2e-assets/ci-verify-versions-registry/ports/dependency-version-not-in-versions-database/vcpkg.json b/azure-pipelines/e2e-assets/ci-verify-versions-registry/ports/dependency-version-not-in-versions-database/vcpkg.json new file mode 100644 index 0000000000..f1b434486a --- /dev/null +++ b/azure-pipelines/e2e-assets/ci-verify-versions-registry/ports/dependency-version-not-in-versions-database/vcpkg.json @@ -0,0 +1,10 @@ +{ + "name": "dependency-version-not-in-versions-database", + "version": "1.0", + "dependencies": [ + { + "name": "good", + "version>=": "0.9" + } + ] +} diff --git a/azure-pipelines/e2e-assets/ci-verify-versions-registry/ports/good/portfile.cmake b/azure-pipelines/e2e-assets/ci-verify-versions-registry/ports/good/portfile.cmake new file mode 100644 index 0000000000..065116c276 --- /dev/null +++ b/azure-pipelines/e2e-assets/ci-verify-versions-registry/ports/good/portfile.cmake @@ -0,0 +1 @@ +set(VCPKG_POLICY_EMPTY_PACKAGE enabled) diff --git a/azure-pipelines/e2e-assets/ci-verify-versions-registry/ports/good/vcpkg.json b/azure-pipelines/e2e-assets/ci-verify-versions-registry/ports/good/vcpkg.json new file mode 100644 index 0000000000..c16b969626 --- /dev/null +++ b/azure-pipelines/e2e-assets/ci-verify-versions-registry/ports/good/vcpkg.json @@ -0,0 +1,4 @@ +{ + "name": "good", + "version": "1.0" +} diff --git a/azure-pipelines/e2e-assets/ci-verify-versions-registry/ports/malformed/portfile.cmake b/azure-pipelines/e2e-assets/ci-verify-versions-registry/ports/malformed/portfile.cmake new file mode 100644 index 0000000000..065116c276 --- /dev/null +++ b/azure-pipelines/e2e-assets/ci-verify-versions-registry/ports/malformed/portfile.cmake @@ -0,0 +1 @@ +set(VCPKG_POLICY_EMPTY_PACKAGE enabled) diff --git a/azure-pipelines/e2e-assets/ci-verify-versions-registry/ports/malformed/vcpkg.json b/azure-pipelines/e2e-assets/ci-verify-versions-registry/ports/malformed/vcpkg.json new file mode 100644 index 0000000000..129f63eef9 --- /dev/null +++ b/azure-pipelines/e2e-assets/ci-verify-versions-registry/ports/malformed/vcpkg.json @@ -0,0 +1,5 @@ +{ + "name": "malformed", + "version": "1.1", + ~broken +} diff --git a/azure-pipelines/e2e-assets/ci-verify-versions-registry/ports/mismatch-git-tree/portfile.cmake b/azure-pipelines/e2e-assets/ci-verify-versions-registry/ports/mismatch-git-tree/portfile.cmake new file mode 100644 index 0000000000..065116c276 --- /dev/null +++ b/azure-pipelines/e2e-assets/ci-verify-versions-registry/ports/mismatch-git-tree/portfile.cmake @@ -0,0 +1 @@ +set(VCPKG_POLICY_EMPTY_PACKAGE enabled) diff --git a/azure-pipelines/e2e-assets/ci-verify-versions-registry/ports/mismatch-git-tree/vcpkg.json b/azure-pipelines/e2e-assets/ci-verify-versions-registry/ports/mismatch-git-tree/vcpkg.json new file mode 100644 index 0000000000..2ef341b777 --- /dev/null +++ b/azure-pipelines/e2e-assets/ci-verify-versions-registry/ports/mismatch-git-tree/vcpkg.json @@ -0,0 +1,5 @@ +{ + "$comment": "This comment changes the correct git-tree without changing the version", + "name": "mismatch-git-tree", + "version": "1.0" +} diff --git a/azure-pipelines/e2e-assets/ci-verify-versions-registry/ports/no-versions/portfile.cmake b/azure-pipelines/e2e-assets/ci-verify-versions-registry/ports/no-versions/portfile.cmake new file mode 100644 index 0000000000..065116c276 --- /dev/null +++ b/azure-pipelines/e2e-assets/ci-verify-versions-registry/ports/no-versions/portfile.cmake @@ -0,0 +1 @@ +set(VCPKG_POLICY_EMPTY_PACKAGE enabled) diff --git a/azure-pipelines/e2e-assets/ci-verify-versions-registry/ports/no-versions/vcpkg.json b/azure-pipelines/e2e-assets/ci-verify-versions-registry/ports/no-versions/vcpkg.json new file mode 100644 index 0000000000..5aa000f4de --- /dev/null +++ b/azure-pipelines/e2e-assets/ci-verify-versions-registry/ports/no-versions/vcpkg.json @@ -0,0 +1,4 @@ +{ + "name": "no-versions", + "version": "1.0" +} diff --git a/azure-pipelines/e2e-assets/ci-verify-versions-registry/ports/override-not-in-versions-database/portfile.cmake b/azure-pipelines/e2e-assets/ci-verify-versions-registry/ports/override-not-in-versions-database/portfile.cmake new file mode 100644 index 0000000000..065116c276 --- /dev/null +++ b/azure-pipelines/e2e-assets/ci-verify-versions-registry/ports/override-not-in-versions-database/portfile.cmake @@ -0,0 +1 @@ +set(VCPKG_POLICY_EMPTY_PACKAGE enabled) diff --git a/azure-pipelines/e2e-assets/ci-verify-versions-registry/ports/override-not-in-versions-database/vcpkg.json b/azure-pipelines/e2e-assets/ci-verify-versions-registry/ports/override-not-in-versions-database/vcpkg.json new file mode 100644 index 0000000000..8e88744937 --- /dev/null +++ b/azure-pipelines/e2e-assets/ci-verify-versions-registry/ports/override-not-in-versions-database/vcpkg.json @@ -0,0 +1,10 @@ +{ + "name": "override-not-in-versions-database", + "version": "1.0", + "overrides": [ + { + "name": "no-versions", + "version": "1.0" + } + ] +} diff --git a/azure-pipelines/e2e-assets/ci-verify-versions-registry/ports/override-version-not-in-versions-database/portfile.cmake b/azure-pipelines/e2e-assets/ci-verify-versions-registry/ports/override-version-not-in-versions-database/portfile.cmake new file mode 100644 index 0000000000..065116c276 --- /dev/null +++ b/azure-pipelines/e2e-assets/ci-verify-versions-registry/ports/override-version-not-in-versions-database/portfile.cmake @@ -0,0 +1 @@ +set(VCPKG_POLICY_EMPTY_PACKAGE enabled) diff --git a/azure-pipelines/e2e-assets/ci-verify-versions-registry/ports/override-version-not-in-versions-database/vcpkg.json b/azure-pipelines/e2e-assets/ci-verify-versions-registry/ports/override-version-not-in-versions-database/vcpkg.json new file mode 100644 index 0000000000..0043df67b2 --- /dev/null +++ b/azure-pipelines/e2e-assets/ci-verify-versions-registry/ports/override-version-not-in-versions-database/vcpkg.json @@ -0,0 +1,10 @@ +{ + "name": "override-version-not-in-versions-database", + "version": "1.0", + "overrides": [ + { + "name": "good", + "version": "0.9" + } + ] +} diff --git a/azure-pipelines/e2e-assets/ci-verify-versions-registry/ports/version-mismatch/portfile.cmake b/azure-pipelines/e2e-assets/ci-verify-versions-registry/ports/version-mismatch/portfile.cmake new file mode 100644 index 0000000000..065116c276 --- /dev/null +++ b/azure-pipelines/e2e-assets/ci-verify-versions-registry/ports/version-mismatch/portfile.cmake @@ -0,0 +1 @@ +set(VCPKG_POLICY_EMPTY_PACKAGE enabled) diff --git a/azure-pipelines/e2e-assets/ci-verify-versions-registry/ports/version-mismatch/vcpkg.json b/azure-pipelines/e2e-assets/ci-verify-versions-registry/ports/version-mismatch/vcpkg.json new file mode 100644 index 0000000000..cc609c6036 --- /dev/null +++ b/azure-pipelines/e2e-assets/ci-verify-versions-registry/ports/version-mismatch/vcpkg.json @@ -0,0 +1,4 @@ +{ + "name": "version-mismatch", + "version": "1.1" +} diff --git a/azure-pipelines/e2e-assets/ci-verify-versions-registry/ports/version-missing/portfile.cmake b/azure-pipelines/e2e-assets/ci-verify-versions-registry/ports/version-missing/portfile.cmake new file mode 100644 index 0000000000..065116c276 --- /dev/null +++ b/azure-pipelines/e2e-assets/ci-verify-versions-registry/ports/version-missing/portfile.cmake @@ -0,0 +1 @@ +set(VCPKG_POLICY_EMPTY_PACKAGE enabled) diff --git a/azure-pipelines/e2e-assets/ci-verify-versions-registry/ports/version-missing/vcpkg.json b/azure-pipelines/e2e-assets/ci-verify-versions-registry/ports/version-missing/vcpkg.json new file mode 100644 index 0000000000..9990713c6d --- /dev/null +++ b/azure-pipelines/e2e-assets/ci-verify-versions-registry/ports/version-missing/vcpkg.json @@ -0,0 +1,4 @@ +{ + "name": "version-missing", + "version": "1.1" +} diff --git a/azure-pipelines/e2e-assets/ci-verify-versions-registry/ports/version-scheme-mismatch/portfile.cmake b/azure-pipelines/e2e-assets/ci-verify-versions-registry/ports/version-scheme-mismatch/portfile.cmake new file mode 100644 index 0000000000..065116c276 --- /dev/null +++ b/azure-pipelines/e2e-assets/ci-verify-versions-registry/ports/version-scheme-mismatch/portfile.cmake @@ -0,0 +1 @@ +set(VCPKG_POLICY_EMPTY_PACKAGE enabled) diff --git a/azure-pipelines/e2e-assets/ci-verify-versions-registry/ports/version-scheme-mismatch/vcpkg.json b/azure-pipelines/e2e-assets/ci-verify-versions-registry/ports/version-scheme-mismatch/vcpkg.json new file mode 100644 index 0000000000..d71e35cc7c --- /dev/null +++ b/azure-pipelines/e2e-assets/ci-verify-versions-registry/ports/version-scheme-mismatch/vcpkg.json @@ -0,0 +1,4 @@ +{ + "name": "version-scheme-mismatch", + "version": "1.1" +} diff --git a/azure-pipelines/e2e-assets/ci-verify-versions-registry/versions/b-/bad-git-tree.json b/azure-pipelines/e2e-assets/ci-verify-versions-registry/versions/b-/bad-git-tree.json new file mode 100644 index 0000000000..2918fc4661 --- /dev/null +++ b/azure-pipelines/e2e-assets/ci-verify-versions-registry/versions/b-/bad-git-tree.json @@ -0,0 +1,14 @@ +{ + "versions": [ + { + "git-tree": "000000070c5f496fcf1a97cf654d5e81f0d2685a", + "version": "1.1", + "port-version": 0 + }, + { + "git-tree": "00000005fb6b76058ce09252f521847363c6b266", + "version": "1.0", + "port-version": 0 + } + ] +} diff --git a/azure-pipelines/e2e-assets/ci-verify-versions-registry/versions/b-/bad-history-name.json b/azure-pipelines/e2e-assets/ci-verify-versions-registry/versions/b-/bad-history-name.json new file mode 100644 index 0000000000..e81800032e --- /dev/null +++ b/azure-pipelines/e2e-assets/ci-verify-versions-registry/versions/b-/bad-history-name.json @@ -0,0 +1,14 @@ +{ + "versions": [ + { + "git-tree": "f34f4ad3dfcc4d46d467d7b6aa04f9732a7951d6", + "version": "1.1", + "port-version": 0 + }, + { + "git-tree": "db9d98300e7daeb2c0652bae94a0283a1b1a13d1", + "version": "1.0", + "port-version": 0 + } + ] +} diff --git a/azure-pipelines/e2e-assets/ci-verify-versions-registry/versions/b-/baseline-version-mismatch.json b/azure-pipelines/e2e-assets/ci-verify-versions-registry/versions/b-/baseline-version-mismatch.json new file mode 100644 index 0000000000..75204c85f1 --- /dev/null +++ b/azure-pipelines/e2e-assets/ci-verify-versions-registry/versions/b-/baseline-version-mismatch.json @@ -0,0 +1,14 @@ +{ + "versions": [ + { + "git-tree": "cf8a1faa9f94f7ceb9513d65093d407e11ac1402", + "version": "1.1", + "port-version": 0 + }, + { + "git-tree": "a6d7dde2f5a9ea80db16c7f73c43556a7e21e5cf", + "version": "1.0", + "port-version": 0 + } + ] +} diff --git a/azure-pipelines/e2e-assets/ci-verify-versions-registry/versions/b-/baseline-version-missing.json b/azure-pipelines/e2e-assets/ci-verify-versions-registry/versions/b-/baseline-version-missing.json new file mode 100644 index 0000000000..6a6605ebe9 --- /dev/null +++ b/azure-pipelines/e2e-assets/ci-verify-versions-registry/versions/b-/baseline-version-missing.json @@ -0,0 +1,9 @@ +{ + "versions": [ + { + "git-tree": "a5c21769008f52ed66afa344f13b786dde4b8d7d", + "version": "1.0", + "port-version": 0 + } + ] +} diff --git a/azure-pipelines/e2e-assets/ci-verify-versions-registry/versions/baseline.json b/azure-pipelines/e2e-assets/ci-verify-versions-registry/versions/baseline.json new file mode 100644 index 0000000000..39be2d26a7 --- /dev/null +++ b/azure-pipelines/e2e-assets/ci-verify-versions-registry/versions/baseline.json @@ -0,0 +1,76 @@ +{ + "default": { + "bad-git-tree": { + "baseline": "1.1", + "port-version": 0 + }, + "bad-history-name": { + "baseline": "1.1", + "port-version": 0 + }, + "baseline-version-mismatch": { + "baseline": "1.0", + "port-version": 0 + }, + "dependency-not-in-versions-database": { + "baseline": "1.0", + "port-version": 0 + }, + "dependency-not-in-versions-database-feature": { + "baseline": "1.0", + "port-version": 0 + }, + "dependency-version-not-in-versions-database": { + "baseline": "1.0", + "port-version": 0 + }, + "dependency-version-not-in-versions-database-feature": { + "baseline": "1.0", + "port-version": 0 + }, + "empty-versions": { + "baseline": "1.0", + "port-version": 0 + }, + "good": { + "baseline": "1.0", + "port-version": 0 + }, + "has-local-edits": { + "baseline": "1.0.0", + "port-version": 0 + }, + "malformed": { + "baseline": "1.0", + "port-version": 0 + }, + "mismatch-git-tree": { + "baseline": "1.0", + "port-version": 0 + }, + "no-versions": { + "baseline": "1.0", + "port-version": 0 + }, + "override-not-in-versions-database": { + "baseline": "1.0", + "port-version": 0 + }, + "override-version-not-in-versions-database": { + "baseline": "1.0", + "port-version": 0 + }, + "version-mismatch": { + "baseline": "1.1", + "port-version": 0 + }, + "version-missing": { + "baseline": "1.1", + "port-version": 0 + }, + "version-scheme-mismatch": { + "baseline": "1.1", + "port-version": 0 + } + } +} diff --git a/azure-pipelines/e2e-assets/ci-verify-versions-registry/versions/d-/dependency-not-in-versions-database-feature.json b/azure-pipelines/e2e-assets/ci-verify-versions-registry/versions/d-/dependency-not-in-versions-database-feature.json new file mode 100644 index 0000000000..6ac3cc1b2c --- /dev/null +++ b/azure-pipelines/e2e-assets/ci-verify-versions-registry/versions/d-/dependency-not-in-versions-database-feature.json @@ -0,0 +1,9 @@ +{ + "versions": [ + { + "git-tree": "2298ee25ea54ed92595250a2be07d01bdd76f47c", + "version": "1.0", + "port-version": 0 + } + ] +} diff --git a/azure-pipelines/e2e-assets/ci-verify-versions-registry/versions/d-/dependency-not-in-versions-database.json b/azure-pipelines/e2e-assets/ci-verify-versions-registry/versions/d-/dependency-not-in-versions-database.json new file mode 100644 index 0000000000..670e02ea77 --- /dev/null +++ b/azure-pipelines/e2e-assets/ci-verify-versions-registry/versions/d-/dependency-not-in-versions-database.json @@ -0,0 +1,9 @@ +{ + "versions": [ + { + "git-tree": "321c8b400526dc412a987285ef469eec6221a4b4", + "version": "1.0", + "port-version": 0 + } + ] +} diff --git a/azure-pipelines/e2e-assets/ci-verify-versions-registry/versions/d-/dependency-version-not-in-versions-database-feature.json b/azure-pipelines/e2e-assets/ci-verify-versions-registry/versions/d-/dependency-version-not-in-versions-database-feature.json new file mode 100644 index 0000000000..399bfc5d06 --- /dev/null +++ b/azure-pipelines/e2e-assets/ci-verify-versions-registry/versions/d-/dependency-version-not-in-versions-database-feature.json @@ -0,0 +1,9 @@ +{ + "versions": [ + { + "git-tree": "ba3008bb2d42c61f172b7d9592de0212edf20fc6", + "version": "1.0", + "port-version": 0 + } + ] +} diff --git a/azure-pipelines/e2e-assets/ci-verify-versions-registry/versions/d-/dependency-version-not-in-versions-database.json b/azure-pipelines/e2e-assets/ci-verify-versions-registry/versions/d-/dependency-version-not-in-versions-database.json new file mode 100644 index 0000000000..371981acf3 --- /dev/null +++ b/azure-pipelines/e2e-assets/ci-verify-versions-registry/versions/d-/dependency-version-not-in-versions-database.json @@ -0,0 +1,9 @@ +{ + "versions": [ + { + "git-tree": "f0d44555fe7714929e432ab9e12a436e28ffef9e", + "version": "1.0", + "port-version": 0 + } + ] +} diff --git a/azure-pipelines/e2e-assets/ci-verify-versions-registry/versions/g-/good.json b/azure-pipelines/e2e-assets/ci-verify-versions-registry/versions/g-/good.json new file mode 100644 index 0000000000..38366a09dc --- /dev/null +++ b/azure-pipelines/e2e-assets/ci-verify-versions-registry/versions/g-/good.json @@ -0,0 +1,9 @@ +{ + "versions": [ + { + "git-tree": "0f3d67db0dbb6aa5499bc09367a606b495e16d35", + "version": "1.0", + "port-version": 0 + } + ] +} diff --git a/azure-pipelines/e2e-assets/ci-verify-versions-registry/versions/h-/has-local-edits.json b/azure-pipelines/e2e-assets/ci-verify-versions-registry/versions/h-/has-local-edits.json new file mode 100644 index 0000000000..794d49fb59 --- /dev/null +++ b/azure-pipelines/e2e-assets/ci-verify-versions-registry/versions/h-/has-local-edits.json @@ -0,0 +1,9 @@ +{ + "versions": [ + { + "git-tree": "b1d7f6030942b329a200f16c931c01e2ec9e1e79", + "version": "1.0.0", + "port-version": 0 + } + ] +} diff --git a/azure-pipelines/e2e-assets/ci-verify-versions-registry/versions/m-/malformed.json b/azure-pipelines/e2e-assets/ci-verify-versions-registry/versions/m-/malformed.json new file mode 100644 index 0000000000..7ad4853f4b --- /dev/null +++ b/azure-pipelines/e2e-assets/ci-verify-versions-registry/versions/m-/malformed.json @@ -0,0 +1,14 @@ +{ + "versions": [ + { + "git-tree": "a1f22424b0fb1460200c12e1b7933f309f9c8373", + "version": "1.1", + "port-version": 0 + }, + { + "git-tree": "72b37802dbdc176ce20b718ce4a332ac38bd0116", + "version": "1.0", + "port-version": 0 + } + ] +} diff --git a/azure-pipelines/e2e-assets/ci-verify-versions-registry/versions/m-/mismatch-git-tree.json b/azure-pipelines/e2e-assets/ci-verify-versions-registry/versions/m-/mismatch-git-tree.json new file mode 100644 index 0000000000..3ff9b857c6 --- /dev/null +++ b/azure-pipelines/e2e-assets/ci-verify-versions-registry/versions/m-/mismatch-git-tree.json @@ -0,0 +1,9 @@ +{ + "versions": [ + { + "git-tree": "41d20d2a02d75343b0933b624faf9f061b112dad", + "version": "1.0", + "port-version": 0 + } + ] +} diff --git a/azure-pipelines/e2e-assets/ci-verify-versions-registry/versions/o-/override-not-in-versions-database.json b/azure-pipelines/e2e-assets/ci-verify-versions-registry/versions/o-/override-not-in-versions-database.json new file mode 100644 index 0000000000..33d069fb05 --- /dev/null +++ b/azure-pipelines/e2e-assets/ci-verify-versions-registry/versions/o-/override-not-in-versions-database.json @@ -0,0 +1,9 @@ +{ + "versions": [ + { + "git-tree": "0ff80cd22d5ca881efab3329ce596566a8642bec", + "version": "1.0", + "port-version": 0 + } + ] +} diff --git a/azure-pipelines/e2e-assets/ci-verify-versions-registry/versions/o-/override-version-not-in-versions-database.json b/azure-pipelines/e2e-assets/ci-verify-versions-registry/versions/o-/override-version-not-in-versions-database.json new file mode 100644 index 0000000000..ac1bb00cad --- /dev/null +++ b/azure-pipelines/e2e-assets/ci-verify-versions-registry/versions/o-/override-version-not-in-versions-database.json @@ -0,0 +1,9 @@ +{ + "versions": [ + { + "git-tree": "49fafaad46408296e50e9d0fd1a3d531bf97d420", + "version": "1.0", + "port-version": 0 + } + ] +} diff --git a/azure-pipelines/e2e-assets/ci-verify-versions-registry/versions/v-/version-mismatch.json b/azure-pipelines/e2e-assets/ci-verify-versions-registry/versions/v-/version-mismatch.json new file mode 100644 index 0000000000..9328f1244a --- /dev/null +++ b/azure-pipelines/e2e-assets/ci-verify-versions-registry/versions/v-/version-mismatch.json @@ -0,0 +1,14 @@ +{ + "versions": [ + { + "git-tree": "220bdcf2d4836ec9fe867eaff2945b58c08f5618", + "version": "1.1-a", + "port-version": 0 + }, + { + "git-tree": "5c1a69be3303fcd085d473d10e311b85202ee93c", + "version": "1.0-a", + "port-version": 0 + } + ] +} diff --git a/azure-pipelines/e2e-assets/ci-verify-versions-registry/versions/v-/version-missing.json b/azure-pipelines/e2e-assets/ci-verify-versions-registry/versions/v-/version-missing.json new file mode 100644 index 0000000000..5a73a4d89b --- /dev/null +++ b/azure-pipelines/e2e-assets/ci-verify-versions-registry/versions/v-/version-missing.json @@ -0,0 +1,9 @@ +{ + "versions": [ + { + "git-tree": "d3b4c8bf4bee7654f63b223a442741bb16f45957", + "version": "1.0", + "port-version": 0 + } + ] +} diff --git a/azure-pipelines/e2e-assets/ci-verify-versions-registry/versions/v-/version-scheme-mismatch.json b/azure-pipelines/e2e-assets/ci-verify-versions-registry/versions/v-/version-scheme-mismatch.json new file mode 100644 index 0000000000..a24ba4b01a --- /dev/null +++ b/azure-pipelines/e2e-assets/ci-verify-versions-registry/versions/v-/version-scheme-mismatch.json @@ -0,0 +1,14 @@ +{ + "versions": [ + { + "git-tree": "ea2006a1188b81f1f2f6e0aba9bef236d1fb2725", + "version-string": "1.1", + "port-version": 0 + }, + { + "git-tree": "89c88798a9fa17ea6753da87887a1fec48c421b0", + "version-string": "1.0", + "port-version": 0 + } + ] +} diff --git a/azure-pipelines/e2e-assets/test-dll-port-template/portfile.cmake b/azure-pipelines/e2e-assets/test-dll-port-template/portfile.cmake index a474519fd3..650c03da6d 100644 --- a/azure-pipelines/e2e-assets/test-dll-port-template/portfile.cmake +++ b/azure-pipelines/e2e-assets/test-dll-port-template/portfile.cmake @@ -1,14 +1,69 @@ -file(MAKE_DIRECTORY "${CURRENT_PACKAGES_DIR}/bin") -file(MAKE_DIRECTORY "${CURRENT_PACKAGES_DIR}/lib") -file(MAKE_DIRECTORY "${CURRENT_PACKAGES_DIR}/debug") -file(MAKE_DIRECTORY "${CURRENT_PACKAGES_DIR}/debug/bin") -file(MAKE_DIRECTORY "${CURRENT_PACKAGES_DIR}/debug/lib") file(MAKE_DIRECTORY "${CURRENT_PACKAGES_DIR}/include") -file(MAKE_DIRECTORY "${CURRENT_PACKAGES_DIR}/share") -file(MAKE_DIRECTORY "${CURRENT_PACKAGES_DIR}/share/${PORT}") -file(COPY "${CMAKE_CURRENT_LIST_DIR}/debug/test_dll.dll" DESTINATION "${CURRENT_PACKAGES_DIR}/debug/bin") -file(COPY "${CMAKE_CURRENT_LIST_DIR}/debug/test_dll.lib" DESTINATION "${CURRENT_PACKAGES_DIR}/debug/lib") -file(COPY "${CMAKE_CURRENT_LIST_DIR}/release/test_dll.dll" DESTINATION "${CURRENT_PACKAGES_DIR}/bin") -file(COPY "${CMAKE_CURRENT_LIST_DIR}/release/test_dll.lib" DESTINATION "${CURRENT_PACKAGES_DIR}/lib") file(COPY "${CMAKE_CURRENT_LIST_DIR}/test.h" DESTINATION "${CURRENT_PACKAGES_DIR}/include") + +file(MAKE_DIRECTORY "${CURRENT_PACKAGES_DIR}/share/${PORT}") file(TOUCH "${CURRENT_PACKAGES_DIR}/share/${PORT}/copyright") + +if("release-only" IN_LIST FEATURES AND NOT "bad-release-only" IN_LIST FEATURES) + set(VCPKG_BUILD_TYPE release) +endif() + +if(NOT "install-no-lib-release" IN_LIST FEATURES AND NOT "debug-only" IN_LIST FEATURES) + file(MAKE_DIRECTORY "${CURRENT_PACKAGES_DIR}/lib") + file(COPY "${CMAKE_CURRENT_LIST_DIR}/release/test_dll.lib" DESTINATION "${CURRENT_PACKAGES_DIR}/lib") +endif() + +if(NOT "install-no-lib-debug" IN_LIST FEATURES AND NOT "release-only" IN_LIST FEATURES) + file(MAKE_DIRECTORY "${CURRENT_PACKAGES_DIR}/debug/lib") + file(COPY "${CMAKE_CURRENT_LIST_DIR}/debug/test_dll.lib" DESTINATION "${CURRENT_PACKAGES_DIR}/debug/lib") +endif() + +if("install-to-lib" IN_LIST FEATURES) + if(NOT "debug-only" IN_LIST FEATURES) + file(COPY "${CMAKE_CURRENT_LIST_DIR}/release/test_dll.dll" DESTINATION "${CURRENT_PACKAGES_DIR}/lib") + endif() + if(NOT "release-only" IN_LIST FEATURES) + file(COPY "${CMAKE_CURRENT_LIST_DIR}/debug/test_dll.dll" DESTINATION "${CURRENT_PACKAGES_DIR}/debug/lib") + endif() +else() + if(NOT "debug-only" IN_LIST FEATURES) + file(MAKE_DIRECTORY "${CURRENT_PACKAGES_DIR}/bin") + file(COPY "${CMAKE_CURRENT_LIST_DIR}/release/test_dll.dll" DESTINATION "${CURRENT_PACKAGES_DIR}/bin") + endif() + if(NOT "release-only" IN_LIST FEATURES) + file(MAKE_DIRECTORY "${CURRENT_PACKAGES_DIR}/debug/bin") + file(COPY "${CMAKE_CURRENT_LIST_DIR}/debug/test_dll.dll" DESTINATION "${CURRENT_PACKAGES_DIR}/debug/bin") + endif() +endif() + +if("extra-debug" IN_LIST FEATURES) + file(INSTALL "${CMAKE_CURRENT_LIST_DIR}/debug/test_dll.lib" DESTINATION "${CURRENT_PACKAGES_DIR}/debug/lib" RENAME "test_dll2.lib") + file(INSTALL "${CMAKE_CURRENT_LIST_DIR}/debug/test_dll.dll" DESTINATION "${CURRENT_PACKAGES_DIR}/debug/bin" RENAME "test_dll2.dll") +endif() + +if("extra-release" IN_LIST FEATURES) + file(INSTALL "${CMAKE_CURRENT_LIST_DIR}/release/test_dll.lib" DESTINATION "${CURRENT_PACKAGES_DIR}/lib" RENAME "test_dll2.lib") + file(INSTALL "${CMAKE_CURRENT_LIST_DIR}/release/test_dll.dll" DESTINATION "${CURRENT_PACKAGES_DIR}/bin" RENAME "test_dll2.dll") +endif() + +if("policy-skip-architecture-check" IN_LIST FEATURES) + set(VCPKG_POLICY_SKIP_ARCHITECTURE_CHECK enabled) +endif() +if("policy-skip-appcontainer-check" IN_LIST FEATURES) + set(VCPKG_POLICY_SKIP_APPCONTAINER_CHECK enabled) +endif() +if("policy-allow-dlls-in-lib" IN_LIST FEATURES) + set(VCPKG_POLICY_ALLOW_DLLS_IN_LIB enabled) +endif() +if("policy-allow-kernel32-from-xbox" IN_LIST FEATURES) + set(VCPKG_POLICY_ALLOW_KERNEL32_FROM_XBOX enabled) +endif() +if("policy-dlls-in-static-library" IN_LIST FEATURES) + set(VCPKG_POLICY_DLLS_IN_STATIC_LIBRARY enabled) +endif() +if("policy-mismatched-number-of-binaries" IN_LIST FEATURES) + set(VCPKG_POLICY_MISMATCHED_NUMBER_OF_BINARIES enabled) +endif() +if("policy-dlls-without-libs" IN_LIST FEATURES) + set(VCPKG_POLICY_DLLS_WITHOUT_LIBS enabled) +endif() diff --git a/azure-pipelines/e2e-assets/test-dll-port-template/vcpkg.json b/azure-pipelines/e2e-assets/test-dll-port-template/vcpkg.json index e7b996246b..d9f5a237f3 100644 --- a/azure-pipelines/e2e-assets/test-dll-port-template/vcpkg.json +++ b/azure-pipelines/e2e-assets/test-dll-port-template/vcpkg.json @@ -1,4 +1,59 @@ { "name": "test-dll", - "version": "1.0.0" + "version": "1.0.0", + "features": { + "bad-release-only": { + "description": "Install only the release versions, but don't set the build type", + "dependencies": [ + { + "name": "test-dll", + "features": [ + "release-only" + ] + } + ] + }, + "debug-only": { + "description": "Install only the debug versions" + }, + "extra-debug": { + "description": "Install an extra debug DLL" + }, + "extra-release": { + "description": "Install an extra release DLL" + }, + "install-to-lib": { + "description": "Incorrectly install the DLL to lib instead of bin" + }, + "install-no-lib-debug": { + "description": "Incorrectly install no import lib for debug only" + }, + "install-no-lib-release": { + "description": "Incorrectly install no import lib for release only" + }, + "policy-allow-dlls-in-lib": { + "description": "Turn on VCPKG_POLICY_ALLOW_DLLS_IN_LIB" + }, + "policy-allow-kernel32-from-xbox": { + "description": "Turn on VCPKG_POLICY_ALLOW_KERNEL32_FROM_XBOX" + }, + "policy-dlls-in-static-library": { + "description": "Turn on VCPKG_POLICY_DLLS_IN_STATIC_LIBRARY" + }, + "policy-skip-appcontainer-check": { + "description": "Turn on VCPKG_POLICY_SKIP_APPCONTAINER_CHECK" + }, + "policy-skip-architecture-check": { + "description": "Turn on VCPKG_POLICY_SKIP_ARCHITECTURE_CHECK" + }, + "policy-mismatched-number-of-binaries": { + "description": "Turn on VCPKG_POLICY_MISMATCHED_NUMBER_OF_BINARIES" + }, + "policy-dlls-without-libs": { + "description": "Turn on VCPKG_POLICY_DLLS_WITHOUT_LIBS" + }, + "release-only": { + "description": "Install only the release versions" + } + } } diff --git a/azure-pipelines/e2e-assets/test-exe-port-template/build.cmd b/azure-pipelines/e2e-assets/test-exe-port-template/build.cmd new file mode 100644 index 0000000000..f4d8c93deb --- /dev/null +++ b/azure-pipelines/e2e-assets/test-exe-port-template/build.cmd @@ -0,0 +1,4 @@ +mkdir "%~dp0debug" +mkdir "%~dp0release" +cl /MDd "%~dp0test.c" /Fo"%~dp0debug\test.obj" /Fe"%~dp0debug\test_exe.exe" +cl /MD "%~dp0test.c" /Fo"%~dp0release\test.obj" /Fe"%~dp0release\test_exe.exe" diff --git a/azure-pipelines/e2e-assets/test-exe-port-template/portfile.cmake b/azure-pipelines/e2e-assets/test-exe-port-template/portfile.cmake new file mode 100644 index 0000000000..75f7216a93 --- /dev/null +++ b/azure-pipelines/e2e-assets/test-exe-port-template/portfile.cmake @@ -0,0 +1,17 @@ +set(VCPKG_POLICY_EMPTY_INCLUDE_FOLDER enabled) +file(MAKE_DIRECTORY "${CURRENT_PACKAGES_DIR}/share/${PORT}") +file(TOUCH "${CURRENT_PACKAGES_DIR}/share/${PORT}/copyright") + +if("release-only" IN_LIST FEATURES) + set(VCPKG_BUILD_TYPE release) +else() + file(MAKE_DIRECTORY "${CURRENT_PACKAGES_DIR}/debug/bin") + file(COPY "${CMAKE_CURRENT_LIST_DIR}/debug/test_exe.exe" DESTINATION "${CURRENT_PACKAGES_DIR}/debug/bin") +endif() + +file(MAKE_DIRECTORY "${CURRENT_PACKAGES_DIR}/bin") +file(COPY "${CMAKE_CURRENT_LIST_DIR}/release/test_exe.exe" DESTINATION "${CURRENT_PACKAGES_DIR}/bin") + +if("policy-allow-exes-in-bin" IN_LIST FEATURES) + set(VCPKG_POLICY_ALLOW_EXES_IN_BIN enabled) +endif() diff --git a/azure-pipelines/e2e-assets/test-exe-port-template/test.c b/azure-pipelines/e2e-assets/test-exe-port-template/test.c new file mode 100644 index 0000000000..a2c2e7f581 --- /dev/null +++ b/azure-pipelines/e2e-assets/test-exe-port-template/test.c @@ -0,0 +1,7 @@ +#include + +int main() +{ + puts("hello world"); + return 0; +} diff --git a/azure-pipelines/e2e-assets/test-exe-port-template/vcpkg.json b/azure-pipelines/e2e-assets/test-exe-port-template/vcpkg.json new file mode 100644 index 0000000000..1824794729 --- /dev/null +++ b/azure-pipelines/e2e-assets/test-exe-port-template/vcpkg.json @@ -0,0 +1,12 @@ +{ + "name": "test-exe", + "version": "1.0.0", + "features": { + "release-only": { + "description": "Only install release binaries" + }, + "policy-allow-exes-in-bin": { + "description": "Turn on VCPKG_POLICY_ALLOW_EXES_IN_BIN" + } + } +} diff --git a/azure-pipelines/e2e-assets/test-lib-port-template-dynamic-crt-release-only/build.cmd b/azure-pipelines/e2e-assets/test-lib-port-template-dynamic-crt-release-only/build.cmd new file mode 100644 index 0000000000..04aa31b18a --- /dev/null +++ b/azure-pipelines/e2e-assets/test-lib-port-template-dynamic-crt-release-only/build.cmd @@ -0,0 +1,6 @@ +mkdir "%~dp0debug" +mkdir "%~dp0release" +cl /c /DNDEBUG /MD "%~dp0test.c" /Fo"%~dp0debug\test.obj" +lib "%~dp0debug\test.obj" /OUT:"%~dp0debug\test_lib.lib" +cl /c /DNDEBUG /MD "%~dp0test.c" /Fo"%~dp0release\test.obj" +lib "%~dp0release\test.obj" /OUT:"%~dp0release\test_lib.lib" diff --git a/azure-pipelines/e2e-assets/test-lib-port-template-dynamic-crt-release-only/portfile.cmake b/azure-pipelines/e2e-assets/test-lib-port-template-dynamic-crt-release-only/portfile.cmake new file mode 100644 index 0000000000..a3330ff4d0 --- /dev/null +++ b/azure-pipelines/e2e-assets/test-lib-port-template-dynamic-crt-release-only/portfile.cmake @@ -0,0 +1,16 @@ +file(MAKE_DIRECTORY "${CURRENT_PACKAGES_DIR}/lib") +file(MAKE_DIRECTORY "${CURRENT_PACKAGES_DIR}/debug") +file(MAKE_DIRECTORY "${CURRENT_PACKAGES_DIR}/debug/lib") +file(MAKE_DIRECTORY "${CURRENT_PACKAGES_DIR}/include") +file(MAKE_DIRECTORY "${CURRENT_PACKAGES_DIR}/share") +file(MAKE_DIRECTORY "${CURRENT_PACKAGES_DIR}/share/${PORT}") +file(COPY "${CMAKE_CURRENT_LIST_DIR}/debug/test_lib.lib" DESTINATION "${CURRENT_PACKAGES_DIR}/debug/lib") +file(COPY "${CMAKE_CURRENT_LIST_DIR}/release/test_lib.lib" DESTINATION "${CURRENT_PACKAGES_DIR}/lib") +file(COPY "${CMAKE_CURRENT_LIST_DIR}/test.h" DESTINATION "${CURRENT_PACKAGES_DIR}/include") +file(TOUCH "${CURRENT_PACKAGES_DIR}/share/${PORT}/copyright") +if("policy-skip-crt-linkage-check" IN_LIST FEATURES) + set(VCPKG_POLICY_SKIP_CRT_LINKAGE_CHECK enabled) +endif() +if("policy-only-release-crt" IN_LIST FEATURES) + set(VCPKG_POLICY_ONLY_RELEASE_CRT enabled) +endif() diff --git a/azure-pipelines/e2e-assets/test-lib-port-template-dynamic-crt-release-only/test.c b/azure-pipelines/e2e-assets/test-lib-port-template-dynamic-crt-release-only/test.c new file mode 100644 index 0000000000..ea23efed90 --- /dev/null +++ b/azure-pipelines/e2e-assets/test-lib-port-template-dynamic-crt-release-only/test.c @@ -0,0 +1,6 @@ +#include + +int __cdecl test_fn() { + puts("You called the static lib function!"); + return 42; +} diff --git a/azure-pipelines/e2e-assets/test-lib-port-template-dynamic-crt-release-only/test.h b/azure-pipelines/e2e-assets/test-lib-port-template-dynamic-crt-release-only/test.h new file mode 100644 index 0000000000..aecc80983d --- /dev/null +++ b/azure-pipelines/e2e-assets/test-lib-port-template-dynamic-crt-release-only/test.h @@ -0,0 +1 @@ +int __cdecl test_fn(); diff --git a/azure-pipelines/e2e-assets/test-lib-port-template-dynamic-crt-release-only/vcpkg.json b/azure-pipelines/e2e-assets/test-lib-port-template-dynamic-crt-release-only/vcpkg.json new file mode 100644 index 0000000000..21e686ec8d --- /dev/null +++ b/azure-pipelines/e2e-assets/test-lib-port-template-dynamic-crt-release-only/vcpkg.json @@ -0,0 +1,12 @@ +{ + "name": "test-lib", + "version": "1.0.0", + "features": { + "policy-skip-crt-linkage-check": { + "description": "Turn on VCPKG_POLICY_SKIP_CRT_LINKAGE_CHECK" + }, + "policy-only-release-crt": { + "description": "Turn on VCPKG_POLICY_ONLY_RELEASE_CRT" + } + } +} diff --git a/azure-pipelines/e2e-assets/test-lib-port-template-dynamic-crt/portfile.cmake b/azure-pipelines/e2e-assets/test-lib-port-template-dynamic-crt/portfile.cmake index d902620688..9d336f2e3f 100644 --- a/azure-pipelines/e2e-assets/test-lib-port-template-dynamic-crt/portfile.cmake +++ b/azure-pipelines/e2e-assets/test-lib-port-template-dynamic-crt/portfile.cmake @@ -10,3 +10,6 @@ file(COPY "${CMAKE_CURRENT_LIST_DIR}/release/test_lib.lib" DESTINATION "${CURREN file(COPY "${CMAKE_CURRENT_LIST_DIR}/both/both_lib.lib" DESTINATION "${CURRENT_PACKAGES_DIR}/lib") file(COPY "${CMAKE_CURRENT_LIST_DIR}/test.h" DESTINATION "${CURRENT_PACKAGES_DIR}/include") file(TOUCH "${CURRENT_PACKAGES_DIR}/share/${PORT}/copyright") +if("policy-skip-crt-linkage-check" IN_LIST FEATURES) + set(VCPKG_POLICY_SKIP_CRT_LINKAGE_CHECK enabled) +endif() diff --git a/azure-pipelines/e2e-assets/test-lib-port-template-dynamic-crt/vcpkg.json b/azure-pipelines/e2e-assets/test-lib-port-template-dynamic-crt/vcpkg.json index aace75bf6b..06cb4bc60e 100644 --- a/azure-pipelines/e2e-assets/test-lib-port-template-dynamic-crt/vcpkg.json +++ b/azure-pipelines/e2e-assets/test-lib-port-template-dynamic-crt/vcpkg.json @@ -1,4 +1,9 @@ { "name": "test-lib", - "version": "1.0.0" + "version": "1.0.0", + "features": { + "policy-skip-crt-linkage-check": { + "description": "Turn on VCPKG_POLICY_SKIP_CRT_LINKAGE_CHECK" + } + } } diff --git a/azure-pipelines/e2e-ports/broken-manifests/broken-no-name/portfile.cmake b/azure-pipelines/e2e-ports/broken-manifests/broken-no-name/portfile.cmake new file mode 100644 index 0000000000..065116c276 --- /dev/null +++ b/azure-pipelines/e2e-ports/broken-manifests/broken-no-name/portfile.cmake @@ -0,0 +1 @@ +set(VCPKG_POLICY_EMPTY_PACKAGE enabled) diff --git a/azure-pipelines/e2e-ports/overlays/broken-no-name/vcpkg.json b/azure-pipelines/e2e-ports/broken-manifests/broken-no-name/vcpkg.json similarity index 100% rename from azure-pipelines/e2e-ports/overlays/broken-no-name/vcpkg.json rename to azure-pipelines/e2e-ports/broken-manifests/broken-no-name/vcpkg.json diff --git a/azure-pipelines/e2e-ports/broken-manifests/broken-no-version/portfile.cmake b/azure-pipelines/e2e-ports/broken-manifests/broken-no-version/portfile.cmake new file mode 100644 index 0000000000..065116c276 --- /dev/null +++ b/azure-pipelines/e2e-ports/broken-manifests/broken-no-version/portfile.cmake @@ -0,0 +1 @@ +set(VCPKG_POLICY_EMPTY_PACKAGE enabled) diff --git a/azure-pipelines/e2e-ports/overlays/broken-no-version/vcpkg.json b/azure-pipelines/e2e-ports/broken-manifests/broken-no-version/vcpkg.json similarity index 100% rename from azure-pipelines/e2e-ports/overlays/broken-no-version/vcpkg.json rename to azure-pipelines/e2e-ports/broken-manifests/broken-no-version/vcpkg.json diff --git a/azure-pipelines/e2e-ports/broken-manifests/malformed/portfile.cmake b/azure-pipelines/e2e-ports/broken-manifests/malformed/portfile.cmake new file mode 100644 index 0000000000..065116c276 --- /dev/null +++ b/azure-pipelines/e2e-ports/broken-manifests/malformed/portfile.cmake @@ -0,0 +1 @@ +set(VCPKG_POLICY_EMPTY_PACKAGE enabled) diff --git a/azure-pipelines/e2e-ports/broken-manifests/malformed/vcpkg.json b/azure-pipelines/e2e-ports/broken-manifests/malformed/vcpkg.json new file mode 100644 index 0000000000..01850f8037 --- /dev/null +++ b/azure-pipelines/e2e-ports/broken-manifests/malformed/vcpkg.json @@ -0,0 +1,4 @@ +{ + "name": "malformed", + "version": "1", +} diff --git a/azure-pipelines/e2e-ports/ci/feature-dep-missing/portfile.cmake b/azure-pipelines/e2e-ports/ci/feature-dep-missing/portfile.cmake new file mode 100644 index 0000000000..065116c276 --- /dev/null +++ b/azure-pipelines/e2e-ports/ci/feature-dep-missing/portfile.cmake @@ -0,0 +1 @@ +set(VCPKG_POLICY_EMPTY_PACKAGE enabled) diff --git a/azure-pipelines/e2e-ports/ci/feature-dep-missing/vcpkg.json b/azure-pipelines/e2e-ports/ci/feature-dep-missing/vcpkg.json new file mode 100644 index 0000000000..cb34c6f616 --- /dev/null +++ b/azure-pipelines/e2e-ports/ci/feature-dep-missing/vcpkg.json @@ -0,0 +1,12 @@ +{ + "name": "feature-dep-missing", + "version": "1", + "features": { + "dep-missing": { + "description": "dependency does not exist", + "dependencies": [ + "this-dependency-does-not-exist" + ] + } + } +} diff --git a/azure-pipelines/e2e_ports/hash-additional-fail/additional_abi_file.txt b/azure-pipelines/e2e-ports/hash-additional-fail/additional_abi_file.txt similarity index 100% rename from azure-pipelines/e2e_ports/hash-additional-fail/additional_abi_file.txt rename to azure-pipelines/e2e-ports/hash-additional-fail/additional_abi_file.txt diff --git a/azure-pipelines/e2e_ports/hash-additional-fail/hash-additional-e2e.cmake b/azure-pipelines/e2e-ports/hash-additional-fail/hash-additional-e2e.cmake similarity index 100% rename from azure-pipelines/e2e_ports/hash-additional-fail/hash-additional-e2e.cmake rename to azure-pipelines/e2e-ports/hash-additional-fail/hash-additional-e2e.cmake diff --git a/azure-pipelines/e2e_ports/hash-additional-fail/vcpkg-test-hash-additional/portfile.cmake b/azure-pipelines/e2e-ports/hash-additional-fail/vcpkg-test-hash-additional/portfile.cmake similarity index 100% rename from azure-pipelines/e2e_ports/hash-additional-fail/vcpkg-test-hash-additional/portfile.cmake rename to azure-pipelines/e2e-ports/hash-additional-fail/vcpkg-test-hash-additional/portfile.cmake diff --git a/azure-pipelines/e2e_ports/hash-additional-fail/vcpkg-test-hash-additional/vcpkg.json b/azure-pipelines/e2e-ports/hash-additional-fail/vcpkg-test-hash-additional/vcpkg.json similarity index 100% rename from azure-pipelines/e2e_ports/hash-additional-fail/vcpkg-test-hash-additional/vcpkg.json rename to azure-pipelines/e2e-ports/hash-additional-fail/vcpkg-test-hash-additional/vcpkg.json diff --git a/azure-pipelines/e2e_ports/hash-additional/additional_abi_file.txt b/azure-pipelines/e2e-ports/hash-additional/additional_abi_file.txt similarity index 100% rename from azure-pipelines/e2e_ports/hash-additional/additional_abi_file.txt rename to azure-pipelines/e2e-ports/hash-additional/additional_abi_file.txt diff --git a/azure-pipelines/e2e_ports/hash-additional/hash-additional-e2e.cmake b/azure-pipelines/e2e-ports/hash-additional/hash-additional-e2e.cmake similarity index 100% rename from azure-pipelines/e2e_ports/hash-additional/hash-additional-e2e.cmake rename to azure-pipelines/e2e-ports/hash-additional/hash-additional-e2e.cmake diff --git a/azure-pipelines/e2e_ports/hash-additional/vcpkg-test-hash-additional/portfile.cmake b/azure-pipelines/e2e-ports/hash-additional/vcpkg-test-hash-additional/portfile.cmake similarity index 100% rename from azure-pipelines/e2e_ports/hash-additional/vcpkg-test-hash-additional/portfile.cmake rename to azure-pipelines/e2e-ports/hash-additional/vcpkg-test-hash-additional/portfile.cmake diff --git a/azure-pipelines/e2e_ports/hash-additional/vcpkg-test-hash-additional/vcpkg.json b/azure-pipelines/e2e-ports/hash-additional/vcpkg-test-hash-additional/vcpkg.json similarity index 100% rename from azure-pipelines/e2e_ports/hash-additional/vcpkg-test-hash-additional/vcpkg.json rename to azure-pipelines/e2e-ports/hash-additional/vcpkg-test-hash-additional/vcpkg.json diff --git a/azure-pipelines/e2e-ports/overlays/vcpkg-header-only/portfile.cmake b/azure-pipelines/e2e-ports/overlays/vcpkg-header-only/portfile.cmake new file mode 100644 index 0000000000..b6c2c65494 --- /dev/null +++ b/azure-pipelines/e2e-ports/overlays/vcpkg-header-only/portfile.cmake @@ -0,0 +1,4 @@ +file(MAKE_DIRECTORY "${CURRENT_PACKAGES_DIR}/share/${PORT}") +file(WRITE "${CURRENT_PACKAGES_DIR}/share/${PORT}/copyright" "license text") +file(MAKE_DIRECTORY "${CURRENT_PACKAGES_DIR}/include") +file(WRITE "${CURRENT_PACKAGES_DIR}/include/vcpkg-header-only.h" "// header only port") diff --git a/azure-pipelines/e2e-ports/overlays/vcpkg-header-only/vcpkg.json b/azure-pipelines/e2e-ports/overlays/vcpkg-header-only/vcpkg.json new file mode 100644 index 0000000000..44fa328c81 --- /dev/null +++ b/azure-pipelines/e2e-ports/overlays/vcpkg-header-only/vcpkg.json @@ -0,0 +1,4 @@ +{ + "name": "vcpkg-header-only", + "version": "1" +} diff --git a/azure-pipelines/e2e-ports/post-portfile-includes-fail/invalid.extension b/azure-pipelines/e2e-ports/post-portfile-includes-fail/invalid.extension new file mode 100644 index 0000000000..e69de29bb2 diff --git a/azure-pipelines/e2e-ports/post-portfile-includes-fail/post-portfile-includes.cmake b/azure-pipelines/e2e-ports/post-portfile-includes-fail/post-portfile-includes.cmake new file mode 100644 index 0000000000..b1c0ae4cc5 --- /dev/null +++ b/azure-pipelines/e2e-ports/post-portfile-includes-fail/post-portfile-includes.cmake @@ -0,0 +1,9 @@ +set(VCPKG_TARGET_ARCHITECTURE x64) +set(VCPKG_CRT_LINKAGE dynamic) +set(VCPKG_LIBRARY_LINKAGE dynamic) +if(APPLE) +set(VCPKG_CMAKE_SYSTEM_NAME Darwin) +elseif(UNIX) +set(VCPKG_CMAKE_SYSTEM_NAME Linux) +endif() +set(VCPKG_POST_PORTFILE_INCLUDES "${CMAKE_CURRENT_LIST_DIR}/invalid.extension") diff --git a/azure-pipelines/e2e-ports/post-portfile-includes-fail/vcpkg-post-portfile-includes/portfile.cmake b/azure-pipelines/e2e-ports/post-portfile-includes-fail/vcpkg-post-portfile-includes/portfile.cmake new file mode 100644 index 0000000000..065116c276 --- /dev/null +++ b/azure-pipelines/e2e-ports/post-portfile-includes-fail/vcpkg-post-portfile-includes/portfile.cmake @@ -0,0 +1 @@ +set(VCPKG_POLICY_EMPTY_PACKAGE enabled) diff --git a/azure-pipelines/e2e-ports/post-portfile-includes-fail/vcpkg-post-portfile-includes/vcpkg.json b/azure-pipelines/e2e-ports/post-portfile-includes-fail/vcpkg-post-portfile-includes/vcpkg.json new file mode 100644 index 0000000000..415862a95c --- /dev/null +++ b/azure-pipelines/e2e-ports/post-portfile-includes-fail/vcpkg-post-portfile-includes/vcpkg.json @@ -0,0 +1,5 @@ +{ + "name": "vcpkg-post-portfile-includes", + "version": "0", + "description": "A port to test post portfile includes" +} diff --git a/azure-pipelines/e2e-ports/post-portfile-includes/post-portfile-includes.cmake b/azure-pipelines/e2e-ports/post-portfile-includes/post-portfile-includes.cmake new file mode 100644 index 0000000000..2730c5c44d --- /dev/null +++ b/azure-pipelines/e2e-ports/post-portfile-includes/post-portfile-includes.cmake @@ -0,0 +1,9 @@ +set(VCPKG_TARGET_ARCHITECTURE x64) +set(VCPKG_CRT_LINKAGE dynamic) +set(VCPKG_LIBRARY_LINKAGE dynamic) +if(APPLE) +set(VCPKG_CMAKE_SYSTEM_NAME Darwin) +elseif(UNIX) +set(VCPKG_CMAKE_SYSTEM_NAME Linux) +endif() +set(VCPKG_POST_PORTFILE_INCLUDES "${CMAKE_CURRENT_LIST_DIR}/test1.cmake;${CMAKE_CURRENT_LIST_DIR}/test2.cmake") diff --git a/azure-pipelines/e2e-ports/post-portfile-includes/test1.cmake b/azure-pipelines/e2e-ports/post-portfile-includes/test1.cmake new file mode 100644 index 0000000000..f07492d765 --- /dev/null +++ b/azure-pipelines/e2e-ports/post-portfile-includes/test1.cmake @@ -0,0 +1,2 @@ +# Just a random comment +set(VCPKG_POST_INCLUDE_CHECK_TEST2 ON) diff --git a/azure-pipelines/e2e-ports/post-portfile-includes/test2.cmake b/azure-pipelines/e2e-ports/post-portfile-includes/test2.cmake new file mode 100644 index 0000000000..f7c444cf0c --- /dev/null +++ b/azure-pipelines/e2e-ports/post-portfile-includes/test2.cmake @@ -0,0 +1,10 @@ + +if(NOT VCPKG_POST_INCLUDE_CHECK_TEST1) + message(FATAL_ERROR "VCPKG_POST_INCLUDE_CHECK_TEST1 failed") +endif() + +if(NOT VCPKG_POST_INCLUDE_CHECK_TEST2) + message(FATAL_ERROR "VCPKG_POST_INCLUDE_CHECK_TEST2 failed") +endif() + +message(STATUS "VCPKG_POST_INCLUDE_CHECK_TEST successful") diff --git a/azure-pipelines/e2e-ports/post-portfile-includes/vcpkg-post-portfile-includes/portfile.cmake b/azure-pipelines/e2e-ports/post-portfile-includes/vcpkg-post-portfile-includes/portfile.cmake new file mode 100644 index 0000000000..fdb9d01e11 --- /dev/null +++ b/azure-pipelines/e2e-ports/post-portfile-includes/vcpkg-post-portfile-includes/portfile.cmake @@ -0,0 +1,35 @@ +file(STRINGS "${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}.vcpkg_abi_info.txt" lines) +list(FILTER lines INCLUDE REGEX "post_portfile_include_(0|1)") +list(GET lines 0 first_line) +list(GET lines 1 second_line) + +set(expected1 "post_portfile_include_0 ad6ac07ed1e066eaf23af161afb36b25a3ec03af49cd3e52ceb3a91d388f23f8") +set(expected2 "post_portfile_include_1 f8b37330094530b0fc7a5606fea7b491ec0e67edd1fd8f7e1a5607f7be0a3ff2") + +if(first_line STREQUAL "${expected1}") + message(STATUS "ABI hash succesful!") +else() + message(FATAL_ERROR "First line in abi info is not the post include file to be hashed but:\n first_line: '${first_line}'\n expected: '${expected1}' ") +endif() +if(second_line STREQUAL "${expected2}") + message(STATUS "ABI hash succesful!") +else() + message(FATAL_ERROR "Second line in abi info is not the second post include file to be hashed but:\n second_line: '${second_line}'\n expected: '${expected2}' ") +endif() + +if(NOT Z_VCPKG_POST_PORTFILE_INCLUDES) + message(FATAL_ERROR "Variable Z_VCPKG_POST_PORTFILE_INCLUDES not set by vcpkg-tool!") +endif() + +set(path1 "${CMAKE_CURRENT_LIST_DIR}/../test1.cmake") +cmake_path(NORMAL_PATH path1) +set(path2 "${CMAKE_CURRENT_LIST_DIR}/../test2.cmake") +cmake_path(NORMAL_PATH path2) + +if(NOT Z_VCPKG_POST_PORTFILE_INCLUDES STREQUAL "${path1};${path2}") + message(FATAL_ERROR "Z_VCPKG_POST_PORTFILE_INCLUDES ist not equal to '${path1};${path2}' (Z_VCPKG_POST_PORTFILE_INCLUDES:'${Z_VCPKG_POST_PORTFILE_INCLUDES}') ") +endif() + +set(VCPKG_POST_INCLUDE_CHECK_TEST1 ON) + +set(VCPKG_POLICY_EMPTY_PACKAGE enabled) diff --git a/azure-pipelines/e2e-ports/post-portfile-includes/vcpkg-post-portfile-includes/vcpkg.json b/azure-pipelines/e2e-ports/post-portfile-includes/vcpkg-post-portfile-includes/vcpkg.json new file mode 100644 index 0000000000..415862a95c --- /dev/null +++ b/azure-pipelines/e2e-ports/post-portfile-includes/vcpkg-post-portfile-includes/vcpkg.json @@ -0,0 +1,5 @@ +{ + "name": "vcpkg-post-portfile-includes", + "version": "0", + "description": "A port to test post portfile includes" +} diff --git a/azure-pipelines/e2e-ports/vcpkg-bad-spdx-license/portfile.cmake b/azure-pipelines/e2e-ports/vcpkg-bad-spdx-license/portfile.cmake new file mode 100644 index 0000000000..065116c276 --- /dev/null +++ b/azure-pipelines/e2e-ports/vcpkg-bad-spdx-license/portfile.cmake @@ -0,0 +1 @@ +set(VCPKG_POLICY_EMPTY_PACKAGE enabled) diff --git a/azure-pipelines/e2e-ports/vcpkg-bad-spdx-license/vcpkg.json b/azure-pipelines/e2e-ports/vcpkg-bad-spdx-license/vcpkg.json new file mode 100644 index 0000000000..2832f27b74 --- /dev/null +++ b/azure-pipelines/e2e-ports/vcpkg-bad-spdx-license/vcpkg.json @@ -0,0 +1,5 @@ +{ + "name": "vcpkg-bad-spdx-license", + "version": "1", + "license": "BSD-new" +} diff --git a/azure-pipelines/e2e-ports/vcpkg-internal-dll-with-no-exports/portfile.cmake b/azure-pipelines/e2e-ports/vcpkg-internal-dll-with-no-exports/portfile.cmake index 400e965ec8..20ca536437 100644 --- a/azure-pipelines/e2e-ports/vcpkg-internal-dll-with-no-exports/portfile.cmake +++ b/azure-pipelines/e2e-ports/vcpkg-internal-dll-with-no-exports/portfile.cmake @@ -10,3 +10,6 @@ file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/debug/lib" "${CURRENT_PACKAGES_DIR}/lib") file(TOUCH "${CURRENT_PACKAGES_DIR}/share/${PORT}/copyright") +if("policy" IN_LIST FEATURES) + set(VCPKG_POLICY_DLLS_WITHOUT_EXPORTS enabled) +endif() diff --git a/azure-pipelines/e2e-ports/vcpkg-internal-dll-with-no-exports/vcpkg.json b/azure-pipelines/e2e-ports/vcpkg-internal-dll-with-no-exports/vcpkg.json index 721a3a90f1..86537381cb 100644 --- a/azure-pipelines/e2e-ports/vcpkg-internal-dll-with-no-exports/vcpkg.json +++ b/azure-pipelines/e2e-ports/vcpkg-internal-dll-with-no-exports/vcpkg.json @@ -6,5 +6,10 @@ "name": "vcpkg-cmake", "host": true } - ] + ], + "features": { + "policy": { + "description": "Turn on VCPKG_POLICY_DLLS_WITHOUT_EXPORTS" + } + } } diff --git a/azure-pipelines/e2e-ports/vcpkg-msvc-2013/build.cmd b/azure-pipelines/e2e-ports/vcpkg-msvc-2013/build.cmd new file mode 100644 index 0000000000..41af15602b --- /dev/null +++ b/azure-pipelines/e2e-ports/vcpkg-msvc-2013/build.cmd @@ -0,0 +1,5 @@ +:: This must be run from a Visual Studio 2013 command prompt +mkdir "%~dp0debug" +mkdir "%~dp0release" +cl /MDd "%~dp0test.c" "%~dp0test.def" /Fo"%~dp0debug\test.obj" /Fe"%~dp0debug\test_dll.dll" /link /DLL +cl /MD "%~dp0test.c" "%~dp0test.def" /Fo"%~dp0release\test.obj" /Fe"%~dp0release\test_dll.dll" /link /DLL diff --git a/azure-pipelines/e2e-ports/vcpkg-msvc-2013/debug/test_dll.dll b/azure-pipelines/e2e-ports/vcpkg-msvc-2013/debug/test_dll.dll new file mode 100644 index 0000000000000000000000000000000000000000..ed29ef27e2df37a9c9feb4f2e398b8abfd3d99dd GIT binary patch literal 7680 zcmeHMeQaCTb-$z}N4BYmPRvxvoSAZ@)Ja{HAF@S})T%{#j+2QAC5v{F%4I0>Nfb?y z0{Nal+Gw!M7!CI-%-f2s*k&M(HXz%Y)(M8h&VZJVwJ>YtR1Ms~E7U>>RD%N5RBMEW z$hf@y&V7%P948I7KenOEdpP&pd(OG{o^$Rw=RQ%s$4;{<##l8#RT(=EOiw3oe{-`8 z_RZU0zM1{w#>sTr|oC=Lv!=XeXDOm?aYf4U7M-tZVhxc1YlM%6{ zu5MG4zO>`ezrKFN`_h>T{KKUu&PaUx;+YumR}--_GRFtcjB|W|^DjMf@XS$+FFkWu z$0Ho~jfA7L*2ih?7Z~d?RI`=8X&3%CWa?&-wVEt(jUD0plD_=ep9Sod@? zmTO6g@nl%H2?Q>;ZJiLhAm4XA<(3I-6bw^@i#IuQi&NN&?5;ocF6QQi6~6O#R8>{> zRcC#3dEqKil)&7D$Dye+w_N}HmaMRn8DC-2tx90U6PS}XLW(PIEWVlPh(L}>rr7qv zL&z(rUF^!&5RpWpUxx#tC(smzU|wdr_Eb(HMecwi(I<#`jF?>-Q=3Tc$c$fQ@QDUz zdU;`)Of9_d0gU%oX9HLA!VFOq-<6kFjo*|NmNVnaWW2EK5w4K&Gh|tD)p(;+5951L z5U}T>7fkK2dsWL;D3TRQneh^W%s* zp99VdOT^C$3xp6;nL;%Mm#^&cl~T7OcrtE={SkT;YM{3pWM~G4Cs0Zoi-$2ssa;iN zc2zP^&KlLg>{$v+1gfU#lEMRYReV7S6g+_?xmFS8J;H+2p!k-uz5=M(KuHl6vckOL zo6q{ni+d45FjIvtMkP>!g#-K$YAYK~k>O{l;rXDQG#Ql{pP`ff7w+?~ZQ^NxP+v<$ zo^ll5l&>{~w`<4|X20Sy^(ukdzQPt-WZHE749Lemh(5Ig0cQRkW{#Ytt^Aqk<^2Z^ zp52LbunQ&UKl>+z~hd z&|OsAg>X=|C`KLzOR#souh2yvnXbL0aED@0aVRDs)6@cGcX4yRhMbGBdI@o)_?9Et zIud>~_~kEAp;McqP+Dz{prrud_00rxU}@DpZ`N1Rix+~e{-yii)Y4?Xp&=V67jIEe zuW|-dEu=%{;!cF8CbXelSV`XnA`ZsWYf9Zlxv|fLT&a4nw%un+*MLy0E`IMrwN~FB z@pSHnc$)o<@dSe?fXFad=`UPE2SozzzAZ0YA+qijMYyu~0!jI5Kj&M>`ev2DEMf;! zswlChYvJO|_&k$u)r-{XyqV%SQc&q_ns^)YPf&fDqkt{qK<9w5@myATZB_oYqEGJ^ zyH}5IdSZMUX_Z?m?U=3I1j1GAD08&d>MA)}o}cH9N4J`#~72U zow=fi9PcY@=ZLeJaMR~0XIT}L%UlCLycIrcGpymPno4P)OBnIco9Uq9#iWgy4yr3m z-lJ3G3Poy)<`6*9CmV4wu$T}%O&z0Z*#&B5x*=0C$cCB9I;2`p%oknaLb2+YRkhf- z;8x8F)Wx+6-NG+)UeEOlov!2JX4sY|U$N_=NUKM)H^k4<$Hb3*c-NO_Dj=$S3nja1 ziF3`W7oWmbvD!iyd4T0twam{?`sRBl0}Fa}BAfh$7QTQfE6gdr zh3hOuTI+_BoAqm zc6d%-36(&#)Pm>~${?y1(`tV*u!IR_KB4RsmMU|WdG#ny3T5Xkip#`!nf9kVDL;%( z@lM3?#9O2X&ISDMZ@Hhbi*K7Z<9-d$N8l9c2BC_2x`hY6dknFlyxKu1z4f%R0Ut9) zbvE;A^~486Oa0=@s~?;2-+}L*(BuhySe|HHUTyA&1!}V&ZN>8%hCidN(4^plci{hZ zpORbvd_~xbOLgtqiu!SJMoIlb3!l`0Nouo;@351%t-ST3_3$&0jqhGs3_%!jouIDi zfb~@i18HgiF%&ZtzG&cj@R(@V`k4;mF?kc%R*e+hSj}>U?b=|y&RB0^sR`d)vCkAX zfK8v37wBrae9u&;oxZfa)LLBB-q}j+ZX2~7yU-4O-SP-Wbv+#2xs#)sCXSk|9DRNp z&|m*?jUPx6*i<*i)l>U`CxzOnej1;eLk#C@PQyzEW?*NDIn{$vzNQl`sh_Xu=3JD| z8o%DVK!1WB{t?Tc><5MPKF=wyA#=&&+5Wl`r(B%J*Cd5?wx^~P-G+lMJWn62lqYI) zH~0TO-uCd;iWaMV`h0>1euCPO1N=SU8-T9>Vt~g0zXx~+K+lmTT&jRS1w0K%0L}yE z0KW#9Aa^(5arFBEoq$%r-GBzb2Eexg%Xew(t#3Qc%$)no+IbDR2O^PyBVj3-jHd^} zDT&~y(=iZ<$J3HLG(=(rkAbk%gPvEtF!X6#}r9G~fzK6S^nWb0VF~r<#0NO;*9${hFlf)Z`!~jMq zj4Svkb20~)jdQ-lWHy9%fQ9(1HIKAlCOx0**N~JM?UmPOpI9_SH>qS+WvciLx2kX+&Z}$#Lg}~ek%N#b$nWP-|cJhRr&32 z2V#+Qsz3wA+W=MqSp5ZHd~=CuDM--twqOhnr9_eU6NX?{O4=_hS&C*g=TQP7M3hs9n^c@20a`XLy4et zd`!fCL&;zwG%BXi#m0$HoU!MOP(Lh=Nx^6+5s8bb)?hd}I+{$dlh^~t7!e2M;bAcq zj3$$Z8GD`9Oi6)+CLR&^_{n3;diu8;O zrb4OXT~I&G8Vy1sj9P@%}*Qdr0VUI(R^QRLFix`z`dqqe&V6sENnLh*gS;R;|8aFeE3!5<jl8w>8=BwLNG%XdAZ0Z7JI^+c#~0Yx|k)n(ZCi z4*P@lpgn3IwV$&8k^P(Yzq3DYzhM8d{ipV8_Fvk!JMMP`9Yc=ejuVbI9RKDhJ2pDa z&fA?<=b&@cnQ|U=KH)s+{4?h@XVLi|&gNEE>!YoS)}OTgqP21Np4}&RKePMU-FxT*5cI^z1OYtr?s>pQMjTyMDw zu4UJIE>ruC_RqH4+xN7;*nYA7_4YU0f8PFn`v&)I?wDJ4pLA#4XWTEiFSsweueyKc zUU4^h?(w)iou0j(9#5ZV&?9@k;`wvWoab#%!Sjx1#q++$;H~x6dvEjJ>230U&g=Ag zyj|Xhy^nYgdBfgO?@@2o`&ZuQyf1oR_0D+T@Lu&Ie5~3v|D^3H+ct;Q5phHvPdlD< Re9JNIc+F98{9g{R{{%PcP$>Wa literal 0 HcmV?d00001 diff --git a/azure-pipelines/e2e-ports/vcpkg-msvc-2013/debug/test_dll.lib b/azure-pipelines/e2e-ports/vcpkg-msvc-2013/debug/test_dll.lib new file mode 100644 index 0000000000000000000000000000000000000000..06996d5d10a2ee9853ca2cfa645c3dd0df27b33f GIT binary patch literal 1716 zcmcIlyG|QH6g|6Z9w#*`>;|Egl z0aQ``fF_l{AVrFFY4Qyz=-}Sf!t38~bK+mK`tS zGUCZ3U^lT!=(NdO~&aRyjDAaMzd`uqt|+}hbL2V(u>?uT-5C)h5Fuznnh+R+h& zDDC#M;kZE3bTLexKZ+TBpJ>d>Z7_TP>DPf!472GFyBOA`Fi zC?FUxk)WSNmY);JL;l_$r3ybyS>mW3tAx9fmo?c>`i6zSUsoEF6wNqAMa@Xp>Yq*y z=6Cxdutt+FN|0j#skL;oRtYQfS+z7xlOOc`kpLwJ1!Q_sZ%M+Kh6 z@Pb85=s_)DDm6wRAINQjzKiphTg_^>ecWz@_G0<9?H5a%(ds`PEAvJ^fVdXTQq&Ux z3DeDx7u9yFL+)Oj|HjpoGRS+lv4191)CDR(BZmr!;$useLR{7%AlC6>gz-7Gi8ulmd&e|FTQ2J$U?u)cjxVaTjr@$F&p`o=}o(3uEJUGrxN5i-24ub(^q79 ccwBT{NkyCgL->aJ2ESf2QGDb2^RAZ**HZ&WnE(I) literal 0 HcmV?d00001 diff --git a/azure-pipelines/e2e-ports/vcpkg-msvc-2013/portfile.cmake b/azure-pipelines/e2e-ports/vcpkg-msvc-2013/portfile.cmake new file mode 100644 index 0000000000..53e3259034 --- /dev/null +++ b/azure-pipelines/e2e-ports/vcpkg-msvc-2013/portfile.cmake @@ -0,0 +1,23 @@ +file(MAKE_DIRECTORY "${CURRENT_PACKAGES_DIR}/share/${PORT}") +file(WRITE "${CURRENT_PACKAGES_DIR}/share/${PORT}/copyright" "MIT License.") + +file(MAKE_DIRECTORY "${CURRENT_PACKAGES_DIR}/include/vcpkg-msvc-2013") +file(COPY "${CMAKE_CURRENT_LIST_DIR}/test.h" DESTINATION "${CURRENT_PACKAGES_DIR}/include/vcpkg-msvc-2013") + +if("release-only" IN_LIST FEATURES) + set(VCPKG_BUILD_TYPE "release") +else() + file(MAKE_DIRECTORY "${CURRENT_PACKAGES_DIR}/debug/bin") + file(MAKE_DIRECTORY "${CURRENT_PACKAGES_DIR}/debug/lib") + file(COPY "${CMAKE_CURRENT_LIST_DIR}/debug/test_dll.dll" DESTINATION "${CURRENT_PACKAGES_DIR}/debug/bin") + file(COPY "${CMAKE_CURRENT_LIST_DIR}/debug/test_dll.lib" DESTINATION "${CURRENT_PACKAGES_DIR}/debug/lib") +endif() + +file(MAKE_DIRECTORY "${CURRENT_PACKAGES_DIR}/bin") +file(MAKE_DIRECTORY "${CURRENT_PACKAGES_DIR}/lib") +file(COPY "${CMAKE_CURRENT_LIST_DIR}/release/test_dll.dll" DESTINATION "${CURRENT_PACKAGES_DIR}/bin") +file(COPY "${CMAKE_CURRENT_LIST_DIR}/release/test_dll.lib" DESTINATION "${CURRENT_PACKAGES_DIR}/lib") + +if("policy" IN_LIST FEATURES) + set(VCPKG_POLICY_ALLOW_OBSOLETE_MSVCRT enabled) +endif() diff --git a/azure-pipelines/e2e-ports/vcpkg-msvc-2013/release/test_dll.dll b/azure-pipelines/e2e-ports/vcpkg-msvc-2013/release/test_dll.dll new file mode 100644 index 0000000000000000000000000000000000000000..77ba791253375fa33ba6ad998796bde5650b7f63 GIT binary patch literal 6144 zcmeHLeQaCR6~B({)=8blKuoh0gtI27w2=ARFQnNFjoY-u#c4xYv!;$4ztnaUJ9>E! zwOg~5xgL10>AJRzih)81Fa~S_?St~6*1=sf++txL~KLEf|Z%dDB+b#0fD|Bxb6+b%Uuh9%8GCi;F69TaW%`@$mjp zp)U{K0+pVSB1k~!_|D}(27n1bIm#ChGEbRaqQnOQ4I)MX zajTR?)Rrz#XqL2=6S4-6w9R$jS7lO_iZX8{eH6wdy5t#vq4Jif88E!(-RUF$9Z_C{Y z0>$piIYwY1zWKwFFK7Sh2;3%4CVKQLp-A-Te6sN>6EQrcYI#vlhO-0uF!E}UjbW$~ z$2CWm!KIc=b9gtXY;1zmFHSYf#xigNyKF!^fRg70tu5`|l1W@kq;+^L;XhwV4AMa@ zAw!x9%_8u3f%n_eTQWGKu@PR74b2-%lGmZ?``tJ)nJ(F9#H9ZDF1jlf+2l}v8O}}h z%!)qEgr??2exWTb{(h?D=>^HOFf}oM$TN#2BvH#_O#xpVy+(QmCFwu=eTZcT^-ngI z!c}o9CBVy)J@?UjIH=D##aK$vr&@FgZ2u;=xw?jbZ)5g$)oT9lvMp=1QJl&OQ)>BC zc3;s!_oXwsS;{jbpAx+@)n2`z69q%HN5?-YzLWCmajrO)^5`ZWNL-M49YVK>1~GSt z620t=sk15NBGo;!CCM}#wWaS;pM6GQ&i)F7=B_09D7b83Y_d45EdJ#1sBPz0RVzD2 z3j%y0f-{P+OgO@O;6Zo?(2$k}j)qWr3s2wgM_3Prd8+OLl8#eh)+s-7tf3AiYIkD| z;jao)D!qo)SjHF2f?=a9=wu@m%UUIYX?I}Dx5T$;h2=|6D;+@dfUzv-VJ^+5_d2ep zCQ(CphMwAvQ&CMcXJ>40q*`Xh9(}6TjEYEkW|LS~T}yW_*)xi@H8Z?6Ar}Zt|J_&% zM;7KC8BsQ%Nq-u4IjPk1fh=EC9G;^XpUo)}vP!7JZI@xm2I}GoX!86wusnZKVNNKI zBxUM^TDT>D$|9Iek1b9wp?Bcz`4!7^dKtb=EEc_!qDmww&v>IxvcVOvBM$Y$5#mcs>Tp269Zpz0Gq&IPdOcI20jf%|5`3my7+{cg0i%l`D^2k0 z1}gJqHS6Jh;ZJ29_9xice78CUyIg+)JKpOVM|98lP==y|_FVatPkMzOa9l6Wqj~3~N%RpUj+eD$>GB5UpJym1c$9a6QQVKhm~>h#oS~q)^Sk zCeU7wZXiVG$$#bj$F9{Q@PTu;5r4HfU(j4;V7#hZaby&wPVgc1iGzNMQpHG)=I5C!vghvueF%`3 zkIk`rwiKVN0J=V}AD*M9^7rT5EB_nwKsiB`UxK?a-wW6eFk!boP(paNn-7FKI;sGK z-O&~2_&_I1HHJAcYz4p6guE$hs1`A!xiV4ib292*QZM7DB4 zZs$t4-%ZL@o>&|HSK^B+9+3;Aj-5NdLDML(+)f|Mwa2;6V62T@85gMUq^Mvu%dZqT zj*aoTlh%aD!a36HaS)PIRJvhjH_vu9MLOA=x{(!@a%7u&O?O@HfTdC@U*~DCS+jZmc>R4T`C>-E9~bbCx{eMuWa7iDDcf%_X%}K`Jc@Tt zdr>ZcHYd}sfKPwrSlt)%MqhgMxgvni9i57h5_5%lnb~b#YrfUoWR9BeFyCu_#QeDV zHS<5r@0oR$g_fljyQS8$+Tyj`W=UFlEe9<3TJEnXAgR)Ae1~KGz}F zeXa*xkGg*AI_5gzdd+nivxvExS;Ab$e4TMJwM-pz3$vc_Gp$UR>0)*;dzfD40CSjm zh=+?uiAi|PO9_!rI_ BW*h(j literal 0 HcmV?d00001 diff --git a/azure-pipelines/e2e-ports/vcpkg-msvc-2013/release/test_dll.lib b/azure-pipelines/e2e-ports/vcpkg-msvc-2013/release/test_dll.lib new file mode 100644 index 0000000000000000000000000000000000000000..06996d5d10a2ee9853ca2cfa645c3dd0df27b33f GIT binary patch literal 1716 zcmcIlyG|QH6g|6Z9w#*`>;|Egl z0aQ``fF_l{AVrFFY4Qyz=-}Sf!t38~bK+mK`tS zGUCZ3U^lT!=(NdO~&aRyjDAaMzd`uqt|+}hbL2V(u>?uT-5C)h5Fuznnh+R+h& zDDC#M;kZE3bTLexKZ+TBpJ>d>Z7_TP>DPf!472GFyBOA`Fi zC?FUxk)WSNmY);JL;l_$r3ybyS>mW3tAx9fmo?c>`i6zSUsoEF6wNqAMa@Xp>Yq*y z=6Cxdutt+FN|0j#skL;oRtYQfS+z7xlOOc`kpLwJ1!Q_sZ%M+Kh6 z@Pb85=s_)DDm6wRAINQjzKiphTg_^>ecWz@_G0<9?H5a%(ds`PEAvJ^fVdXTQq&Ux z3DeDx7u9yFL+)Oj|HjpoGRS+lv4191)CDR(BZmr!;$useLR{7%AlC6>gz-7Gi8ulmd&e|FTQ2J$U?u)cjxVaTjr@$F&p`o=}o(3uEJUGrxN5i-24ub(^q79 ccwBT{NkyCgL->aJ2ESf2QGDb2^RAZ**HZ&WnE(I) literal 0 HcmV?d00001 diff --git a/azure-pipelines/e2e-ports/vcpkg-msvc-2013/test.c b/azure-pipelines/e2e-ports/vcpkg-msvc-2013/test.c new file mode 100644 index 0000000000..69fc354ef0 --- /dev/null +++ b/azure-pipelines/e2e-ports/vcpkg-msvc-2013/test.c @@ -0,0 +1,17 @@ +#include +#include + +BOOLEAN WINAPI DllMain(HINSTANCE hDllHandle, DWORD nReason, LPVOID Reserved) +{ + (void)Reserved; + if (nReason == DLL_PROCESS_ATTACH) { + DisableThreadLibraryCalls( hDllHandle ); + } + + return TRUE; +} + +int __cdecl export_me() { + puts("You called the exported function!"); + return 42; +} diff --git a/azure-pipelines/e2e-ports/vcpkg-msvc-2013/test.def b/azure-pipelines/e2e-ports/vcpkg-msvc-2013/test.def new file mode 100644 index 0000000000..aa9fb49c31 --- /dev/null +++ b/azure-pipelines/e2e-ports/vcpkg-msvc-2013/test.def @@ -0,0 +1,4 @@ +LIBRARY test_dll + +EXPORTS +export_me diff --git a/azure-pipelines/e2e-ports/vcpkg-msvc-2013/test.h b/azure-pipelines/e2e-ports/vcpkg-msvc-2013/test.h new file mode 100644 index 0000000000..10d2052384 --- /dev/null +++ b/azure-pipelines/e2e-ports/vcpkg-msvc-2013/test.h @@ -0,0 +1 @@ + // empty test header diff --git a/azure-pipelines/e2e-ports/vcpkg-msvc-2013/vcpkg.json b/azure-pipelines/e2e-ports/vcpkg-msvc-2013/vcpkg.json new file mode 100644 index 0000000000..ffc1c97194 --- /dev/null +++ b/azure-pipelines/e2e-ports/vcpkg-msvc-2013/vcpkg.json @@ -0,0 +1,12 @@ +{ + "name": "vcpkg-msvc-2013", + "version": "1", + "features": { + "policy": { + "description": "Set VCPKG_POLICY_ALLOW_OBSOLETE_MSVCRT" + }, + "release-only": { + "description": "Only install the release DLL" + } + } +} diff --git a/azure-pipelines/e2e-ports/vcpkg-policy-absolute-paths/portfile.cmake b/azure-pipelines/e2e-ports/vcpkg-policy-absolute-paths/portfile.cmake new file mode 100644 index 0000000000..bee25ae80a --- /dev/null +++ b/azure-pipelines/e2e-ports/vcpkg-policy-absolute-paths/portfile.cmake @@ -0,0 +1,30 @@ +file(MAKE_DIRECTORY "${CURRENT_PACKAGES_DIR}/share/${PORT}") +file(WRITE "${CURRENT_PACKAGES_DIR}/share/${PORT}/copyright" "N/A") + +set(PROBLEM_TEXT "") +if("build-dir" IN_LIST FEATURES) + string(APPEND PROBLEM_TEXT "build-dir: ${CURRENT_BUILDTREES_DIR}\n") +endif() +if("downloads" IN_LIST FEATURES) + string(APPEND PROBLEM_TEXT "downloads: ${DOWNLOADS}\n") +endif() +if("installed-root" IN_LIST FEATURES) + string(APPEND PROBLEM_TEXT "installed-root: ${CURRENT_INSTALLED_DIR}\n") +endif() +if("package-dir" IN_LIST FEATURES) + string(APPEND PROBLEM_TEXT "package-dir: ${CURRENT_PACKAGES_DIR}\n") +endif() +if("pkgconfig" IN_LIST FEATURES) + file(MAKE_DIRECTORY "${CURRENT_PACKAGES_DIR}/share/pkgconfig") + file(WRITE "${CURRENT_PACKAGES_DIR}/share/pkgconfig/vcpkg-policy-absolute-paths.pc" "${PROBLEM_TEXT}") +endif() + +file(MAKE_DIRECTORY "${CURRENT_PACKAGES_DIR}/include") +file(WRITE "${CURRENT_PACKAGES_DIR}/include/vcpkg-policy-absolute-paths.h" "${PROBLEM_TEXT}") + +file(MAKE_DIRECTORY "${CURRENT_PACKAGES_DIR}/tools/${PORT}/bin") +file(WRITE "${CURRENT_PACKAGES_DIR}/tools/${PORT}/bin/port-config.sh" "${PROBLEM_TEXT}") + +if("policy" IN_LIST FEATURES) + set(VCPKG_POLICY_SKIP_ABSOLUTE_PATHS_CHECK enabled) +endif() diff --git a/azure-pipelines/e2e-ports/vcpkg-policy-absolute-paths/vcpkg.json b/azure-pipelines/e2e-ports/vcpkg-policy-absolute-paths/vcpkg.json new file mode 100644 index 0000000000..eef114b5e7 --- /dev/null +++ b/azure-pipelines/e2e-ports/vcpkg-policy-absolute-paths/vcpkg.json @@ -0,0 +1,24 @@ +{ + "name": "vcpkg-policy-absolute-paths", + "version": "1", + "features": { + "build-dir": { + "description": "write CURRENT_BUILDTREES_DIR into the file" + }, + "downloads": { + "description": "write DOWNLOADS into the file" + }, + "installed-root": { + "description": "write CURRENT_INSTALLED_DIR into the file" + }, + "package-dir": { + "description": "write CURRENT_PACKAGES_DIR into the file" + }, + "pkgconfig": { + "description": "also add a pkgconfig file" + }, + "policy": { + "description": "turn on VCPKG_POLICY_SKIP_ABSOLUTE_PATHS_CHECK" + } + } +} diff --git a/azure-pipelines/e2e-ports/vcpkg-policy-copyright/portfile.cmake b/azure-pipelines/e2e-ports/vcpkg-policy-copyright/portfile.cmake new file mode 100644 index 0000000000..42be47841b --- /dev/null +++ b/azure-pipelines/e2e-ports/vcpkg-policy-copyright/portfile.cmake @@ -0,0 +1,26 @@ +set(VCPKG_POLICY_EMPTY_INCLUDE_FOLDER enabled) + +if("copyright-directory" IN_LIST FEATURES) + file(MAKE_DIRECTORY "${CURRENT_PACKAGES_DIR}/share/${PORT}/copyright") + file(WRITE "${CURRENT_PACKAGES_DIR}/share/${PORT}/copyright/LICENSE.txt" "this is some license text") + file(WRITE "${CURRENT_PACKAGES_DIR}/share/${PORT}/copyright/COPYING" "this is some different license text") +else() + # Intentionally do not create "${CURRENT_PACKAGES_DIR}/share/${PORT}/copyright" +endif() + +if("source" IN_LIST FEATURES) + set(SOURCE_PATH "${CURRENT_BUILDTREES_DIR}/src/v1.16.3-6f5be3c3eb.clean") + file(MAKE_DIRECTORY "${SOURCE_PATH}") + file(WRITE "${SOURCE_PATH}/LICENSE.txt" "this is some license text") +endif() + +if("source2" IN_LIST FEATURES) + set(SOURCE_PATH "${CURRENT_BUILDTREES_DIR}/src/v1.3.1-2e5db616bf.clean") + file(MAKE_DIRECTORY "${SOURCE_PATH}") + file(WRITE "${SOURCE_PATH}/LICENSE.txt" "this is some license text") + file(WRITE "${SOURCE_PATH}/COPYING" "this is some different license text") +endif() + +if ("policy" IN_LIST FEATURES) + set(VCPKG_POLICY_SKIP_COPYRIGHT_CHECK enabled) +endif() diff --git a/azure-pipelines/e2e-ports/vcpkg-policy-copyright/vcpkg.json b/azure-pipelines/e2e-ports/vcpkg-policy-copyright/vcpkg.json new file mode 100644 index 0000000000..c03d160fc9 --- /dev/null +++ b/azure-pipelines/e2e-ports/vcpkg-policy-copyright/vcpkg.json @@ -0,0 +1,18 @@ +{ + "name": "vcpkg-policy-copyright", + "version": "1", + "features": { + "policy": { + "description": "enable VCPKG_POLICY_SKIP_COPYRIGHT_CHECK" + }, + "source": { + "description": "Create a source so that ${SOURCE_PATH} can be assumed to work" + }, + "source2": { + "description": "Create another source so that ${SOURCE_PATH} can't be assumed to work" + }, + "copyright-directory": { + "description": "create ${CURRENT_PACKAGES_DIR}/share/${PORT}/copyright as a directory" + } + } +} diff --git a/azure-pipelines/e2e-ports/vcpkg-policy-empty-folders/portfile.cmake b/azure-pipelines/e2e-ports/vcpkg-policy-empty-folders/portfile.cmake new file mode 100644 index 0000000000..3bf8d7a14a --- /dev/null +++ b/azure-pipelines/e2e-ports/vcpkg-policy-empty-folders/portfile.cmake @@ -0,0 +1,8 @@ +set(VCPKG_POLICY_EMPTY_INCLUDE_FOLDER enabled) +file(MAKE_DIRECTORY "${CURRENT_PACKAGES_DIR}/share/${PORT}") +file(WRITE "${CURRENT_PACKAGES_DIR}/share/${PORT}/copyright" "this is some license text") +file(MAKE_DIRECTORY "${CURRENT_PACKAGES_DIR}/empty-directory") +file(MAKE_DIRECTORY "${CURRENT_PACKAGES_DIR}/root/empty-inner-directory") +if("policy" IN_LIST FEATURES) + set(VCPKG_POLICY_ALLOW_EMPTY_FOLDERS enabled) +endif() diff --git a/azure-pipelines/e2e-ports/vcpkg-policy-empty-folders/vcpkg.json b/azure-pipelines/e2e-ports/vcpkg-policy-empty-folders/vcpkg.json new file mode 100644 index 0000000000..b13a15e240 --- /dev/null +++ b/azure-pipelines/e2e-ports/vcpkg-policy-empty-folders/vcpkg.json @@ -0,0 +1,9 @@ +{ + "name": "vcpkg-policy-empty-folders", + "version": "1", + "features": { + "policy": { + "description": "enable VCPKG_POLICY_ALLOW_EMPTY_FOLDERS" + } + } +} diff --git a/azure-pipelines/e2e-ports/vcpkg-policy-empty-package/portfile.cmake b/azure-pipelines/e2e-ports/vcpkg-policy-empty-package/portfile.cmake new file mode 100644 index 0000000000..065116c276 --- /dev/null +++ b/azure-pipelines/e2e-ports/vcpkg-policy-empty-package/portfile.cmake @@ -0,0 +1 @@ +set(VCPKG_POLICY_EMPTY_PACKAGE enabled) diff --git a/azure-pipelines/e2e-ports/vcpkg-policy-empty-package/vcpkg.json b/azure-pipelines/e2e-ports/vcpkg-policy-empty-package/vcpkg.json new file mode 100644 index 0000000000..52bd12b38f --- /dev/null +++ b/azure-pipelines/e2e-ports/vcpkg-policy-empty-package/vcpkg.json @@ -0,0 +1,4 @@ +{ + "name": "vcpkg-policy-empty-package", + "version": "1" +} diff --git a/azure-pipelines/e2e-ports/vcpkg-policy-forgot-usage/portfile.cmake b/azure-pipelines/e2e-ports/vcpkg-policy-forgot-usage/portfile.cmake new file mode 100644 index 0000000000..49feae47e6 --- /dev/null +++ b/azure-pipelines/e2e-ports/vcpkg-policy-forgot-usage/portfile.cmake @@ -0,0 +1,6 @@ +set(VCPKG_POLICY_EMPTY_INCLUDE_FOLDER enabled) +file(MAKE_DIRECTORY "${CURRENT_PACKAGES_DIR}/share/${PORT}") +file(WRITE "${CURRENT_PACKAGES_DIR}/share/${PORT}/copyright" "this is some license text") +if("policy" IN_LIST FEATURES) + set(VCPKG_POLICY_SKIP_USAGE_INSTALL_CHECK enabled) +endif() diff --git a/azure-pipelines/e2e-ports/vcpkg-policy-forgot-usage/usage b/azure-pipelines/e2e-ports/vcpkg-policy-forgot-usage/usage new file mode 100644 index 0000000000..12c77dbfe1 --- /dev/null +++ b/azure-pipelines/e2e-ports/vcpkg-policy-forgot-usage/usage @@ -0,0 +1 @@ +usage text one forgot to install diff --git a/azure-pipelines/e2e-ports/vcpkg-policy-forgot-usage/vcpkg.json b/azure-pipelines/e2e-ports/vcpkg-policy-forgot-usage/vcpkg.json new file mode 100644 index 0000000000..412ca2f89a --- /dev/null +++ b/azure-pipelines/e2e-ports/vcpkg-policy-forgot-usage/vcpkg.json @@ -0,0 +1,9 @@ +{ + "name": "vcpkg-policy-forgot-usage", + "version": "1", + "features": { + "policy": { + "description": "enable VCPKG_POLICY_SKIP_USAGE_INSTALL_CHECK" + } + } +} diff --git a/azure-pipelines/e2e-ports/vcpkg-policy-include-folder/portfile.cmake b/azure-pipelines/e2e-ports/vcpkg-policy-include-folder/portfile.cmake new file mode 100644 index 0000000000..725616e071 --- /dev/null +++ b/azure-pipelines/e2e-ports/vcpkg-policy-include-folder/portfile.cmake @@ -0,0 +1,46 @@ +file(MAKE_DIRECTORY "${CURRENT_PACKAGES_DIR}/share/${PORT}") +file(WRITE "${CURRENT_PACKAGES_DIR}/share/${PORT}/copyright" "N/A") + +if("do-install" IN_LIST FEATURES) + file(MAKE_DIRECTORY "${CURRENT_PACKAGES_DIR}/include") + file(WRITE "${CURRENT_PACKAGES_DIR}/include/vcpkg-policy-include-folder.h" "") +endif() + +if("do-install-debug" IN_LIST FEATURES) + file(MAKE_DIRECTORY "${CURRENT_PACKAGES_DIR}/debug/include") + file(WRITE "${CURRENT_PACKAGES_DIR}/debug/include/vcpkg-policy-include-folder.h" "") +endif() + +if("do-install-debug-share" IN_LIST FEATURES) + file(MAKE_DIRECTORY "${CURRENT_PACKAGES_DIR}/debug/share") + file(WRITE "${CURRENT_PACKAGES_DIR}/debug/share/example.txt" "") +endif() + +if("do-install-restricted" IN_LIST FEATURES) + file(MAKE_DIRECTORY "${CURRENT_PACKAGES_DIR}/include") + file(WRITE "${CURRENT_PACKAGES_DIR}/include/json.h" "") +endif() + +if("do-install-vcpkg-port-config" IN_LIST FEATURES) + file(WRITE "${CURRENT_PACKAGES_DIR}/share/${PORT}/vcpkg-port-config.cmake" "") +endif() + +if("policy-empty-include-folder" IN_LIST FEATURES) + set(VCPKG_POLICY_EMPTY_INCLUDE_FOLDER enabled) +endif() + +if("policy-cmake-helper-port" IN_LIST FEATURES) + set(VCPKG_POLICY_CMAKE_HELPER_PORT enabled) +endif() + +if("policy-allow-restricted-headers" IN_LIST FEATURES) + set(VCPKG_POLICY_ALLOW_RESTRICTED_HEADERS enabled) +endif() + +if("policy-allow-debug-include" IN_LIST FEATURES) + set(VCPKG_POLICY_ALLOW_DEBUG_INCLUDE enabled) +endif() + +if("policy-allow-debug-share" IN_LIST FEATURES) + set(VCPKG_POLICY_ALLOW_DEBUG_SHARE enabled) +endif() diff --git a/azure-pipelines/e2e-ports/vcpkg-policy-include-folder/vcpkg.json b/azure-pipelines/e2e-ports/vcpkg-policy-include-folder/vcpkg.json new file mode 100644 index 0000000000..3fd01f14cf --- /dev/null +++ b/azure-pipelines/e2e-ports/vcpkg-policy-include-folder/vcpkg.json @@ -0,0 +1,36 @@ +{ + "name": "vcpkg-policy-include-folder", + "version": "1", + "features": { + "do-install": { + "description": "Put a header in include" + }, + "do-install-debug": { + "description": "Put a header in debug/include" + }, + "do-install-debug-share": { + "description": "Put a file in debug/share" + }, + "do-install-restricted": { + "description": "Put a restricted header in include" + }, + "do-install-vcpkg-port-config": { + "description": "install a share/${PORT}/vcpkg-port-config.cmake file" + }, + "policy-allow-debug-include": { + "description": "Turn on VCPKG_POLICY_ALLOW_DEBUG_INCLUDE" + }, + "policy-allow-debug-share": { + "description": "Turn on VCPKG_POLICY_ALLOW_DEBUG_SHARE" + }, + "policy-allow-restricted-headers": { + "description": "Turn on VCPKG_POLICY_ALLOW_RESTRICTED_HEADERS" + }, + "policy-cmake-helper-port": { + "description": "Turn on VCPKG_POLICY_CMAKE_HELPER_PORT" + }, + "policy-empty-include-folder": { + "description": "Turn on VCPKG_POLICY_EMPTY_INCLUDE_FOLDER" + } + } +} diff --git a/azure-pipelines/e2e-ports/vcpkg-policy-misplaced-cmake-files/portfile.cmake b/azure-pipelines/e2e-ports/vcpkg-policy-misplaced-cmake-files/portfile.cmake new file mode 100644 index 0000000000..2f9ab728f8 --- /dev/null +++ b/azure-pipelines/e2e-ports/vcpkg-policy-misplaced-cmake-files/portfile.cmake @@ -0,0 +1,29 @@ +file(MAKE_DIRECTORY "${CURRENT_PACKAGES_DIR}/share/${PORT}") +file(WRITE "${CURRENT_PACKAGES_DIR}/share/legitimate.cmake" "# Hello!") +file(WRITE "${CURRENT_PACKAGES_DIR}/share/${PORT}/copyright" "N/A") + +# Avoid the empty include directory check +file(MAKE_DIRECTORY "${CURRENT_PACKAGES_DIR}/include") +file(WRITE "${CURRENT_PACKAGES_DIR}/include/vcpkg-include-folder-policies.h" "") + +if("do-install-cmake" IN_LIST FEATURES) + file(MAKE_DIRECTORY "${CURRENT_PACKAGES_DIR}/cmake") + file(WRITE "${CURRENT_PACKAGES_DIR}/cmake/some_cmake.cmake" "# Hello!") + file(MAKE_DIRECTORY "${CURRENT_PACKAGES_DIR}/debug/cmake") + file(WRITE "${CURRENT_PACKAGES_DIR}/debug/cmake/some_cmake.cmake" "# Hello!") +endif() + +if("do-install-lib" IN_LIST FEATURES) + file(MAKE_DIRECTORY "${CURRENT_PACKAGES_DIR}/lib/cmake") + file(WRITE "${CURRENT_PACKAGES_DIR}/lib/cmake/some_cmake.cmake" "# Hello!") + file(MAKE_DIRECTORY "${CURRENT_PACKAGES_DIR}/debug/lib/cmake") + file(WRITE "${CURRENT_PACKAGES_DIR}/debug/lib/cmake/some_cmake.cmake" "# Hello!") +endif() + +if("policy-skip-misplaced-cmake-files-check" IN_LIST FEATURES) + set(VCPKG_POLICY_SKIP_MISPLACED_CMAKE_FILES_CHECK enabled) +endif() + +if("policy-skip-lib-cmake-merge-check" IN_LIST FEATURES) + set(VCPKG_POLICY_SKIP_LIB_CMAKE_MERGE_CHECK enabled) +endif() diff --git a/azure-pipelines/e2e-ports/vcpkg-policy-misplaced-cmake-files/vcpkg.json b/azure-pipelines/e2e-ports/vcpkg-policy-misplaced-cmake-files/vcpkg.json new file mode 100644 index 0000000000..1d997115ab --- /dev/null +++ b/azure-pipelines/e2e-ports/vcpkg-policy-misplaced-cmake-files/vcpkg.json @@ -0,0 +1,18 @@ +{ + "name": "vcpkg-policy-misplaced-cmake-files", + "version": "1", + "features": { + "do-install-cmake": { + "description": "Put CMake files in cmake and debug/cmake" + }, + "do-install-lib": { + "description": "Put CMake files in lib and debug/lib" + }, + "policy-skip-misplaced-cmake-files-check": { + "description": "Turn on VCPKG_POLICY_SKIP_MISPLACED_CMAKE_FILES_CHECK" + }, + "policy-skip-lib-cmake-merge-check": { + "description": "Turn on VCPKG_POLICY_SKIP_LIB_CMAKE_MERGE_CHECK" + } + } +} diff --git a/azure-pipelines/e2e-ports/vcpkg-policy-misplaced-pkgconfig/portfile.cmake b/azure-pipelines/e2e-ports/vcpkg-policy-misplaced-pkgconfig/portfile.cmake new file mode 100644 index 0000000000..a0ce407231 --- /dev/null +++ b/azure-pipelines/e2e-ports/vcpkg-policy-misplaced-pkgconfig/portfile.cmake @@ -0,0 +1,124 @@ +file(MAKE_DIRECTORY "${CURRENT_PACKAGES_DIR}/share/${PORT}") +file(WRITE "${CURRENT_PACKAGES_DIR}/share/${PORT}/copyright" "N/A") + +# Avoid the empty include directory check +file(MAKE_DIRECTORY "${CURRENT_PACKAGES_DIR}/include") +file(WRITE "${CURRENT_PACKAGES_DIR}/include/vcpkg-misplaced-pkgconfig.h" "") + +set(ARCH_DEPENDENT_DEBUG_PC_CONTENT [[prefix=${pcfiledir}/../.. +exec_prefix=${prefix} +libdir=${prefix}/lib +sharedlibdir=${prefix}/lib +includedir=${prefix}/../include + +Name: zlib +Description: zlib compression library +Version: 1.3.1 + + +Libs: "-L${libdir}" "-L${sharedlibdir}" -lz +Requires: +Cflags: "-I${includedir}" +]]) + +if("install-arch-dependent-good" IN_LIST FEATURES) + file(MAKE_DIRECTORY "${CURRENT_PACKAGES_DIR}/debug/lib/pkgconfig") + file(WRITE "${CURRENT_PACKAGES_DIR}/debug/lib/pkgconfig/zlib.pc" "${ARCH_DEPENDENT_DEBUG_PC_CONTENT}") +endif() + +set(ARCH_DEPENDENT_PC_CONTENT [[prefix=${pcfiledir}/../.. +exec_prefix=${prefix} +libdir=${prefix}/lib +sharedlibdir=${prefix}/lib +includedir=${prefix}/include + +Name: zlib +Description: zlib compression library +Version: 1.3.1 + +Requires: +Libs: "-L${libdir}" "-L${sharedlibdir}" -lzlib +Cflags: "-I${includedir}" +]]) + +if("install-arch-dependent-good-release-only" IN_LIST FEATURES) + file(MAKE_DIRECTORY "${CURRENT_PACKAGES_DIR}/lib/pkgconfig") + file(WRITE "${CURRENT_PACKAGES_DIR}/lib/pkgconfig/zlib.pc" "${ARCH_DEPENDENT_PC_CONTENT}") +endif() + +if("install-arch-dependent-bad-share" IN_LIST FEATURES) + file(MAKE_DIRECTORY "${CURRENT_PACKAGES_DIR}/share/pkgconfig") + file(WRITE "${CURRENT_PACKAGES_DIR}/share/pkgconfig/zlib.pc" "${ARCH_DEPENDENT_PC_CONTENT}") +endif() + +if("install-arch-dependent-bad-misplaced" IN_LIST FEATURES) + file(MAKE_DIRECTORY "${CURRENT_PACKAGES_DIR}/debug/bin/pkgconfig") + file(WRITE "${CURRENT_PACKAGES_DIR}/debug/bin/pkgconfig/zlib.pc" "${ARCH_DEPENDENT_DEBUG_PC_CONTENT}") +endif() + +if("install-arch-dependent-bad-misplaced-release-only" IN_LIST FEATURES) + file(MAKE_DIRECTORY "${CURRENT_PACKAGES_DIR}/bin/pkgconfig") + file(WRITE "${CURRENT_PACKAGES_DIR}/bin/pkgconfig/zlib.pc" "${ARCH_DEPENDENT_PC_CONTENT}") +endif() + +set(ARCH_AGNOSTIC_WITH_EMPTY_LIBS_PC_CONTENT [[prefix=${pcfiledir}/../.. +exec_prefix=${prefix} +libdir=${prefix}/lib +sharedlibdir=${prefix}/lib +includedir=${prefix}/include + +Name: zlib +Description: zlib compression library +Version: 1.3.1 + +Requires: +Libs: +Cflags: "-I${includedir}" +]]) + +if("install-arch-agnostic-empty-libs-good" IN_LIST FEATURES) + file(MAKE_DIRECTORY "${CURRENT_PACKAGES_DIR}/lib/pkgconfig") + file(WRITE "${CURRENT_PACKAGES_DIR}/lib/pkgconfig/zlib-no-libs.pc" "${ARCH_AGNOSTIC_WITH_EMPTY_LIBS_PC_CONTENT}") +endif() + +if("install-arch-agnostic-empty-libs-good-share" IN_LIST FEATURES) + file(MAKE_DIRECTORY "${CURRENT_PACKAGES_DIR}/share/pkgconfig") + file(WRITE "${CURRENT_PACKAGES_DIR}/share/pkgconfig/zlib-no-libs.pc" "${ARCH_AGNOSTIC_WITH_EMPTY_LIBS_PC_CONTENT}") +endif() + +if("install-arch-agnostic-empty-libs-bad-misplaced" IN_LIST FEATURES) + file(MAKE_DIRECTORY "${CURRENT_PACKAGES_DIR}/bin/pkgconfig") + file(WRITE "${CURRENT_PACKAGES_DIR}/bin/pkgconfig/zlib-no-libs.pc" "${ARCH_AGNOSTIC_WITH_EMPTY_LIBS_PC_CONTENT}") +endif() + +set(ARCH_AGNOSTIC_PC_CONTENT [[prefix=${pcfiledir}/../.. +exec_prefix=${prefix} +includedir=${prefix}/include + +Name: libmorton +Description: C++ header-only library to efficiently encode/decode Morton codes in/from 2D/3D coordinates +URL: https://github.com/Forceflow/libmorton +Version: 0.2.8 + + +Cflags: "-I${includedir}" +]]) + +if("install-arch-agnostic-good" IN_LIST FEATURES) + file(MAKE_DIRECTORY "${CURRENT_PACKAGES_DIR}/lib/pkgconfig") + file(WRITE "${CURRENT_PACKAGES_DIR}/lib/pkgconfig/libmorton.pc" "${ARCH_AGNOSTIC_PC_CONTENT}") +endif() + +if("install-arch-agnostic-good-share" IN_LIST FEATURES) + file(MAKE_DIRECTORY "${CURRENT_PACKAGES_DIR}/share/pkgconfig") + file(WRITE "${CURRENT_PACKAGES_DIR}/share/pkgconfig/libmorton.pc" "${ARCH_AGNOSTIC_PC_CONTENT}") +endif() + +if("install-arch-agnostic-bad-misplaced" IN_LIST FEATURES) + file(MAKE_DIRECTORY "${CURRENT_PACKAGES_DIR}/bin/pkgconfig") + file(WRITE "${CURRENT_PACKAGES_DIR}/bin/pkgconfig/libmorton.pc" "${ARCH_AGNOSTIC_PC_CONTENT}") +endif() + +if("policy" IN_LIST FEATURES) + set(VCPKG_POLICY_SKIP_PKGCONFIG_CHECK enabled) +endif() diff --git a/azure-pipelines/e2e-ports/vcpkg-policy-misplaced-pkgconfig/vcpkg.json b/azure-pipelines/e2e-ports/vcpkg-policy-misplaced-pkgconfig/vcpkg.json new file mode 100644 index 0000000000..798b916bb6 --- /dev/null +++ b/azure-pipelines/e2e-ports/vcpkg-policy-misplaced-pkgconfig/vcpkg.json @@ -0,0 +1,58 @@ +{ + "name": "vcpkg-policy-misplaced-pkgconfig", + "version": "1", + "features": { + "install-arch-agnostic-bad-misplaced": { + "description": "Install arch-agnostic bad pc files to an illegal place" + }, + "install-arch-agnostic-empty-libs-bad-misplaced": { + "description": "Install arch-agnostic bad pc files with empty libs directive to an illegal place" + }, + "install-arch-agnostic-empty-libs-good": { + "description": "Install arch-agnostic good pc files with empty libs directive" + }, + "install-arch-agnostic-empty-libs-good-share": { + "description": "Install arch-agnostic good pc files with empty libs directive to share" + }, + "install-arch-agnostic-good": { + "description": "Install arch-agnostic good pc files" + }, + "install-arch-agnostic-good-share": { + "description": "Install arch-agnostic good pc files to share" + }, + "install-arch-dependent-bad-misplaced": { + "description": "Install arch-dependent bad pc files to an illegal place", + "dependencies": [ + { + "name": "vcpkg-policy-misplaced-pkgconfig", + "features": [ + "install-arch-dependent-bad-misplaced-release-only" + ] + } + ] + }, + "install-arch-dependent-bad-misplaced-release-only": { + "description": "Install arch-dependent bad pc files to an illegal place" + }, + "install-arch-dependent-bad-share": { + "description": "Install arch-dependent bad pc files to share" + }, + "install-arch-dependent-good": { + "description": "Install arch-dependent good pc files", + "dependencies": [ + { + "name": "vcpkg-policy-misplaced-pkgconfig", + "features": [ + "install-arch-dependent-good-release-only" + ] + } + ] + }, + "install-arch-dependent-good-release-only": { + "description": "Install arch-dependent good pc files" + }, + "policy": { + "description": "Turn on VCPKG_POLICY_SKIP_PKGCONFIG_CHECK" + } + } +} diff --git a/azure-pipelines/e2e-ports/vcpkg-policy-misplaced-regular-files/portfile.cmake b/azure-pipelines/e2e-ports/vcpkg-policy-misplaced-regular-files/portfile.cmake new file mode 100644 index 0000000000..ff699e46b9 --- /dev/null +++ b/azure-pipelines/e2e-ports/vcpkg-policy-misplaced-regular-files/portfile.cmake @@ -0,0 +1,16 @@ +file(MAKE_DIRECTORY "${CURRENT_PACKAGES_DIR}/share/${PORT}") +file(WRITE "${CURRENT_PACKAGES_DIR}/share/${PORT}/copyright" "N/A") + +# Avoid the empty include directory check +file(MAKE_DIRECTORY "${CURRENT_PACKAGES_DIR}/include") +file(WRITE "${CURRENT_PACKAGES_DIR}/include/vcpkg-misplaced-regular-files.h" "") + +file(MAKE_DIRECTORY "${CURRENT_PACKAGES_DIR}/debug") +file(WRITE "${CURRENT_PACKAGES_DIR}/debug/.DS_Store" "") +file(WRITE "${CURRENT_PACKAGES_DIR}/debug/bad_debug_file.txt" "") +file(WRITE "${CURRENT_PACKAGES_DIR}/.DS_Store" "") +file(WRITE "${CURRENT_PACKAGES_DIR}/bad_file.txt" "") + +if("policy" IN_LIST FEATURES) + set(VCPKG_POLICY_SKIP_MISPLACED_REGULAR_FILES_CHECK enabled) +endif() diff --git a/azure-pipelines/e2e-ports/vcpkg-policy-misplaced-regular-files/vcpkg.json b/azure-pipelines/e2e-ports/vcpkg-policy-misplaced-regular-files/vcpkg.json new file mode 100644 index 0000000000..16ec1394f2 --- /dev/null +++ b/azure-pipelines/e2e-ports/vcpkg-policy-misplaced-regular-files/vcpkg.json @@ -0,0 +1,9 @@ +{ + "name": "vcpkg-policy-misplaced-regular-files", + "version": "1", + "features": { + "policy": { + "description": "Turn on VCPKG_POLICY_SKIP_MISPLACED_REGULAR_FILES_CHECK" + } + } +} diff --git a/azure-pipelines/e2e-ports/vcpkg-policy-set-incorrectly/portfile.cmake b/azure-pipelines/e2e-ports/vcpkg-policy-set-incorrectly/portfile.cmake new file mode 100644 index 0000000000..880830f5d8 --- /dev/null +++ b/azure-pipelines/e2e-ports/vcpkg-policy-set-incorrectly/portfile.cmake @@ -0,0 +1 @@ +set(VCPKG_POLICY_EMPTY_PACKAGE ON) diff --git a/azure-pipelines/e2e-ports/vcpkg-policy-set-incorrectly/vcpkg.json b/azure-pipelines/e2e-ports/vcpkg-policy-set-incorrectly/vcpkg.json new file mode 100644 index 0000000000..adf28f644a --- /dev/null +++ b/azure-pipelines/e2e-ports/vcpkg-policy-set-incorrectly/vcpkg.json @@ -0,0 +1,4 @@ +{ + "name": "vcpkg-policy-set-incorrectly", + "version": "1" +} diff --git a/azure-pipelines/e2e-ports/vcpkg-policy-skip-all-post-build-checks/portfile.cmake b/azure-pipelines/e2e-ports/vcpkg-policy-skip-all-post-build-checks/portfile.cmake new file mode 100644 index 0000000000..ac0fccb6a8 --- /dev/null +++ b/azure-pipelines/e2e-ports/vcpkg-policy-skip-all-post-build-checks/portfile.cmake @@ -0,0 +1 @@ +set(VCPKG_POLICY_SKIP_ALL_POST_BUILD_CHECKS enabled) diff --git a/azure-pipelines/e2e-ports/vcpkg-policy-skip-all-post-build-checks/vcpkg.json b/azure-pipelines/e2e-ports/vcpkg-policy-skip-all-post-build-checks/vcpkg.json new file mode 100644 index 0000000000..2cc7e0f72f --- /dev/null +++ b/azure-pipelines/e2e-ports/vcpkg-policy-skip-all-post-build-checks/vcpkg.json @@ -0,0 +1,4 @@ +{ + "name": "vcpkg-policy-skip-all-post-build-checks", + "version": "1" +} diff --git a/azure-pipelines/e2e-ports/versions/baseline.json b/azure-pipelines/e2e-ports/versions/baseline.json deleted file mode 100644 index 2413f8afc6..0000000000 --- a/azure-pipelines/e2e-ports/versions/baseline.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "default": { - "vcpkg-internal-e2e-test-port": { "baseline": "1.0.0" } - } -} diff --git a/azure-pipelines/e2e-ports/versions/v-/vcpkg-internal-e2e-test-port.json b/azure-pipelines/e2e-ports/versions/v-/vcpkg-internal-e2e-test-port.json deleted file mode 100644 index ce7698ebb8..0000000000 --- a/azure-pipelines/e2e-ports/versions/v-/vcpkg-internal-e2e-test-port.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "versions": [ - { - "version-string": "1.0.0", - "git-tree": "1dc3e42a3c0cafe2884d379af4399273238b986e" - } - ] -} diff --git a/azure-pipelines/end-to-end-tests-dir/artifacts.ps1 b/azure-pipelines/end-to-end-tests-dir/artifacts.ps1 index db80240022..e729de17d1 100644 --- a/azure-pipelines/end-to-end-tests-dir/artifacts.ps1 +++ b/azure-pipelines/end-to-end-tests-dir/artifacts.ps1 @@ -210,7 +210,7 @@ try { # can't deactivate without postscript: $output = Run-VcpkgAndCaptureOutput -ForceExe deactivate Throw-IfNotFailed - Test-Match $output "no postscript file: rerun with the vcpkg shell function rather than executable" + Test-Match $output "no postscript file: run vcpkg-shell with the same arguments" $output = Run-VcpkgAndCaptureOutput deactivate Throw-IfFailed @@ -219,21 +219,21 @@ try { # can't activate without postscript: $output = Run-VcpkgAndCaptureOutput -ForceExe activate Throw-IfNotFailed - Test-Match $output "no postscript file: rerun with the vcpkg shell function rather than executable" + Test-Match $output "no postscript file: run vcpkg-shell with the same arguments" Test-Activations # unless --json passed $output = Run-VcpkgAndCaptureOutput -ForceExe activate --json (Join-Path $Project 'result.json') Throw-IfFailed Test-Match $output "Activating: $ProjectRegex" - Test-NoMatch $output "no postscript file: rerun with the vcpkg shell function rather than executable" + Test-NoMatch $output "no postscript file: run vcpkg-shell with the same arguments" Test-Activations # no shell activation # or --msbuild-props passed $output = Run-VcpkgAndCaptureOutput -ForceExe activate --msbuild-props (Join-Path $Project 'result.props') Throw-IfFailed Test-Match $output "Activating: $ProjectRegex" - Test-NoMatch $output "no postscript file: rerun with the vcpkg shell function rather than executable" + Test-NoMatch $output "no postscript file: run vcpkg-shell with the same arguments" Test-Activations # no shell activation } finally { Run-Vcpkg deactivate diff --git a/azure-pipelines/end-to-end-tests-dir/asset-caching.ps1 b/azure-pipelines/end-to-end-tests-dir/asset-caching.ps1 index fcf1792bbe..dfdd86e127 100644 --- a/azure-pipelines/end-to-end-tests-dir/asset-caching.ps1 +++ b/azure-pipelines/end-to-end-tests-dir/asset-caching.ps1 @@ -1,6 +1,107 @@ . $PSScriptRoot/../end-to-end-tests-prelude.ps1 +# Testing x-script Refresh-TestRoot Run-Vcpkg -TestArgs ($commonArgs + @('fetch', 'cmake')) Run-Vcpkg -TestArgs ($commonArgs + @("install", "vcpkg-test-x-script", "--x-binarysource=clear", "--overlay-ports=$PSScriptRoot/../e2e-ports", "--x-asset-sources=x-script,$TestScriptAssetCacheExe {url} {sha512} {dst};x-block-origin")) Throw-IfFailed + +$env:VCPKG_FORCE_DOWNLOADED_BINARIES = "ON" + +# Testing asset cache miss (not configured) + x-block-origin enabled +Refresh-TestRoot +$actual = Run-VcpkgAndCaptureOutput -TestArgs ($commonArgs + @("install", "vcpkg-internal-e2e-test-port", "--overlay-ports=$PSScriptRoot/../e2e-ports", "--x-asset-sources=clear;x-block-origin", "--downloads-root=$DownloadsRoot")) +$actual = $actual -replace "`r`n", "`n" + +$expected = @( +"A suitable version of .* was not found \(required v[0-9\.]+\)." +"error: Missing .* and downloads are blocked by x-block-origin." +) -join "`n" + +if (-not ($actual -match $expected)) { + throw "Failure: asset cache miss (not configured) + x-block-origin enabled" +} + +# Testing asset cache miss (not configured) + x-block-origin disabled +$actual = Run-VcpkgAndCaptureOutput -TestArgs ($commonArgs + @("install", "vcpkg-internal-e2e-test-port", "--overlay-ports=$PSScriptRoot/../e2e-ports", "--x-asset-sources=clear;", "--downloads-root=$DownloadsRoot")) +$actual = $actual -replace "`r`n", "`n" + +$expected = @( +"A suitable version of .* was not found \(required v[0-9\.]+\)." +"Downloading .*." +) -join "`n" + +if (-not ($actual -match $expected)) { + throw "Failure: asset cache miss (not configured) + x-block-origin disabled" +} + +# Testing asset cache miss (configured) + x-block-origin enabled +Refresh-TestRoot +$actual = Run-VcpkgAndCaptureOutput -TestArgs ($commonArgs + @("install", "vcpkg-internal-e2e-test-port", "--overlay-ports=$PSScriptRoot/../e2e-ports", "--x-asset-sources=x-azurl,file://$AssetCache,,readwrite;x-block-origin", "--downloads-root=$DownloadsRoot")) +$actual = $actual -replace "`r`n", "`n" + +$expected = @( +"A suitable version of .* was not found \(required v[0-9\.]+\)." +"Asset cache miss for .* and downloads are blocked by x-block-origin" +) -join "`n" + +if (-not ($actual -match $expected)) { + throw "Failure: asset cache miss (configured) + x-block-origin disabled" +} + +# Testing asset cache miss (configured) + x-block-origin disabled +Refresh-TestRoot +$actual = Run-VcpkgAndCaptureOutput -TestArgs ($commonArgs + @("install", "vcpkg-internal-e2e-test-port", "--overlay-ports=$PSScriptRoot/../e2e-ports", "--x-asset-sources=x-azurl,file://$AssetCache,,readwrite;", "--downloads-root=$DownloadsRoot")) +$actual = $actual -replace "`r`n", "`n" + +$expected = @( +"A suitable version of .* was not found \(required v[0-9\.]+\)." +"Asset cache miss; downloading from .*" +"Successfully stored .* to .*." +) -join "`n" + +if (-not ($actual -match $expected)) { + throw "Failure: asset cache miss (configured) + x-block-origin disabled" +} + +# Testing asset cache hit +Refresh-Downloads +Run-Vcpkg -TestArgs ($commonArgs + @('remove', 'vcpkg-internal-e2e-test-port')) +$actual = Run-VcpkgAndCaptureOutput -TestArgs ($commonArgs + @("install", "vcpkg-internal-e2e-test-port", "--overlay-ports=$PSScriptRoot/../e2e-ports", "--x-asset-sources=x-azurl,file://$AssetCache,,readwrite;", "--downloads-root=$DownloadsRoot")) +$actual = $actual -replace "`r`n", "`n" + +$expected = @( +"A suitable version of .* was not found \(required v[0-9\.]+\)." +"Asset cache hit for .*; downloaded from: .*" +) -join "`n" + +if (-not ($actual -match $expected)) { + throw "Failure: asset cache hit" +} + +# Testing asset caching && x-block-orgin promises when --debug is passed (enabled) +Refresh-TestRoot +$actual = Run-VcpkgAndCaptureOutput -TestArgs ($commonArgs + @("install", "vcpkg-internal-e2e-test-port", "--overlay-ports=$PSScriptRoot/../e2e-ports", "--x-asset-sources=x-azurl,file://$AssetCache,,readwrite;x-block-origin", "--downloads-root=$DownloadsRoot", "--debug")) +$actual = $actual -replace "`r`n", "`n" + +# Define the regex pattern that accounts for multiline input +$expectedPattern = "(?s)" + + ".*\[DEBUG\] External asset downloads are blocked \(x-block-origin is enabled\)\.\.\.?" + + ".*\[DEBUG\] Asset caching is enabled\..*" + +if (-not ($actual -match $expectedPattern)) { + throw "Failure: couldn't find expected debug promises (asset caching enabled + x-block-origin enabled)" +} + +# Testing asset caching && x-block-orgin promises when --debug is passed (disabled) +Refresh-TestRoot +$actual = Run-VcpkgAndCaptureOutput -TestArgs ($commonArgs + @("install", "vcpkg-internal-e2e-test-port", "--overlay-ports=$PSScriptRoot/../e2e-ports", "--x-asset-sources=clear", "--downloads-root=$DownloadsRoot", "--debug")) +$actual = $actual -replace "`r`n", "`n" + +$expectedPattern = "(?s)" + + ".*\[DEBUG\] External asset downloads are allowed \(x-block-origin is disabled\)\.\.\.?" + + ".*\[DEBUG\] Asset cache is not configured.*" + +if (-not ($actual -match $expectedPattern)) { + throw "Failure: couldn't find expected debug promises (asset caching disabled + x-block-origin disabled)" +} diff --git a/azure-pipelines/end-to-end-tests-dir/build-test-ports.ps1 b/azure-pipelines/end-to-end-tests-dir/build-test-ports.ps1 index 937f410cce..9854e21678 100644 --- a/azure-pipelines/end-to-end-tests-dir/build-test-ports.ps1 +++ b/azure-pipelines/end-to-end-tests-dir/build-test-ports.ps1 @@ -20,20 +20,59 @@ if ($output -match 'vcpkg-internal-e2e-test-port3') { throw "Should not emit messages about -port3 while checking -port2" } -Run-Vcpkg @commonArgs --overlay-ports="$PSScriptRoot/../e2e-ports/overlays" install vcpkg-empty-port +# Note that broken-manifests contains ports that must not be 'visited' while trying to install these +Run-Vcpkg @commonArgs --overlay-ports="$PSScriptRoot/../e2e-ports/overlays" --overlay-ports="$PSScriptRoot/../e2e-ports/broken-manifests" install vcpkg-empty-port Throw-IfFailed -Run-Vcpkg @commonArgs --overlay-ports="$PSScriptRoot/../e2e-ports" install vcpkg-internal-e2e-test-port +Run-Vcpkg @commonArgs --overlay-ports="$PSScriptRoot/../e2e-ports" --overlay-ports="$PSScriptRoot/../e2e-ports/broken-manifests" install vcpkg-internal-e2e-test-port Throw-IfFailed -Run-Vcpkg @commonArgs --overlay-ports="$PSScriptRoot/../e2e-ports" install control-file +Run-Vcpkg @commonArgs --overlay-ports="$PSScriptRoot/../e2e-ports" --overlay-ports="$PSScriptRoot/../e2e-ports/broken-manifests" install control-file Throw-IfFailed -$output = Run-VcpkgAndCaptureOutput @commonArgs --overlay-ports="$PSScriptRoot/../e2e-ports/overlays" install broken-no-name + +$output = Run-VcpkgAndCaptureOutput @commonArgs --overlay-ports="$PSScriptRoot/../e2e-ports/broken-manifests" install broken-no-name Throw-IfNotFailed if ($output -notmatch "missing required field 'name'") { throw 'Did not detect missing field' } -$output = Run-VcpkgAndCaptureOutput @commonArgs --overlay-ports="$PSScriptRoot/../e2e-ports/overlays" install broken-no-version +$output = Run-VcpkgAndCaptureOutput @commonArgs --overlay-ports="$PSScriptRoot/../e2e-ports/broken-manifests" install broken-no-version Throw-IfNotFailed if ($output -notmatch 'expected a versioning field') { throw 'Did not detect missing field' } + +Remove-Problem-Matchers +$output = Run-VcpkgAndCaptureOutput @commonArgs --overlay-ports="$PSScriptRoot/../e2e-ports/broken-manifests" install malformed +Restore-Problem-Matchers +Throw-IfNotFailed +if ($output -notmatch 'Trailing comma') { + throw 'Did not detect malformed JSON' +} + +# Check for msgAlreadyInstalled vs. msgAlreadyInstalledNotHead +$output = Run-VcpkgAndCaptureOutput @commonArgs --overlay-ports="$PSScriptRoot/../e2e-ports" install vcpkg-internal-e2e-test-port3 +Throw-IfFailed +if ($output -notmatch 'vcpkg-internal-e2e-test-port3:[^ ]+ is already installed') { + throw 'Wrong already installed message' +} + +$output = Run-VcpkgAndCaptureOutput @commonArgs --overlay-ports="$PSScriptRoot/../e2e-ports" install vcpkg-internal-e2e-test-port3 --head +Throw-IfFailed +if ($output -notmatch 'vcpkg-internal-e2e-test-port3:[^ ]+ is already installed -- not building from HEAD') { + throw 'Wrong already installed message for --head' +} + +Refresh-TestRoot +$output = Run-VcpkgAndCaptureOutput @commonArgs --x-builtin-ports-root="$PSScriptRoot/../e2e-ports" install vcpkg-bad-spdx-license +Throw-IfFailed +$output = $output.Replace("`r`n", "`n") +$expected = @" +vcpkg.json: warning: $.license (an SPDX license expression): warning: Unknown license identifier 'BSD-new'. Known values are listed at https://spdx.org/licenses/ + on expression: BSD-new + ^ +"@ +$firstMatch = $output.IndexOf($expected) +if ($firstMatch -lt 0) { + throw 'Did not detect expected bad license' +} elseif ($output.IndexOf($expected, $firstMatch + 1) -ge 0) { + throw 'Duplicated bad license' +} diff --git a/azure-pipelines/end-to-end-tests-dir/ci-verify-versions.ps1 b/azure-pipelines/end-to-end-tests-dir/ci-verify-versions.ps1 new file mode 100644 index 0000000000..6ff05dc086 --- /dev/null +++ b/azure-pipelines/end-to-end-tests-dir/ci-verify-versions.ps1 @@ -0,0 +1,176 @@ +. "$PSScriptRoot/../end-to-end-tests-prelude.ps1" + +Refresh-TestRoot + +Copy-Item -Recurse "$PSScriptRoot/../e2e-assets/ci-verify-versions-registry" "$TestingRoot/ci-verify-versions-registry" +git -C "$TestingRoot/ci-verify-versions-registry" @gitConfigOptions init +git -C "$TestingRoot/ci-verify-versions-registry" @gitConfigOptions add -A +git -C "$TestingRoot/ci-verify-versions-registry" @gitConfigOptions commit -m testing +Move-Item "$TestingRoot/ci-verify-versions-registry/old-port-versions/has-local-edits" "$TestingRoot/ci-verify-versions-registry/ports" + +$expected = @" +$TestingRoot/ci-verify-versions-registry/ports/malformed/vcpkg.json:4:3: error: Unexpected character; expected property name + on expression: ~broken + ^ +$TestingRoot/ci-verify-versions-registry/versions/b-/bad-git-tree.json: error: bad-git-tree@1.1 git tree 000000070c5f496fcf1a97cf654d5e81f0d2685a does not match the port directory +$TestingRoot/ci-verify-versions-registry/ports/bad-git-tree: note: the port directory has git tree 6528b2c70c5f496fcf1a97cf654d5e81f0d2685a +$TestingRoot/ci-verify-versions-registry/ports/bad-git-tree/vcpkg.json: note: if bad-git-tree@1.1 is already published, update this file with a new version or port-version, commit it, then add the new version by running: + vcpkg x-add-version bad-git-tree + git add versions + git commit -m `"Update version database`" +note: if bad-git-tree@1.1 is not yet published, overwrite the previous git tree by running: + vcpkg x-add-version bad-git-tree --overwrite-version + git add versions + git commit -m `"Update version database`" +$TestingRoot/ci-verify-versions-registry/versions/baseline.json: message: bad-git-tree@1.1 matches the current baseline +$TestingRoot/ci-verify-versions-registry/ports/bad-git-tree/vcpkg.json: message: all version constraints are consistent with the version database +$TestingRoot/ci-verify-versions-registry/ports/bad-history-name: message: bad-history-name@1.1 is correctly in the version database (f34f4ad3dfcc4d46d467d7b6aa04f9732a7951d6) +$TestingRoot/ci-verify-versions-registry/versions/baseline.json: message: bad-history-name@1.1 matches the current baseline +$TestingRoot/ci-verify-versions-registry/ports/bad-history-name/vcpkg.json: message: all version constraints are consistent with the version database +$TestingRoot/ci-verify-versions-registry/ports/baseline-version-mismatch: message: baseline-version-mismatch@1.1 is correctly in the version database (cf8a1faa9f94f7ceb9513d65093d407e11ac1402) +$TestingRoot/ci-verify-versions-registry/versions/baseline.json: error: baseline-version-mismatch is assigned 1.0, but the local port is 1.1 +$TestingRoot/ci-verify-versions-registry/ports/baseline-version-mismatch/vcpkg.json: note: baseline-version-mismatch is declared here +note: you can run the following commands to add the current version of baseline-version-mismatch automatically: + vcpkg x-add-version baseline-version-mismatch + git add versions + git commit -m `"Update version database`" +$TestingRoot/ci-verify-versions-registry/ports/baseline-version-mismatch/vcpkg.json: message: all version constraints are consistent with the version database +$TestingRoot/ci-verify-versions-registry/ports/baseline-version-missing: message: baseline-version-missing@1.0 is correctly in the version database (a5c21769008f52ed66afa344f13b786dde4b8d7d) +$TestingRoot/ci-verify-versions-registry/versions/baseline.json: error: baseline-version-missing is not assigned a version +$TestingRoot/ci-verify-versions-registry/ports/baseline-version-missing/vcpkg.json: note: baseline-version-missing is declared here +note: you can run the following commands to add the current version of baseline-version-missing automatically: + vcpkg x-add-version baseline-version-missing + git add versions + git commit -m `"Update version database`" +$TestingRoot/ci-verify-versions-registry/ports/baseline-version-missing/vcpkg.json: message: all version constraints are consistent with the version database +$TestingRoot/ci-verify-versions-registry/ports/dependency-not-in-versions-database: message: dependency-not-in-versions-database@1.0 is correctly in the version database (321c8b400526dc412a987285ef469eec6221a4b4) +$TestingRoot/ci-verify-versions-registry/versions/baseline.json: message: dependency-not-in-versions-database@1.0 matches the current baseline +$TestingRoot/ci-verify-versions-registry/ports/dependency-not-in-versions-database/vcpkg.json: error: the dependency no-versions does not exist in the version database; does that port exist? +$TestingRoot/ci-verify-versions-registry/ports/dependency-not-in-versions-database-feature: message: dependency-not-in-versions-database-feature@1.0 is correctly in the version database (2298ee25ea54ed92595250a2be07d01bdd76f47c) +$TestingRoot/ci-verify-versions-registry/versions/baseline.json: message: dependency-not-in-versions-database-feature@1.0 matches the current baseline +$TestingRoot/ci-verify-versions-registry/ports/dependency-not-in-versions-database-feature/vcpkg.json: error: the dependency no-versions does not exist in the version database; does that port exist? +note: the dependency is in the feature named add-things +$TestingRoot/ci-verify-versions-registry/ports/dependency-version-not-in-versions-database: message: dependency-version-not-in-versions-database@1.0 is correctly in the version database (f0d44555fe7714929e432ab9e12a436e28ffef9e) +$TestingRoot/ci-verify-versions-registry/versions/baseline.json: message: dependency-version-not-in-versions-database@1.0 matches the current baseline +$TestingRoot/ci-verify-versions-registry/ports/dependency-version-not-in-versions-database/vcpkg.json: error: the "version>=" constraint to good names version 0.9 which does not exist in the version database. All versions must exist in the version database to be interpreted by vcpkg. +$TestingRoot/ci-verify-versions-registry/versions/g-/good.json: note: consider removing the version constraint or choosing a value declared here +$TestingRoot/ci-verify-versions-registry/ports/dependency-version-not-in-versions-database-feature: message: dependency-version-not-in-versions-database-feature@1.0 is correctly in the version database (ba3008bb2d42c61f172b7d9592de0212edf20fc6) +$TestingRoot/ci-verify-versions-registry/versions/baseline.json: message: dependency-version-not-in-versions-database-feature@1.0 matches the current baseline +$TestingRoot/ci-verify-versions-registry/ports/dependency-version-not-in-versions-database-feature/vcpkg.json: error: the "version>=" constraint to good names version 0.9 which does not exist in the version database. All versions must exist in the version database to be interpreted by vcpkg. +$TestingRoot/ci-verify-versions-registry/versions/g-/good.json: note: consider removing the version constraint or choosing a value declared here +note: the dependency is in the feature named add-things +$TestingRoot/ci-verify-versions-registry/ports/good: message: good@1.0 is correctly in the version database (0f3d67db0dbb6aa5499bc09367a606b495e16d35) +$TestingRoot/ci-verify-versions-registry/versions/baseline.json: message: good@1.0 matches the current baseline +$TestingRoot/ci-verify-versions-registry/ports/good/vcpkg.json: message: all version constraints are consistent with the version database +$TestingRoot/ci-verify-versions-registry/ports/has-local-edits/vcpkg.json: error: the git tree of the port directory could not be determined. This is usually caused by uncommitted changes. +note: you can commit your changes and add them to the version database by running: + git add "$TestingRoot/ci-verify-versions-registry/ports/has-local-edits" + git commit -m wip + vcpkg x-add-version has-local-edits + git add versions + git commit --amend -m "[has-local-edits] Add new port" +$TestingRoot/ci-verify-versions-registry/versions/baseline.json: message: has-local-edits@1.0.0 matches the current baseline +$TestingRoot/ci-verify-versions-registry/ports/has-local-edits/vcpkg.json: message: all version constraints are consistent with the version database +$TestingRoot/ci-verify-versions-registry/versions/m-/mismatch-git-tree.json: error: mismatch-git-tree@1.0 git tree 41d20d2a02d75343b0933b624faf9f061b112dad does not match the port directory +$TestingRoot/ci-verify-versions-registry/ports/mismatch-git-tree: note: the port directory has git tree 34b3289caaa7a97950828905d354dc971c3c15a7 +$TestingRoot/ci-verify-versions-registry/ports/mismatch-git-tree/vcpkg.json: note: if mismatch-git-tree@1.0 is already published, update this file with a new version or port-version, commit it, then add the new version by running: + vcpkg x-add-version mismatch-git-tree + git add versions + git commit -m `"Update version database`" +note: if mismatch-git-tree@1.0 is not yet published, overwrite the previous git tree by running: + vcpkg x-add-version mismatch-git-tree --overwrite-version + git add versions + git commit -m `"Update version database`" +$TestingRoot/ci-verify-versions-registry/versions/baseline.json: message: mismatch-git-tree@1.0 matches the current baseline +$TestingRoot/ci-verify-versions-registry/ports/mismatch-git-tree/vcpkg.json: message: all version constraints are consistent with the version database +$TestingRoot/ci-verify-versions-registry/ports/no-versions/vcpkg.json: error: this port is not in the version database +$TestingRoot/ci-verify-versions-registry/versions/n-/no-versions.json: note: the version database file should be here +note: run 'vcpkg x-add-version no-versions' to create the version database file +$TestingRoot/ci-verify-versions-registry/versions/baseline.json: message: no-versions@1.0 matches the current baseline +$TestingRoot/ci-verify-versions-registry/ports/no-versions/vcpkg.json: message: all version constraints are consistent with the version database +$TestingRoot/ci-verify-versions-registry/ports/override-not-in-versions-database: message: override-not-in-versions-database@1.0 is correctly in the version database (0ff80cd22d5ca881efab3329ce596566a8642bec) +$TestingRoot/ci-verify-versions-registry/versions/baseline.json: message: override-not-in-versions-database@1.0 matches the current baseline +$TestingRoot/ci-verify-versions-registry/ports/override-not-in-versions-database/vcpkg.json: error: the version override no-versions does not exist in the version database; does that port exist? +$TestingRoot/ci-verify-versions-registry/ports/override-version-not-in-versions-database: message: override-version-not-in-versions-database@1.0 is correctly in the version database (49fafaad46408296e50e9d0fd1a3d531bf97d420) +$TestingRoot/ci-verify-versions-registry/versions/baseline.json: message: override-version-not-in-versions-database@1.0 matches the current baseline +$TestingRoot/ci-verify-versions-registry/ports/override-version-not-in-versions-database/vcpkg.json: error: the override of good names version 0.9 which does not exist in the version database. Installing this port at the top level will fail as that version will be unresolvable. +$TestingRoot/ci-verify-versions-registry/versions/g-/good.json: note: consider removing the version override or choosing a value declared here +$TestingRoot/ci-verify-versions-registry/ports/version-mismatch/vcpkg.json: error: version-mismatch@1.1 was not found in versions database +$TestingRoot/ci-verify-versions-registry/versions/v-/version-mismatch.json: note: the version should be in this file +note: run 'vcpkg x-add-version version-mismatch' to add the new port version +$TestingRoot/ci-verify-versions-registry/versions/baseline.json: message: version-mismatch@1.1 matches the current baseline +$TestingRoot/ci-verify-versions-registry/ports/version-mismatch/vcpkg.json: message: all version constraints are consistent with the version database +$TestingRoot/ci-verify-versions-registry/ports/version-missing/vcpkg.json: error: version-missing@1.1 was not found in versions database +$TestingRoot/ci-verify-versions-registry/versions/v-/version-missing.json: note: the version should be in this file +note: run 'vcpkg x-add-version version-missing' to add the new port version +$TestingRoot/ci-verify-versions-registry/versions/baseline.json: message: version-missing@1.1 matches the current baseline +$TestingRoot/ci-verify-versions-registry/ports/version-missing/vcpkg.json: message: all version constraints are consistent with the version database +$TestingRoot/ci-verify-versions-registry/versions/v-/version-scheme-mismatch.json: error: 1.1 is declared version-string, but version-scheme-mismatch is declared with version +$TestingRoot/ci-verify-versions-registry/ports/version-scheme-mismatch/vcpkg.json: note: version-scheme-mismatch is declared here +note: versions must be unique, even if they are declared with different schemes +note: you can overwrite version-scheme-mismatch@1.1 with correct local values by running: +vcpkg x-add-version version-scheme-mismatch --overwrite-version +$TestingRoot/ci-verify-versions-registry/versions/baseline.json: message: version-scheme-mismatch@1.1 matches the current baseline +$TestingRoot/ci-verify-versions-registry/ports/version-scheme-mismatch/vcpkg.json: message: all version constraints are consistent with the version database +$TestingRoot/ci-verify-versions-registry/versions/b-/bad-git-tree.json: error: failed to execute: `"C:\Program Files\Git\cmd\git.exe`" `"--git-dir=$TestingRoot/ci-verify-versions-registry/.git`" `"--work-tree=$buildtreesRoot/versioning_/versions/bad-git-tree/000000070c5f496fcf1a97cf654d5e81f0d2685a_82336.tmp`" -c core.autocrlf=false read-tree -m -u 000000070c5f496fcf1a97cf654d5e81f0d2685a +error: git failed with exit code: (128). +fatal: failed to unpack tree object 000000070c5f496fcf1a97cf654d5e81f0d2685a +note: while checking out port bad-git-tree with git tree 000000070c5f496fcf1a97cf654d5e81f0d2685a +note: while validating version: 1.1 +$TestingRoot/ci-verify-versions-registry/versions/b-/bad-git-tree.json: error: failed to execute: `"C:\Program Files\Git\cmd\git.exe`" `"--git-dir=$TestingRoot/ci-verify-versions-registry/.git`" `"--work-tree=$buildtreesRoot/versioning_/versions/bad-git-tree/00000005fb6b76058ce09252f521847363c6b266_82336.tmp`" -c core.autocrlf=false read-tree -m -u 00000005fb6b76058ce09252f521847363c6b266 +error: git failed with exit code: (128). +fatal: failed to unpack tree object 00000005fb6b76058ce09252f521847363c6b266 +note: while checking out port bad-git-tree with git tree 00000005fb6b76058ce09252f521847363c6b266 +note: while validating version: 1.0 +$TestingRoot/ci-verify-versions-registry/versions/b-/bad-history-name.json: message: bad-history-name@1.1 is correctly in the version database (f34f4ad3dfcc4d46d467d7b6aa04f9732a7951d6) +$TestingRoot/ci-verify-versions-registry/versions/b-/bad-history-name.json: error: db9d98300e7daeb2c0652bae94a0283a1b1a13d1 is declared to contain bad-history-name@1.0, but appears to contain bad-history-name-is-bad@1.0 +$TestingRoot/ci-verify-versions-registry/versions/b-/baseline-version-mismatch.json: message: baseline-version-mismatch@1.1 is correctly in the version database (cf8a1faa9f94f7ceb9513d65093d407e11ac1402) +$TestingRoot/ci-verify-versions-registry/versions/b-/baseline-version-mismatch.json: message: baseline-version-mismatch@1.0 is correctly in the version database (a6d7dde2f5a9ea80db16c7f73c43556a7e21e5cf) +$TestingRoot/ci-verify-versions-registry/versions/b-/baseline-version-missing.json: message: baseline-version-missing@1.0 is correctly in the version database (a5c21769008f52ed66afa344f13b786dde4b8d7d) +$TestingRoot/ci-verify-versions-registry/versions/d-/dependency-not-in-versions-database.json: message: dependency-not-in-versions-database@1.0 is correctly in the version database (321c8b400526dc412a987285ef469eec6221a4b4) +$TestingRoot/ci-verify-versions-registry/versions/d-/dependency-not-in-versions-database-feature.json: message: dependency-not-in-versions-database-feature@1.0 is correctly in the version database (2298ee25ea54ed92595250a2be07d01bdd76f47c) +$TestingRoot/ci-verify-versions-registry/versions/d-/dependency-version-not-in-versions-database.json: message: dependency-version-not-in-versions-database@1.0 is correctly in the version database (f0d44555fe7714929e432ab9e12a436e28ffef9e) +$TestingRoot/ci-verify-versions-registry/versions/d-/dependency-version-not-in-versions-database-feature.json: message: dependency-version-not-in-versions-database-feature@1.0 is correctly in the version database (ba3008bb2d42c61f172b7d9592de0212edf20fc6) +$TestingRoot/ci-verify-versions-registry/versions/g-/good.json: message: good@1.0 is correctly in the version database (0f3d67db0dbb6aa5499bc09367a606b495e16d35) +$TestingRoot/ci-verify-versions-registry/versions/h-/has-local-edits.json: message: has-local-edits@1.0.0 is correctly in the version database (b1d7f6030942b329a200f16c931c01e2ec9e1e79) +$TestingRoot/ci-verify-versions-registry/versions/m-/malformed.json: $buildtreesRoot/versioning_/versions/malformed/a1f22424b0fb1460200c12e1b7933f309f9c8373/vcpkg.json:4:3: error: Unexpected character; expected property name + on expression: ~broken + ^ +note: while validating version: 1.1 +$TestingRoot/ci-verify-versions-registry/versions/m-/malformed.json: $buildtreesRoot/versioning_/versions/malformed/72b37802dbdc176ce20b718ce4a332ac38bd0116/vcpkg.json:4:3: error: Unexpected character; expected property name + on expression: ~broken + ^ +note: while validating version: 1.0 +$TestingRoot/ci-verify-versions-registry/versions/m-/mismatch-git-tree.json: message: mismatch-git-tree@1.0 is correctly in the version database (41d20d2a02d75343b0933b624faf9f061b112dad) +$TestingRoot/ci-verify-versions-registry/versions/o-/override-not-in-versions-database.json: message: override-not-in-versions-database@1.0 is correctly in the version database (0ff80cd22d5ca881efab3329ce596566a8642bec) +$TestingRoot/ci-verify-versions-registry/versions/o-/override-version-not-in-versions-database.json: message: override-version-not-in-versions-database@1.0 is correctly in the version database (49fafaad46408296e50e9d0fd1a3d531bf97d420) +$TestingRoot/ci-verify-versions-registry/versions/v-/version-mismatch.json: error: 220bdcf2d4836ec9fe867eaff2945b58c08f5618 is declared to contain version-mismatch@1.1-a, but appears to contain version-mismatch@1.1 +$TestingRoot/ci-verify-versions-registry/versions/v-/version-mismatch.json: error: 5c1a69be3303fcd085d473d10e311b85202ee93c is declared to contain version-mismatch@1.0-a, but appears to contain version-mismatch@1.0 +$TestingRoot/ci-verify-versions-registry/versions/v-/version-missing.json: message: version-missing@1.0 is correctly in the version database (d3b4c8bf4bee7654f63b223a442741bb16f45957) +$TestingRoot/ci-verify-versions-registry/versions/v-/version-scheme-mismatch.json: error: 1.1 is declared version-string, but version-scheme-mismatch@ea2006a1188b81f1f2f6e0aba9bef236d1fb2725 is declared with version +$buildtreesRoot/versioning_/versions/version-scheme-mismatch/ea2006a1188b81f1f2f6e0aba9bef236d1fb2725/vcpkg.json: note: version-scheme-mismatch is declared here +note: versions must be unique, even if they are declared with different schemes +$TestingRoot/ci-verify-versions-registry/versions/v-/version-scheme-mismatch.json: error: 1.0 is declared version-string, but version-scheme-mismatch@89c88798a9fa17ea6753da87887a1fec48c421b0 is declared with version +$buildtreesRoot/versioning_/versions/version-scheme-mismatch/89c88798a9fa17ea6753da87887a1fec48c421b0/vcpkg.json: note: version-scheme-mismatch is declared here +note: versions must be unique, even if they are declared with different schemes +"@ + +$actual = Run-VcpkgAndCaptureOutput x-ci-verify-versions @directoryArgs "--x-builtin-ports-root=$TestingRoot/ci-verify-versions-registry/ports" "--x-builtin-registry-versions-dir=$TestingRoot/ci-verify-versions-registry/versions" --verbose --verify-git-trees +Throw-IfNotFailed + +function Sanitize() { + Param([string]$text) + $workTreeRegex = 'error: failed to execute:[^\r\n]+' # Git command line has an unpredictable PID inside + $text = $text.Replace('\', '/').Replace("`r`n", "`n").Trim() + $text = [System.Text.RegularExpressions.Regex]::Replace($text, $workTreeRegex, '') + return $text +} + +$expected = Sanitize $expected +$actual = Sanitize $actual +if ($actual -ne $expected) { + Set-Content -Value $expected -LiteralPath "$TestingRoot/expected.txt" + Set-Content -Value $actual -LiteralPath "$TestingRoot/actual.txt" + git diff --no-index -- "$TestingRoot/expected.txt" "$TestingRoot/actual.txt" + throw "Bad x-ci-verify-versions output." +} diff --git a/azure-pipelines/end-to-end-tests-dir/ci.ps1 b/azure-pipelines/end-to-end-tests-dir/ci.ps1 index f02177fa28..72ed05233b 100644 --- a/azure-pipelines/end-to-end-tests-dir/ci.ps1 +++ b/azure-pipelines/end-to-end-tests-dir/ci.ps1 @@ -2,7 +2,9 @@ # test skipped ports $Output = Run-VcpkgAndCaptureOutput ci --dry-run --triplet=$Triplet --x-builtin-ports-root="$PSScriptRoot/../e2e-ports/ci" --binarysource=clear --ci-baseline="$PSScriptRoot/../e2e-assets/ci/ci.baseline.txt" -Throw-IfFailed +Throw-IfNotFailed +$ErrorOutput = Run-VcpkgAndCaptureStdErr ci --dry-run --triplet=$Triplet --x-builtin-ports-root="$PSScriptRoot/../e2e-ports/ci" --binarysource=clear --ci-baseline="$PSScriptRoot/../e2e-assets/ci/ci.baseline.txt" +Throw-IfNotFailed if (-not ($Output.Contains("dep-on-feature-not-sup:${Triplet}: cascade"))) { throw 'dep-on-feature-not-sup must cascade because it depends on a features that is not supported' } @@ -10,14 +12,39 @@ if (-not ($Output.Contains("not-sup-host-b:${Triplet}: skip"))) { throw 'not-sup-host-b must be skipped because it is not supported' } if (-not ($Output.Contains("feature-not-sup:${Triplet}: *"))) { - throw 'feature-not-sup must be build because the port that causes this port to skip should not be installed' + throw 'feature-not-sup must be built because the port that causes this port to skip should not be installed' } -if ($Output.Split("*").Length -ne 3) { +if (-not ($Output.Contains("feature-dep-missing:${Triplet}: *"))) { + throw 'feature-dep-missing must be built because the broken feature is not selected.' +} +if ($Output.Split("*").Length -ne 4) { throw 'base-port should not be installed for the host' } -if (-not ($Output.Contains("REGRESSION: not-sup-host-b:${Triplet} is marked as fail but not supported for ${Triplet}."))) { +if (-not ($ErrorOutput.Contains("REGRESSION: not-sup-host-b:${Triplet} is marked as fail but not supported for ${Triplet}."))) { throw "feature-not-sup's baseline fail entry should result in a regression because the port is not supported" } -if (-not ($Output.Contains("REGRESSION: dep-on-feature-not-sup:${Triplet} is marked as fail but one dependency is not supported for ${Triplet}."))) { +if (-not ($ErrorOutput.Contains("REGRESSION: dep-on-feature-not-sup:${Triplet} is marked as fail but one dependency is not supported for ${Triplet}."))) { throw "feature-not-sup's baseline fail entry should result in a regression because the port is cascade for this triplet" } + +# any invalid manifest must raise an error +$Output = Run-VcpkgAndCaptureOutput ci --dry-run --triplet=$Triplet --x-builtin-ports-root="$PSScriptRoot/../e2e-ports/broken-manifests" --binarysource=clear --ci-baseline="$PSScriptRoot/../e2e-assets/ci/ci.baseline.txt" +Throw-IfNotFailed + +# test malformed individual overlay port manifest +Remove-Problem-Matchers +$Output = Run-VcpkgAndCaptureOutput ci --dry-run --triplet=$Triplet --x-builtin-ports-root="$PSScriptRoot/../e2e-ports/ci" --binarysource=clear --ci-baseline="$PSScriptRoot/../e2e-assets/ci/ci.baseline.txt" --overlay-ports="$PSScriptRoot/../e2e-ports/broken-manifests/malformed" +Restore-Problem-Matchers +Throw-IfNotFailed +if (-not ($Output.Contains("vcpkg.json:3:17: error: Trailing comma"))) { + throw 'malformed port manifest must raise a parsing error' +} + +# test malformed overlay port manifests +Remove-Problem-Matchers +$Output = Run-VcpkgAndCaptureOutput ci --dry-run --triplet=$Triplet --x-builtin-ports-root="$PSScriptRoot/../e2e-ports/ci" --binarysource=clear --ci-baseline="$PSScriptRoot/../e2e-assets/ci/ci.baseline.txt" --overlay-ports="$PSScriptRoot/../e2e-ports/broken-manifests" +Restore-Problem-Matchers +Throw-IfNotFailed +if (-not ($Output.Contains("vcpkg.json:3:17: error: Trailing comma"))) { + throw 'malformed overlay port manifest must raise a parsing error' +} diff --git a/azure-pipelines/end-to-end-tests-dir/hash-additional-fail.ps1 b/azure-pipelines/end-to-end-tests-dir/hash-additional-fail.ps1 deleted file mode 100644 index d20bab46b9..0000000000 --- a/azure-pipelines/end-to-end-tests-dir/hash-additional-fail.ps1 +++ /dev/null @@ -1,7 +0,0 @@ -. $PSScriptRoot/../end-to-end-tests-prelude.ps1 -$output = Run-VcpkgAndCaptureOutput "--overlay-triplets=$PSScriptRoot/../e2e_ports/hash-additional-fail" "--overlay-ports=$PSScriptRoot/../e2e_ports/hash-additional-fail" install vcpkg-test-hash-additional --triplet hash-additional-e2e -Throw-IfNotFailed -if ($output -notmatch "Variable VCPKG_HASH_ADDITIONAL_FILES contains invalid file path") -{ - throw "Expected to fail since VCPKG_HASH_ADDITIONAL_FILES is set to a relative path" -} diff --git a/azure-pipelines/end-to-end-tests-dir/hash-additional.ps1 b/azure-pipelines/end-to-end-tests-dir/hash-additional.ps1 index ef03f19f7a..56837a19c3 100644 --- a/azure-pipelines/end-to-end-tests-dir/hash-additional.ps1 +++ b/azure-pipelines/end-to-end-tests-dir/hash-additional.ps1 @@ -1,8 +1,11 @@ . $PSScriptRoot/../end-to-end-tests-prelude.ps1 -[string]$out = Run-VcpkgAndCaptureOutput -TestArgs @("--overlay-triplets=$PSScriptRoot/../e2e_ports/hash-additional", "--overlay-ports=$PSScriptRoot/../e2e_ports/hash-additional", "x-set-installed", "vcpkg-test-hash-additional", "--triplet", "hash-additional-e2e", "--debug") +Run-Vcpkg @directoryArgs "--overlay-triplets=$PSScriptRoot/../e2e-ports/hash-additional" "--overlay-ports=$PSScriptRoot/../e2e-ports/hash-additional" x-set-installed vcpkg-test-hash-additional --triplet hash-additional-e2e --binarysource=clear Throw-IfFailed -if (-Not ($out.Contains("additional_file_0|61ba0c7fc1f696e28c1b7aa9460980a571025ff8c97bb90a57e990463aa25660"))) + +$output = Run-VcpkgAndCaptureOutput @directoryArgs "--overlay-triplets=$PSScriptRoot/../e2e-ports/hash-additional-fail" "--overlay-ports=$PSScriptRoot/../e2e-ports/hash-additional-fail" x-set-installed vcpkg-test-hash-additional --triplet hash-additional-e2e --binarysource=clear +Throw-IfNotFailed +if ($output -notmatch "Variable VCPKG_HASH_ADDITIONAL_FILES contains invalid file path") { - throw "Additional file hash not found in output" + throw "Expected to fail since VCPKG_HASH_ADDITIONAL_FILES is set to a relative path" } diff --git a/azure-pipelines/end-to-end-tests-dir/manifests.ps1 b/azure-pipelines/end-to-end-tests-dir/manifests.ps1 index 5e66eca742..f8fd585022 100644 --- a/azure-pipelines/end-to-end-tests-dir/manifests.ps1 +++ b/azure-pipelines/end-to-end-tests-dir/manifests.ps1 @@ -14,6 +14,7 @@ function feature { } $vcpkgJson = @{ + 'name' = 'toplevel-spec'; 'default-features' = @( 'default-fail' ); 'features' = @{ 'default-fail' = feature 'vcpkg-fail-if-depended-upon'; @@ -29,6 +30,11 @@ $vcpkgJson = @{ 'default-features' = $False; 'features' = @( 'success' ) }; + 'no-default-features-3' = feature @{ + 'name' = 'toplevel-spec'; + 'default-features' = $False; + 'features' = @( 'no-default-features-1' ) + }; } } @@ -78,6 +84,75 @@ Throw-IfFailed Write-Trace "test manifest features: no-default-features, features = [no-default-features-2]" Run-Vcpkg install @noDefaultFeatureArgs --x-feature=no-default-features-2 Throw-IfFailed +Write-Trace "test manifest features: no-default-features, features = [no-default-features-1,no-default-features-3]" +Run-Vcpkg install @noDefaultFeatureArgs --x-feature=no-default-features-1 --x-feature=no-default-features-3 +Throw-IfFailed +Write-Trace "test manifest features: no-default-features, features = [no-default-features-3]" +Run-Vcpkg install @noDefaultFeatureArgs --x-feature=no-default-features-3 +Throw-IfFailed + +$vcpkgJson = @{ + 'default-features' = @( 'default-fail' ); + 'features' = @{ + 'default-fail' = feature 'vcpkg-fail-if-depended-upon'; + 'copied-feature' = feature 'vcpkg-empty-port' + 'multiple-dep-1' = feature 'vcpkg-empty-port' + 'multiple-dep-2' = feature 'vcpkg-empty-port' + 'no-default-features-1' = feature @{ + 'name' = 'vcpkg-default-features-fail'; + 'default-features' = $False; + }; + 'no-default-features-2' = feature @{ + 'name' = 'vcpkg-default-features-fail-require-other-feature'; + 'default-features' = $False; + 'features' = @( 'success' ) + }; + } +} + +Set-Content -Path "$manifestDir/vcpkg.json" ` + -Value (ConvertTo-Json -Depth 5 -InputObject $vcpkgJson) ` + -Encoding Ascii -NoNewline + +Write-Trace "test nameless manifest features: default-features, features = []" +Run-Vcpkg install @manifestDirArgs +Throw-IfNotFailed + +Write-Trace "test nameless manifest features: no-default-features, features = []" +Run-Vcpkg install @manifestDirArgs --x-no-default-features +Throw-IfFailed +Write-Trace "test nameless manifest features: default-features, features = [core]" +Run-Vcpkg install @manifestDirArgs --x-feature=core +Throw-IfFailed +# test having both +Write-Trace "test nameless manifest features: no-default-features, features = [core]" +Run-Vcpkg install @manifestDirArgs --x-no-default-features --x-feature=core +Throw-IfFailed + +Write-Trace "test nameless manifest features: no-default-features, features = [default-fail]" +Run-Vcpkg install @manifestDirArgs --x-no-default-features --x-feature=default-fail +Throw-IfNotFailed +Write-Trace "test nameless manifest features: default-features, features = [core, default-fail]" +Run-Vcpkg install @manifestDirArgs --x-feature=core --x-feature=default-fail +Throw-IfNotFailed + +Write-Trace "test nameless manifest features: no-default-features, features = [copied-feature]" +Run-Vcpkg install @noDefaultFeatureArgs --x-feature=copied-feature +Throw-IfFailed +Write-Trace "test nameless manifest features: no-default-features, features = [copied-feature, copied-feature]" +Run-Vcpkg install @noDefaultFeatureArgs --x-feature=copied-feature --x-feature=copied-feature +Throw-IfFailed + +Write-Trace "test nameless manifest features: no-default-features, features = [multiple-dep-1, multiple-dep-2]" +Run-Vcpkg install @noDefaultFeatureArgs --x-feature=multiple-dep-1 --x-feature=multiple-dep-2 +Throw-IfFailed + +Write-Trace "test nameless manifest features: no-default-features, features = [no-default-features-1]" +Run-Vcpkg install @noDefaultFeatureArgs --x-feature=no-default-features-1 +Throw-IfFailed +Write-Trace "test nameless manifest features: no-default-features, features = [no-default-features-2]" +Run-Vcpkg install @noDefaultFeatureArgs --x-feature=no-default-features-2 +Throw-IfFailed $vcpkgJson = @{ 'name' = "manifest-test"; diff --git a/azure-pipelines/end-to-end-tests-dir/post-build-checks.ps1 b/azure-pipelines/end-to-end-tests-dir/post-build-checks.ps1 index 7d95b55a84..2ae56da212 100644 --- a/azure-pipelines/end-to-end-tests-dir/post-build-checks.ps1 +++ b/azure-pipelines/end-to-end-tests-dir/post-build-checks.ps1 @@ -1,81 +1,984 @@ . $PSScriptRoot/../end-to-end-tests-prelude.ps1 -if (-not $IsWindows) { - Write-Host 'Skipping e2e post build checks on non-Windows' - return +$NativeSlash = '/' +if ($IsWindows) { + $NativeSlash = '\' } -# DLLs with no exports +# Empty package / disable all checks Refresh-TestRoot -[string]$buildOutput = Run-VcpkgAndCaptureOutput @commonArgs install --overlay-ports="$PSScriptRoot/../e2e-ports" vcpkg-internal-dll-with-no-exports --no-binarycaching -if (-not $buildOutput.Contains("$packagesRoot\vcpkg-internal-dll-with-no-exports_x86-windows\debug\bin\no_exports.dll") ` - -or -not $buildOutput.Contains("$packagesRoot\vcpkg-internal-dll-with-no-exports_x86-windows\bin\no_exports.dll") ` - -or -not $buildOutput.Contains('set(VCPKG_POLICY_DLLS_WITHOUT_EXPORTS enabled)')) { - throw 'Did not detect DLLs with no exports.' +[string]$buildOutput = Run-VcpkgAndCaptureStderr install @commonArgs --overlay-ports="$PSScriptRoot/../e2e-ports" vcpkg-policy-set-incorrectly +Throw-IfNotFailed +if (-not $buildOutput.Replace("`r`n", "`n").EndsWith("error: Unknown setting of VCPKG_POLICY_EMPTY_PACKAGE: ON. Valid policy values are '', 'disabled', and 'enabled'.`n")) { + throw ('Incorrect error message for incorrect policy value; output was ' + $buildOutput) +} + +$buildOutput = Run-VcpkgAndCaptureOutput install @commonArgs --overlay-ports="$PSScriptRoot/../e2e-ports" vcpkg-policy-empty-package --no-binarycaching +Throw-IfFailed +if (-not $buildOutput.Contains('Skipping post-build validation due to VCPKG_POLICY_EMPTY_PACKAGE')) { + throw ('Didn''t skip post-build checks correctly, output was ' + $buildOutput) +} + +$buildOutput = Run-VcpkgAndCaptureOutput install @commonArgs --overlay-ports="$PSScriptRoot/../e2e-ports" vcpkg-policy-skip-all-post-build-checks --no-binarycaching +Throw-IfFailed +if (-not $buildOutput.Contains('Skipping post-build validation due to VCPKG_POLICY_SKIP_ALL_POST_BUILD_CHECKS')) { + throw ('Didn''t skip post-build checks correctly, output was ' + $buildOutput) +} + +# Include folder, restricted headers, and CMake helper port checks +Refresh-TestRoot +$PortfilePath = "$PSScriptRoot/../e2e-ports$($NativeSlash)vcpkg-policy-include-folder$($NativeSlash)portfile.cmake" +$buildOutput = Run-VcpkgAndCaptureOutput @commonArgs install --overlay-ports="$PSScriptRoot/../e2e-ports" vcpkg-policy-include-folder --no-binarycaching --enforce-port-checks +Throw-IfNotFailed +[string]$expected = @" +$($PortfilePath): warning: The folder $`{CURRENT_PACKAGES_DIR}/include is empty or not present. This usually means that headers are not correctly installed. If this is a CMake helper port, add set(VCPKG_POLICY_CMAKE_HELPER_PORT enabled). If this is not a CMake helper port but this is otherwise intentional, add set(VCPKG_POLICY_EMPTY_INCLUDE_FOLDER enabled) to suppress this message. +"@ +if (-not $buildOutput.Contains($expected)) { + throw 'Did not detect empty include folder' +} + +$buildOutput = Run-VcpkgAndCaptureOutput @commonArgs install --overlay-ports="$PSScriptRoot/../e2e-ports" 'vcpkg-policy-include-folder[policy-empty-include-folder]' --no-binarycaching --enforce-port-checks +Throw-IfFailed +if ($buildOutput.Contains($expected)) { + throw 'VCPKG_POLICY_EMPTY_INCLUDE_FOLDER didn''t suppress' +} + +Refresh-TestRoot +$buildOutput = Run-VcpkgAndCaptureOutput @commonArgs install --overlay-ports="$PSScriptRoot/../e2e-ports" 'vcpkg-policy-include-folder[do-install,policy-cmake-helper-port]' --no-binarycaching --enforce-port-checks +Throw-IfNotFailed +$expected = @" +$($PortfilePath): warning: The folder $`{CURRENT_PACKAGES_DIR}/include exists in a CMake helper port; this is incorrect, since only CMake files should be installed. To suppress this message, remove set(VCPKG_POLICY_CMAKE_HELPER_PORT enabled). +"@ +if (-not $buildOutput.Contains($expected)) { + throw 'Did not detect nonempty include folder for CMake helper port.' } -# DLLs with wrong architecture Refresh-TestRoot -mkdir "$TestingRoot/wrong-architecture" -Copy-Item -Recurse "$PSScriptRoot/../e2e-assets/test-dll-port-template" "$TestingRoot/wrong-architecture/test-dll" -Run-Vcpkg env "$TestingRoot/wrong-architecture/test-dll/build.cmd" --Triplet x64-windows +$buildOutput = Run-VcpkgAndCaptureOutput @commonArgs install --overlay-ports="$PSScriptRoot/../e2e-ports" 'vcpkg-policy-include-folder[policy-cmake-helper-port]' --no-binarycaching --enforce-port-checks +Throw-IfNotFailed +$expected = @" +$($PortfilePath): warning: The $`{CURRENT_PACKAGES_DIR}/share/`${PORT}/vcpkg-port-config.cmake file does not exist. This file must exist for CMake helper ports. To suppress this message, remove set(VCPKG_POLICY_CMAKE_HELPER_PORT enabled) +"@ +if (-not $buildOutput.Contains($expected)) { + throw 'Did not detect missing vcpkg-port-config.cmake for CMake helper port.' +} + +$buildOutput = Run-VcpkgAndCaptureOutput @commonArgs install --overlay-ports="$PSScriptRoot/../e2e-ports" 'vcpkg-policy-include-folder[policy-cmake-helper-port,do-install-vcpkg-port-config]' --no-binarycaching --enforce-port-checks Throw-IfFailed -$buildOutput = Run-VcpkgAndCaptureOutput @commonArgs install --overlay-ports="$TestingRoot/wrong-architecture" test-dll --no-binarycaching -$expected = "warning: The following files were built for an incorrect architecture:`n" + ` -"warning: $packagesRoot\test-dll_x86-windows\debug\lib\test_dll.lib`n" + ` -" Expected: x86, but was x64`n" + ` -"warning: $packagesRoot\test-dll_x86-windows\lib\test_dll.lib`n" + ` -" Expected: x86, but was x64`n" + ` -"warning: The following files were built for an incorrect architecture:`n" + ` -"warning: $packagesRoot\test-dll_x86-windows\debug\bin\test_dll.dll`n" + ` -" Expected: x86, but was x64`n" + ` -"warning: $packagesRoot\test-dll_x86-windows\bin\test_dll.dll`n" + ` -" Expected: x86, but was x64`n" +Refresh-TestRoot +$buildOutput = Run-VcpkgAndCaptureOutput @commonArgs install --overlay-ports="$PSScriptRoot/../e2e-ports" 'vcpkg-policy-include-folder[do-install-restricted]' --no-binarycaching --enforce-port-checks +Throw-IfNotFailed +$expected = @" +$($PortfilePath): warning: Taking the following restricted headers can prevent the core C++ runtime and other packages from compiling correctly. These should be renamed or stored in a subdirectory instead. In exceptional circumstances, this warning can be suppressed by adding set(VCPKG_POLICY_ALLOW_RESTRICTED_HEADERS enabled) +$($packagesRoot)$($NativeSlash)vcpkg-policy-include-folder_$($Triplet)$($NativeSlash)include: note: the headers are relative to `${CURRENT_PACKAGES_DIR}/include here +note: +"@ if (-not $buildOutput.Replace("`r`n", "`n").Contains($expected)) { - throw 'Did not detect DLL with wrong architecture.' + throw 'Did not detect restricted header' +} + +$buildOutput = Run-VcpkgAndCaptureOutput @commonArgs install --overlay-ports="$PSScriptRoot/../e2e-ports" 'vcpkg-policy-include-folder[do-install-restricted,policy-allow-restricted-headers]' --no-binarycaching --enforce-port-checks +Throw-IfFailed +if ($buildOutput.Replace("`r`n", "`n").Contains($expected)) { + throw 'VCPKG_POLICY_ALLOW_RESTRICTED_HEADERS didn''t allow' +} + +Refresh-TestRoot +$buildOutput = Run-VcpkgAndCaptureOutput @commonArgs install --overlay-ports="$PSScriptRoot/../e2e-ports" 'vcpkg-policy-include-folder[do-install,do-install-debug]' --no-binarycaching --enforce-port-checks +Throw-IfNotFailed +$expected = @" +$($PortfilePath): warning: `${CURRENT_PACKAGES_DIR}/debug/include should not exist. To suppress this message, add set(VCPKG_POLICY_ALLOW_DEBUG_INCLUDE enabled) +note: If this directory was created by a build system that does not allow installing headers in debug to be disabled, delete the duplicate directory with file(REMOVE_RECURSE "`${CURRENT_PACKAGES_DIR}/debug/include") +"@ +if (-not $buildOutput.Replace("`r`n", "`n").Contains($expected)) { + throw 'Did not detect debug headers' +} + +$buildOutput = Run-VcpkgAndCaptureOutput @commonArgs install --overlay-ports="$PSScriptRoot/../e2e-ports" 'vcpkg-policy-include-folder[do-install,do-install-debug,policy-allow-debug-include]' --no-binarycaching --enforce-port-checks +Throw-IfFailed +if ($buildOutput.Replace("`r`n", "`n").Contains($expected)) { + throw 'VCPKG_POLICY_ALLOW_DEBUG_INCLUDE didn''t suppress' } -# DLLs with no AppContainer bit Refresh-TestRoot -mkdir "$TestingRoot/wrong-appcontainer" -Copy-Item -Recurse "$PSScriptRoot/../e2e-assets/test-dll-port-template" "$TestingRoot/wrong-appcontainer/test-dll" -Run-Vcpkg env "$TestingRoot/wrong-appcontainer/test-dll/build.cmd" --Triplet x64-windows +$buildOutput = Run-VcpkgAndCaptureOutput @commonArgs install --overlay-ports="$PSScriptRoot/../e2e-ports" 'vcpkg-policy-include-folder[do-install,do-install-debug-share]' --no-binarycaching --enforce-port-checks +Throw-IfNotFailed +$expected = @" +$($PortfilePath): warning: `${CURRENT_PACKAGES_DIR}/debug/share should not exist. Please reorganize any important files, then delete any remaining by adding ``file(REMOVE_RECURSE "`${CURRENT_PACKAGES_DIR}/debug/share")``. To suppress this message, add set(VCPKG_POLICY_ALLOW_DEBUG_SHARE enabled) +"@ +if (-not $buildOutput.Replace("`r`n", "`n").Contains($expected)) { + throw 'Did not detect debug share' +} + +$buildOutput = Run-VcpkgAndCaptureOutput @commonArgs install --overlay-ports="$PSScriptRoot/../e2e-ports" 'vcpkg-policy-include-folder[do-install,do-install-debug-share,policy-allow-debug-share]' --no-binarycaching --enforce-port-checks +Throw-IfFailed +if ($buildOutput.Replace("`r`n", "`n").Contains($expected)) { + throw 'VCPKG_POLICY_ALLOW_DEBUG_SHARE didn''t suppress' +} + +# Misplaced CMake Files +Refresh-TestRoot +$PortfilePath = "$PSScriptRoot/../e2e-ports$($NativeSlash)vcpkg-policy-misplaced-cmake-files$($NativeSlash)portfile.cmake" +Run-Vcpkg @commonArgs install --overlay-ports="$PSScriptRoot/../e2e-ports" vcpkg-policy-misplaced-cmake-files --no-binarycaching --enforce-port-checks Throw-IfFailed -$buildOutput = Run-VcpkgAndCaptureOutput --triplet x64-uwp "--x-buildtrees-root=$buildtreesRoot" "--x-install-root=$installRoot" "--x-packages-root=$packagesRoot" install --overlay-ports="$TestingRoot/wrong-appcontainer" test-dll --no-binarycaching -$expected = "warning: The App Container bit must be set for Windows Store apps. The following DLLs do not have the App Container bit set:`n" + ` -"`n" + ` -" $packagesRoot\test-dll_x64-uwp\debug\bin\test_dll.dll`n" + ` -" $packagesRoot\test-dll_x64-uwp\bin\test_dll.dll`n" +Refresh-TestRoot +$buildOutput = Run-VcpkgAndCaptureOutput @commonArgs install --overlay-ports="$PSScriptRoot/../e2e-ports" 'vcpkg-policy-misplaced-cmake-files[do-install-cmake]' --no-binarycaching --enforce-port-checks +Throw-IfNotFailed +$expected = @" +$($PortfilePath): warning: This port installs the following CMake files in places CMake files are not expected. CMake files should be installed in `${CURRENT_PACKAGES_DIR}/share/`${PORT}. To suppress this message, add set(VCPKG_POLICY_SKIP_MISPLACED_CMAKE_FILES_CHECK enabled) +$($packagesRoot)$($NativeSlash)vcpkg-policy-misplaced-cmake-files_$($Triplet): note: the files are relative to `${CURRENT_PACKAGES_DIR} here +note: cmake/some_cmake.cmake +note: debug/cmake/some_cmake.cmake +"@ +if ($buildOutput.Contains("legitimate.cmake")) { + throw 'Complained about legitimate CMake files' +} +if (-not $buildOutput.Replace("`r`n", "`n").Contains($expected)) { + throw 'Did not detect bad CMake files' +} + +Refresh-TestRoot +$buildOutput = Run-VcpkgAndCaptureOutput @commonArgs install --overlay-ports="$PSScriptRoot/../e2e-ports" 'vcpkg-policy-misplaced-cmake-files[do-install-lib]' --no-binarycaching --enforce-port-checks +Throw-IfNotFailed +$expected = @" +$($PortfilePath): warning: This port installs the following CMake files in places CMake files are not expected. CMake files should be installed in `${CURRENT_PACKAGES_DIR}/share/`${PORT}. To suppress this message, add set(VCPKG_POLICY_SKIP_MISPLACED_CMAKE_FILES_CHECK enabled) +$($packagesRoot)$($NativeSlash)vcpkg-policy-misplaced-cmake-files_$($Triplet): note: the files are relative to `${CURRENT_PACKAGES_DIR} here +note: lib/cmake/some_cmake.cmake +note: debug/lib/cmake/some_cmake.cmake +$($PortfilePath): warning: This port creates `${CURRENT_PACKAGES_DIR}/lib/cmake and/or `${CURRENT_PACKAGES_DIR}/debug/lib/cmake, which should be merged and moved to `${CURRENT_PACKAGES_DIR}/share/`${PORT}/cmake. Please use the helper function vcpkg_cmake_config_fixup() from the port vcpkg-cmake-config. To suppress this message, add set(VCPKG_POLICY_SKIP_LIB_CMAKE_MERGE_CHECK enabled) +"@ +if ($buildOutput.Contains("legitimate.cmake")) { + throw 'Complained about legitimate CMake files' +} +if (-not $buildOutput.Replace("`r`n", "`n").Contains($expected)) { + throw 'Did not detect bad CMake files' +} + +Refresh-TestRoot +$buildOutput = Run-VcpkgAndCaptureOutput @commonArgs install --overlay-ports="$PSScriptRoot/../e2e-ports" 'vcpkg-policy-misplaced-cmake-files[do-install-cmake,do-install-lib]' --no-binarycaching --enforce-port-checks +Throw-IfNotFailed +$expected = @" +$($PortfilePath): warning: This port installs the following CMake files in places CMake files are not expected. CMake files should be installed in `${CURRENT_PACKAGES_DIR}/share/`${PORT}. To suppress this message, add set(VCPKG_POLICY_SKIP_MISPLACED_CMAKE_FILES_CHECK enabled) +$($packagesRoot)$($NativeSlash)vcpkg-policy-misplaced-cmake-files_$($Triplet): note: the files are relative to `${CURRENT_PACKAGES_DIR} here +note: cmake/some_cmake.cmake +note: debug/cmake/some_cmake.cmake +note: lib/cmake/some_cmake.cmake +note: debug/lib/cmake/some_cmake.cmake +$($PortfilePath): warning: This port creates `${CURRENT_PACKAGES_DIR}/lib/cmake and/or `${CURRENT_PACKAGES_DIR}/debug/lib/cmake, which should be merged and moved to `${CURRENT_PACKAGES_DIR}/share/`${PORT}/cmake. Please use the helper function vcpkg_cmake_config_fixup() from the port vcpkg-cmake-config. To suppress this message, add set(VCPKG_POLICY_SKIP_LIB_CMAKE_MERGE_CHECK enabled) +"@ +if ($buildOutput.Contains("legitimate.cmake")) { + throw 'Complained about legitimate CMake files' +} +if (-not $buildOutput.Replace("`r`n", "`n").Contains($expected)) { + throw 'Did not detect bad CMake files' +} + +Refresh-TestRoot +$buildOutput = Run-VcpkgAndCaptureOutput @commonArgs install --overlay-ports="$PSScriptRoot/../e2e-ports" 'vcpkg-policy-misplaced-cmake-files[do-install-cmake,do-install-lib,policy-skip-misplaced-cmake-files-check]' --no-binarycaching --enforce-port-checks +Throw-IfNotFailed +$expected = @" +$($PortfilePath): warning: This port creates `${CURRENT_PACKAGES_DIR}/lib/cmake and/or `${CURRENT_PACKAGES_DIR}/debug/lib/cmake, which should be merged and moved to `${CURRENT_PACKAGES_DIR}/share/`${PORT}/cmake. Please use the helper function vcpkg_cmake_config_fixup() from the port vcpkg-cmake-config. To suppress this message, add set(VCPKG_POLICY_SKIP_LIB_CMAKE_MERGE_CHECK enabled) +"@ +if ($buildOutput.Contains("legitimate.cmake")) { + throw 'Complained about legitimate CMake files' +} +if (-not $buildOutput.Replace("`r`n", "`n").Contains($expected)) { + throw 'Did not detect bad CMake files' +} + +Refresh-TestRoot +$buildOutput = Run-VcpkgAndCaptureOutput @commonArgs install --overlay-ports="$PSScriptRoot/../e2e-ports" 'vcpkg-policy-misplaced-cmake-files[do-install-cmake,do-install-lib,policy-skip-lib-cmake-merge-check]' --no-binarycaching --enforce-port-checks +Throw-IfNotFailed +$expected = @" +$($PortfilePath): warning: This port installs the following CMake files in places CMake files are not expected. CMake files should be installed in `${CURRENT_PACKAGES_DIR}/share/`${PORT}. To suppress this message, add set(VCPKG_POLICY_SKIP_MISPLACED_CMAKE_FILES_CHECK enabled) +$($packagesRoot)$($NativeSlash)vcpkg-policy-misplaced-cmake-files_$($Triplet): note: the files are relative to `${CURRENT_PACKAGES_DIR} here +note: cmake/some_cmake.cmake +note: debug/cmake/some_cmake.cmake +note: lib/cmake/some_cmake.cmake +note: debug/lib/cmake/some_cmake.cmake +"@ +if ($buildOutput.Contains("legitimate.cmake")) { + throw 'Complained about legitimate CMake files' +} +if (-not $buildOutput.Replace("`r`n", "`n").Contains($expected)) { + throw 'Did not detect bad CMake files' +} + +Refresh-TestRoot +$buildOutput = Run-VcpkgAndCaptureOutput @commonArgs install --overlay-ports="$PSScriptRoot/../e2e-ports" 'vcpkg-policy-misplaced-cmake-files[do-install-cmake,policy-skip-misplaced-cmake-files-check]' --no-binarycaching --enforce-port-checks +Throw-IfFailed + +Refresh-TestRoot +$buildOutput = Run-VcpkgAndCaptureOutput @commonArgs install --overlay-ports="$PSScriptRoot/../e2e-ports" 'vcpkg-policy-misplaced-cmake-files[do-install-lib,policy-skip-misplaced-cmake-files-check,policy-skip-lib-cmake-merge-check]' --no-binarycaching --enforce-port-checks +Throw-IfFailed + +# Copyright Files +Refresh-TestRoot +$PortfilePath = "$PSScriptRoot/../e2e-ports$($NativeSlash)vcpkg-policy-copyright$($NativeSlash)portfile.cmake" +$expected = @" +$($PortfilePath): warning: this port sets `${CURRENT_PACKAGES_DIR}/share/`${PORT}/copyright to a directory, but it should be a file. Consider combining separate copyright files into one using vcpkg_install_copyright. To suppress this message, add set(VCPKG_POLICY_SKIP_COPYRIGHT_CHECK enabled) +"@ +$buildOutput = Run-VcpkgAndCaptureOutput install @commonArgs --overlay-ports="$PSScriptRoot/../e2e-ports" 'vcpkg-policy-copyright[copyright-directory]' --no-binarycaching --enforce-port-checks +Throw-IfNotFailed +if (-not $buildOutput.Contains($expected)) { + throw 'Did not detect copyright directory' +} + +$buildOutput = Run-VcpkgAndCaptureOutput install @commonArgs --overlay-ports="$PSScriptRoot/../e2e-ports" 'vcpkg-policy-copyright[copyright-directory,policy]' --no-binarycaching --enforce-port-checks +Throw-IfFailed +if ($buildOutput.Contains($expected)) { + throw 'VCPKG_POLICY_SKIP_COPYRIGHT_CHECK didn''t suppress copyright problem' +} + +Refresh-TestRoot +$expected = @" +$($PortfilePath): warning: the license is not installed to `${CURRENT_PACKAGES_DIR}/share/`${PORT}/copyright . This can be fixed by adding a call to vcpkg_install_copyright. To suppress this message, add set(VCPKG_POLICY_SKIP_COPYRIGHT_CHECK enabled) +"@ + +$buildOutput = Run-VcpkgAndCaptureOutput install @commonArgs --overlay-ports="$PSScriptRoot/../e2e-ports" 'vcpkg-policy-copyright' --no-binarycaching --enforce-port-checks +Throw-IfNotFailed +if (-not $buildOutput.Replace("`r`n", "`n").Contains($expected)) { + throw 'Did not detect missing copyright no source' +} + +Refresh-TestRoot +$expected = @" +$($PortfilePath): warning: the license is not installed to `${CURRENT_PACKAGES_DIR}/share/`${PORT}/copyright . This can be fixed by adding a call to vcpkg_install_copyright. To suppress this message, add set(VCPKG_POLICY_SKIP_COPYRIGHT_CHECK enabled) +$($PortfilePath): note: Consider adding: vcpkg_install_copyright(FILE_LIST "`${SOURCE_PATH}/LICENSE.txt") +"@ + +$buildOutput = Run-VcpkgAndCaptureOutput install @commonArgs --overlay-ports="$PSScriptRoot/../e2e-ports" 'vcpkg-policy-copyright[source]' --no-binarycaching --enforce-port-checks +Throw-IfNotFailed +if (-not $buildOutput.Replace("`r`n", "`n").Contains($expected)) { + throw 'Did not detect missing copyright source' +} + +Refresh-TestRoot +$expected = @" +$($PortfilePath): warning: the license is not installed to `${CURRENT_PACKAGES_DIR}/share/`${PORT}/copyright . This can be fixed by adding a call to vcpkg_install_copyright. To suppress this message, add set(VCPKG_POLICY_SKIP_COPYRIGHT_CHECK enabled) +$($PortfilePath): note: Consider adding: vcpkg_install_copyright(FILE_LIST "`${SOURCE_PATH}/COPYING" "`${SOURCE_PATH}/LICENSE.txt") +"@ + +$buildOutput = Run-VcpkgAndCaptureOutput install @commonArgs --overlay-ports="$PSScriptRoot/../e2e-ports" 'vcpkg-policy-copyright[source2]' --no-binarycaching --enforce-port-checks +Throw-IfNotFailed +if (-not $buildOutput.Replace("`r`n", "`n").Contains($expected)) { + throw 'Did not detect missing copyright source2' +} + +Refresh-TestRoot +$expected = @" +$($PortfilePath): warning: the license is not installed to `${CURRENT_PACKAGES_DIR}/share/`${PORT}/copyright . This can be fixed by adding a call to vcpkg_install_copyright. To suppress this message, add set(VCPKG_POLICY_SKIP_COPYRIGHT_CHECK enabled) +$($PortfilePath): note: the following files are potential copyright files +$($buildtreesRoot)$($NativeSlash)vcpkg-policy-copyright: note: the files are relative to the build directory here +note: src/v1.16.3-6f5be3c3eb.clean/LICENSE.txt +note: src/v1.3.1-2e5db616bf.clean/COPYING +note: src/v1.3.1-2e5db616bf.clean/LICENSE.txt +"@ + +$buildOutput = Run-VcpkgAndCaptureOutput install @commonArgs --overlay-ports="$PSScriptRoot/../e2e-ports" 'vcpkg-policy-copyright[source,source2]' --no-binarycaching --enforce-port-checks +Throw-IfNotFailed +if (-not $buildOutput.Replace("`r`n", "`n").Contains($expected)) { + throw 'Did not detect missing copyright source + source2' +} + +$buildOutput = Run-VcpkgAndCaptureOutput install @commonArgs --overlay-ports="$PSScriptRoot/../e2e-ports" 'vcpkg-policy-copyright[source,source2,policy]' --no-binarycaching --enforce-port-checks +Throw-IfFailed +if ($buildOutput.Replace("`r`n", "`n").Contains($expected)) { + throw 'VCPKG_POLICY_SKIP_COPYRIGHT_CHECK didn''t suppress source + source2' +} + +# EXEs in bin +if ($IsWindows) { + Refresh-TestRoot + mkdir "$TestingRoot/exes-in-bin" + Copy-Item -Recurse "$PSScriptRoot/../e2e-assets/test-exe-port-template" "$TestingRoot/exes-in-bin/test-exe" + Run-Vcpkg env "$TestingRoot/exes-in-bin/test-exe/build.cmd" --Triplet x64-windows + + $PortfilePath = "$TestingRoot/exes-in-bin$($NativeSlash)test-exe$($NativeSlash)portfile.cmake" + $buildOutput = Run-VcpkgAndCaptureOutput @commonArgs install --overlay-ports="$TestingRoot/exes-in-bin" 'test-exe[release-only]' --no-binarycaching --enforce-port-checks + Throw-IfNotFailed + $expected = @" +$($PortfilePath): warning: The following executables were found in `${CURRENT_PACKAGES_DIR}/bin or `${CURRENT_PACKAGES_DIR}/debug/bin. Executables are not valid distribution targets. If these executables are build tools, consider using ``vcpkg_copy_tools``. To suppress this message, add set(VCPKG_POLICY_ALLOW_EXES_IN_BIN enabled) +$($packagesRoot)$($NativeSlash)test-exe_x86-windows: note: the executables are relative to `${CURRENT_PACKAGES_DIR} here +note: bin/test_exe.exe +"@ + + if (-not $buildOutput.Replace("`r`n", "`n").Contains($expected)) { + throw 'Did not detect EXE in bin.' + } + + $buildOutput = Run-VcpkgAndCaptureOutput @commonArgs install --overlay-ports="$TestingRoot/exes-in-bin" test-exe --no-binarycaching --enforce-port-checks + Throw-IfNotFailed + $expected = @" +$($PortfilePath): warning: The following executables were found in `${CURRENT_PACKAGES_DIR}/bin or `${CURRENT_PACKAGES_DIR}/debug/bin. Executables are not valid distribution targets. If these executables are build tools, consider using ``vcpkg_copy_tools``. To suppress this message, add set(VCPKG_POLICY_ALLOW_EXES_IN_BIN enabled) +$($packagesRoot)$($NativeSlash)test-exe_x86-windows: note: the executables are relative to `${CURRENT_PACKAGES_DIR} here +note: debug/bin/test_exe.exe +note: bin/test_exe.exe +"@ + + if (-not $buildOutput.Replace("`r`n", "`n").Contains($expected)) { + throw 'Did not detect EXEs in bin.' + } + + $buildOutput = Run-VcpkgAndCaptureOutput @commonArgs install --overlay-ports="$TestingRoot/exes-in-bin" "test-exe[policy-allow-exes-in-bin]" --no-binarycaching --enforce-port-checks + Throw-IfFailed + if ($buildOutput.Replace("`r`n", "`n").Contains($expected)) { + throw 'VCPKG_POLICY_ALLOW_EXES_IN_BIN didn''t suppress' + } +} # windows +# Forgot to install usage +$PortfilePath = "$PSScriptRoot/../e2e-ports$($NativeSlash)vcpkg-policy-forgot-usage$($NativeSlash)portfile.cmake" +Refresh-TestRoot +$buildOutput = Run-VcpkgAndCaptureOutput @commonArgs install --overlay-ports="$PSScriptRoot/../e2e-ports" 'vcpkg-policy-forgot-usage' --no-binarycaching --enforce-port-checks +Throw-IfNotFailed +$expected = @" +$($PortfilePath): warning: this port contains a file named "usage" but didn't install it to `${CURRENT_PACKAGES_DIR}/share/`${PORT}/usage . If this file is not intended to be usage text, consider choosing another name; otherwise, install it. To suppress this message, add set(VCPKG_POLICY_SKIP_USAGE_INSTALL_CHECK enabled) +$PSScriptRoot/../e2e-ports$($NativeSlash)vcpkg-policy-forgot-usage$($NativeSlash)usage: note: the usage file is here +note: you can install the usage file with the following CMake +note: file(INSTALL "`${CMAKE_CURRENT_LIST_DIR}/usage" DESTINATION "`${CURRENT_PACKAGES_DIR}/share/`${PORT}") +"@ if (-not $buildOutput.Replace("`r`n", "`n").Contains($expected)) { - throw 'Did not detect DLL with wrong appcontainer.' + throw 'Did not detect forgotten usage' +} +$buildOutput = Run-VcpkgAndCaptureOutput @commonArgs install --overlay-ports="$PSScriptRoot/../e2e-ports" 'vcpkg-policy-forgot-usage[policy]' --no-binarycaching --enforce-port-checks +Throw-IfFailed +if ($buildOutput.Replace("`r`n", "`n").Contains($expected)) { + throw 'VCPKG_POLICY_SKIP_USAGE_INSTALL_CHECK didn''t suppress' } +# Mismatched debug and release +if ($IsWindows) { + Refresh-TestRoot + mkdir "$TestingRoot/debug-release-mismatch" + Copy-Item -Recurse "$PSScriptRoot/../e2e-assets/test-dll-port-template" "$TestingRoot/debug-release-mismatch/test-dll" + Run-Vcpkg @commonArgs env "$TestingRoot/debug-release-mismatch/test-dll/build.cmd" + $PortfilePath = "$TestingRoot/debug-release-mismatch$($NativeSlash)test-dll$($NativeSlash)portfile.cmake" + +$expected = @" +$($PortfilePath): warning: mismatching number of debug and release binaries. This often indicates incorrect handling of debug or release in portfile.cmake or the build system. If the intent is to only ever produce release components for this triplet, the triplet should have set(VCPKG_BUILD_TYPE release) added to its .cmake file. To suppress this message, add set(VCPKG_POLICY_MISMATCHED_NUMBER_OF_BINARIES enabled) +$($packagesRoot)$($NativeSlash)test-dll_x86-windows: note: the binaries are relative to `${CURRENT_PACKAGES_DIR} here +note: The following are debug binaries: +note: debug/lib/test_dll.lib +note: debug/bin/test_dll.dll +note: Release binaries were not found. +"@ + $buildOutput = Run-VcpkgAndCaptureOutput @commonArgs install --overlay-ports="$TestingRoot/debug-release-mismatch" 'test-dll[debug-only]' --no-binarycaching --enforce-port-checks + Throw-IfNotFailed + if (-not $buildOutput.Replace("`r`n", "`n").Contains($expected)) { + throw 'Did not detect debug only mismatch' + } + +$expected = @" +$($PortfilePath): warning: mismatching number of debug and release binaries. This often indicates incorrect handling of debug or release in portfile.cmake or the build system. If the intent is to only ever produce release components for this triplet, the triplet should have set(VCPKG_BUILD_TYPE release) added to its .cmake file. To suppress this message, add set(VCPKG_POLICY_MISMATCHED_NUMBER_OF_BINARIES enabled) +$($packagesRoot)$($NativeSlash)test-dll_x86-windows: note: the binaries are relative to `${CURRENT_PACKAGES_DIR} here +note: Debug binaries were not found. +note: The following are release binaries: +note: lib/test_dll.lib +note: bin/test_dll.dll +"@ + $buildOutput = Run-VcpkgAndCaptureOutput @commonArgs install --overlay-ports="$TestingRoot/debug-release-mismatch" 'test-dll[bad-release-only]' --no-binarycaching --enforce-port-checks + Throw-IfNotFailed + if (-not $buildOutput.Replace("`r`n", "`n").Contains($expected)) { + throw 'Did not detect release only mismatch' + } + +$expected = @" +$($PortfilePath): warning: mismatching number of debug and release binaries. This often indicates incorrect handling of debug or release in portfile.cmake or the build system. If the intent is to only ever produce release components for this triplet, the triplet should have set(VCPKG_BUILD_TYPE release) added to its .cmake file. To suppress this message, add set(VCPKG_POLICY_MISMATCHED_NUMBER_OF_BINARIES enabled) +$($packagesRoot)$($NativeSlash)test-dll_x86-windows: note: the binaries are relative to `${CURRENT_PACKAGES_DIR} here +note: The following are debug binaries: +note: debug/lib/test_dll.lib +note: debug/lib/test_dll2.lib +note: debug/bin/test_dll.dll +note: debug/bin/test_dll2.dll +note: The following are release binaries: +note: lib/test_dll.lib +note: bin/test_dll.dll +"@ + $buildOutput = Run-VcpkgAndCaptureOutput @commonArgs install --overlay-ports="$TestingRoot/debug-release-mismatch" 'test-dll[extra-debug]' --no-binarycaching --enforce-port-checks + Throw-IfNotFailed + if (-not $buildOutput.Replace("`r`n", "`n").Contains($expected)) { + throw 'Did not detect extra debug mismatch' + } + +$expected = @" +$($PortfilePath): warning: mismatching number of debug and release binaries. This often indicates incorrect handling of debug or release in portfile.cmake or the build system. If the intent is to only ever produce release components for this triplet, the triplet should have set(VCPKG_BUILD_TYPE release) added to its .cmake file. To suppress this message, add set(VCPKG_POLICY_MISMATCHED_NUMBER_OF_BINARIES enabled) +$($packagesRoot)$($NativeSlash)test-dll_x86-windows: note: the binaries are relative to `${CURRENT_PACKAGES_DIR} here +note: The following are debug binaries: +note: debug/lib/test_dll.lib +note: debug/bin/test_dll.dll +note: The following are release binaries: +note: lib/test_dll.lib +note: lib/test_dll2.lib +note: bin/test_dll.dll +note: bin/test_dll2.dll +"@ + $buildOutput = Run-VcpkgAndCaptureOutput @commonArgs install --overlay-ports="$TestingRoot/debug-release-mismatch" 'test-dll[extra-release]' --no-binarycaching --enforce-port-checks + Throw-IfNotFailed + if (-not $buildOutput.Replace("`r`n", "`n").Contains($expected)) { + throw 'Did not detect extra release mismatch' + } + + $buildOutput = Run-VcpkgAndCaptureOutput @commonArgs install --overlay-ports="$TestingRoot/debug-release-mismatch" 'test-dll[extra-release,policy-mismatched-number-of-binaries]' --no-binarycaching --enforce-port-checks + Throw-IfFailed + if ($buildOutput.Replace("`r`n", "`n").Contains('mismatching number of debug and release binaries')) { + throw 'VCPKG_POLICY_MISMATCHED_NUMBER_OF_BINARIES didn''t suppress' + } +} + +# Kernel32 from XBox +if ($IsWindows) { + Refresh-TestRoot + mkdir "$TestingRoot/kernel32-from-xbox" + Copy-Item -Recurse "$PSScriptRoot/../e2e-assets/test-dll-port-template" "$TestingRoot/kernel32-from-xbox/test-dll" + Run-Vcpkg env "$TestingRoot/kernel32-from-xbox/test-dll/build.cmd" --Triplet x64-windows + + $PortfilePath = "$TestingRoot/kernel32-from-xbox$($NativeSlash)test-dll$($NativeSlash)portfile.cmake" + $buildOutput = Run-VcpkgAndCaptureOutput --triplet x64-xbox-xboxone "--x-buildtrees-root=$buildtreesRoot" "--x-install-root=$installRoot" "--x-packages-root=$packagesRoot" install --overlay-ports="$TestingRoot/kernel32-from-xbox" test-dll --no-binarycaching --enforce-port-checks + Throw-IfNotFailed + $expected = @" +$($PortfilePath): warning: The selected triplet targets Xbox, but the following DLLs link with kernel32. These DLLs cannot be loaded on Xbox, where kernel32 is not present. This is typically caused by linking with kernel32.lib rather than a suitable umbrella library, such as onecore_apiset.lib or xgameplatform.lib. You can inspect a DLL's dependencies with ``dumpbin.exe /dependents mylibfile.dll``. To suppress this message, add set(VCPKG_POLICY_ALLOW_KERNEL32_FROM_XBOX enabled) +$($packagesRoot)$($NativeSlash)test-dll_x64-xbox-xboxone: note: the DLLs are relative to `${CURRENT_PACKAGES_DIR} here +note: debug/bin/test_dll.dll +note: bin/test_dll.dll +"@ + + if (-not $buildOutput.Replace("`r`n", "`n").Contains($expected)) { + throw 'Did not detect Kernel32 from xbox.' + } + + $buildOutput = Run-VcpkgAndCaptureOutput --triplet x64-xbox-xboxone "--x-buildtrees-root=$buildtreesRoot" "--x-install-root=$installRoot" "--x-packages-root=$packagesRoot" install --overlay-ports="$TestingRoot/kernel32-from-xbox" 'test-dll[policy-allow-kernel32-from-xbox]' --no-binarycaching --enforce-port-checks + Throw-IfFailed + if ($buildOutput.Replace("`r`n", "`n").Contains($expected)) { + throw 'VCPKG_POLICY_ALLOW_KERNEL32_FROM_XBOX didn''t suppress' + } +} # windows + +# DLLs with missing libs +if ($IsWindows) { + Refresh-TestRoot + mkdir "$TestingRoot/dlls-no-lib" + Copy-Item -Recurse "$PSScriptRoot/../e2e-assets/test-dll-port-template" "$TestingRoot/dlls-no-lib/test-dll" + Run-Vcpkg @commonArgs env "$TestingRoot/dlls-no-lib/test-dll/build.cmd" + + $PortfilePath = "$TestingRoot/dlls-no-lib$($NativeSlash)test-dll$($NativeSlash)portfile.cmake" + $expected = @" +$($PortfilePath): warning: Import libraries for installed DLLs appear to be missing. If this is intended, add set(VCPKG_POLICY_DLLS_WITHOUT_LIBS enabled) +"@ + + $buildOutput = Run-VcpkgAndCaptureOutput @commonArgs install --overlay-ports="$TestingRoot/dlls-no-lib" "test-dll[install-no-lib-debug]" --no-binarycaching --enforce-port-checks + Throw-IfNotFailed + if (-not $buildOutput.Replace("`r`n", "`n").Contains($expected)) { + throw 'Did not detect DLLs with no import libraries debug' + } + + $buildOutput = Run-VcpkgAndCaptureOutput @commonArgs install --overlay-ports="$TestingRoot/dlls-no-lib" "test-dll[install-no-lib-release]" --no-binarycaching --enforce-port-checks + Throw-IfNotFailed + if (-not $buildOutput.Replace("`r`n", "`n").Contains($expected)) { + throw 'Did not detect DLLs with no import libraries release' + } + + $buildOutput = Run-VcpkgAndCaptureOutput @commonArgs install --overlay-ports="$TestingRoot/dlls-no-lib" "test-dll[install-no-lib-debug,install-no-lib-release]" --no-binarycaching --enforce-port-checks + Throw-IfNotFailed + $buildOutput = $buildOutput.Replace("`r`n", "`n") + $first = $buildOutput.IndexOf($expected) + if ($first -lt 0) { + throw 'Did not detect DLLs with no import libraries both' + } + if ($buildOutput.IndexOf($expected, $first + 1) -ge 0){ + throw 'Detected duplicate DLLs with no import libraries' + } + + $buildOutput = Run-VcpkgAndCaptureOutput @commonArgs install --overlay-ports="$TestingRoot/dlls-in-lib" "test-dll[install-no-lib-debug,install-no-lib-release,policy-dlls-without-libs]" --no-binarycaching --enforce-port-checks + Throw-IfNotFailed + if ($buildOutput.Replace("`r`n", "`n").Contains($expected)) { + throw 'VCPKG_POLICY_DLLS_WITHOUT_LIBS didn''t suppress' + } +} # windows + +# DLLs in lib +if ($IsWindows) { + Refresh-TestRoot + mkdir "$TestingRoot/dlls-in-lib" + Copy-Item -Recurse "$PSScriptRoot/../e2e-assets/test-dll-port-template" "$TestingRoot/dlls-in-lib/test-dll" + Run-Vcpkg @commonArgs env "$TestingRoot/dlls-in-lib/test-dll/build.cmd" + + $PortfilePath = "$TestingRoot/dlls-in-lib$($NativeSlash)test-dll$($NativeSlash)portfile.cmake" + $buildOutput = Run-VcpkgAndCaptureOutput @commonArgs install --overlay-ports="$TestingRoot/dlls-in-lib" "test-dll[install-to-lib]" --no-binarycaching --enforce-port-checks + Throw-IfNotFailed + $expected = @" +$($PortfilePath): warning: The following dlls were found in `${CURRENT_PACKAGES_DIR}/lib or `${CURRENT_PACKAGES_DIR}/debug/lib. Please move them to `${CURRENT_PACKAGES_DIR}/bin or `${CURRENT_PACKAGES_DIR}/debug/bin, respectively. +$($packagesRoot)$($NativeSlash)test-dll_$($Triplet): note: the DLLs are relative to `${CURRENT_PACKAGES_DIR} here +note: debug/lib/test_dll.dll +note: lib/test_dll.dll +"@ + + if (-not $buildOutput.Replace("`r`n", "`n").Contains($expected)) { + throw 'Did not detect DLL in lib.' + } + + $buildOutput = Run-VcpkgAndCaptureOutput @commonArgs install --overlay-ports="$TestingRoot/dlls-in-lib" "test-dll[install-to-lib,policy-allow-dlls-in-lib]" --no-binarycaching --enforce-port-checks + Throw-IfFailed + if ($buildOutput.Replace("`r`n", "`n").Contains($expected)) { + throw 'VCPKG_POLICY_ALLOW_DLLS_IN_LIB didn''t suppress' + } +} # windows + +# DLLs with no exports +if ($IsWindows) { + Refresh-TestRoot + $buildOutput = Run-VcpkgAndCaptureOutput @commonArgs install --overlay-ports="$PSScriptRoot/../e2e-ports" vcpkg-internal-dll-with-no-exports --no-binarycaching --enforce-port-checks + Throw-IfNotFailed + $PortfilePath = "$PSScriptRoot/../e2e-ports$($NativeSlash)vcpkg-internal-dll-with-no-exports$($NativeSlash)portfile.cmake" + $expected = @" +$($PortfilePath): warning: the following DLLs were built without any exports. DLLs without exports are likely bugs in the build script. If this is intended, add set(VCPKG_POLICY_DLLS_WITHOUT_EXPORTS enabled) +$($packagesRoot)$($NativeSlash)vcpkg-internal-dll-with-no-exports_$($Triplet): note: the DLLs are relative to `${CURRENT_PACKAGES_DIR} here +note: debug/bin/no_exports.dll +note: bin/no_exports.dll +"@ + + if (-not $buildOutput.Replace("`r`n", "`n").Contains($expected)) { + throw 'Did not detect DLLs with no exports' + } + + Refresh-TestRoot + $buildOutput = Run-VcpkgAndCaptureOutput @commonArgs install --overlay-ports="$PSScriptRoot/../e2e-ports" 'vcpkg-internal-dll-with-no-exports[policy]' --no-binarycaching --enforce-port-checks + Throw-IfFailed + if ($buildOutput.Replace("`r`n", "`n").Contains($expected)) { + throw 'VCPKG_POLICY_DLLS_WITHOUT_EXPORTS didn''t suppress' + } +} # windows + +# DLLs with wrong architecture +if ($IsWindows) { + Refresh-TestRoot + mkdir "$TestingRoot/wrong-architecture" + Copy-Item -Recurse "$PSScriptRoot/../e2e-assets/test-dll-port-template" "$TestingRoot/wrong-architecture/test-dll" + Run-Vcpkg env "$TestingRoot/wrong-architecture/test-dll/build.cmd" --Triplet x64-windows + $PortfilePath = "$TestingRoot/wrong-architecture$($NativeSlash)test-dll$($NativeSlash)portfile.cmake" + $buildOutput = Run-VcpkgAndCaptureOutput @commonArgs install --overlay-ports="$TestingRoot/wrong-architecture" test-dll --no-binarycaching --enforce-port-checks + Throw-IfNotFailed + $expected = @" +$($PortfilePath): warning: The triplet requests that binaries are built for x86, but the following binaries were built for a different architecture. This usually means toolchain information is incorrectly conveyed to the binaries' build system. To suppress this message, add set(VCPKG_POLICY_SKIP_ARCHITECTURE_CHECK enabled) +$($packagesRoot)$($NativeSlash)test-dll_$($Triplet): note: the binaries are relative to `${CURRENT_PACKAGES_DIR} here +note: debug/lib/test_dll.lib is built for x64 +note: lib/test_dll.lib is built for x64 +note: debug/bin/test_dll.dll is built for x64 +note: bin/test_dll.dll is built for x64 +"@ + + if (-not $buildOutput.Replace("`r`n", "`n").Contains($expected)) { + throw 'Did not detect DLL with wrong architecture.' + } + + $buildOutput = Run-VcpkgAndCaptureOutput @commonArgs install --overlay-ports="$TestingRoot/wrong-architecture" 'test-dll[policy-skip-architecture-check]' --no-binarycaching --enforce-port-checks + Throw-IfFailed + if ($buildOutput.Contains("warning: The following files were built for an incorrect architecture. To suppress this message, add set(VCPKG_POLICY_SKIP_ARCHITECTURE_CHECK enabled) to portfile.cmake.")) { + throw 'VCPKG_POLICY_SKIP_ARCHITECTURE_CHECK didn''t suppress' + } +} # windows + +# DLLs with no AppContainer bit +if ($IsWindows) { + Refresh-TestRoot + mkdir "$TestingRoot/wrong-appcontainer" + Copy-Item -Recurse "$PSScriptRoot/../e2e-assets/test-dll-port-template" "$TestingRoot/wrong-appcontainer/test-dll" + Run-Vcpkg env "$TestingRoot/wrong-appcontainer/test-dll/build.cmd" --Triplet x64-windows + + $PortfilePath = "$TestingRoot/wrong-appcontainer$($NativeSlash)test-dll$($NativeSlash)portfile.cmake" + $buildOutput = Run-VcpkgAndCaptureOutput --triplet x64-uwp "--x-buildtrees-root=$buildtreesRoot" "--x-install-root=$installRoot" "--x-packages-root=$packagesRoot" install --overlay-ports="$TestingRoot/wrong-appcontainer" test-dll --no-binarycaching --enforce-port-checks + Throw-IfNotFailed + $expected = @" +$($PortfilePath): warning: The App Container bit must be set for all DLLs in Windows Store apps, and the triplet requests targeting the Windows Store, but the following DLLs were not built with the bit set. This usually means that toolchain linker flags are not being properly propagated, or the linker in use does not support the /APPCONTAINER switch. To suppress this message, add set(VCPKG_POLICY_SKIP_APPCONTAINER_CHECK enabled) +$($packagesRoot)$($NativeSlash)test-dll_x64-uwp: note: the DLLs are relative to `${CURRENT_PACKAGES_DIR} here +note: debug/bin/test_dll.dll +note: bin/test_dll.dll +"@ + + if (-not $buildOutput.Replace("`r`n", "`n").Contains($expected)) { + throw 'Did not detect DLL with wrong appcontainer.' + } + + $buildOutput = Run-VcpkgAndCaptureOutput --triplet x64-uwp "--x-buildtrees-root=$buildtreesRoot" "--x-install-root=$installRoot" "--x-packages-root=$packagesRoot" install --overlay-ports="$TestingRoot/wrong-appcontainer" 'test-dll[policy-skip-appcontainer-check]' --no-binarycaching --enforce-port-checks + Throw-IfFailed + if ($buildOutput.Contains("warning: The App Container bit must be set")) { + throw 'VCPKG_POLICY_SKIP_APPCONTAINER_CHECK didn''t suppress' + } +} # windows + +# Obsolete CRTs +if ($IsWindows) { + Refresh-TestRoot + $PortfilePath = "$PSScriptRoot/../e2e-ports$($NativeSlash)vcpkg-msvc-2013$($NativeSlash)portfile.cmake" + $expected = @" +$($PortfilePath): warning: DLLs that link with obsolete C RunTime ("CRT") DLLs were installed. Installed DLLs should link with an in-support CRT. You can inspect the dependencies of a DLL with ``dumpbin.exe /dependents mylibfile.dll``. If you're using a custom triplet targeting an old CRT, add set(VCPKG_POLICY_ALLOW_OBSOLETE_MSVCRT enabled) to the triplet's .cmake file. To suppress this message for this port, add set(VCPKG_POLICY_ALLOW_OBSOLETE_MSVCRT enabled) +$($packagesRoot)$($NativeSlash)vcpkg-msvc-2013_x86-windows: note: the DLLs are relative to `${CURRENT_PACKAGES_DIR} here +note: debug/bin/test_dll.dll +note: bin/test_dll.dll +"@ + + $buildOutput = Run-VcpkgAndCaptureOutput --triplet x86-windows "--x-buildtrees-root=$buildtreesRoot" "--x-install-root=$installRoot" "--x-packages-root=$packagesRoot" install --overlay-ports="$PSScriptRoot/../e2e-ports" 'vcpkg-msvc-2013' --no-binarycaching --enforce-port-checks + Throw-IfNotFailed + if (-not $buildOutput.Replace("`r`n", "`n").Contains($expected)) { + throw 'Did not detect obsolete CRT.' + } + + $buildOutput = Run-VcpkgAndCaptureOutput --triplet x86-windows "--x-buildtrees-root=$buildtreesRoot" "--x-install-root=$installRoot" "--x-packages-root=$packagesRoot" install --overlay-ports="$PSScriptRoot/../e2e-ports" 'vcpkg-msvc-2013[policy]' --no-binarycaching --enforce-port-checks + Throw-IfFailed + if ($buildOutput.Replace("`r`n", "`n").Contains($expected)) { + throw 'VCPKG_POLICY_ALLOW_OBSOLETE_MSVCRT did not suppress' + } + + Refresh-TestRoot + $expected = @" +$($PortfilePath): warning: DLLs that link with obsolete C RunTime ("CRT") DLLs were installed. Installed DLLs should link with an in-support CRT. You can inspect the dependencies of a DLL with ``dumpbin.exe /dependents mylibfile.dll``. If you're using a custom triplet targeting an old CRT, add set(VCPKG_POLICY_ALLOW_OBSOLETE_MSVCRT enabled) to the triplet's .cmake file. To suppress this message for this port, add set(VCPKG_POLICY_ALLOW_OBSOLETE_MSVCRT enabled) +$($packagesRoot)$($NativeSlash)vcpkg-msvc-2013_x86-windows: note: the DLLs are relative to `${CURRENT_PACKAGES_DIR} here +note: bin/test_dll.dll +"@ + + $buildOutput = Run-VcpkgAndCaptureOutput --triplet x86-windows "--x-buildtrees-root=$buildtreesRoot" "--x-install-root=$installRoot" "--x-packages-root=$packagesRoot" install --overlay-ports="$PSScriptRoot/../e2e-ports" 'vcpkg-msvc-2013[release-only]' --no-binarycaching --enforce-port-checks + Throw-IfNotFailed + if (-not $buildOutput.Replace("`r`n", "`n").Contains($expected)) { + throw 'Did not detect obsolete CRT.' + } +} # windows + +# DLLs in static mode +if ($IsWindows) { + Refresh-TestRoot + mkdir "$TestingRoot/dlls-in-static" + Copy-Item -Recurse "$PSScriptRoot/../e2e-assets/test-dll-port-template" "$TestingRoot/dlls-in-static/test-dll" + Run-Vcpkg @directoryArgs env "$TestingRoot/dlls-in-static/test-dll/build.cmd" --triplet x64-windows + + $PortfilePath = "$TestingRoot/dlls-in-static$($NativeSlash)test-dll$($NativeSlash)portfile.cmake" + $buildOutput = Run-VcpkgAndCaptureOutput @directoryArgs install --triplet x64-windows-static --overlay-ports="$TestingRoot/dlls-in-static" "test-dll[release-only]" --no-binarycaching --enforce-port-checks + Throw-IfNotFailed + $expected = @" +$($PortfilePath): warning: DLLs should not be present in a static build, but the following DLLs were found. To suppress this message, add set(VCPKG_POLICY_DLLS_IN_STATIC_LIBRARY enabled) +$($packagesRoot)$($NativeSlash)test-dll_x64-windows-static: note: the DLLs are relative to `${CURRENT_PACKAGES_DIR} here +note: bin/test_dll.dll +$($PortfilePath): warning: `${CURRENT_PACKAGES_DIR}/bin exists but should not in a static build. To suppress this message, add set(VCPKG_POLICY_DLLS_IN_STATIC_LIBRARY enabled) +note: if creation of these directories cannot be disabled, you can add the following in portfile.cmake to remove them +if(VCPKG_LIBRARY_LINKAGE STREQUAL "static") + file(REMOVE_RECURSE "`${CURRENT_PACKAGES_DIR}/bin") +endif() +"@ + + if (-not $buildOutput.Replace("`r`n", "`n").Contains($expected)) { + throw 'Did not detect DLL in static release-only.' + } + + + $buildOutput = Run-VcpkgAndCaptureOutput @directoryArgs install --triplet x64-windows-static --overlay-ports="$TestingRoot/dlls-in-static" "test-dll" --no-binarycaching --enforce-port-checks + Throw-IfNotFailed + $expected = @" +$($PortfilePath): warning: DLLs should not be present in a static build, but the following DLLs were found. To suppress this message, add set(VCPKG_POLICY_DLLS_IN_STATIC_LIBRARY enabled) +$($packagesRoot)$($NativeSlash)test-dll_x64-windows-static: note: the DLLs are relative to `${CURRENT_PACKAGES_DIR} here +note: debug/bin/test_dll.dll +note: bin/test_dll.dll +$($PortfilePath): warning: `${CURRENT_PACKAGES_DIR}/debug/bin exists but should not in a static build. To suppress this message, add set(VCPKG_POLICY_DLLS_IN_STATIC_LIBRARY enabled) +$($PortfilePath): warning: `${CURRENT_PACKAGES_DIR}/bin exists but should not in a static build. To suppress this message, add set(VCPKG_POLICY_DLLS_IN_STATIC_LIBRARY enabled) +note: if creation of these directories cannot be disabled, you can add the following in portfile.cmake to remove them +if(VCPKG_LIBRARY_LINKAGE STREQUAL "static") + file(REMOVE_RECURSE "`${CURRENT_PACKAGES_DIR}/debug/bin" "`${CURRENT_PACKAGES_DIR}/bin") +endif() +"@ + + if (-not $buildOutput.Replace("`r`n", "`n").Contains($expected)) { + throw 'Did not detect DLL in static.' + } + + $buildOutput = Run-VcpkgAndCaptureOutput @directoryArgs install --triplet x64-windows-static --overlay-ports="$TestingRoot/dlls-in-static" "test-dll[policy-dlls-in-static-library]" --no-binarycaching --enforce-port-checks + Throw-IfFailed + if ($buildOutput.Replace("`r`n", "`n").Contains($expected)) { + throw 'VCPKG_POLICY_DLLS_IN_STATIC_LIBRARY didn''t suppress' + } +} # windows + # Wrong CRT linkage +if ($IsWindows) { + Refresh-TestRoot + mkdir "$TestingRoot/wrong-crt" + Copy-Item -Recurse "$PSScriptRoot/../e2e-assets/test-lib-port-template-dynamic-crt" "$TestingRoot/wrong-crt/test-lib" + Run-Vcpkg env "$TestingRoot/wrong-crt/test-lib/build.cmd" --Triplet x86-windows-static + $PortfilePath = "$TestingRoot/wrong-crt$($NativeSlash)test-lib$($NativeSlash)portfile.cmake" + $buildOutput = Run-VcpkgAndCaptureOutput --triplet x86-windows-static "--x-buildtrees-root=$buildtreesRoot" "--x-install-root=$installRoot" "--x-packages-root=$packagesRoot" install --overlay-ports="$TestingRoot/wrong-crt" test-lib --no-binarycaching --enforce-port-checks + Throw-IfNotFailed +$expected = @" +$($PortfilePath): warning: binaries built by this port link with C RunTimes ("CRTs") inconsistent with those requested by the triplet and deployment structure. If the triplet is intended to only use the release CRT, you should add set(VCPKG_POLICY_ONLY_RELEASE_CRT enabled) to the triplet .cmake file. To suppress this check entirely, add set(VCPKG_POLICY_SKIP_CRT_LINKAGE_CHECK enabled) to the triplet .cmake if this is triplet-wide, or to portfile.cmake if this is specific to the port. You can inspect the binaries with: dumpbin.exe /directives mylibfile.lib +$packagesRoot\test-lib_x86-windows-static: note: the binaries are relative to `${CURRENT_PACKAGES_DIR} here +note: The following binaries should link with only: Static Debug (/MTd) +note: debug/lib/both_lib.lib links with: Dynamic Debug (/MDd) +note: debug/lib/both_lib.lib links with: Dynamic Release (/MD) +note: debug/lib/test_lib.lib links with: Dynamic Debug (/MDd) +note: The following binaries should link with only: Static Release (/MT) +note: lib/both_lib.lib links with: Dynamic Debug (/MDd) +note: lib/both_lib.lib links with: Dynamic Release (/MD) +note: lib/test_lib.lib links with: Dynamic Release (/MD) +"@ + + if (-not $buildOutput.Replace("`r`n", "`n").Contains($expected)) { + throw 'Did not detect lib with wrong CRT linkage.' + } + + $buildOutput = Run-VcpkgAndCaptureOutput --triplet x86-windows-static "--x-buildtrees-root=$buildtreesRoot" "--x-install-root=$installRoot" "--x-packages-root=$packagesRoot" install --overlay-ports="$TestingRoot/wrong-crt" 'test-lib[policy-skip-crt-linkage-check]' --no-binarycaching --enforce-port-checks + Throw-IfFailed + if ($buildOutput.Contains('warning: The following binaries should use the Static Debug (/MTd) CRT')) { + throw 'VCPKG_POLICY_SKIP_CRT_LINKAGE_CHECK didn''t suppress' + } + +# ... also release only + Refresh-TestRoot + mkdir "$TestingRoot/wrong-crt-release-only" + $PortfilePath = "$TestingRoot/wrong-crt-release-only$($NativeSlash)test-lib$($NativeSlash)portfile.cmake" + Copy-Item -Recurse "$PSScriptRoot/../e2e-assets/test-lib-port-template-dynamic-crt-release-only" "$TestingRoot/wrong-crt-release-only/test-lib" + Run-Vcpkg env "$TestingRoot/wrong-crt-release-only/test-lib/build.cmd" --Triplet x86-windows-static + + $buildOutput = Run-VcpkgAndCaptureOutput --triplet x86-windows-static "--x-buildtrees-root=$buildtreesRoot" "--x-install-root=$installRoot" "--x-packages-root=$packagesRoot" install --overlay-ports="$TestingRoot/wrong-crt-release-only" test-lib --no-binarycaching --enforce-port-checks + Throw-IfNotFailed +$expected = @" +$($PortfilePath): warning: binaries built by this port link with C RunTimes ("CRTs") inconsistent with those requested by the triplet and deployment structure. If the triplet is intended to only use the release CRT, you should add set(VCPKG_POLICY_ONLY_RELEASE_CRT enabled) to the triplet .cmake file. To suppress this check entirely, add set(VCPKG_POLICY_SKIP_CRT_LINKAGE_CHECK enabled) to the triplet .cmake if this is triplet-wide, or to portfile.cmake if this is specific to the port. You can inspect the binaries with: dumpbin.exe /directives mylibfile.lib +$packagesRoot\test-lib_x86-windows-static: note: the binaries are relative to `${CURRENT_PACKAGES_DIR} here +note: The following binaries should link with only: Static Debug (/MTd) +note: debug/lib/test_lib.lib links with: Dynamic Release (/MD) +note: The following binaries should link with only: Static Release (/MT) +note: lib/test_lib.lib links with: Dynamic Release (/MD) +"@ + + if (-not $buildOutput.Replace("`r`n", "`n").Contains($expected)) { + throw 'Did not detect lib with wrong CRT linkage release only.' + } + + $buildOutput = Run-VcpkgAndCaptureOutput --triplet x86-windows-static "--x-buildtrees-root=$buildtreesRoot" "--x-install-root=$installRoot" "--x-packages-root=$packagesRoot" install --overlay-ports="$TestingRoot/wrong-crt-release-only" 'test-lib[policy-only-release-crt]' --no-binarycaching --enforce-port-checks + Throw-IfNotFailed +$expected = @" +$($PortfilePath): warning: binaries built by this port link with C RunTimes ("CRTs") inconsistent with those requested by the triplet and deployment structure. If the triplet is intended to only use the release CRT, you should add set(VCPKG_POLICY_ONLY_RELEASE_CRT enabled) to the triplet .cmake file. To suppress this check entirely, add set(VCPKG_POLICY_SKIP_CRT_LINKAGE_CHECK enabled) to the triplet .cmake if this is triplet-wide, or to portfile.cmake if this is specific to the port. You can inspect the binaries with: dumpbin.exe /directives mylibfile.lib +$packagesRoot\test-lib_x86-windows-static: note: the binaries are relative to `${CURRENT_PACKAGES_DIR} here +note: The following binaries should link with only: Static Release (/MT) +note: debug/lib/test_lib.lib links with: Dynamic Release (/MD) +note: lib/test_lib.lib links with: Dynamic Release (/MD) +"@ + + if (-not $buildOutput.Replace("`r`n", "`n").Contains($expected)) { + throw 'Did not detect lib with wrong CRT linkage release only.' + } + + if ($buildOutput.Contains('warning: The following binaries should use the Static Debug (/MTd) CRT')) { + throw 'VCPKG_POLICY_ONLY_RELEASE_CRT didn''t suppress detecting debug CRTs' + } + + $buildOutput = Run-VcpkgAndCaptureOutput --triplet x86-windows-static "--x-buildtrees-root=$buildtreesRoot" "--x-install-root=$installRoot" "--x-packages-root=$packagesRoot" install --overlay-ports="$TestingRoot/wrong-crt-release-only" 'test-lib[policy-skip-crt-linkage-check]' --no-binarycaching --enforce-port-checks + Throw-IfFailed + if ($buildOutput.Contains('warning: The following binaries should use the Static Release (/MT) CRT')) { + throw 'VCPKG_POLICY_SKIP_CRT_LINKAGE_CHECK didn''t suppress' + } +} # windows + +# Empty folders +Refresh-TestRoot +$PortfilePath = "$PSScriptRoot/../e2e-ports$($NativeSlash)vcpkg-policy-empty-folders$($NativeSlash)portfile.cmake" +$expected = @" +$($PortfilePath): warning: There should be no installed empty directories. Empty directories are not representable to several binary cache providers, git repositories, and are not considered semantic build outputs. You should either create a regular file inside each empty directory, or delete them with the following CMake. To suppress this message, add set(VCPKG_POLICY_ALLOW_EMPTY_FOLDERS enabled) +$($packagesRoot)$($NativeSlash)vcpkg-policy-empty-folders_$($Triplet): note: the directories are relative to `${CURRENT_PACKAGES_DIR} here +note: file(REMOVE_RECURSE "`${CURRENT_PACKAGES_DIR}/empty-directory" "`${CURRENT_PACKAGES_DIR}/root/empty-inner-directory") +"@ +$buildOutput = Run-VcpkgAndCaptureOutput @commonArgs install --overlay-ports="$PSScriptRoot/../e2e-ports" 'vcpkg-policy-empty-folders' --no-binarycaching --enforce-port-checks +Throw-IfNotFailed +if (-not $buildOutput.Replace("`r`n", "`n").Contains($expected)) { + throw 'Did not detect empty directories' +} + +$buildOutput = Run-VcpkgAndCaptureOutput @commonArgs install --overlay-ports="$PSScriptRoot/../e2e-ports" 'vcpkg-policy-empty-folders[policy]' --no-binarycaching --enforce-port-checks +Throw-IfFailed +if ($buildOutput.Replace("`r`n", "`n").Contains($expected)) { + throw 'VCPKG_POLICY_ALLOW_EMPTY_FOLDERS didn''t suppress' +} + +# Misplaced regular files Refresh-TestRoot -mkdir "$TestingRoot/wrong-crt" -Copy-Item -Recurse "$PSScriptRoot/../e2e-assets/test-lib-port-template-dynamic-crt" "$TestingRoot/wrong-crt/test-lib" -Run-Vcpkg env "$TestingRoot/wrong-crt/test-lib/build.cmd" --Triplet x86-windows-static -Throw-IfFailed - -$buildOutput = Run-VcpkgAndCaptureOutput --triplet x86-windows-static "--x-buildtrees-root=$buildtreesRoot" "--x-install-root=$installRoot" "--x-packages-root=$packagesRoot" install --overlay-ports="$TestingRoot/wrong-crt" test-lib --no-binarycaching -$expected = "warning: The following binaries should use the Static Debug (/MTd) CRT.`n" + -" $packagesRoot\test-lib_x86-windows-static\debug\lib\both_lib.lib links with:`n" + -" Dynamic Debug (/MDd)`n" + -" Dynamic Release (/MD)`n" + -" $packagesRoot\test-lib_x86-windows-static\debug\lib\test_lib.lib links with: Dynamic Debug (/MDd)`n" + -"To inspect the lib files, use:`n" + -" dumpbin.exe /directives mylibfile.lib`n" + -"warning: The following binaries should use the Static Release (/MT) CRT.`n" + -" $packagesRoot\test-lib_x86-windows-static\lib\both_lib.lib links with:`n" + -" Dynamic Debug (/MDd)`n" + -" Dynamic Release (/MD)`n" + -" $packagesRoot\test-lib_x86-windows-static\lib\test_lib.lib links with: Dynamic Release (/MD)`n" + -"To inspect the lib files, use:`n" + -" dumpbin.exe /directives mylibfile.lib`n" -if (-not $buildOutput.Replace("`r`n", "`n").Contains($expected)) { - throw 'Did not detect lib with wrong CRT linkage.' +$PortfilePath = "$PSScriptRoot/../e2e-ports$($NativeSlash)vcpkg-policy-misplaced-regular-files$($NativeSlash)portfile.cmake" +$buildOutput = Run-VcpkgAndCaptureOutput @commonArgs install --overlay-ports="$PSScriptRoot/../e2e-ports" 'vcpkg-policy-misplaced-regular-files' --no-binarycaching --enforce-port-checks +Throw-IfNotFailed +$expected = @" +$($PortfilePath): warning: The following regular files are installed to location(s) where regular files may not be installed. These should be installed in a subdirectory. To suppress this message, add set(VCPKG_POLICY_SKIP_MISPLACED_REGULAR_FILES_CHECK enabled) +$($packagesRoot)$($NativeSlash)vcpkg-policy-misplaced-regular-files_$($Triplet): note: the files are relative to `${CURRENT_PACKAGES_DIR} here +note: debug/bad_debug_file.txt +note: bad_file.txt +"@ +if (-not $buildOutput.Replace("`r`n", "`n").Contains($expected)) { + throw 'Did not detect bad regular files' +} +$buildOutput = Run-VcpkgAndCaptureOutput @commonArgs install --overlay-ports="$PSScriptRoot/../e2e-ports" 'vcpkg-policy-misplaced-regular-files[policy]' --no-binarycaching --enforce-port-checks +Throw-IfFailed +if ($buildOutput.Replace("`r`n", "`n").Contains($expected)) { + throw 'VCPKG_POLICY_SKIP_MISPLACED_REGULAR_FILES_CHECK didn''t suppress' } + +# Misplaced pkgconfig +Refresh-TestRoot +$PortfilePath = "$PSScriptRoot/../e2e-ports$($NativeSlash)vcpkg-policy-misplaced-pkgconfig$($NativeSlash)portfile.cmake" +$buildOutput = Run-VcpkgAndCaptureOutput @commonArgs install --overlay-ports="$PSScriptRoot/../e2e-ports" 'vcpkg-policy-misplaced-pkgconfig[install-arch-dependent-bad-misplaced]' --no-binarycaching --enforce-port-checks +Throw-IfNotFailed +$expected = @" +$($PortfilePath): warning: The following misplaced pkgconfig directories were installed. Misplaced pkgconfig files will not be found correctly by pkgconf or pkg-config. pkgconfig directories should be `${CURRENT_PACKAGES_DIR}/share/pkgconfig (for architecture agnostic / header only libraries only), `${CURRENT_PACKAGES_DIR}/lib/pkgconfig (for release dependencies), or `${CURRENT_PACKAGES_DIR}/debug/lib/pkgconfig (for debug dependencies). To suppress this message, add set(VCPKG_POLICY_SKIP_PKGCONFIG_CHECK enabled) +$($packagesRoot)$($NativeSlash)vcpkg-policy-misplaced-pkgconfig_$($Triplet): note: the files are relative to `${CURRENT_PACKAGES_DIR} here +note: bin/pkgconfig/zlib.pc +note: debug/bin/pkgconfig/zlib.pc +note: You can move the pkgconfig files with commands similar to: +file(MAKE_DIRECTORY "`${CURRENT_PACKAGES_DIR}/debug/lib/pkgconfig" "`${CURRENT_PACKAGES_DIR}/lib/pkgconfig") +file(RENAME "`${CURRENT_PACKAGES_DIR}/bin/pkgconfig/zlib.pc" "`${CURRENT_PACKAGES_DIR}/lib/pkgconfig/zlib.pc") +file(RENAME "`${CURRENT_PACKAGES_DIR}/debug/bin/pkgconfig/zlib.pc" "`${CURRENT_PACKAGES_DIR}/debug/lib/pkgconfig/zlib.pc") +vcpkg_fixup_pkgconfig() +file(REMOVE_RECURSE empty directories left by the above renames) +"@ +if (-not $buildOutput.Replace("`r`n", "`n").Contains($expected)) { + throw 'Did not detect bad pkgconfig misplaced' +} +$buildOutput = Run-VcpkgAndCaptureOutput @commonArgs install --overlay-ports="$PSScriptRoot/../e2e-ports" 'vcpkg-policy-misplaced-pkgconfig[install-arch-agnostic-bad-misplaced,install-arch-agnostic-empty-libs-bad-misplaced,install-arch-dependent-bad-misplaced,install-arch-dependent-bad-share]' --no-binarycaching --enforce-port-checks +Throw-IfNotFailed +$expected = @" +$($PortfilePath): warning: The following misplaced pkgconfig directories were installed. Misplaced pkgconfig files will not be found correctly by pkgconf or pkg-config. pkgconfig directories should be `${CURRENT_PACKAGES_DIR}/share/pkgconfig (for architecture agnostic / header only libraries only), `${CURRENT_PACKAGES_DIR}/lib/pkgconfig (for release dependencies), or `${CURRENT_PACKAGES_DIR}/debug/lib/pkgconfig (for debug dependencies). To suppress this message, add set(VCPKG_POLICY_SKIP_PKGCONFIG_CHECK enabled) +$($packagesRoot)$($NativeSlash)vcpkg-policy-misplaced-pkgconfig_$($Triplet): note: the files are relative to `${CURRENT_PACKAGES_DIR} here +note: bin/pkgconfig/libmorton.pc +note: bin/pkgconfig/zlib-no-libs.pc +note: bin/pkgconfig/zlib.pc +note: debug/bin/pkgconfig/zlib.pc +note: share/pkgconfig/zlib.pc +note: You can move the pkgconfig files with commands similar to: +file(MAKE_DIRECTORY "`${CURRENT_PACKAGES_DIR}/debug/lib/pkgconfig" "`${CURRENT_PACKAGES_DIR}/lib/pkgconfig" "`${CURRENT_PACKAGES_DIR}/share/pkgconfig") +file(RENAME "`${CURRENT_PACKAGES_DIR}/bin/pkgconfig/libmorton.pc" "`${CURRENT_PACKAGES_DIR}/share/pkgconfig/libmorton.pc") +file(RENAME "`${CURRENT_PACKAGES_DIR}/bin/pkgconfig/zlib-no-libs.pc" "`${CURRENT_PACKAGES_DIR}/share/pkgconfig/zlib-no-libs.pc") +file(RENAME "`${CURRENT_PACKAGES_DIR}/bin/pkgconfig/zlib.pc" "`${CURRENT_PACKAGES_DIR}/lib/pkgconfig/zlib.pc") +file(RENAME "`${CURRENT_PACKAGES_DIR}/debug/bin/pkgconfig/zlib.pc" "`${CURRENT_PACKAGES_DIR}/debug/lib/pkgconfig/zlib.pc") +file(RENAME "`${CURRENT_PACKAGES_DIR}/share/pkgconfig/zlib.pc" "`${CURRENT_PACKAGES_DIR}/lib/pkgconfig/zlib.pc") +vcpkg_fixup_pkgconfig() +file(REMOVE_RECURSE empty directories left by the above renames) +"@ +if (-not $buildOutput.Replace("`r`n", "`n").Contains($expected)) { + throw 'Did not detect bad pkgconfig all bad' +} +$buildOutput = Run-VcpkgAndCaptureOutput @commonArgs install --overlay-ports="$PSScriptRoot/../e2e-ports" 'vcpkg-policy-misplaced-pkgconfig[install-arch-agnostic-bad-misplaced,install-arch-agnostic-empty-libs-bad-misplaced,install-arch-dependent-bad-misplaced,install-arch-dependent-bad-share,policy]' --no-binarycaching --enforce-port-checks +Throw-IfFailed +if ($buildOutput.Replace("`r`n", "`n").Contains($expected)) { + throw 'VCPKG_POLICY_SKIP_PKGCONFIG_CHECK didn''t suppress' +} + +Refresh-TestRoot + +$buildOutput = Run-VcpkgAndCaptureOutput @commonArgs install --overlay-ports="$PSScriptRoot/../e2e-ports" 'vcpkg-policy-misplaced-pkgconfig[install-arch-dependent-bad-misplaced-release-only]' --no-binarycaching --enforce-port-checks +Throw-IfNotFailed +$expected = @" +$($PortfilePath): warning: The following misplaced pkgconfig directories were installed. Misplaced pkgconfig files will not be found correctly by pkgconf or pkg-config. pkgconfig directories should be `${CURRENT_PACKAGES_DIR}/share/pkgconfig (for architecture agnostic / header only libraries only), `${CURRENT_PACKAGES_DIR}/lib/pkgconfig (for release dependencies), or `${CURRENT_PACKAGES_DIR}/debug/lib/pkgconfig (for debug dependencies). To suppress this message, add set(VCPKG_POLICY_SKIP_PKGCONFIG_CHECK enabled) +$($packagesRoot)$($NativeSlash)vcpkg-policy-misplaced-pkgconfig_$($Triplet): note: the files are relative to `${CURRENT_PACKAGES_DIR} here +note: bin/pkgconfig/zlib.pc +note: You can move the pkgconfig files with commands similar to: +file(MAKE_DIRECTORY "`${CURRENT_PACKAGES_DIR}/lib/pkgconfig") +file(RENAME "`${CURRENT_PACKAGES_DIR}/bin/pkgconfig/zlib.pc" "`${CURRENT_PACKAGES_DIR}/lib/pkgconfig/zlib.pc") +vcpkg_fixup_pkgconfig() +file(REMOVE_RECURSE empty directories left by the above renames) +"@ +if (-not $buildOutput.Replace("`r`n", "`n").Contains($expected)) { + throw 'Did not detect bad pkgconfig release only' +} + +$buildOutput = Run-VcpkgAndCaptureOutput @commonArgs install --overlay-ports="$PSScriptRoot/../e2e-ports" 'vcpkg-policy-misplaced-pkgconfig[install-arch-agnostic-bad-misplaced]' --no-binarycaching --enforce-port-checks +Throw-IfNotFailed +$expected = @" +$($PortfilePath): warning: The following misplaced pkgconfig directories were installed. Misplaced pkgconfig files will not be found correctly by pkgconf or pkg-config. pkgconfig directories should be `${CURRENT_PACKAGES_DIR}/share/pkgconfig (for architecture agnostic / header only libraries only), `${CURRENT_PACKAGES_DIR}/lib/pkgconfig (for release dependencies), or `${CURRENT_PACKAGES_DIR}/debug/lib/pkgconfig (for debug dependencies). To suppress this message, add set(VCPKG_POLICY_SKIP_PKGCONFIG_CHECK enabled) +$($packagesRoot)$($NativeSlash)vcpkg-policy-misplaced-pkgconfig_$($Triplet): note: the files are relative to `${CURRENT_PACKAGES_DIR} here +note: bin/pkgconfig/libmorton.pc +note: You can move the pkgconfig files with commands similar to: +file(MAKE_DIRECTORY "`${CURRENT_PACKAGES_DIR}/share/pkgconfig") +file(RENAME "`${CURRENT_PACKAGES_DIR}/bin/pkgconfig/libmorton.pc" "`${CURRENT_PACKAGES_DIR}/share/pkgconfig/libmorton.pc") +vcpkg_fixup_pkgconfig() +file(REMOVE_RECURSE empty directories left by the above renames) +"@ +if (-not $buildOutput.Replace("`r`n", "`n").Contains($expected)) { + throw 'Did not detect bad pkgconfig arch agnostic' +} + +$buildOutput = Run-VcpkgAndCaptureOutput @commonArgs install --overlay-ports="$PSScriptRoot/../e2e-ports" 'vcpkg-policy-misplaced-pkgconfig[install-arch-agnostic-empty-libs-bad-misplaced]' --no-binarycaching --enforce-port-checks +Throw-IfNotFailed +$expected = @" +$($PortfilePath): warning: The following misplaced pkgconfig directories were installed. Misplaced pkgconfig files will not be found correctly by pkgconf or pkg-config. pkgconfig directories should be `${CURRENT_PACKAGES_DIR}/share/pkgconfig (for architecture agnostic / header only libraries only), `${CURRENT_PACKAGES_DIR}/lib/pkgconfig (for release dependencies), or `${CURRENT_PACKAGES_DIR}/debug/lib/pkgconfig (for debug dependencies). To suppress this message, add set(VCPKG_POLICY_SKIP_PKGCONFIG_CHECK enabled) +$($packagesRoot)$($NativeSlash)vcpkg-policy-misplaced-pkgconfig_$($Triplet): note: the files are relative to `${CURRENT_PACKAGES_DIR} here +note: bin/pkgconfig/zlib-no-libs.pc +note: You can move the pkgconfig files with commands similar to: +file(MAKE_DIRECTORY "`${CURRENT_PACKAGES_DIR}/share/pkgconfig") +file(RENAME "`${CURRENT_PACKAGES_DIR}/bin/pkgconfig/zlib-no-libs.pc" "`${CURRENT_PACKAGES_DIR}/share/pkgconfig/zlib-no-libs.pc") +vcpkg_fixup_pkgconfig() +file(REMOVE_RECURSE empty directories left by the above renames) +"@ +if (-not $buildOutput.Replace("`r`n", "`n").Contains($expected)) { + throw 'Did not detect bad pkgconfig arch agnostic empty libs' +} + +$buildOutput = Run-VcpkgAndCaptureOutput @commonArgs install --overlay-ports="$PSScriptRoot/../e2e-ports" 'vcpkg-policy-misplaced-pkgconfig[install-arch-dependent-bad-share]' --no-binarycaching --enforce-port-checks +Throw-IfNotFailed +$expected = @" +$($PortfilePath): warning: The following misplaced pkgconfig directories were installed. Misplaced pkgconfig files will not be found correctly by pkgconf or pkg-config. pkgconfig directories should be `${CURRENT_PACKAGES_DIR}/share/pkgconfig (for architecture agnostic / header only libraries only), `${CURRENT_PACKAGES_DIR}/lib/pkgconfig (for release dependencies), or `${CURRENT_PACKAGES_DIR}/debug/lib/pkgconfig (for debug dependencies). To suppress this message, add set(VCPKG_POLICY_SKIP_PKGCONFIG_CHECK enabled) +$($packagesRoot)$($NativeSlash)vcpkg-policy-misplaced-pkgconfig_$($Triplet): note: the files are relative to `${CURRENT_PACKAGES_DIR} here +note: share/pkgconfig/zlib.pc +note: You can move the pkgconfig files with commands similar to: +file(MAKE_DIRECTORY "`${CURRENT_PACKAGES_DIR}/lib/pkgconfig") +file(RENAME "`${CURRENT_PACKAGES_DIR}/share/pkgconfig/zlib.pc" "`${CURRENT_PACKAGES_DIR}/lib/pkgconfig/zlib.pc") +vcpkg_fixup_pkgconfig() +file(REMOVE_RECURSE empty directories left by the above renames) +"@ +if (-not $buildOutput.Replace("`r`n", "`n").Contains($expected)) { + throw 'Did not detect bad pkgconfig arch dependent share' +} + +# ... and all good places +Refresh-TestRoot +Run-VcpkgAndCaptureOutput @commonArgs install --overlay-ports="$PSScriptRoot/../e2e-ports" 'vcpkg-policy-misplaced-pkgconfig[install-arch-agnostic-empty-libs-good,install-arch-agnostic-empty-libs-good-share,install-arch-agnostic-good-share,install-arch-dependent-good]' --no-binarycaching --enforce-port-checks +Throw-IfFailed + +# Absolute paths +Refresh-TestRoot +$PortfilePath = "$PSScriptRoot/../e2e-ports$($NativeSlash)vcpkg-policy-absolute-paths$($NativeSlash)portfile.cmake" +$expectedHeader = @" +$($PortfilePath): warning: There should be no absolute paths, such as the following, in an installed package. To suppress this message, add set(VCPKG_POLICY_SKIP_ABSOLUTE_PATHS_CHECK enabled) +note: $($packagesRoot) +note: $($installRoot) +note: $($buildtreesRoot) +"@ +# downloads directory here +$expectedFooter = @" +$($packagesRoot)$($NativeSlash)vcpkg-policy-absolute-paths_$($Triplet)$($NativeSlash)include$($NativeSlash)vcpkg-policy-absolute-paths.h: note: absolute paths found here +"@ + +foreach ($bad_dir in @('build-dir', 'downloads', 'installed-root', 'package-dir')) { + $buildOutput = Run-VcpkgAndCaptureOutput @commonArgs install --overlay-ports="$PSScriptRoot/../e2e-ports" "vcpkg-policy-absolute-paths[$bad_dir]" --no-binarycaching --enforce-port-checks + Throw-IfNotFailed + if (-not $buildOutput.Replace("`r`n", "`n").Contains($expectedHeader)) { + throw 'Did not detect bad absolute paths header' + } + if (-not $buildOutput.Replace("`r`n", "`n").Contains($expectedFooter)) { + throw 'Did not detect bad absolute paths footer' + } +} + +$expectedFooter = @" +$($PortfilePath): note: Adding a call to ``vcpkg_fixup_pkgconfig()`` may fix absolute paths in .pc files +$($packagesRoot)$($NativeSlash)vcpkg-policy-absolute-paths_$($Triplet)$($NativeSlash)include$($NativeSlash)vcpkg-policy-absolute-paths.h: note: absolute paths found here +$($packagesRoot)$($NativeSlash)vcpkg-policy-absolute-paths_$($Triplet)$($NativeSlash)share$($NativeSlash)pkgconfig$($NativeSlash)vcpkg-policy-absolute-paths.pc: note: absolute paths found here +$($packagesRoot)$($NativeSlash)vcpkg-policy-absolute-paths_$($Triplet)$($NativeSlash)tools$($NativeSlash)vcpkg-policy-absolute-paths$($NativeSlash)bin$($NativeSlash)port-config.sh: note: absolute paths found here +"@ + +foreach ($bad_dir in @('build-dir', 'downloads', 'installed-root', 'package-dir')) { + $buildOutput = Run-VcpkgAndCaptureOutput @commonArgs install --overlay-ports="$PSScriptRoot/../e2e-ports" "vcpkg-policy-absolute-paths[$bad_dir,pkgconfig]" --no-binarycaching --enforce-port-checks + Throw-IfNotFailed + if (-not $buildOutput.Replace("`r`n", "`n").Contains($expectedHeader)) { + throw 'Did not detect bad absolute paths header' + } + if (-not $buildOutput.Replace("`r`n", "`n").Contains($expectedFooter)) { + throw 'Did not detect bad absolute paths pkgconfig footer' + } +} + +Run-Vcpkg @commonArgs install --overlay-ports="$PSScriptRoot/../e2e-ports" 'vcpkg-policy-absolute-paths[build-dir,downloads,installed-root,package-dir,pkgconfig,policy]' --no-binarycaching --enforce-port-checks +Throw-IfFailed diff --git a/azure-pipelines/end-to-end-tests-dir/post-portfile-includes.ps1 b/azure-pipelines/end-to-end-tests-dir/post-portfile-includes.ps1 new file mode 100644 index 0000000000..a13e2aa061 --- /dev/null +++ b/azure-pipelines/end-to-end-tests-dir/post-portfile-includes.ps1 @@ -0,0 +1,23 @@ +. $PSScriptRoot/../end-to-end-tests-prelude.ps1 + +Run-Vcpkg @directoryArgs ` + "--overlay-triplets=$PSScriptRoot/../e2e-ports/post-portfile-includes" ` + "--overlay-ports=$PSScriptRoot/../e2e-ports/post-portfile-includes" ` + x-set-installed ` + vcpkg-post-portfile-includes ` + --host-triplet post-portfile-includes ` + --binarysource=clear +Throw-IfFailed + +$output = Run-VcpkgAndCaptureOutput @directoryArgs ` + "--overlay-triplets=$PSScriptRoot/../e2e-ports/post-portfile-includes-fail" ` + "--overlay-ports=$PSScriptRoot/../e2e-ports/post-portfile-includes-fail" ` + x-set-installed ` + vcpkg-post-portfile-includes ` + --host-triplet post-portfile-includes ` + --binarysource=clear +Throw-IfNotFailed +if ($output -notmatch "Variable VCPKG_POST_PORTFILE_INCLUDES contains invalid file path") +{ + throw "Expected to fail since VCPKG_POST_PORTFILE_INCLUDES is set to a relative path" +} diff --git a/azure-pipelines/end-to-end-tests-dir/registries.ps1 b/azure-pipelines/end-to-end-tests-dir/registries.ps1 index fe03614eb1..98d596ff83 100644 --- a/azure-pipelines/end-to-end-tests-dir/registries.ps1 +++ b/azure-pipelines/end-to-end-tests-dir/registries.ps1 @@ -453,3 +453,105 @@ finally { Pop-Location } + +# test x-update-baseline reference in registry +Write-Trace "test x-update-baseline reference in registry" +$manifestDir = "$TestingRoot/update-baseline-registry-reference" + +New-Item -Path $manifestDir -ItemType Directory +$manifestDir = (Get-Item $manifestDir).FullName + +Push-Location $manifestDir +try +{ + $gitMainBranch = 'master' + $gitSecondaryBranch = 'secondary' + + $CurrentTest = 'git init .' + git @gitConfigOptions init . + Throw-IfFailed + + $vcpkgBaseline = @{ + "default" = @{ + } + } + + New-Item -Path './ports' -ItemType Directory + New-Item -Path './versions' -ItemType Directory + + New-Item -Path './versions/baseline.json' -Value (ConvertTo-Json -Depth 5 -InputObject $vcpkgBaseline) + + $CurrentTest = 'git add versions/baseline.json' + git @gitConfigOptions add versions/baseline.json + Throw-IfFailed + + $CurrentTest = 'git commit initial commit' + git @gitConfigOptions commit -m "initial commit" + Throw-IfFailed + + $vcpkgConfigurationJson = @{ + "default-registry"= @{ + "kind" = "git"; + "baseline" = ""; + "repository" = $manifestDir; + } + } + + $vcpkgJson = @{} + New-Item -Path './vcpkg-configuration.json' -Value (ConvertTo-Json -Depth 5 -InputObject $vcpkgConfigurationJson) + New-Item -Path './vcpkg.json' -Value (ConvertTo-Json -Depth 5 -InputObject $vcpkgJson) + + $CurrentTest = 'vcpkg x-update-baseline' + $out = Run-VcpkgAndCaptureOutput x-update-baseline + Throw-IfFailed + + $CurrentTest = 'git rev-parse HEAD' + $registryBaseline = git rev-parse HEAD + Throw-IfFailed + + $configurationBefore = Get-Content "$manifestDir/vcpkg-configuration.json" | ConvertFrom-Json -AsHashTable + if ($configurationBefore["default-registry"]["baseline"] -ne $registryBaseline) { + throw "x-update-baseline baseline mismatch" + } + + $CurrentTest = 'git checkout secondary branch' + git @gitConfigOptions checkout -b $gitSecondaryBranch + Throw-IfFailed + + $CurrentTest = 'git commit empty commit' + git @gitConfigOptions commit --allow-empty -m "empty commit" + Throw-IfFailed + + $CurrentTest = 'git checkout main branch' + git @gitConfigOptions checkout $gitMainBranch + Throw-IfFailed + + $vcpkgConfigurationJson = @{ + "default-registry"= @{ + "kind" = "git"; + "baseline" = ""; + "repository" = $manifestDir; + "reference" = "secondary"; + } + } + + New-Item -Path './vcpkg-configuration.json' -Value (ConvertTo-Json -Depth 5 -InputObject $vcpkgConfigurationJson) -Force + + $CurrentTest = 'git rev-parse branch' + $refBaseline = git rev-parse $gitSecondaryBranch + Throw-IfFailed + + $CurrentTest = 'vcpkg x-update-baseline on reference' + $out = Run-VcpkgAndCaptureOutput x-update-baseline + Throw-IfFailed + + $configurationBefore = Get-Content "$manifestDir/vcpkg-configuration.json" | ConvertFrom-Json -AsHashTable + + if ($configurationBefore["default-registry"]["baseline"] -ne $refBaseline) { + throw "Unexpected baseline mismatch on reference branch" + } +} +finally +{ + Pop-Location +} diff --git a/azure-pipelines/end-to-end-tests-dir/usage.ps1 b/azure-pipelines/end-to-end-tests-dir/usage.ps1 index 428bb0e356..4b6e5e7507 100644 --- a/azure-pipelines/end-to-end-tests-dir/usage.ps1 +++ b/azure-pipelines/end-to-end-tests-dir/usage.ps1 @@ -34,17 +34,25 @@ wrong-pkgconfig provides pkg-config modules: # Test lib wrong-pkgconfig +"@, +@" +vcpkg-header-only is header-only and can be used from CMake via: + + find_path(VCPKG_HEADER_ONLY_INCLUDE_DIRS "vcpkg-header-only.h") + target_include_directories(main PRIVATE `${VCPKG_HEADER_ONLY_INCLUDE_DIRS}) "@ ) [string[]]$prohibitedUsages = @( - 'vcpkg-empty-port provides CMake targets' + 'vcpkg-empty-port provides CMake targets', + 'vcpkg-header-only provides CMake targets' ) [string]$usage = Run-VcpkgAndCaptureOutput ($commonArgs + @('install', 'vcpkg-cmake-config-many-targets', 'vcpkg-empty-port', 'vcpkg-explicit-usage', + 'vcpkg-header-only', 'vcpkg-hello-world-1', 'vcpkg-hello-world-2', 'wrong-pkgconfig[header-only-good]' diff --git a/azure-pipelines/end-to-end-tests-prelude.ps1 b/azure-pipelines/end-to-end-tests-prelude.ps1 index fe7e6095f2..e580c72266 100644 --- a/azure-pipelines/end-to-end-tests-prelude.ps1 +++ b/azure-pipelines/end-to-end-tests-prelude.ps1 @@ -6,6 +6,9 @@ $NuGetRoot = Join-Path $TestingRoot 'nuget' $NuGetRoot2 = Join-Path $TestingRoot 'nuget2' $ArchiveRoot = Join-Path $TestingRoot 'archives' $VersionFilesRoot = Join-Path $TestingRoot 'version-test' +$DownloadsRoot = Join-Path $TestingRoot 'downloads' +$AssetCache = Join-Path $TestingRoot 'asset-cache' + $directoryArgs = @( "--x-buildtrees-root=$buildtreesRoot", "--x-install-root=$installRoot", @@ -34,6 +37,13 @@ function Refresh-TestRoot { Remove-Item -Recurse -Force $TestingRoot -ErrorAction SilentlyContinue New-Item -ItemType Directory -Force $TestingRoot | Out-Null New-Item -ItemType Directory -Force $NuGetRoot | Out-Null + New-Item -ItemType Directory -Force $DownloadsRoot | Out-Null + New-Item -ItemType Directory -Force $AssetCache | Out-Null +} + +function Refresh-Downloads{ + Remove-Item -Recurse -Force $DownloadsRoot -ErrorAction SilentlyContinue + New-Item -ItemType Directory -Force $DownloadsRoot | Out-Null } function Write-Stack { @@ -158,4 +168,17 @@ function Run-Vcpkg { Run-VcpkgAndCaptureOutput -ForceExe:$ForceExe @TestArgs | Out-Null } + +# https://github.com/actions/toolkit/blob/main/docs/commands.md#problem-matchers +# .github/workflows/matchers.json +function Remove-Problem-Matchers { + Write-Host "::remove-matcher owner=vcpkg-msvc::" + Write-Host "::remove-matcher owner=vcpkg-gcc::" + Write-Host "::remove-matcher owner=vcpkg-catch::" +} +function Restore-Problem-Matchers { + Write-Host "::add-matcher::.github/workflows/matchers.json" +} + + Refresh-TestRoot diff --git a/azure-pipelines/end-to-end-tests.ps1 b/azure-pipelines/end-to-end-tests.ps1 index bb25d51a33..65870aa625 100755 --- a/azure-pipelines/end-to-end-tests.ps1 +++ b/azure-pipelines/end-to-end-tests.ps1 @@ -73,7 +73,7 @@ if ([string]::IsNullOrEmpty($VcpkgExe)) $VcpkgItem = Get-Item $VcpkgExe $VcpkgExe = $VcpkgItem.FullName -$VcpkgPs1 = Join-Path $VcpkgItem.Directory "vcpkg.ps1" +$VcpkgPs1 = Join-Path $VcpkgItem.Directory "vcpkg-shell.ps1" $TestScriptAssetCacheExe = Join-Path $VcpkgItem.Directory "test-script-asset-cache" [Array]$AllTests = Get-ChildItem $PSScriptRoot/end-to-end-tests-dir/*.ps1 @@ -97,7 +97,7 @@ $envvars_clear = @( 'VCPKG_ROOT', 'X_VCPKG_ASSET_SOURCES' ) -$envvars = $envvars_clear + @("VCPKG_DOWNLOADS", "X_VCPKG_REGISTRIES_CACHE", "PATH") +$envvars = $envvars_clear + @("VCPKG_DOWNLOADS", "X_VCPKG_REGISTRIES_CACHE", "PATH", "GITHUB_ACTIONS") foreach ($Test in $AllTests) { diff --git a/azure-pipelines/json-schema-tests-dir/json-schema-bvt.test.ps1 b/azure-pipelines/json-schema-tests-dir/json-schema-bvt.test.ps1 new file mode 100644 index 0000000000..336d1ed28a --- /dev/null +++ b/azure-pipelines/json-schema-tests-dir/json-schema-bvt.test.ps1 @@ -0,0 +1,117 @@ + +function GenPackageJson { + param( + [Parameter(Mandatory)][bool]$Expected, + [Parameter(Mandatory)][AllowEmptyString()][string[]]$PackageArray, + [string]$Baseline = '0' * 40 + ) + return @( + $Expected, + @{ + registries = @( + [pscustomobject]@{ + kind = 'git' + repository = '' + baseline = $Baseline + packages = $PackageArray + } + ) + } + ) +} + +# See src/vcpkg-test/registries.cpp "check valid package patterns" +@{ + $VcpkgJsonSchema.Configuration = + @{ + 'packages: ["a"]' = GenPackageJson $true @('a') + 'packages: empty' = GenPackageJson $false [string[]]@('') + 'packages: blank' = GenPackageJson $false @(' ') + 'packages: baseline 39' = GenPackageJson $false @('a') ('0' * 39) + 'packages: hashtag ["*"]' = GenPackageJson $true @('*') + 'packages: hashtag ["a*"]' = GenPackageJson $true @('a*') + 'packages: hashtag ["*a"]' = GenPackageJson $false @('*a') + 'packages: hashtag ["b-*"]' = GenPackageJson $true @('b-*') + 'packages: hashtag ["c-d-*"]' = GenPackageJson $true @('c-d-*') + 'packages: hashtag dup ["a**"]' = GenPackageJson $false @('a**') + 'packages: hashtag dup ["b-**"]' = GenPackageJson $false @('b-**') + 'packages: hashtag dup ["c--*"]' = GenPackageJson $false @('c--*') + 'packages: hashtag dup ["d-*-*"]' = GenPackageJson $false @('d-*-*') + 'packages: hashtag mid ["a*b"]' = GenPackageJson $false @('a*b') + 'packages: mix array ["a*","b"]' = GenPackageJson $true @('a*', 'b') + 'packages: symbols ["a+"]' = GenPackageJson $false @('a+') + 'packages: symbols ["a?"]' = GenPackageJson $false @('a?') + } + $VcpkgJsonSchema.Port = + @{ + # test identifiers + 'port-name: "co"' = $true, @{name = 'co' } + 'port-name: "rapidjson"' = $true, @{name = 'rapidjson' } + 'port-name: "boost-tuple"' = $true, @{name = 'boost-tuple' } + 'port-name: "vcpkg-boost-helper"' = $true, @{name = 'vcpkg-boost-helper' } + 'port-name: "lpt"' = $true, @{name = 'lpt' } + 'port-name: "com"' = $true, @{name = 'com' } + # reject invalid characters + 'port-name: ""' = $false, @{name = '' } + 'port-name: " "' = $false, @{name = ' ' } + 'port-name: "boost_tuple"' = $false, @{name = 'boost_tuple' } + 'port-name: "boost.' = $false, @{name = 'boost.' } + 'port-name: "boost.tuple"' = $false, @{name = 'boost.tuple' } + 'port-name: "boost@1"' = $false, @{name = 'boost@1' } + 'port-name: "boost#1"' = $false, @{name = 'boost#1' } + 'port-name: "boost:x64-windows"' = $false, @{name = 'boost:x64-windows' } + # accept legacy + 'port-name: "all_modules"' = $false, @{name = 'all_modules' } # removed in json-schema + # reject reserved keywords + 'port-name: "prn"' = $false, @{name = 'prn' } + 'port-name: "aux"' = $false, @{name = 'aux' } + 'port-name: "nul"' = $false, @{name = 'nul' } + 'port-name: "con"' = $false, @{name = 'con' } + 'port-name: "core"' = $false, @{name = 'core' } + 'port-name: "default"' = $false, @{name = 'default' } + 'port-name: "lpt0"' = $false, @{name = 'lpt0' } + 'port-name: "lpt9"' = $false, @{name = 'lpt9' } + 'port-name: "com0"' = $false, @{name = 'com0' } + 'port-name: "com9"' = $false, @{name = 'com9' } + # reject incomplete segments + 'port-name: "-a"' = $false, @{name = '-a' } + 'port-name: "a-"' = $false, @{name = 'a-' } + 'port-name: "a--"' = $false, @{name = 'a--' } + 'port-name: "---"' = $false, @{name = '---' } + } +}.GetEnumerator() +| ForEach-Object { + @{ + SchemaName = $_.Key + JsonCases = $_.Value.GetEnumerator() | ForEach-Object { + @{ + Title = $_.Key + Expected = $_.Value[0] + Json = ConvertTo-Json -InputObject $_.Value[1] -Depth 5 -Compress + } + } + } +} +| ForEach-Object { + $_SchemaName = $_.SchemaName + $_SchemaPath = Join-Path $WorkingRoot $_SchemaName + $_.JsonCases | ForEach-Object { + $_Title = $_.Title + $_Expected = $_.Expected + + $_Actual = Test-Json -ea:0 -Json $_.Json -SchemaFile $_SchemaPath + $_Result = $_.Expected -eq $_Actual ? 'Pass':'Fail' + if ($_Result -eq 'Fail') { + throw "$_SchemaName validate fail with $_Title, expected $_Expected" + } + [pscustomobject]@{ + SchemaName = $_SchemaName + Title = $_Title + Expected = $_Expected + Actual = $_Actual + Result = $_Result + } + } +} +| Sort-Object SchemaName, Title +| Format-Table diff --git a/azure-pipelines/json-schema-tests-dir/vcpkg-ports-json.test.ps1 b/azure-pipelines/json-schema-tests-dir/vcpkg-ports-json.test.ps1 new file mode 100644 index 0000000000..0078b7ae0c --- /dev/null +++ b/azure-pipelines/json-schema-tests-dir/vcpkg-ports-json.test.ps1 @@ -0,0 +1,19 @@ + +$VcpkgPortSchemaPath = Join-Path $WorkingRoot $VcpkgJsonSchema.Port + +Get-ChildItem -Directory -Path (Join-Path $VcpkgRoot 'ports') +| ForEach-Object -Parallel { + $PortName = $_.Name + $PortDir = $_.FullName + $PortJsonPath = Join-Path $PortDir 'vcpkg.json' + $Schema = $using:VcpkgPortSchemaPath + + $_Actual = Test-Json -ea:0 -LiteralPath $PortJsonPath -SchemaFile $Schema + [pscustomobject]@{ + PortName = $PortName + Actual = $_Actual + } +} +| ForEach-Object { Write-Host $_; $_ } +| Where-Object Actual -EQ $false +| ForEach-Object { Write-Error $_; $_ } diff --git a/azure-pipelines/json-schema-tests.ps1 b/azure-pipelines/json-schema-tests.ps1 new file mode 100644 index 0000000000..1aa9811eef --- /dev/null +++ b/azure-pipelines/json-schema-tests.ps1 @@ -0,0 +1,52 @@ +[CmdletBinding()] +Param( + [ValidateNotNullOrEmpty()] + [string]$WorkingRoot = 'work', + [Parameter(Mandatory = $false)] + [string]$VcpkgRoot +) + +$ErrorActionPreference = 'Stop' + +if ($PSVersionTable.PSVersion.Major -lt 7) { + Write-Error "json-schema e2e tests must use pwsh" +} + +$VcpkgSrcDir = $PWD + +$WorkingRoot = (New-Item -Path $WorkingRoot -ItemType Directory -Force).FullName + +$VcpkgRoot = & { + if (-not [string]::IsNullOrWhitespace($VcpkgRoot)) { + return $VcpkgRoot + } + if ([string]::IsNullOrWhitespace($env:VCPKG_ROOT)) { + throw "Could not determine VCPKG_ROOT" + } + return $env:VCPKG_ROOT +} | Get-Item | Select-Object -ExpandProperty FullName + +$VcpkgJsonSchema = @{ + Artifact = 'artifact.schema.json' + Configuration = 'vcpkg-configuration.schema.json' + Definitions = 'vcpkg-schema-definitions.schema.json' + Port = 'vcpkg.schema.json' +} + +# remove `$id` in schema for error 'Test-Json: Cannot parse the JSON schema.' +$VcpkgJsonSchema.Values +| ForEach-Object { + Copy-Item -Path (Join-path $VcpkgSrcDir 'docs' $_) -Destination $WorkingRoot + Join-Path $WorkingRoot $_ +} +| ForEach-Object { + (Get-Content -Raw -Path $_) -replace '(?s)\n "\$id".+?\n', "`n" + | Set-Content -NoNewline -Path $_ +} +| Out-Null + +Get-ChildItem $PSScriptRoot/json-schema-tests-dir/*.test.ps1 +| ForEach-Object { + Write-Host "Running test $_" + & $_.FullName +} diff --git a/azure-pipelines/signing.yml b/azure-pipelines/signing.yml index 5079cd20d4..549e8dad1e 100644 --- a/azure-pipelines/signing.yml +++ b/azure-pipelines/signing.yml @@ -52,6 +52,10 @@ extends: sourceAnalysisPool: name: AzurePipelines-EO image: 1ESPT-Windows2022 + codeql: + compiled: + enabled: false + justificationForDisabling: 'CodeQL causes the build to hang. See https://dev.azure.com/twcdot/Data/_workitems/edit/128379 . Turn CodeQL back on when it is fixed.' stages: - stage: stage displayName: 'Build and Sign vcpkg' @@ -70,13 +74,13 @@ extends: - ${{ if ne(parameters.VcpkgBaseVersionOverride, 'default') }}: - name: VCPKG_INITIAL_BASE_VERSION value: ${{parameters.VcpkgBaseVersionOverride}} - - name: Codeql.BuildIdentifier - value: vcpkg_ECMAScript - - name: Codeql.Language - value: javascript pool: name: 'VSEngSS-MicroBuild2022-1ES' templateContext: + sdl: + codeql: + language: javascript + buildIdentifier: vcpkg_ECMAScript mb: signing: enabled: true @@ -187,6 +191,7 @@ extends: move "$(Build.BinariesDirectory)\scripts\applocal.ps1" "$(Build.ArtifactStagingDirectory)\staging\scripts\applocal.ps1" move "$(Build.BinariesDirectory)\scripts\addPoshVcpkgToPowershellProfile.ps1" "$(Build.ArtifactStagingDirectory)\staging\scripts\addPoshVcpkgToPowershellProfile.ps1" move "$(Build.BinariesDirectory)\scripts\posh-vcpkg.psm1" "$(Build.ArtifactStagingDirectory)\staging\scripts\posh-vcpkg.psm1" + move "$(Build.BinariesDirectory)\scripts\posh-vcpkg.psd1" "$(Build.ArtifactStagingDirectory)\staging\scripts\posh-vcpkg.psd1" move "$(Build.BinariesDirectory)\vcpkg-artifacts" "$(Build.ArtifactStagingDirectory)\staging\vcpkg-artifacts" displayName: 'Arrange Architecture-independent Files for Staging' - task: Powershell@2 @@ -210,6 +215,10 @@ extends: VCPKG_STANDALONE_BUNDLE_SHA: $[ dependencies.arch_independent.outputs['shas.VCPKG_STANDALONE_BUNDLE_SHA'] ] VCPKG_BASE_VERSION: $[ dependencies.arch_independent.outputs['versions.VCPKG_BASE_VERSION'] ] templateContext: + sdl: + codeql: + language: cpp + buildIdentifier: vcpkg_cpp_macos mb: signing: enabled: false @@ -239,6 +248,10 @@ extends: VCPKG_STANDALONE_BUNDLE_SHA: $[ dependencies.arch_independent.outputs['shas.VCPKG_STANDALONE_BUNDLE_SHA'] ] VCPKG_BASE_VERSION: $[ dependencies.arch_independent.outputs['versions.VCPKG_BASE_VERSION'] ] templateContext: + sdl: + codeql: + language: cpp + buildIdentifier: vcpkg_cpp_glibc mb: signing: enabled: false @@ -272,6 +285,10 @@ extends: VCPKG_STANDALONE_BUNDLE_SHA: $[ dependencies.arch_independent.outputs['shas.VCPKG_STANDALONE_BUNDLE_SHA'] ] VCPKG_BASE_VERSION: $[ dependencies.arch_independent.outputs['versions.VCPKG_BASE_VERSION'] ] templateContext: + sdl: + codeql: + language: cpp + buildIdentifier: vcpkg_cpp_muslc mb: signing: enabled: false @@ -308,9 +325,11 @@ extends: VCPKG_STANDALONE_BUNDLE_SHA: $[ dependencies.arch_independent.outputs['shas.VCPKG_STANDALONE_BUNDLE_SHA'] ] VCPKG_BASE_VERSION: $[ dependencies.arch_independent.outputs['versions.VCPKG_BASE_VERSION'] ] VCPKG_FULL_VERSION: $[ dependencies.arch_independent.outputs['versions.VCPKG_FULL_VERSION'] ] - Codeql.BuildIdentifier: vcpkg_cpp - Codeql.Language: cpp templateContext: + sdl: + codeql: + language: cpp + buildIdentifier: vcpkg_cpp mb: signing: enabled: true @@ -356,7 +375,7 @@ extends: script: | call "C:\Program Files\Microsoft Visual Studio\2022\Enterprise\Common7\Tools\VsDevCmd.bat" -arch=amd64 -host_arch=amd64 cmake.exe --version - cmake.exe -G Ninja -DCMAKE_BUILD_TYPE=Release -DBUILD_TESTING=OFF -DVCPKG_DEVELOPMENT_WARNINGS=ON -DVCPKG_WARNINGS_AS_ERRORS=ON -DVCPKG_BUILD_FUZZING=OFF -DVCPKG_BUILD_TLS12_DOWNLOADER=ON -DVCPKG_EMBED_GIT_SHA=ON -DVCPKG_OFFICIAL_BUILD=ON "-DVCPKG_FMT_URL=$(fmt-tarball-url)" "-DVCPKG_CMAKERC_URL=$(cmakerc-tarball-url)" "-DVCPKG_BASE_VERSION=$(VCPKG_BASE_VERSION)" "-DVCPKG_VERSION=$(Build.SourceVersion)" "-DVCPKG_STANDALONE_BUNDLE_SHA=$(VCPKG_STANDALONE_BUNDLE_SHA)" -B "$(Build.BinariesDirectory)\amd64" + cmake.exe -G Ninja -DCMAKE_BUILD_TYPE=Release -DBUILD_TESTING=OFF -DVCPKG_DEVELOPMENT_WARNINGS=ON -DVCPKG_WARNINGS_AS_ERRORS=ON -DVCPKG_BUILD_FUZZING=OFF -DVCPKG_BUILD_TLS12_DOWNLOADER=ON -DVCPKG_EMBED_GIT_SHA=ON -DVCPKG_OFFICIAL_BUILD=ON "-DVCPKG_FMT_URL=$(fmt-tarball-url)" "-DVCPKG_CMAKERC_URL=$(cmakerc-tarball-url)" "-DVCPKG_BASE_VERSION=$(VCPKG_BASE_VERSION)" "-DVCPKG_VERSION=$(Build.SourceVersion)" "-DVCPKG_STANDALONE_BUNDLE_SHA=$(VCPKG_STANDALONE_BUNDLE_SHA)" -B "$(Build.BinariesDirectory)\amd64" 2>&1 ninja.exe -C "$(Build.BinariesDirectory)\amd64" - task: CmdLine@2 displayName: "Build vcpkg arm64 with CMake" @@ -365,7 +384,7 @@ extends: script: | call "C:\Program Files\Microsoft Visual Studio\2022\Enterprise\Common7\Tools\VsDevCmd.bat" -arch=arm64 -host_arch=amd64 cmake.exe --version - cmake.exe -G Ninja -DCMAKE_BUILD_TYPE=Release -DBUILD_TESTING=OFF -DVCPKG_DEVELOPMENT_WARNINGS=ON -DVCPKG_WARNINGS_AS_ERRORS=ON -DVCPKG_BUILD_FUZZING=OFF -DVCPKG_BUILD_TLS12_DOWNLOADER=ON -DVCPKG_EMBED_GIT_SHA=ON -DVCPKG_OFFICIAL_BUILD=ON -DVCPKG_PDB_SUFFIX="-arm64" "-DVCPKG_FMT_URL=$(fmt-tarball-url)" "-DVCPKG_CMAKERC_URL=$(cmakerc-tarball-url)" "-DVCPKG_BASE_VERSION=$(VCPKG_BASE_VERSION)" "-DVCPKG_VERSION=$(Build.SourceVersion)" "-DVCPKG_STANDALONE_BUNDLE_SHA=$(VCPKG_STANDALONE_BUNDLE_SHA)" -B "$(Build.BinariesDirectory)\arm64" + cmake.exe -G Ninja -DCMAKE_BUILD_TYPE=Release -DBUILD_TESTING=OFF -DVCPKG_DEVELOPMENT_WARNINGS=ON -DVCPKG_WARNINGS_AS_ERRORS=ON -DVCPKG_BUILD_FUZZING=OFF -DVCPKG_BUILD_TLS12_DOWNLOADER=ON -DVCPKG_EMBED_GIT_SHA=ON -DVCPKG_OFFICIAL_BUILD=ON -DVCPKG_PDB_SUFFIX="-arm64" "-DVCPKG_FMT_URL=$(fmt-tarball-url)" "-DVCPKG_CMAKERC_URL=$(cmakerc-tarball-url)" "-DVCPKG_BASE_VERSION=$(VCPKG_BASE_VERSION)" "-DVCPKG_VERSION=$(Build.SourceVersion)" "-DVCPKG_STANDALONE_BUNDLE_SHA=$(VCPKG_STANDALONE_BUNDLE_SHA)" -B "$(Build.BinariesDirectory)\arm64" 2>&1 ninja.exe -C "$(Build.BinariesDirectory)\arm64" - task: NuGetToolInstaller@1 inputs: @@ -437,6 +456,7 @@ extends: move "$(Build.ArtifactStagingDirectory)\stagingArchIndependent\scripts\applocal.ps1" "$(Build.ArtifactStagingDirectory)\drop\applocal.ps1" move "$(Build.ArtifactStagingDirectory)\stagingArchIndependent\scripts\addPoshVcpkgToPowershellProfile.ps1" "$(Build.ArtifactStagingDirectory)\drop\addPoshVcpkgToPowershellProfile.ps1" move "$(Build.ArtifactStagingDirectory)\stagingArchIndependent\scripts\posh-vcpkg.psm1" "$(Build.ArtifactStagingDirectory)\drop\posh-vcpkg.psm1" + move "$(Build.ArtifactStagingDirectory)\stagingArchIndependent\scripts\posh-vcpkg.psd1" "$(Build.ArtifactStagingDirectory)\drop\posh-vcpkg.psd1" move "$(Build.ArtifactStagingDirectory)\stagingGlibc\vcpkg-glibc" "$(Build.ArtifactStagingDirectory)\drop\vcpkg-glibc" move "$(Build.ArtifactStagingDirectory)\stagingMuslc\vcpkg-muslc" "$(Build.ArtifactStagingDirectory)\drop\vcpkg-muslc" move "$(Build.ArtifactStagingDirectory)\stagingArchIndependent\vcpkg-standalone-bundle.tar.gz" "$(Build.ArtifactStagingDirectory)\drop\vcpkg-standalone-bundle.tar.gz" @@ -502,13 +522,12 @@ extends: targetArgument: '$(Build.ArtifactStagingDirectory)\drop' result: 'PoliCheck.xml' - ${{ if ne(parameters.PublishTo, 'None') }}: - - task: MicroBuildArchiveSymbols@4 + - task: MicroBuildArchiveSymbols@5 displayName: 'Upload Symbols' inputs: SymbolsFeatureName: 'vcpkg' SymbolsProject: 'VS' SymbolsAgentPath: '$(Build.ArtifactStagingDirectory)\symbols' - azureSubscription: 'Symbols Upload (DevDiv)' # Publish everything to a GitHub Release - ${{ if eq(parameters.PublishTo, 'GitHub and NuGet') }}: - task: DownloadSecureFile@1 diff --git a/cgmanifest.json b/cgmanifest.json index 6205ba258d..1f3d56dffc 100644 --- a/cgmanifest.json +++ b/cgmanifest.json @@ -17,9 +17,9 @@ "Type": "other", "other": { "name": "fmt", - "version": "10.1.0", - "downloadUrl": "https://github.com/fmtlib/fmt/archive/refs/tags/10.1.0.tar.gz", - "hash": "69a7b8584f828528e3bb4b87153449e96df29bd740adcd42a2e3d50ae4a270c80a5eb2c3057337048be5b978094d8bb73bec3378e3b6370748de2b063dd0aa4b" + "version": "11.0.2", + "downloadUrl": "https://github.com/fmtlib/fmt/archive/refs/tags/11.0.2.tar.gz", + "hash": "47ff6d289dcc22681eea6da465b0348172921e7cafff8fd57a1540d3232cc6b53250a4625c954ee0944c87963b17680ecbc3ea123e43c2c822efe0dc6fa6cef3" } }, "DevelopmentDependency": false, diff --git a/cmake/Findfmt.cmake b/cmake/Findfmt.cmake index c01e9b6170..7d8858e786 100644 --- a/cmake/Findfmt.cmake +++ b/cmake/Findfmt.cmake @@ -9,7 +9,7 @@ if("$CACHE{VCPKG_FMT_URL}" MATCHES "^https://github.com/fmtlib/fmt/archive/refs/ unset(VCPKG_FMT_URL CACHE) # Fix upgrade endif() if(NOT VCPKG_FMT_URL) - set(VCPKG_FMT_URL "https://github.com/fmtlib/fmt/archive/refs/tags/10.1.0.tar.gz") + set(VCPKG_FMT_URL "https://github.com/fmtlib/fmt/archive/refs/tags/11.0.2.tar.gz") endif() if(POLICY CMP0135) @@ -20,10 +20,10 @@ set(OLD_CXX_FLAGS "${CMAKE_CXX_FLAGS}") set(SKIP_WARNINGS OFF) if(MSVC AND VCPKG_DEVELOPMENT_WARNINGS AND NOT (CMAKE_CXX_COMPILER_ID MATCHES "AppleClang") AND NOT (CMAKE_CXX_COMPILER_ID MATCHES "[Cc]lang")) set(SKIP_WARNINGS ON) - # fmt\core.h(418): warning C6239: ( && ) always evaluates to the result of : Did you intend to use the bitwise-and (&) operator? If not, consider removing the redundant '' and the && operator. + # fmt\base.h(451): warning C6239: ( && ) always evaluates to the result of : Did you intend to use the bitwise-and (`&`) operator? If not, consider removing the redundant '' and the `&&` operator. string(APPEND CMAKE_CXX_FLAGS " /wd6239") # This one is guarded by an assert - # fmt\format-inl.h(327): warning C6385: Reading invalid data from 'pow10_significands'.: Lines: 298, 300, 327 + # fmt\format-inl.h(294): warning C6385: Reading invalid data from 'pow10_significands'.: Lines: 265, 267, 294 string(APPEND CMAKE_CXX_FLAGS " /wd6385") # fmt\os.h(377): warning C6326: Potential comparison of a constant with another constant. string(APPEND CMAKE_CXX_FLAGS " /wd6326") @@ -33,7 +33,7 @@ include(FetchContent) FetchContent_Declare( fmt URL "${VCPKG_FMT_URL}" - URL_HASH "SHA512=69a7b8584f828528e3bb4b87153449e96df29bd740adcd42a2e3d50ae4a270c80a5eb2c3057337048be5b978094d8bb73bec3378e3b6370748de2b063dd0aa4b" + URL_HASH "SHA512=47ff6d289dcc22681eea6da465b0348172921e7cafff8fd57a1540d3232cc6b53250a4625c954ee0944c87963b17680ecbc3ea123e43c2c822efe0dc6fa6cef3" ) if(NOT fmt_FIND_REQUIRED) diff --git a/docs/artifact.schema.json b/docs/artifact.schema.json index 32bb4711a6..ad2495f11d 100644 --- a/docs/artifact.schema.json +++ b/docs/artifact.schema.json @@ -1,5 +1,6 @@ { - "$id": "https://raw.githubusercontent.com/microsoft/vcpkg-tool/master/docs/artifact.schema.json", + "$schema": "http://json-schema.org/draft-07/schema#", + "$id": "https://raw.githubusercontent.com/microsoft/vcpkg-tool/main/docs/artifact.schema.json", "type": "object", "properties": { "id": { diff --git a/docs/vcpkg-configuration.schema.json b/docs/vcpkg-configuration.schema.json index c33efde596..eb0aa2461d 100644 --- a/docs/vcpkg-configuration.schema.json +++ b/docs/vcpkg-configuration.schema.json @@ -1,5 +1,6 @@ { - "$id": "https://raw.githubusercontent.com/microsoft/vcpkg-tool/master/docs/vcpkg-configuration.schema.json", + "$schema": "http://json-schema.org/draft-07/schema#", + "$id": "https://raw.githubusercontent.com/microsoft/vcpkg-tool/main/docs/vcpkg-configuration.schema.json", "type": "object", "properties": { "default-registry": { diff --git a/docs/vcpkg-schema-definitions.schema.json b/docs/vcpkg-schema-definitions.schema.json index 0a1017ce26..e18d70d631 100644 --- a/docs/vcpkg-schema-definitions.schema.json +++ b/docs/vcpkg-schema-definitions.schema.json @@ -1,6 +1,6 @@ { - "$schema": "http://json-schema.org/draft-07/schema", - "$id": "https://raw.githubusercontent.com/microsoft/vcpkg-tool/master/docs/vcpkg-schema-definitions.schema.json", + "$schema": "http://json-schema.org/draft-07/schema#", + "$id": "https://raw.githubusercontent.com/microsoft/vcpkg-tool/main/docs/vcpkg-schema-definitions.schema.json", "definitions": { "artifact-references": { "description": "A key/value pair of artifact name to selected artifact version.", @@ -194,7 +194,7 @@ "description": "A port dependency fetchable by vcpkg.", "oneOf": [ { - "$ref": "#/definitions/port-name" + "$ref": "#/definitions/identifier" }, { "$ref": "#/definitions/dependency-object" @@ -206,7 +206,7 @@ "type": "object", "properties": { "name": { - "$ref": "#/definitions/port-name" + "$ref": "#/definitions/identifier" }, "features": { "type": "array", @@ -363,6 +363,11 @@ "type": "string", "description": "The location on the filesystem where the registry is rooted." }, + "baseline": { + "description": "The key in the JSON document of baseline.json which will be used for version selection", + "type": "string", + "default": "default" + }, "packages": true }, "required": [ @@ -731,8 +736,7 @@ }, { "not": { - "description": "Identifiers must not be a Windows filesystem or vcpkg reserved name.", - "pattern": "^(prn|aux|nul|con|lpt[1-9]|com[1-9]|core|default)$" + "$ref": "#/definitions/reserved-name" } } ] @@ -759,9 +763,9 @@ "type": "object", "$comment": "The regexes below have (#\\d+)? added to the end as overrides allow putting the port-version inline", "properties": { - "name": { - "$ref": "#/definitions/identifier" - }, + "name": { + "$ref": "#/definitions/identifier" + }, "version-string": { "description": "Deprecated in favor of 'version' in overrides. Text used to identify an arbitrary version", "type": "string", @@ -800,18 +804,18 @@ } ] }, - "port-name": { + "package-pattern": { "type": "string", - "description": "Name of a package.", + "description": "A pattern to match package name.", "allOf": [ { - "description": "Package name must be a dot-separated list of valid identifiers", - "pattern": "^[a-z0-9]+(-[a-z0-9]+)*(\\.[a-z0-9]+(-[a-z0-9]+)*)*$" + "$comment": "https://learn.microsoft.com/en-us/vcpkg/reference/vcpkg-configuration-json#registry-packages", + "description": "Package pattern may contain only lowercase letters, digits, and -, with an optional trailing *", + "pattern": "^([a-z0-9]+-)*([a-z0-9]+[*]?|[*])$" }, { "not": { - "description": "Identifiers must not be a Windows filesystem or vcpkg reserved name.", - "pattern": "(^|\\.)(prn|aux|nul|con|lpt[1-9]|com[1-9]|core|default)(\\.|$)" + "$ref": "#/definitions/reserved-name" } } ] @@ -860,7 +864,7 @@ "packages": { "type": "array", "items": { - "$ref": "#/definitions/port-name" + "$ref": "#/definitions/package-pattern" } } }, @@ -887,6 +891,21 @@ } ] }, + "reserved-name": { + "description": "Vcpkg reserved identifier names for lowercase.", + "type": "string", + "anyOf": [ + { + "description": "Vcpkg reserved names.", + "pattern": "^(core|default)$" + }, + { + "$comment": "https://learn.microsoft.com/en-us/windows/win32/fileio/naming-a-file#naming-conventions", + "description": "A relaxed pattern of Win32 filesystem reserved names.", + "pattern": "^(con|prn|aux|nul|com[0-9]|lpt[0-9])(\\.[^.]+)*$" + } + ] + }, "semantic-version": { "description": "A semantic version string. See https://semver.org/", "type": "string", @@ -915,7 +934,7 @@ { "not": { "description": "Identifiers and parts delimited by slashes must not be a Windows filesystem or vcpkg reserved name.", - "pattern": "(^|/)(prn|aux|nul|con|lpt[1-9]|com[1-9]|core|default)(/|$)" + "pattern": "(^|/)(prn|aux|nul|con|lpt[0-9]|com[0-9]|core|default)(/|$)" } } ] diff --git a/docs/vcpkg.schema.json b/docs/vcpkg.schema.json index 0d32d81484..261bdbfb93 100644 --- a/docs/vcpkg.schema.json +++ b/docs/vcpkg.schema.json @@ -1,13 +1,13 @@ { - "$schema": "http://json-schema.org/draft-07/schema", - "$id": "https://raw.githubusercontent.com/microsoft/vcpkg-tool/master/docs/vcpkg.schema.json", + "$schema": "http://json-schema.org/draft-07/schema#", + "$id": "https://raw.githubusercontent.com/microsoft/vcpkg-tool/main/docs/vcpkg.schema.json", "type": "object", "allOf": [ { "properties": { "name": { "description": "The name of the top-level package", - "$ref": "vcpkg-schema-definitions.schema.json#/definitions/port-name" + "$ref": "vcpkg-schema-definitions.schema.json#/definitions/identifier" }, "version-string": { "description": "Text used to identify an arbitrary version", diff --git a/docs/vcpkg_tool_release_process.md b/docs/vcpkg_tool_release_process.md index 1151ae8d3d..ab516e1a75 100644 --- a/docs/vcpkg_tool_release_process.md +++ b/docs/vcpkg_tool_release_process.md @@ -21,17 +21,17 @@ such as https://github.com/microsoft/vcpkg/pull/23757 1. Clean up a machine for the following tests: * Delete `VCPKG_DOWNLOADS/artifacts` (which forces artifacts to be reacquired) * Delete `LOCALAPPDATA/vcpkg` (which forces registries to be reacquired) -1. Smoke test the 'one liner' installer: (Where 2023-03-29 is replaced with the right release name) +1. Smoke test the 'one liner' installer: (Where 2024-06-10 is replaced with the right release name) * Powershell: - `iex (iwr https://github.com/microsoft/vcpkg-tool/releases/download/2023-03-29/vcpkg-init.ps1)` + `iex (iwr https://github.com/microsoft/vcpkg-tool/releases/download/2024-06-10/vcpkg-init.ps1)` * Batch: - `curl -L -o vcpkg-init.cmd https://github.com/microsoft/vcpkg-tool/releases/download/2023-03-29/vcpkg-init.ps1 && .\vcpkg-init.cmd` + `curl -L -o vcpkg-init.cmd https://github.com/microsoft/vcpkg-tool/releases/download/2024-06-10/vcpkg-init.ps1 && .\vcpkg-init.cmd` * Bash: - `. <(curl https://github.com/microsoft/vcpkg-tool/releases/download/2023-03-29/vcpkg-init -L)` - (and test that `vcpkg use cmake` works from each of these) + `. <(curl https://github.com/microsoft/vcpkg-tool/releases/download/2024-06-10/vcpkg-init -L)` + (and test that `vcpkg use microsoft:cmake` works from each of these) 1. Create a new task in the DevDiv VS instance for this release. (PRs into VS Code and VS require an associated work item in order to be merged.) -1. In the vcpkg repo, run `\scripts\update-vcpkg-tool-metadata.ps1 -Date 2023-03-29` +1. In the vcpkg repo, run `\scripts\update-vcpkg-tool-metadata.ps1 -Date 2024-06-10` with the new release date, which updates SHAs as appropriate. It will also emit a code block for the next vscode-embedded-tools repo step. Commit these changes and submit as a PR. 1. In the DevDiv vscode-embedded-tools repo, follow the @@ -44,10 +44,12 @@ such as https://github.com/microsoft/vcpkg/pull/23757 1. (Probably the next day) Check over the failures and ensure any differences with the most recent full rebuild using the previous tool version are understood. 1. In the DevDiv VS repo ( https://devdiv.visualstudio.com/DefaultCollection/DevDiv/_git/VS ), - update `.corext\Configs\default.config`, and `src\ConfigData\Packages\Redist\Setup.props` + update `src\ConfigData\Packages\Redist\Setup.props` 1. The first time you try to do a VS update on a machine, open a developer command prompt, go to - `src\vc\projbld\Vcpkg\VcpkgInsertionUtility`, and run `csc Program.cs` which will write the - VcpkgInsertionUtility as `Program.exe` in this directory. + `src\vc\projbld\Vcpkg\VcpkgInsertionUtility`, and follow the instructions to make `Program.exe` + in a comment in `Program.cs` +1. Download the VS-insertion .nupkg. +1. Run `src\vc\projbld\Vcpkg\VcpkgInsertionUtility\Program.exe path-to-nupkg` 1. Go to the root of the VS repo and run `init.cmd -CoreXTProfileName VSPartners` 1. Submit this as a change to the VS repo. Example: https://devdiv.visualstudio.com/DefaultCollection/DevDiv/_git/VS/pullrequest/498110 Don't forget to attach the work item number from the previous step. @@ -155,7 +157,7 @@ flowchart TD # Smoke Testing VS -1. Install the prototype version of VS with the vcpkg inserted. Ensure the native desktop workload is selected, and that vcpkg and cmake bits are installed. Don't forget about preinstall. ( `\\vspreinstall\preinstall\preinstall.cmd` ? ) +1. Install the prototype version of VS with the vcpkg inserted. Ensure the native desktop workload is selected, and that vcpkg and cmake bits are installed. Don't forget about preinstall. ( `https://aka.ms/VSPreinstall` ? ) 1. Open a developer command prompt and run `vcpkg integrate install` (this step hopefully removed soon) * This also verifies that vcpkg installed into the developer command prompt correctly. 1. Create a new C++ console project. @@ -213,7 +215,7 @@ flowchart TD and check that a reasonable zlib version is printed. 1. Back in the developer command prompt, verify that the copy of CMake can be customized by running: ``` - vcpkg use cmake + vcpkg-shell use microsoft:cmake cmake -G Ninja -DCMAKE_TOOLCHAIN_FILE="%VCPKG_ROOT%\scripts\buildsystems\vcpkg.cmake" -S . -B build_artifact ninja -C build_artifact build_artifact\program.exe @@ -222,6 +224,6 @@ flowchart TD 1. Close Visual Studio. 1. Back in the developer command prompt, run: ``` - vcpkg add artifact cmake + vcpkg add artifact microsoft:cmake ``` 1. Open Visual Studio and use "Open Folder" on the directory containing the vcxproj. Verify that vcpkg activation happens in the terminal. diff --git a/include/vcpkg/base/contractual-constants.h b/include/vcpkg/base/contractual-constants.h index 0dd0489ffa..e637a800db 100644 --- a/include/vcpkg/base/contractual-constants.h +++ b/include/vcpkg/base/contractual-constants.h @@ -374,6 +374,12 @@ namespace vcpkg inline constexpr StringLiteral CMakeVariableNoDownloads = "_VCPKG_NO_DOWNLOADS"; inline constexpr StringLiteral CMakeVariablePlatformToolset = "VCPKG_PLATFORM_TOOLSET"; inline constexpr StringLiteral CMakeVariablePlatformToolsetVersion = "VCPKG_PLATFORM_TOOLSET_VERSION"; + inline constexpr StringLiteral CMakeVariablePolicyAllowDebugInclude = "VCPKG_POLICY_ALLOW_DEBUG_INCLUDE"; + inline constexpr StringLiteral CMakeVariablePolicyAllowDebugShare = "VCPKG_POLICY_ALLOW_DEBUG_SHARE"; + inline constexpr StringLiteral CMakeVariablePolicyAllowDllsInLib = "VCPKG_POLICY_ALLOW_DLLS_IN_LIB"; + inline constexpr StringLiteral CMakeVariablePolicyAllowEmptyFolders = "VCPKG_POLICY_ALLOW_EMPTY_FOLDERS"; + inline constexpr StringLiteral CMakeVariablePolicyAllowExesInBin = "VCPKG_POLICY_ALLOW_EXES_IN_BIN"; + inline constexpr StringLiteral CMakeVariablePolicyAllowKernel32FromXBox = "VCPKG_POLICY_ALLOW_KERNEL32_FROM_XBOX"; inline constexpr StringLiteral CMakeVariablePolicyAllowObsoleteMsvcrt = "VCPKG_POLICY_ALLOW_OBSOLETE_MSVCRT"; inline constexpr StringLiteral CMakeVariablePolicyAllowRestrictedHeaders = "VCPKG_POLICY_ALLOW_RESTRICTED_HEADERS"; inline constexpr StringLiteral CMakeVariablePolicyCMakeHelperPort = "VCPKG_POLICY_CMAKE_HELPER_PORT"; @@ -386,10 +392,24 @@ namespace vcpkg "VCPKG_POLICY_MISMATCHED_NUMBER_OF_BINARIES"; inline constexpr StringLiteral CMakeVariablePolicyOnlyReleaseCrt = "VCPKG_POLICY_ONLY_RELEASE_CRT"; inline constexpr StringLiteral CMakeVariablePolicySkipAbsolutePathsCheck = "VCPKG_POLICY_SKIP_ABSOLUTE_PATHS_CHECK"; + inline constexpr StringLiteral CMakeVariablePolicySkipAllPostBuildChecks = + "VCPKG_POLICY_SKIP_ALL_POST_BUILD_CHECKS"; + inline constexpr StringLiteral CMakeVariablePolicySkipAppcontainerCheck = "VCPKG_POLICY_SKIP_APPCONTAINER_CHECK"; inline constexpr StringLiteral CMakeVariablePolicySkipArchitectureCheck = "VCPKG_POLICY_SKIP_ARCHITECTURE_CHECK"; + inline constexpr StringLiteral CMakeVariablePolicySkipCopyrightCheck = "VCPKG_POLICY_SKIP_COPYRIGHT_CHECK"; + inline constexpr StringLiteral CMakeVariablePolicySkipCrtLinkageCheck = "VCPKG_POLICY_SKIP_CRT_LINKAGE_CHECK"; inline constexpr StringLiteral CMakeVariablePolicySkipDumpbinChecks = "VCPKG_POLICY_SKIP_DUMPBIN_CHECKS"; + inline constexpr StringLiteral CMakeVariablePolicySkipLibCMakeMergeCheck = + "VCPKG_POLICY_SKIP_LIB_CMAKE_MERGE_CHECK"; + inline constexpr StringLiteral CMakeVariablePolicySkipMisplacedCMakeFilesCheck = + "VCPKG_POLICY_SKIP_MISPLACED_CMAKE_FILES_CHECK"; + inline constexpr StringLiteral CMakeVariablePolicySkipMisplacedRegularFilesCheck = + "VCPKG_POLICY_SKIP_MISPLACED_REGULAR_FILES_CHECK"; + inline constexpr StringLiteral CMakeVariablePolicySkipPkgConfigCheck = "VCPKG_POLICY_SKIP_PKGCONFIG_CHECK"; + inline constexpr StringLiteral CMakeVariablePolicySkipUsageInstallCheck = "VCPKG_POLICY_SKIP_USAGE_INSTALL_CHECK"; inline constexpr StringLiteral CMakeVariablePort = "PORT"; inline constexpr StringLiteral CMakeVariablePortConfigs = "VCPKG_PORT_CONFIGS"; + inline constexpr StringLiteral CMakeVariablePostPortfileIncludes = "VCPKG_POST_PORTFILE_INCLUDES"; inline constexpr StringLiteral CMakeVariableProhibitBackcompatFeatures = "_VCPKG_PROHIBIT_BACKCOMPAT_FEATURES"; inline constexpr StringLiteral CMakeVariablePublicAbiOverride = "VCPKG_PUBLIC_ABI_OVERRIDE"; inline constexpr StringLiteral CMakeVariableRef = "REF"; @@ -406,8 +426,15 @@ namespace vcpkg inline constexpr StringLiteral CMakeVariableXBoxConsoleTarget = "VCPKG_XBOX_CONSOLE_TARGET"; inline constexpr StringLiteral CMakeVariableZChainloadToolchainFile = "Z_VCPKG_CHAINLOAD_TOOLCHAIN_FILE"; inline constexpr StringLiteral CMakeVariableZVcpkgGameDKLatest = "Z_VCPKG_GameDKLatest"; + inline constexpr StringLiteral CMakeVariableZPostPortfileIncludes = "Z_VCPKG_POST_PORTFILE_INCLUDES"; // Policies are PascalCase + inline constexpr StringLiteral PolicyAllowDebugInclude = "PolicyAllowDebugInclude"; + inline constexpr StringLiteral PolicyAllowDebugShare = "PolicyAllowDebugShare"; + inline constexpr StringLiteral PolicyAllowDllsInLib = "PolicyAllowDllsInLib"; + inline constexpr StringLiteral PolicyAllowEmptyFolders = "PolicyAllowEmptyFolders"; + inline constexpr StringLiteral PolicyAllowExesInBin = "PolicyAllowExesInBin"; + inline constexpr StringLiteral PolicyAllowKernel32FromXBox = "PolicyAllowKernel32FromXBox"; inline constexpr StringLiteral PolicyAllowObsoleteMsvcrt = "PolicyAllowObsoleteMsvcrt"; inline constexpr StringLiteral PolicyAllowRestrictedHeaders = "PolicyAllowRestrictedHeaders"; inline constexpr StringLiteral PolicyCMakeHelperPort = "PolicyCmakeHelperPort"; @@ -419,8 +446,17 @@ namespace vcpkg inline constexpr StringLiteral PolicyMismatchedNumberOfBinaries = "PolicyMismatchedNumberOfBinaries"; inline constexpr StringLiteral PolicyOnlyReleaseCrt = "PolicyOnlyReleaseCRT"; inline constexpr StringLiteral PolicySkipAbsolutePathsCheck = "PolicySkipAbsolutePathsCheck"; + inline constexpr StringLiteral PolicySkipAllPostBuildChecks = "PolicySkipAllPostBuildChecks"; + inline constexpr StringLiteral PolicySkipAppcontainerCheck = "PolicySkipAppcontainerCheck"; inline constexpr StringLiteral PolicySkipArchitectureCheck = "PolicySkipArchitectureCheck"; + inline constexpr StringLiteral PolicySkipCopyrightCheck = "PolicySkipCopyrightCheck"; + inline constexpr StringLiteral PolicySkipCrtLinkageCheck = "PolicySkipCrtLinkageCheck"; inline constexpr StringLiteral PolicySkipDumpbinChecks = "PolicySkipDumpbinChecks"; + inline constexpr StringLiteral PolicySkipLibCMakeMergeCheck = "PolicySkipLibCMakeMergeCheck"; + inline constexpr StringLiteral PolicySkipMisplacedCMakeFilesCheck = "PolicySkipMisplacedCMakeFilesCheck"; + inline constexpr StringLiteral PolicySkipMisplacedRegularFilesCheck = "PolicySkipMisplacedRegularFilesCheck"; + inline constexpr StringLiteral PolicySkipPkgConfigCheck = "PolicySkipPkgConfigCheck"; + inline constexpr StringLiteral PolicySkipUsageInstallCheck = "PolicySkipUsageInstallCheck"; // Environment variables are ALL_CAPS_WITH_UNDERSCORES inline constexpr StringLiteral EnvironmentVariableActionsCacheUrl = "ACTIONS_CACHE_URL"; diff --git a/include/vcpkg/base/downloads.h b/include/vcpkg/base/downloads.h index 09b43d4761..93b4163ee5 100644 --- a/include/vcpkg/base/downloads.h +++ b/include/vcpkg/base/downloads.h @@ -32,9 +32,9 @@ namespace vcpkg View azure_blob_headers(); - std::vector download_files(const Filesystem& fs, - View> url_pairs, - View headers); + std::vector download_files(View> url_pairs, + View headers, + View secrets); bool send_snapshot_to_api(const std::string& github_token, const std::string& github_repository, @@ -92,6 +92,9 @@ namespace vcpkg const Path& file_to_put, StringView sha512) const; + bool get_block_origin() const; + bool asset_cache_configured() const; + private: DownloadManagerConfig m_config; }; diff --git a/include/vcpkg/base/expected.h b/include/vcpkg/base/expected.h index 49ced29d1c..e03e6d8df0 100644 --- a/include/vcpkg/base/expected.h +++ b/include/vcpkg/base/expected.h @@ -102,8 +102,8 @@ namespace vcpkg { } - ExpectedT(const ExpectedT& other) noexcept( - std::is_nothrow_copy_constructible_v&& std::is_nothrow_copy_constructible_v>) + ExpectedT(const ExpectedT& other) noexcept(std::is_nothrow_copy_constructible_v && + std::is_nothrow_copy_constructible_v>) : value_is_error(other.value_is_error) { if (value_is_error) @@ -116,8 +116,8 @@ namespace vcpkg } } - ExpectedT(ExpectedT&& other) noexcept( - std::is_nothrow_move_constructible_v&& std::is_nothrow_move_constructible_v>) + ExpectedT(ExpectedT&& other) noexcept(std::is_nothrow_move_constructible_v && + std::is_nothrow_move_constructible_v>) : value_is_error(other.value_is_error) { if (value_is_error) @@ -228,6 +228,12 @@ namespace vcpkg return std::move(*m_t.get()); } + Error& error() & noexcept + { + unreachable_if_not_error(VCPKG_LINE_INFO); + return m_error; + } + const Error& error() const& noexcept { unreachable_if_not_error(VCPKG_LINE_INFO); @@ -240,6 +246,12 @@ namespace vcpkg return std::move(m_error); } + const Error&& error() const&& noexcept + { + unreachable_if_not_error(VCPKG_LINE_INFO); + return std::move(m_error); + } + typename ExpectedHolder::const_pointer get() const noexcept { if (value_is_error) diff --git a/include/vcpkg/base/files.h b/include/vcpkg/base/files.h index bfb88e4758..7b43319223 100644 --- a/include/vcpkg/base/files.h +++ b/include/vcpkg/base/files.h @@ -161,6 +161,11 @@ namespace vcpkg std::vector get_directories_recursive(const Path& dir, LineInfo li) const; ExpectedL> try_get_directories_recursive(const Path& dir) const; + virtual std::vector get_directories_recursive_lexically_proximate(const Path& dir, + std::error_code& ec) const = 0; + std::vector get_directories_recursive_lexically_proximate(const Path& dir, LineInfo li) const; + ExpectedL> try_get_directories_recursive_lexically_proximate(const Path& dir) const; + virtual std::vector get_directories_non_recursive(const Path& dir, std::error_code& ec) const = 0; std::vector get_directories_non_recursive(const Path& dir, LineInfo li) const; ExpectedL> try_get_directories_non_recursive(const Path& dir) const; @@ -339,19 +344,19 @@ namespace vcpkg struct NotExtensionCaseSensitive { - StringView ext; + StringLiteral ext; bool operator()(const Path& target) const; }; struct NotExtensionCaseInsensitive { - StringView ext; + StringLiteral ext; bool operator()(const Path& target) const; }; struct NotExtensionsCaseInsensitive { - std::vector exts; + View exts; bool operator()(const Path& target) const; }; diff --git a/include/vcpkg/base/fmt.h b/include/vcpkg/base/fmt.h index a6c72959f5..416e6dcd38 100644 --- a/include/vcpkg/base/fmt.h +++ b/include/vcpkg/base/fmt.h @@ -9,7 +9,12 @@ VCPKG_MSVC_WARNING(push) // C6239 is not a useful warning for external code; it is // ( && ) always evaluates to the result of . // -// include\fmt\format.h(1812): warning C4189: 'zero': local variable is initialized but not referenced -VCPKG_MSVC_WARNING(disable : 6239 4189) +// fmt\base.h(451): warning C6239: ( && ) always evaluates to the result of +// Did you intend to use the bitwise-and (`&`) operator? If not, consider removing the redundant '' +// and the `&&` operator. +// include\fmt\compile.h(153): warning C4702: unreachable code (expected due to if constexpr) +VCPKG_MSVC_WARNING(disable : 6239 4702) +#include #include +#include VCPKG_MSVC_WARNING(pop) diff --git a/include/vcpkg/base/fwd/fmt.h b/include/vcpkg/base/fwd/fmt.h index f13d54076f..7ffae1bfaa 100644 --- a/include/vcpkg/base/fwd/fmt.h +++ b/include/vcpkg/base/fwd/fmt.h @@ -2,7 +2,7 @@ namespace fmt { - inline namespace v10 + inline namespace v11 { template struct formatter; diff --git a/include/vcpkg/base/jsonreader.h b/include/vcpkg/base/jsonreader.h index 8bee15af39..e4c3522ed7 100644 --- a/include/vcpkg/base/jsonreader.h +++ b/include/vcpkg/base/jsonreader.h @@ -57,6 +57,8 @@ namespace vcpkg::Json const std::vector& warnings() const { return m_warnings; } + LocalizedString join() const; + std::string path() const noexcept; StringView origin() const noexcept; @@ -333,7 +335,7 @@ namespace vcpkg::Json struct IdentifierDeserializer final : Json::IDeserializer { virtual LocalizedString type_name() const override; - // [a-z0-9]+(-[a-z0-9]+)*, plus not any of {prn, aux, nul, con, lpt[1-9], com[1-9], core, default} + // [a-z0-9]+(-[a-z0-9]+)*, plus not any of {prn, aux, nul, con, lpt[0-9], com[0-9], core, default} static bool is_ident(StringView sv); virtual Optional visit_string(Json::Reader&, StringView sv) const override; static const IdentifierDeserializer instance; diff --git a/include/vcpkg/base/message-args.inc.h b/include/vcpkg/base/message-args.inc.h index 61fc7758b2..f49356c401 100644 --- a/include/vcpkg/base/message-args.inc.h +++ b/include/vcpkg/base/message-args.inc.h @@ -22,6 +22,7 @@ DECLARE_MSG_ARG(command_line, "vcpkg install zlib") DECLARE_MSG_ARG(command_name, "install") DECLARE_MSG_ARG(commit_sha, "7cfad47ae9f68b183983090afd6337cd60fd4949") DECLARE_MSG_ARG(count, "42") +DECLARE_MSG_ARG(cmake_var, "VCPKG_POLICY_EMPTY_PACKAGE") DECLARE_MSG_ARG(elapsed, "3.532 min") DECLARE_MSG_ARG(env_var, "VCPKG_DEFAULT_TRIPLET") DECLARE_MSG_ARG(error_msg, "File Not Found") diff --git a/include/vcpkg/base/message-data.inc.h b/include/vcpkg/base/message-data.inc.h index 7e27a51134..94da29347b 100644 --- a/include/vcpkg/base/message-data.inc.h +++ b/include/vcpkg/base/message-data.inc.h @@ -14,10 +14,6 @@ DECLARE_MESSAGE(AString, (), "", "a string") DECLARE_MESSAGE(ADateVersionString, (), "", "a date version string") DECLARE_MESSAGE(AddArtifactOnlyOne, (msg::command_line), "", "'{command_line}' can only add one artifact at a time.") DECLARE_MESSAGE(AddCommandFirstArg, (), "", "The first parameter to add must be 'artifact' or 'port'.") -DECLARE_MESSAGE(AddFirstArgument, - (msg::command_line), - "", - "The first argument to '{command_line}' must be 'artifact' or 'port'.") DECLARE_MESSAGE(AddingCompletionEntry, (msg::path), "", "Adding vcpkg completion entry to {path}.") DECLARE_MESSAGE(AdditionalPackagesToExport, (), @@ -45,7 +41,6 @@ DECLARE_MESSAGE(AddVersionArtifactsOnly, "--version is artifacts only and can't be used with vcpkg add port") DECLARE_MESSAGE(AddVersionAddedVersionToFile, (msg::version, msg::path), "", "added version {version} to {path}") DECLARE_MESSAGE(AddVersionCommitChangesReminder, (), "", "Did you remember to commit your changes?") -DECLARE_MESSAGE(AddVersionCommitResultReminder, (), "", "Don't forget to commit the result!") DECLARE_MESSAGE(AddVersionDetectLocalChangesError, (), "", @@ -56,7 +51,10 @@ DECLARE_MESSAGE(AddVersionIgnoringOptionAll, (msg::option), "The -- before {option} must be preserved as they're part of the help message for the user.", "ignoring --{option} since a port name argument was provided") -DECLARE_MESSAGE(AddVersionLoadPortFailed, (msg::package_name), "", "can't load port {package_name}") +DECLARE_MESSAGE(AddVersionInstructions, + (msg::package_name), + "", + "you can run the following commands to add the current version of {package_name} automatically:") DECLARE_MESSAGE(AddVersionNewFile, (), "", "(new file)") DECLARE_MESSAGE(AddVersionNewShaIs, (msg::commit_sha), "", "new SHA: {commit_sha}") DECLARE_MESSAGE(AddVersionNoFilesUpdated, (), "", "No files were updated") @@ -76,12 +74,29 @@ DECLARE_MESSAGE(AddVersionPortFilesShaUnchanged, "", "checked-in files for {package_name} are unchanged from version {version}") DECLARE_MESSAGE(AddVersionPortHasImproperFormat, (msg::package_name), "", "{package_name} is not properly formatted") -DECLARE_MESSAGE(AddVersionSuggestNewVersionScheme, - (msg::new_scheme, msg::old_scheme, msg::package_name, msg::option), - "The -- before {option} must be preserved as they're part of the help message for the user.", - "Use the version scheme \"{new_scheme}\" rather than \"{old_scheme}\" in port " - "\"{package_name}\".\nUse --{option} to disable this check.") -DECLARE_MESSAGE(AddVersionUnableToParseVersionsFile, (msg::path), "", "unable to parse versions file {path}") +DECLARE_MESSAGE(AddVersionSuggestVersionDate, + (msg::package_name), + "\"version-string\" and \"version-date\" are JSON keys, and --skip-version-format-check is a command " + "line switch. They should not be translated", + "The version format of \"{package_name}\" uses \"version-string\", but the format is acceptable as a " + "\"version-date\". If this format is actually intended to be an ISO 8601 date, change the format to " + "\"version-date\", and rerun this command. Otherwise, disable this check by rerunning this command and " + "adding --skip-version-format-check .") +DECLARE_MESSAGE( + AddVersionSuggestVersionRelaxed, + (msg::package_name), + "\"version-string\" and \"version\" are JSON keys, and --skip-version-format-check is a command line switch. They " + "should not be translated", + "The version format of \"{package_name}\" uses \"version-string\", but the format is acceptable as a \"version\". " + "If the versions for this port are orderable using relaxed-version rules, change the format to \"version\", and " + "rerun this command. Relaxed-version rules order versions by each numeric component. Then, versions with dash " + "suffixes are sorted lexcographically before. Plus'd build tags are ignored. Examples:\n" + "1.0 < 1.1-alpha < 1.1-b < 1.1 < 1.1.1 < 1.2+build = 1.2 < 2.0\n" + "Note in particular that dashed suffixes sort *before*, not after. 1.0-anything < 1.0\n" + "Note that this sort order is the same as chosen in Semantic Versioning (see https://semver.org), even though the " + "actually semantic parts do not apply.\n" + "If versions for this port are not ordered by these rules, disable this check by rerunning this command and adding " + "--skip-version-format-check .") DECLARE_MESSAGE(AddVersionUncommittedChanges, (msg::package_name), "", @@ -109,7 +124,7 @@ DECLARE_MESSAGE(AllFormatArgsUnbalancedBraces, (msg::value), "example of {value} is 'foo bar {'", "unbalanced brace in format string \"{value}\"") -DECLARE_MESSAGE(AllPackagesAreUpdated, (), "", "All installed packages are up-to-date with the local portfile.") +DECLARE_MESSAGE(AllPackagesAreUpdated, (), "", "All installed packages are up-to-date.") DECLARE_MESSAGE(AlreadyInstalled, (msg::spec), "", "{spec} is already installed") DECLARE_MESSAGE(AlreadyInstalledNotHead, (msg::spec), @@ -178,7 +193,6 @@ DECLARE_MESSAGE(ArtifactsNotInstalledReadonlyRoot, "", "vcpkg-artifacts is not installed, and it can't be installed because VCPKG_ROOT is assumed to be " "readonly. Reinstalling vcpkg using the 'one liner' may fix this problem.") -DECLARE_MESSAGE(ArtifactsNotOfficialWarning, (), "", "Using vcpkg-artifacts with an unofficial ") DECLARE_MESSAGE(ArtifactsOptionIncompatibility, (msg::option), "", "--{option} has no effect on find artifact.") DECLARE_MESSAGE(ArtifactsOptionJson, (), @@ -193,14 +207,12 @@ DECLARE_MESSAGE(ArtifactsOptionVersionMismatch, (), "--version is a command line switch and must not be localized", "The number of --version switches must match the number of named artifacts") -DECLARE_MESSAGE(ArtifactsSwitchAll, (), "", "Updates all known artifact registries") DECLARE_MESSAGE(ArtifactsSwitchAllLanguages, (), "", "Acquires all language files when acquiring artifacts") DECLARE_MESSAGE(ArtifactsSwitchARM, (), "", "Forces host detection to ARM when acquiring artifacts") DECLARE_MESSAGE(ArtifactsSwitchARM64, (), "", "Forces host detection to ARM64 when acquiring artifacts") DECLARE_MESSAGE(ArtifactsSwitchForce, (), "", "Forces reacquire if an artifact is already acquired") DECLARE_MESSAGE(ArtifactsSwitchFreebsd, (), "", "Forces host detection to FreeBSD when acquiring artifacts") DECLARE_MESSAGE(ArtifactsSwitchLinux, (), "", "Forces host detection to Linux when acquiring artifacts") -DECLARE_MESSAGE(ArtifactsSwitchNormalize, (), "", "Applies any deprecation fixups") DECLARE_MESSAGE(ArtifactsSwitchTargetARM, (), "", "Sets target detection to ARM when acquiring artifacts") DECLARE_MESSAGE(ArtifactsSwitchTargetARM64, (), "", "Sets target detection to ARM64 when acquiring artifacts") DECLARE_MESSAGE(ArtifactsSwitchTargetX64, (), "", "Sets target detection to x64 when acquiring artifacts") @@ -221,19 +233,19 @@ DECLARE_MESSAGE(ArtifactsSwitchOsx, (), "", "Forces host detection to MacOS when DECLARE_MESSAGE(ArtifactsSwitchX64, (), "", "Forces host detection to x64 when acquiring artifacts") DECLARE_MESSAGE(ArtifactsSwitchX86, (), "", "Forces host detection to x86 when acquiring artifacts") DECLARE_MESSAGE(ArtifactsSwitchWindows, (), "", "Forces host detection to Windows when acquiring artifacts") +DECLARE_MESSAGE(AssetCacheHit, (msg::path, msg::url), "", "Asset cache hit for {path}; downloaded from: {url}") +DECLARE_MESSAGE(AssetCacheMiss, (msg::url), "", "Asset cache miss; downloading from {url}") +DECLARE_MESSAGE(DownloadingUrl, (msg::url), "", "Downloading {url}") DECLARE_MESSAGE(AssetCacheProviderAcceptsNoArguments, (msg::value), "{value} is a asset caching provider name such as azurl, clear, or x-block-origin", "unexpected arguments: '{value}' does not accept arguments") +DECLARE_MESSAGE(AssetCacheSuccesfullyStored, (msg::path, msg::url), "", "Successfully stored {path} to {url}.") DECLARE_MESSAGE(AssetSourcesArg, (), "", "Asset caching sources. See 'vcpkg help assetcaching'") DECLARE_MESSAGE(ASemanticVersionString, (), "", "a semantic version string") DECLARE_MESSAGE(ASetOfFeatures, (), "", "a set of features") DECLARE_MESSAGE(AStringOrArrayOfStrings, (), "", "a string or array of strings") DECLARE_MESSAGE(AStringStringDictionary, (), "", "a \"string\": \"string\" dictionary") -DECLARE_MESSAGE(AttemptingToFetchPackagesFromVendor, - (msg::count, msg::vendor), - "", - "Attempting to fetch {count} package(s) from {vendor}") DECLARE_MESSAGE(AttemptingToSetBuiltInBaseline, (), "", @@ -279,32 +291,21 @@ DECLARE_MESSAGE(BaselineConflict, "", "Specifying vcpkg-configuration.default-registry in a manifest file conflicts with built-in " "baseline.\nPlease remove one of these conflicting settings.") -DECLARE_MESSAGE(BaselineFileNoDefaultField, - (msg::commit_sha), - "", - "The baseline file at commit {commit_sha} was invalid (no \"default\" field).") DECLARE_MESSAGE(BaselineGitShowFailed, (msg::commit_sha), "", "while checking out baseline from commit '{commit_sha}', failed to `git show` " "versions/baseline.json. This may be fixed by fetching commits with `git fetch`.") -DECLARE_MESSAGE(BaselineMissing, - (msg::package_name, msg::version), +DECLARE_MESSAGE(BaselineMissing, (msg::package_name), "", "{package_name} is not assigned a version") +DECLARE_MESSAGE(BinariesRelativeToThePackageDirectoryHere, + (), "", - "Baseline version not found. Run:\n" - "vcpkg x-add-version {package_name}\n" - "git add versions\n" - "git commit -m \"Update version database\"\n" - "to set {version} as the baseline version.") -DECLARE_MESSAGE(BinaryCacheVendorHTTP, (), "", "HTTP servers") + "the binaries are relative to ${{CURRENT_PACKAGES_DIR}} here") DECLARE_MESSAGE(BinarySourcesArg, (), "'vcpkg help binarycaching' is a command line and should not be localized", "Binary caching sources. See 'vcpkg help binarycaching'") -DECLARE_MESSAGE(BinaryWithInvalidArchitecture, - (msg::path, msg::expected, msg::actual), - "{expected} and {actual} are architectures", - "{path}\n Expected: {expected}, but was {actual}") +DECLARE_MESSAGE(BinaryWithInvalidArchitecture, (msg::path, msg::arch), "", "{path} is built for {arch}") DECLARE_MESSAGE(BuildAlreadyInstalled, (msg::spec), "", @@ -402,18 +403,14 @@ DECLARE_MESSAGE( "before version information about vcpkg itself.", "Include '[{package_name}] Build error' in your bug report title, the following version information in your " "bug description, and attach any relevant failure logs from above.") -DECLARE_MESSAGE(BuildTroubleshootingMessage4, - (msg::path), - "Fourth optional part of build troubleshooting message, printed after the version" - "information about vcpkg itself.", - "Please use the prefilled template from {path} when reporting your issue.") DECLARE_MESSAGE(BuiltInTriplets, (), "", "Built-in Triplets:") -DECLARE_MESSAGE(BuiltWithIncorrectArchitecture, (), "", "The following files were built for an incorrect architecture:") -DECLARE_MESSAGE(CheckedOutGitSha, (msg::commit_sha), "", "Checked out Git SHA: {commit_sha}") -DECLARE_MESSAGE(CheckedOutObjectMissingManifest, - (), - "", - "The checked-out object does not contain a CONTROL file or vcpkg.json file.") +DECLARE_MESSAGE( + BuiltWithIncorrectArchitecture, + (msg::arch), + "", + "The triplet requests that binaries are built for {arch}, but the following binaries were built for a " + "different architecture. This usually means toolchain information is incorrectly conveyed to the binaries' " + "build system. To suppress this message, add set(VCPKG_POLICY_SKIP_ARCHITECTURE_CHECK enabled)") DECLARE_MESSAGE(ChecksFailedCheck, (), "", "vcpkg has crashed; no additional details are available.") DECLARE_MESSAGE(ChecksUnreachableCode, (), "", "unreachable code was reached") DECLARE_MESSAGE(ChecksUpdateVcpkg, (), "", "updating vcpkg by rerunning bootstrap-vcpkg may resolve this failure.") @@ -449,7 +446,6 @@ DECLARE_MESSAGE(CiBaselineUnexpectedPass, (msg::spec, msg::path), "", "PASSING, REMOVE FROM FAIL LIST: {spec} ({path}).") -DECLARE_MESSAGE(CISettingsExclude, (), "", "Comma-separated list of ports to skip") DECLARE_MESSAGE(CISettingsOptCIBase, (), "", @@ -462,10 +458,6 @@ DECLARE_MESSAGE(CISettingsOptParentHashes, (), "", "File to read package hashes for a parent CI state, to reduce the set of changed packages") -DECLARE_MESSAGE(CISettingsOptSkippedCascadeCount, - (), - "", - "Asserts that the number of --exclude and supports skips exactly equal this number") DECLARE_MESSAGE(CISettingsOptXUnit, (), "", "File to output results in XUnit format") DECLARE_MESSAGE(CISettingsVerifyGitTree, (), @@ -533,11 +525,6 @@ DECLARE_MESSAGE(CmdBuildExample1, "vcpkg build ") DECLARE_MESSAGE(CmdBuildExternalSynopsis, (), "", "Builds port from a path") DECLARE_MESSAGE(CmdBuildSynopsis, (), "", "Builds a port") -DECLARE_MESSAGE(CmdCacheExample1, - (), - "This is a command line, only the <>s part should be localized", - "vcpkg cache ") -DECLARE_MESSAGE(CmdCacheSynopsis, (), "", "List specs of packages") DECLARE_MESSAGE(CmdCiCleanSynopsis, (), "CI is continuous integration (building everything together)", @@ -547,7 +534,6 @@ DECLARE_MESSAGE(CmdCiSynopsis, "CI is continuous integration (building everything together)", "Tries building all ports for CI testing") DECLARE_MESSAGE(CmdCiVerifyVersionsSynopsis, (), "", "Checks integrity of the version database") -DECLARE_MESSAGE(CmdContactOptSurvey, (), "", "Launch default browser to the current vcpkg survey") DECLARE_MESSAGE(CmdCheckSupportExample1, (), "This is a command line, only the <>s part should be localized", @@ -627,7 +613,7 @@ DECLARE_MESSAGE(CmdExportEmptyPlan, DECLARE_MESSAGE(CmdExportExample1, (), "This is a command line, only and the out_dir part should be localized", - "vcpkg export [--nuget] [--directory=out_dir]") + "vcpkg export [--nuget] [--output-dir=out_dir]") DECLARE_MESSAGE(CmdExportOpt7Zip, (), "", "Exports to a 7zip (.7z) file") DECLARE_MESSAGE(CmdExportOptChocolatey, (), "", "Exports a Chocolatey package (experimental)") DECLARE_MESSAGE(CmdExportOptDebug, (), "", "Enables prefab debug") @@ -864,7 +850,13 @@ DECLARE_MESSAGE(CommandFailed, "", "command:\n" "{command_line}\n" - "failed with the following results:") + "failed with the following output:") +DECLARE_MESSAGE(CommandFailedCode, + (msg::command_line, msg::exit_code), + "", + "command:\n" + "{command_line}\n" + "failed with exit code {exit_code} and the following output:") DECLARE_MESSAGE(CommunityTriplets, (), "", "Community Triplets:") DECLARE_MESSAGE(CompilerPath, (msg::path), "", "Compiler found: {path}") DECLARE_MESSAGE(CompressFolderFailed, (msg::path), "", "Failed to compress folder \"{path}\":") @@ -891,13 +883,14 @@ DECLARE_MESSAGE(ConsideredVersions, "requirement of {version}:") DECLARE_MESSAGE(ConstraintViolation, (), "", "Found a constraint violation:") DECLARE_MESSAGE(ContinueCodeUnitInStart, (), "", "found continue code unit in start position") -DECLARE_MESSAGE(ControlAndManifestFilesPresent, - (msg::path), - "", - "Both a manifest file and a CONTROL file exist in port directory: {path}") DECLARE_MESSAGE(ControlCharacterInString, (), "", "Control character in string") DECLARE_MESSAGE(ControlSupportsMustBeAPlatformExpression, (), "", "\"Supports\" must be a platform expression") -DECLARE_MESSAGE(CopyrightIsDir, (msg::path), "", "`{path}` being a directory is deprecated.") +DECLARE_MESSAGE(CopyrightIsDir, + (), + "", + "this port sets ${{CURRENT_PACKAGES_DIR}}/share/${{PORT}}/copyright to a directory, but it should be a " + "file. Consider combining separate copyright files into one using vcpkg_install_copyright. To suppress " + "this message, add set(VCPKG_POLICY_SKIP_COPYRIGHT_CHECK enabled)") DECLARE_MESSAGE(CorruptedDatabase, (), "", @@ -929,10 +922,6 @@ DECLARE_MESSAGE(Creating7ZipArchive, (), "", "Creating 7zip archive...") DECLARE_MESSAGE(CreatingNugetPackage, (), "", "Creating NuGet package...") DECLARE_MESSAGE(CreatingZipArchive, (), "", "Creating zip archive...") DECLARE_MESSAGE(CreationFailed, (msg::path), "", "Creating {path} failed.") -DECLARE_MESSAGE(CurlFailedToExecute, - (msg::exit_code), - "curl is the name of a program, see curl.se", - "curl failed to execute with exit code {exit_code}.") DECLARE_MESSAGE(CurlFailedToPut, (msg::exit_code, msg::url), "curl is the name of a program, see curl.se", @@ -941,28 +930,20 @@ DECLARE_MESSAGE(CurlFailedToPutHttp, (msg::exit_code, msg::url, msg::value), "curl is the name of a program, see curl.se. {value} is an HTTP status code", "curl failed to put file to {url} with exit code {exit_code} and http code {value}.") -DECLARE_MESSAGE(CurlReportedUnexpectedResults, - (msg::command_line, msg::actual), - "{command_line} is the command line to call curl.exe, {actual} is the console output " - "of curl.exe locale-invariant download results.", - "curl has reported unexpected results to vcpkg and vcpkg cannot continue.\n" - "Please review the following text for sensitive information and open an issue on the " - "Microsoft/vcpkg GitHub to help fix this problem!\n" - "cmd: {command_line}\n" - "=== curl output ===\n" - "{actual}\n" - "=== end curl output ===") -DECLARE_MESSAGE(CurlReturnedUnexpectedResponseCodes, - (msg::actual, msg::expected), - "{actual} and {expected} are integers, curl is the name of a program, see curl.se", - "curl returned a different number of response codes than were expected for the request ({actual} " - "vs expected {expected}).") +DECLARE_MESSAGE(CurlResponseTruncatedRetrying, + (msg::value), + "{value} is the number of milliseconds for which we are waiting this time", + "curl returned a partial response; waiting {value} milliseconds and trying again") +DECLARE_MESSAGE(CurlTimeout, + (msg::command_line), + "", + "curl was unable to perform all requested HTTP operations, even after timeout and retries. The last " + "command line was: {command_line}") DECLARE_MESSAGE(CurrentCommitBaseline, (msg::commit_sha), "", "You can use the current commit as a baseline, which is:\n\t\"builtin-baseline\": \"{commit_sha}\"") DECLARE_MESSAGE(CycleDetectedDuring, (msg::spec), "", "cycle detected during {spec}:") -DECLARE_MESSAGE(DateTableHeader, (), "", "Date") DECLARE_MESSAGE(DefaultBinaryCachePlatformCacheRequiresAbsolutePath, (msg::path), "", @@ -1008,8 +989,21 @@ DECLARE_MESSAGE( DECLARE_MESSAGE(DependencyGraphCalculation, (), "", "Dependency graph submission enabled.") DECLARE_MESSAGE(DependencyGraphFailure, (), "", "Dependency graph submission failed.") DECLARE_MESSAGE(DependencyGraphSuccess, (), "", "Dependency graph submission successful.") +DECLARE_MESSAGE(DependencyInFeature, (msg::feature), "", "the dependency is in the feature named {feature}") +DECLARE_MESSAGE(DependencyNotInVersionDatabase, + (msg::package_name), + "", + "the dependency {package_name} does not exist in the version database; does that port exist?") DECLARE_MESSAGE(DeprecatedPrefabDebugOption, (), "", "--prefab-debug is now deprecated.") DECLARE_MESSAGE(DetectCompilerHash, (msg::triplet), "", "Detecting compiler hash for triplet {triplet}...") +DECLARE_MESSAGE(DirectoriesRelativeToThePackageDirectoryHere, + (), + "", + "the directories are relative to ${{CURRENT_PACKAGES_DIR}} here") +DECLARE_MESSAGE(DllsRelativeToThePackageDirectoryHere, + (), + "", + "the DLLs are relative to ${{CURRENT_PACKAGES_DIR}} here") DECLARE_MESSAGE(DocumentedFieldsSuggestUpdate, (), "", @@ -1042,10 +1036,7 @@ DECLARE_MESSAGE(DownloadFailedStatusCode, DECLARE_MESSAGE(DownloadingPortableToolVersionX, (msg::tool_name, msg::version), "", - "A suitable version of {tool_name} was not found (required v{version}) Downloading " - "portable {tool_name} {version}...") -DECLARE_MESSAGE(DownloadingTool, (msg::tool_name, msg::url, msg::path), "", "Downloading {tool_name}...\n{url}->{path}") -DECLARE_MESSAGE(DownloadingUrl, (msg::url), "", "Downloading {url}") + "A suitable version of {tool_name} was not found (required v{version}).") DECLARE_MESSAGE(DownloadWinHttpError, (msg::system_api, msg::exit_code, msg::url), "", @@ -1063,7 +1054,6 @@ DECLARE_MESSAGE(DuplicatePackagePatternIgnoredLocations, (), "", "The following DECLARE_MESSAGE(DuplicatePackagePatternLocation, (msg::path), "", "location: {path}") DECLARE_MESSAGE(DuplicatePackagePatternRegistry, (msg::url), "", "registry: {url}") DECLARE_MESSAGE(ElapsedForPackage, (msg::spec, msg::elapsed), "", "Elapsed time to handle {spec}: {elapsed}") -DECLARE_MESSAGE(ElapsedInstallTime, (msg::count), "", "Total elapsed time: {count}") DECLARE_MESSAGE(ElapsedTimeForChecks, (msg::elapsed), "", "Time to determine pass/fail: {elapsed}") DECLARE_MESSAGE(EmailVcpkgTeam, (msg::url), "", "Send an email to {url} with any feedback.") DECLARE_MESSAGE(EmbeddingVcpkgConfigInManifest, @@ -1124,7 +1114,6 @@ DECLARE_MESSAGE(ErrorInvalidExtractOption, (msg::option, msg::value), "The keyword 'AUTO' should not be localized", "--{option} must be set to a nonnegative integer or 'AUTO'.") -DECLARE_MESSAGE(ErrorsFound, (), "", "Found the following errors:") DECLARE_MESSAGE(ErrorUnableToDetectCompilerInfo, (), "failure output will be displayed at the top of this", @@ -1150,6 +1139,10 @@ DECLARE_MESSAGE(ExamplesHeader, (), "Printed before a list of example command li DECLARE_MESSAGE(ExceededRecursionDepth, (), "", "Recursion depth exceeded.") DECLARE_MESSAGE(ExcludedPackage, (msg::spec), "", "Excluded {spec}") DECLARE_MESSAGE(ExcludedPackages, (), "", "The following packages are excluded:") +DECLARE_MESSAGE(ExecutablesRelativeToThePackageDirectoryHere, + (), + "", + "the executables are relative to ${{CURRENT_PACKAGES_DIR}} here") DECLARE_MESSAGE(ExpectedAnObject, (), "", "expected an object") DECLARE_MESSAGE(ExpectedAtMostOneSetOfTags, (msg::count, msg::old_value, msg::new_value, msg::value), @@ -1187,19 +1180,14 @@ DECLARE_MESSAGE(ExportingAlreadyBuiltPackages, (), "", "The following packages a DECLARE_MESSAGE(ExportingMaintenanceTool, (), "", "Exporting maintenance tool...") DECLARE_MESSAGE(ExportingPackage, (msg::package_name), "", "Exporting {package_name}...") DECLARE_MESSAGE(ExportPrefabRequiresAndroidTriplet, (), "", "export prefab requires an Android triplet.") -DECLARE_MESSAGE(ExportUnsupportedInManifest, - (), - "", - "vcpkg export does not support manifest mode, in order to allow for future design considerations. " - "You may use export in classic mode by running vcpkg outside of a manifest-based project.") DECLARE_MESSAGE(ExtendedDocumentationAtUrl, (msg::url), "", "Extended documentation available at '{url}'.") DECLARE_MESSAGE(ExtractHelp, (), "", "Extracts an archive.") DECLARE_MESSAGE(ExtractingTool, (msg::tool_name), "", "Extracting {tool_name}...") DECLARE_MESSAGE(FailedPostBuildChecks, - (msg::count, msg::path), + (msg::count), "", - "Found {count} post-build check problem(s). To submit these ports to curated catalogs, please " - "first correct the portfile: {path}") + "Found {count} post-build check problem(s). These are usually caused by bugs in portfile.cmake or the " + "upstream build system. Please correct these before submitting this port to the curated registry.") DECLARE_MESSAGE(FailedToAcquireMutant, (msg::path), "'mutant' is the Windows kernel object returned by CreateMutexW", @@ -1218,12 +1206,19 @@ DECLARE_MESSAGE(FailedToDeleteInsideDueToFile, "{value} is the parent path of {path} we tried to delete; the underlying Windows error message is " "printed after this", "failed to remove_all_inside({value}) due to {path}: ") -DECLARE_MESSAGE(FailedToDetermineArchitecture, - (msg::path, msg::command_line), - "", - "unable to determine the architecture of {path}.\n{command_line}") DECLARE_MESSAGE(FailedToDetermineCurrentCommit, (), "", "Failed to determine the current commit:") -DECLARE_MESSAGE(FailedToDownloadFromMirrorSet, (), "", "Failed to download from mirror set") +DECLARE_MESSAGE(MissingAssetBlockOrigin, + (msg::path), + "x-block-origin is a vcpkg term. Do not translate", + "Missing {path} and downloads are blocked by x-block-origin.") +DECLARE_MESSAGE(MissingShaVariable, + (), + "{{sha}} should not be translated", + "The {{sha}} variable must be used in the template if other variables are used.") +DECLARE_MESSAGE(AssetCacheMissBlockOrigin, + (msg::path), + "x-block-origin is a vcpkg term. Do not translate", + "Asset cache miss for {path} and downloads are blocked by x-block-origin.") DECLARE_MESSAGE(FailedToExtract, (msg::path), "", "Failed to extract \"{path}\":") DECLARE_MESSAGE(FailedToFetchRepo, (msg::url), "", "Failed to fetch {url}.") DECLARE_MESSAGE(FailedToFindPortFeature, @@ -1243,7 +1238,6 @@ DECLARE_MESSAGE( DECLARE_MESSAGE(FailedToLoadManifest, (msg::path), "", "Failed to load manifest from directory {path}") DECLARE_MESSAGE(FailedToLocateSpec, (msg::spec), "", "Failed to locate spec in graph: {spec}") DECLARE_MESSAGE(FailedToObtainDependencyVersion, (), "", "Cannot find desired dependency version.") -DECLARE_MESSAGE(FailedToObtainLocalPortGitSha, (), "", "Failed to obtain git SHAs for local ports.") DECLARE_MESSAGE(FailedToObtainPackageVersion, (), "", "Cannot find desired package version.") DECLARE_MESSAGE(FailedToOpenAlgorithm, (msg::value), @@ -1255,8 +1249,7 @@ DECLARE_MESSAGE(FailedToParseCMakeConsoleOut, "Failed to parse CMake console output to locate block start/end markers.") DECLARE_MESSAGE(FailedToParseBaseline, (msg::path), "", "Failed to parse baseline: {path}") DECLARE_MESSAGE(FailedToParseConfig, (msg::path), "", "Failed to parse configuration: {path}") -DECLARE_MESSAGE(FailedToParseControl, (msg::path), "", "Failed to parse CONTROL file: {path}") -DECLARE_MESSAGE(FailedToParseManifest, (msg::path), "", "Failed to parse manifest file: {path}") +DECLARE_MESSAGE(FailedToParseVersionFile, (msg::path), "", "Failed to parse version file: {path}") DECLARE_MESSAGE(FailedToParseNoTopLevelObj, (msg::path), "", "Failed to parse {path}, expected a top-level object.") DECLARE_MESSAGE(FailedToParseNoVersionsArray, (msg::path), "", "Failed to parse {path}, expected a 'versions' array.") DECLARE_MESSAGE(FailedToParseSerializedBinParagraph, @@ -1265,40 +1258,40 @@ DECLARE_MESSAGE(FailedToParseSerializedBinParagraph, "[sanity check] Failed to parse a serialized binary paragraph.\nPlease open an issue at " "https://github.com/microsoft/vcpkg, " "with the following output:\n{error_msg}\nSerialized Binary Paragraph:") -DECLARE_MESSAGE(FailedToParseVersionsFile, (msg::path), "", "failed to parse versions file {path}") DECLARE_MESSAGE(FailedToParseVersionXML, (msg::tool_name, msg::version), "", "Could not parse version for tool {tool_name}. Version string was: {version}") -DECLARE_MESSAGE(FailedToProvisionCe, (), "", "Failed to provision vcpkg-artifacts.") -DECLARE_MESSAGE(FailedToReadParagraph, (msg::path), "", "Failed to read paragraphs from {path}") -DECLARE_MESSAGE(FailedToRemoveControl, (msg::path), "", "Failed to remove control file {path}") DECLARE_MESSAGE(FailedToRunToolToDetermineVersion, (msg::tool_name, msg::path), "Additional information, such as the command line output, if any, will be appended on " "the line after this message", "Failed to run \"{path}\" to determine the {tool_name} version.") -DECLARE_MESSAGE(FailedToStoreBackToMirror, (), "", "failed to store back to mirror:") +DECLARE_MESSAGE(FailedToStoreBackToMirror, (msg::path, msg::url), "", "Failed to store {path} to {url}.") DECLARE_MESSAGE(FailedToStoreBinaryCache, (msg::path), "", "Failed to store binary cache {path}") DECLARE_MESSAGE(FailedToTakeFileSystemLock, (), "", "Failed to take the filesystem lock") -DECLARE_MESSAGE(FailedToWriteManifest, (msg::path), "", "Failed to write manifest file {path}") DECLARE_MESSAGE(FailedVendorAuthentication, (msg::vendor, msg::url), "", "One or more {vendor} credential providers failed to authenticate. See '{url}' for more details " "on how to provide credentials.") DECLARE_MESSAGE(FileIsNotExecutable, (), "", "this file does not appear to be executable") +DECLARE_MESSAGE(FilesRelativeToTheBuildDirectoryHere, (), "", "the files are relative to the build directory here") +DECLARE_MESSAGE(FilesRelativeToThePackageDirectoryHere, + (), + "", + "the files are relative to ${{CURRENT_PACKAGES_DIR}} here") DECLARE_MESSAGE(FilesContainAbsolutePath1, (), "This message is printed before a list of found absolute paths, followed by FilesContainAbsolutePath2, " "followed by a list of found files.", - "There should be no absolute paths, such as the following, in an installed package:") -DECLARE_MESSAGE(FilesContainAbsolutePath2, (), "", "Absolute paths were found in the following files:") -DECLARE_MESSAGE(FindHelp, + "There should be no absolute paths, such as the following, in an installed package. To suppress this " + "message, add set(VCPKG_POLICY_SKIP_ABSOLUTE_PATHS_CHECK enabled)") +DECLARE_MESSAGE(FilesContainAbsolutePath2, (), "", "absolute paths found here") +DECLARE_MESSAGE(FilesContainAbsolutePathPkgconfigNote, (), - "'artifact' and 'port' are what the user must literally type.", - "Searches for the indicated artifact or port. With no parameter after 'artifact' or 'port', " - "displays everything.") + "", + "Adding a call to `vcpkg_fixup_pkgconfig()` may fix absolute paths in .pc files") DECLARE_MESSAGE(FindVersionArtifactsOnly, (), "'--version', 'vcpkg search', and 'vcpkg find port' are command lines that must not be localized", @@ -1323,7 +1316,10 @@ DECLARE_MESSAGE(FileSeekFailed, "", "Failed to seek to position {byte_offset} in {path}.") DECLARE_MESSAGE(FilesExported, (msg::path), "", "Files exported at: {path}") -DECLARE_MESSAGE(FileSystemOperationFailed, (), "", "Filesystem operation failed:") +DECLARE_MESSAGE(FindCommandFirstArg, + (), + "'find', 'artifact', and 'port' are vcpkg specific terms and should not be translated.", + "The first argument to 'find' must be 'artifact' or 'port' .") DECLARE_MESSAGE(FishCompletion, (msg::path), "", "vcpkg fish completion is already added at \"{path}\".") DECLARE_MESSAGE(FloatingPointConstTooBig, (msg::count), "", "Floating point constant too big: {count}") DECLARE_MESSAGE(FollowingPackagesMissingControl, @@ -1354,6 +1350,10 @@ DECLARE_MESSAGE(GHAParametersMissing, "The GHA binary source requires the ACTIONS_RUNTIME_TOKEN and ACTIONS_CACHE_URL environment variables " "to be set. See {url} for details.") DECLARE_MESSAGE(GitCommandFailed, (msg::command_line), "", "failed to execute: {command_line}") +DECLARE_MESSAGE(GitCommitUpdateVersionDatabase, + (), + "This is a command line; only the 'update version database' part should be localized", + "git commit -m \"Update version database\"") DECLARE_MESSAGE(GitFailedToFetch, (msg::value, msg::url), "{value} is a git ref like 'origin/main'", @@ -1387,7 +1387,7 @@ DECLARE_MESSAGE(HashFileFailureToRead, DECLARE_MESSAGE(HashPortManyFiles, (msg::package_name, msg::count), "", - "The {package_name} contains {count} files. Hashing these contents may take a long time when " + "{package_name} contains {count} files. Hashing these contents may take a long time when " "determining the ABI hash for binary caching. Consider reducing the number of files. Common causes of " "this are accidentally checking out source or build files into a port's directory.") DECLARE_MESSAGE(HeaderOnlyUsage, @@ -1563,10 +1563,7 @@ DECLARE_MESSAGE(HelpEditCommand, DECLARE_MESSAGE(HelpEnvCommand, (), "", "Creates a clean shell environment for development or compiling") DECLARE_MESSAGE(HelpExampleCommand, (), "", "For more help (including examples) see https://learn.microsoft.com/vcpkg") DECLARE_MESSAGE(HelpExampleManifest, (), "", "Example manifest:") -DECLARE_MESSAGE(HelpExportCommand, (), "", "Exports a package.") -DECLARE_MESSAGE(HelpHashCommand, (), "", "Hash a file by specific algorithm, default SHA512.") DECLARE_MESSAGE(HelpInstallCommand, (), "", "Installs a package") -DECLARE_MESSAGE(HelpListCommand, (), "", "Lists installed packages") DECLARE_MESSAGE(HelpManifestConstraints, (), "", @@ -1688,11 +1685,9 @@ DECLARE_MESSAGE( "value {path}. To suppress this message, unset the environment variable or use the --vcpkg-root command line " "switch.") DECLARE_MESSAGE(IllegalFeatures, (), "", "List of features is not allowed in this context") -DECLARE_MESSAGE(IllegalTriplet, (), "", "Triplet is not allowed in this context") DECLARE_MESSAGE(IllegalPlatformSpec, (), "", "Platform qualifier is not allowed in this context") DECLARE_MESSAGE(ImproperShaLength, (msg::value), "{value} is a sha.", "SHA512's must be 128 hex characters: {value}") DECLARE_MESSAGE(IncorrectArchiveFileSignature, (), "", "Incorrect archive file signature") -DECLARE_MESSAGE(IncorrectPESignature, (), "", "Incorrect PE signature") DECLARE_MESSAGE(InfoSetEnvVar, (msg::env_var), "In this context 'editor' means IDE", @@ -1901,7 +1896,6 @@ DECLARE_MESSAGE( "Invalid {system_name} linkage type: [{value}]") DECLARE_MESSAGE(InvalidLogicExpressionUnexpectedCharacter, (), "", "invalid logic expression, unexpected character") DECLARE_MESSAGE(InvalidLogicExpressionUsePipe, (), "", "invalid logic expression, use '|' rather than 'or'") -DECLARE_MESSAGE(InvalidNoVersions, (), "", "File contains no versions.") DECLARE_MESSAGE(InvalidOptionForRemove, (), "'remove' is a command that should not be changed.", @@ -1919,6 +1913,11 @@ DECLARE_MESSAGE(InvalidValueHashAdditionalFiles, "", "Variable VCPKG_HASH_ADDITIONAL_FILES contains invalid file path: '{path}'. The value must be " "an absolute path to an existent file.") +DECLARE_MESSAGE(InvalidValuePostPortfileIncludes, + (msg::path), + "", + "Variable VCPKG_POST_PORTFILE_INCLUDES contains invalid file path: '{path}'. The value must be " + "an absolute path to an existent cmake file.") DECLARE_MESSAGE(IrregularFile, (msg::path), "", "path was not a regular file: {path}") DECLARE_MESSAGE(JsonErrorMustBeAnObject, (msg::path), "", "Expected \"{path}\" to be an object.") DECLARE_MESSAGE(JsonFieldNotObject, (msg::json_field), "", "value of [\"{json_field}\"] must be an object") @@ -2019,14 +2018,8 @@ DECLARE_MESSAGE(LoadingDependencyInformation, (msg::count), "", "Loading dependency information for {count} packages...") -DECLARE_MESSAGE(LocalPortfileVersion, - (), - "", - "Using local portfile versions. To update the local portfiles, use `git pull`.") -DECLARE_MESSAGE(ManifestConflict, - (msg::path), - "", - "Found both a manifest and CONTROL files in port \"{path}\"; please rename one or the other") +DECLARE_MESSAGE(LocalPortfileVersion, (), "", "Using local port versions. To update the local ports, use `git pull`.") +DECLARE_MESSAGE(ManifestConflict2, (), "", "Found both a manifest and CONTROL files; please rename one or the other") DECLARE_MESSAGE(ManifestFormatCompleted, (), "", "Succeeded in formatting the manifest files.") DECLARE_MESSAGE(MismatchedBinParagraphs, (), @@ -2089,10 +2082,6 @@ DECLARE_MESSAGE(MonoInstructions, "This may be caused by an incomplete mono installation. Full mono is " "available on some systems via `sudo apt install mono-complete`. Ubuntu 18.04 users may " "need a newer version of mono, available at https://www.mono-project.com/download/stable/") -DECLARE_MESSAGE(MsiexecFailedToExtract, - (msg::path, msg::exit_code), - "", - "msiexec failed while extracting \"{path}\" with launch or exit code {exit_code} and message:") DECLARE_MESSAGE(MultiArch, (msg::option), "", "Multi-Arch must be 'same' but was {option}") DECLARE_MESSAGE(MultipleFeatures, (msg::package_name, msg::feature), @@ -2118,13 +2107,11 @@ DECLARE_MESSAGE(NewSpecifyNameVersionOrApplication, "Either specify --name and --version to produce a manifest intended for C++ libraries, or specify " "--application to indicate that the manifest is not intended to be used as a port.") DECLARE_MESSAGE(NewVersionCannotBeEmpty, (), "", "--version cannot be empty.") -DECLARE_MESSAGE(NoArgumentsForOption, (msg::option), "", "The option --{option} does not accept an argument.") DECLARE_MESSAGE(NoError, (), "", "no error") DECLARE_MESSAGE(NoInstalledPackages, (), "The name 'search' is the name of a command that is not localized.", "No packages are installed. Did you mean `search`?") -DECLARE_MESSAGE(NoLocalizationForMessages, (), "", "No localized messages for the following: ") DECLARE_MESSAGE(NonExactlyArgs, (msg::command_name, msg::expected, msg::actual), "{expected} and {actual} are integers", @@ -2197,7 +2184,6 @@ DECLARE_MESSAGE(PackageFailedtWhileExtracting, DECLARE_MESSAGE(PackageInstallationHeader, (), "", "Package Installation") DECLARE_MESSAGE(PackageRootDir, (), "", "Packages directory (experimental)") DECLARE_MESSAGE(PackagesToInstall, (), "", "The following packages will be built and installed:") -DECLARE_MESSAGE(PackagesToInstallDirectly, (), "", "The following packages will be directly installed:") DECLARE_MESSAGE(PackagesToModify, (), "", "Additional packages (*) will be modified to complete this operation.") DECLARE_MESSAGE(PackagesToRebuild, (), "", "The following packages will be rebuilt:") DECLARE_MESSAGE(PackagesToRebuildSuggestRecurse, @@ -2281,165 +2267,234 @@ DECLARE_MESSAGE(PERvaNotFound, "{value:#X} is the Relative Virtual Address sought. Portable executable is a term-of-art, see " "https://learn.microsoft.com/windows/win32/debug/pe-format", "While parsing Portable Executable {path}, could not find RVA {value:#X}.") -DECLARE_MESSAGE(PerformingPostBuildValidation, (), "", "-- Performing post-build validation") -DECLARE_MESSAGE(PortBugAllowRestrictedHeaders, - (msg::env_var), - "", - "In exceptional circumstances, this policy can be disabled via {env_var}") +DECLARE_MESSAGE(PerformingPostBuildValidation, (), "", "Performing post-build validation") DECLARE_MESSAGE(PortBugBinDirExists, (msg::path), "", - "There should be no bin\\ directory in a static build, but {path} is present.") -DECLARE_MESSAGE(PortBugDebugBinDirExists, - (msg::path), - "", - "There should be no debug\\bin\\ directory in a static build, but {path} is present.") + "${{CURRENT_PACKAGES_DIR}}/{path} exists but should not in a static build. To suppress this message, " + "add set(VCPKG_POLICY_DLLS_IN_STATIC_LIBRARY enabled)") DECLARE_MESSAGE(PortBugDebugShareDir, (), "", - "/debug/share should not exist. Please reorganize any important files, then use\n" - "file(REMOVE_RECURSE \"${{CURRENT_PACKAGES_DIR}}/debug/share\")") -DECLARE_MESSAGE(PortBugDllAppContainerBitNotSet, - (), - "", - "The App Container bit must be set for Windows Store apps. The following DLLs do not have the App " - "Container bit set:") -DECLARE_MESSAGE(PortBugDllInLibDir, - (), - "", - "The following dlls were found in /lib or /debug/lib. Please move them to /bin or " - "/debug/bin, respectively.") + "${{CURRENT_PACKAGES_DIR}}/debug/share should not exist. Please reorganize any important files, then " + "delete any remaining by adding `file(REMOVE_RECURSE \"${{CURRENT_PACKAGES_DIR}}/debug/share\")`. To " + "suppress this message, add set(VCPKG_POLICY_ALLOW_DEBUG_SHARE enabled)") +DECLARE_MESSAGE( + PortBugDllAppContainerBitNotSet, + (), + "", + "The App Container bit must be set for all DLLs in Windows Store apps, and the triplet requests targeting the " + "Windows Store, but the following DLLs were not built with the bit set. This usually means that toolchain linker " + "flags are not being properly propagated, or the linker in use does not support the /APPCONTAINER switch. To " + "suppress this message, add set(VCPKG_POLICY_SKIP_APPCONTAINER_CHECK enabled)") +DECLARE_MESSAGE( + PortBugDllInLibDir, + (), + "", + "The following dlls were found in ${{CURRENT_PACKAGES_DIR}}/lib or ${{CURRENT_PACKAGES_DIR}}/debug/lib. Please " + "move them to ${{CURRENT_PACKAGES_DIR}}/bin or ${{CURRENT_PACKAGES_DIR}}/debug/bin, respectively.") DECLARE_MESSAGE(PortBugDuplicateIncludeFiles, (), "", - "Include files should not be duplicated into the /debug/include directory. If this cannot " - "be disabled in the project cmake, use\n" - "file(REMOVE_RECURSE \"${{CURRENT_PACKAGES_DIR}}/debug/include\")") -DECLARE_MESSAGE(PortBugFoundCopyrightFiles, (), "", "The following files are potential copyright files:") -DECLARE_MESSAGE(PortBugFoundDebugBinaries, (msg::count), "", "Found {count} debug binaries:") + "${{CURRENT_PACKAGES_DIR}}/debug/include should not exist. To suppress this message, add " + "set(VCPKG_POLICY_ALLOW_DEBUG_INCLUDE enabled)") +DECLARE_MESSAGE( + PortBugDuplicateIncludeFilesFixIt, + (), + "", + "If this directory was created by a build system that does not allow installing headers in debug to be " + "disabled, delete the duplicate directory with file(REMOVE_RECURSE \"${{CURRENT_PACKAGES_DIR}}/debug/include\")") +DECLARE_MESSAGE(PortBugFoundCopyrightFiles, (), "", "the following files are potential copyright files") +DECLARE_MESSAGE(PortBugFoundDebugBinaries, (), "", "The following are debug binaries:") DECLARE_MESSAGE(PortBugFoundDllInStaticBuild, (), "", - "DLLs should not be present in a static build, but the following DLLs were found:") + "DLLs should not be present in a static build, but the following DLLs were found. To suppress this " + "message, add set(VCPKG_POLICY_DLLS_IN_STATIC_LIBRARY enabled)") DECLARE_MESSAGE(PortBugFoundEmptyDirectories, - (msg::path), - "", - "There should be no empty directories in {path}. The following empty directories were found:") -DECLARE_MESSAGE(PortBugFoundExeInBinDir, (), "", - "The following EXEs were found in /bin or /debug/bin. EXEs are not valid distribution targets.") -DECLARE_MESSAGE(PortBugFoundReleaseBinaries, (msg::count), "", "Found {count} release binaries:") + "There should be no installed empty directories. Empty directories are not representable to several " + "binary cache providers, git repositories, and are not considered semantic build outputs. You should " + "either create a regular file inside each empty directory, or delete them with the following CMake. To " + "suppress this message, add set(VCPKG_POLICY_ALLOW_EMPTY_FOLDERS enabled)") +DECLARE_MESSAGE( + PortBugFoundExeInBinDir, + (), + "", + "The following executables were found in ${{CURRENT_PACKAGES_DIR}}/bin or ${{CURRENT_PACKAGES_DIR}}/debug/bin. " + "Executables are not valid distribution targets. If these executables are build tools, consider using " + "`vcpkg_copy_tools`. To suppress this message, add set(VCPKG_POLICY_ALLOW_EXES_IN_BIN enabled)") +DECLARE_MESSAGE(PortBugFoundReleaseBinaries, (), "", "The following are release binaries:") DECLARE_MESSAGE(PortBugIncludeDirInCMakeHelperPort, (), "", - "The folder /include exists in a cmake helper port; this is incorrect, since only cmake " - "files should be installed") -DECLARE_MESSAGE(PortBugInspectFiles, (msg::extension), "", "To inspect the {extension} files, use:") + "The folder ${{CURRENT_PACKAGES_DIR}}/include exists in a CMake helper port; this is incorrect, since " + "only CMake files should be installed. To suppress this message, remove " + "set(VCPKG_POLICY_CMAKE_HELPER_PORT enabled).") DECLARE_MESSAGE( - PortBugInvalidCrtLinkage, - (msg::expected), - "{expected} is one of LinkageDynamicDebug/LinkageDynamicRelease/LinkageStaticDebug/LinkageStaticRelease. " - "Immediately after this message is a file by file list with what linkages they contain. 'CRT' is an acronym " + PortBugInvalidCrtLinkageHeader, + (), + "This is combined with PortBugInvalidCrtLinkageCrtGroup and PortBugInvalidCrtLinkageEntry. 'CRT' is an acronym " "meaning C Runtime. See also: " - "https://learn.microsoft.com/cpp/build/reference/md-mt-ld-use-run-time-library?view=msvc-170. This is " - "complicated because a binary can link with more than one CRT.\n" + "https://learn.microsoft.com/cpp/build/reference/md-mt-ld-use-run-time-library?view=msvc-170. This is complicated " + "because a binary can link with more than one CRT.\n" "Example fully formatted message:\n" - "The following binaries should use the Dynamic Debug (/MDd) CRT.\n" - " C:\\some\\path\\to\\sane\\lib links with: Dynamic Release (/MD)\n" - " C:\\some\\path\\to\\lib links with:\n" - " Static Debug (/MTd)\n" - " Dynamic Release (/MD)\n" - " C:\\some\\different\\path\\to\\a\\dll links with:\n" - " Static Debug (/MTd)\n" - " Dynamic Debug (/MDd)\n", - "The following binaries should use the {expected} CRT.") + "D:\\vcpkg\\ports\\wrong-crt\\portfile.cmake: warning: binaries built by this port link with C RunTimes (\"CRTs\") " + "inconsistent with those requested by the triplet and deployment structure. If the triplet is intended to only use " + "the release CRT, you should add set(VCPKG_POLICY_ONLY_RELEASE_CRT enabled) to the triplet .cmake file. To " + "suppress this check entirely, add set(VCPKG_POLICY_SKIP_CRT_LINKAGE_CHECK enabled) to the triplet .cmake if this " + "is triplet-wide, or to portfile.cmake if this is specific to the port. You can inspect the binaries with: " + "dumpbin.exe /directives mylibfile.lib\n" + "D:\\vcpkg\\packages\\wrong-crt_x86-windows-static: note: the binaries are relative to ${{CURRENT_PACKAGES_DIR}} " + "here\n" + "note: The following binaries should link with only: Static Debug (/MTd)\n" + "note: debug/lib/both_lib.lib links with: Dynamic Debug (/MDd)\n" + "note: debug/lib/both_lib.lib links with: Dynamic Release (/MD)\n" + "note: debug/lib/test_lib.lib links with: Dynamic Debug (/MDd)\n" + "note: The following binaries should link with only: Static Release (/MT)\n" + "note: lib/both_lib.lib links with: Dynamic Debug (/MDd)\n" + "note: lib/both_lib.lib links with: Dynamic Debug (/MDd)\n" + "note: test_lib.lib links with: Dynamic Release (/MD)", + "binaries built by this port link with C RunTimes (\"CRTs\") inconsistent with those requested by the " + "triplet and deployment structure. If the triplet is intended to only use the release CRT, you should " + "add set(VCPKG_POLICY_ONLY_RELEASE_CRT enabled) to the triplet .cmake file. To suppress this check " + "entirely, add set(VCPKG_POLICY_SKIP_CRT_LINKAGE_CHECK enabled) to the triplet .cmake if this is " + "triplet-wide, or to portfile.cmake if this is specific to the port. You can inspect the binaries " + "with: dumpbin.exe /directives mylibfile.lib") +DECLARE_MESSAGE(PortBugInvalidCrtLinkageCrtGroup, + (msg::expected), + "See PortBugInvalidCrtLinkageHeader. {expected} is one of " + "LinkageDynamicDebug/LinkageDynamicRelease/LinkageStaticDebug/LinkageStaticRelease.", + "The following binaries should link with only: {expected}") DECLARE_MESSAGE(PortBugInvalidCrtLinkageEntry, - (msg::path), - "See explanation in PortBugInvalidCrtLinkage", - "{path} links with:") -DECLARE_MESSAGE(PortBugKernel32FromXbox, - (), - "", - "The selected triplet targets Xbox, but the following DLLs link with kernel32. These DLLs cannot be " - "loaded on Xbox, where kernel32 is not present. This is typically caused by linking with kernel32.lib " - "rather than a suitable umbrella library, such as onecore_apiset.lib or xgameplatform.lib.") + (msg::path, msg::actual), + "See explanation in PortBugInvalidCrtLinkageHeader. {actual} is one or more of " + "LinkageDynamicDebug/LinkageDynamicRelease/LinkageStaticDebug/LinkageStaticRelease , separated by " + "commas. (The vast vast vast majority of the time there will only be one and we're accepting that the " + "localized result may look a bit strange if there is more than one)", + "{path} links with: {actual}") DECLARE_MESSAGE( - PortBugMergeLibCMakeDir, - (msg::package_name), + PortBugKernel32FromXbox, + (), "", - "The /lib/cmake folder should be merged with /debug/lib/cmake and moved to /share/{package_name}/cmake. " - "Please use the helper function `vcpkg_cmake_config_fixup()` from the port vcpkg-cmake-config.`") -DECLARE_MESSAGE(PortBugMismatchedNumberOfBinaries, (), "", "Mismatching number of debug and release binaries.") + "The selected triplet targets Xbox, but the following DLLs link with kernel32. These DLLs cannot be loaded on " + "Xbox, where kernel32 is not present. This is typically caused by linking with kernel32.lib rather than a suitable " + "umbrella library, such as onecore_apiset.lib or xgameplatform.lib. You can inspect a DLL's dependencies with " + "`dumpbin.exe /dependents mylibfile.dll`. To suppress this message, add set(VCPKG_POLICY_ALLOW_KERNEL32_FROM_XBOX " + "enabled)") DECLARE_MESSAGE( - PortBugMisplacedCMakeFiles, - (msg::spec), + PortBugMergeLibCMakeDir, + (), "", - "The following cmake files were found outside /share/{spec}. Please place cmake files in /share/{spec}.") -DECLARE_MESSAGE(PortBugMisplacedFiles, (msg::path), "", "The following files are placed in {path}:") -DECLARE_MESSAGE(PortBugMisplacedFilesCont, (), "", "Files cannot be present in those directories.") -DECLARE_MESSAGE(PortBugMisplacedPkgConfigFiles, + "This port creates ${{CURRENT_PACKAGES_DIR}}/lib/cmake and/or ${{CURRENT_PACKAGES_DIR}}/debug/lib/cmake, which " + "should be merged and moved to ${{CURRENT_PACKAGES_DIR}}/share/${{PORT}}/cmake. Please use the helper " + "function vcpkg_cmake_config_fixup() from the port vcpkg-cmake-config. To suppress this message, add " + "set(VCPKG_POLICY_SKIP_LIB_CMAKE_MERGE_CHECK enabled)") +DECLARE_MESSAGE(PortBugMismatchingNumberOfBinaries, (), "", - "pkgconfig directories should be one of share/pkgconfig (for header only libraries only), " - "lib/pkgconfig, or lib/debug/pkgconfig. The following misplaced pkgconfig files were found:") -DECLARE_MESSAGE(PortBugMissingDebugBinaries, (), "", "Debug binaries were not found.") -DECLARE_MESSAGE(PortBugMissingFile, - (msg::path), + "mismatching number of debug and release binaries. This often indicates incorrect handling of debug or " + "release in portfile.cmake or the build system. If the intent is to only ever produce release " + "components for this triplet, the triplet should have set(VCPKG_BUILD_TYPE release) added to its " + ".cmake file. To suppress this message, add set(VCPKG_POLICY_MISMATCHED_NUMBER_OF_BINARIES enabled)") +DECLARE_MESSAGE(PortBugMisplacedCMakeFiles, + (), + "", + "This port installs the following CMake files in places CMake files are not expected. CMake files " + "should be installed in ${{CURRENT_PACKAGES_DIR}}/share/${{PORT}}. To suppress this message, add " + "set(VCPKG_POLICY_SKIP_MISPLACED_CMAKE_FILES_CHECK enabled)") +DECLARE_MESSAGE(PortBugMisplacedFiles, + (), "", - "The /{path} file does not exist. This file must exist for CMake helper ports.") + "The following regular files are installed to location(s) where regular files may not be installed. " + "These should be installed in a subdirectory. To suppress this message, add " + "set(VCPKG_POLICY_SKIP_MISPLACED_REGULAR_FILES_CHECK enabled)") DECLARE_MESSAGE( - PortBugMissingProvidedUsage, - (msg::package_name), + PortBugMisplacedPkgConfigFiles, + (), + "", + "The following misplaced pkgconfig directories were installed. Misplaced pkgconfig files will not be found " + "correctly by pkgconf or pkg-config. pkgconfig directories should be ${{CURRENT_PACKAGES_DIR}}/share/pkgconfig " + "(for architecture agnostic / header only libraries only), ${{CURRENT_PACKAGES_DIR}}/lib/pkgconfig (for release " + "dependencies), or ${{CURRENT_PACKAGES_DIR}}/debug/lib/pkgconfig (for debug dependencies). To suppress this " + "message, add set(VCPKG_POLICY_SKIP_PKGCONFIG_CHECK enabled)") +DECLARE_MESSAGE(PortBugMissingDebugBinaries, (), "", "Debug binaries were not found.") +DECLARE_MESSAGE( + PortBugMissingCMakeHelperPortFile, + (), "", - "The port provided \"usage\" but forgot to install to /share/{package_name}/usage, add the following line" - "in the portfile:") + "The ${{CURRENT_PACKAGES_DIR}}/share/${{PORT}}/vcpkg-port-config.cmake file does not exist. This file must exist " + "for CMake helper ports. To suppress this message, remove set(VCPKG_POLICY_CMAKE_HELPER_PORT enabled)") +DECLARE_MESSAGE(PortBugMissingProvidedUsage, + (), + "", + "this port contains a file named \"usage\" but didn't install it to " + "${{CURRENT_PACKAGES_DIR}}/share/${{PORT}}/usage . If this file is not intended to be usage text, " + "consider choosing another name; otherwise, install it. To suppress this message, add " + "set(VCPKG_POLICY_SKIP_USAGE_INSTALL_CHECK enabled)") DECLARE_MESSAGE(PortBugMissingImportedLibs, - (msg::path), + (), "", - "Import libraries were not present in {path}.\nIf this is intended, add the following line in the " - "portfile:\nset(VCPKG_POLICY_DLLS_WITHOUT_LIBS enabled)") + "Import libraries for installed DLLs appear to be missing. If this is intended, add " + "set(VCPKG_POLICY_DLLS_WITHOUT_LIBS enabled)") DECLARE_MESSAGE(PortBugMissingIncludeDir, (), "", - "The folder /include is empty or not present. This indicates the library was not correctly " - "installed.") -DECLARE_MESSAGE(PortBugMissingLicense, - (msg::package_name), - "", - "The software license must be available at ${{CURRENT_PACKAGES_DIR}}/share/{package_name}/copyright") + "The folder ${{CURRENT_PACKAGES_DIR}}/include is empty or not present. This usually means that headers " + "are not correctly installed. If this is a CMake helper port, add set(VCPKG_POLICY_CMAKE_HELPER_PORT " + "enabled). If this is not a CMake helper port but this is otherwise intentional, add " + "set(VCPKG_POLICY_EMPTY_INCLUDE_FOLDER enabled) to suppress this message.") +DECLARE_MESSAGE( + PortBugMissingLicense, + (), + "", + "the license is not installed to ${{CURRENT_PACKAGES_DIR}}/share/${{PORT}}/copyright . This can be fixed by adding " + "a call to vcpkg_install_copyright. To suppress this message, add set(VCPKG_POLICY_SKIP_COPYRIGHT_CHECK enabled)") +DECLARE_MESSAGE(PortBugMissingLicenseFixIt, + (msg ::value), + "{value} is a CMake function call for the user to paste into their file, for example: " + "vcpkg_install_copyright(FILE_LIST ${{SOURCE_PATH}}/COPYING ${{SOURCE_PATH}}/LICENSE.txt)", + "Consider adding: {value}") DECLARE_MESSAGE(PortBugMissingReleaseBinaries, (), "", "Release binaries were not found.") DECLARE_MESSAGE(PortBugMovePkgConfigFiles, (), "", "You can move the pkgconfig files with commands similar to:") -DECLARE_MESSAGE(PortBugOutdatedCRT, (), "", "Detected outdated dynamic CRT in the following files:") +DECLARE_MESSAGE( + PortBugOutdatedCRT, + (), + "", + "DLLs that link with obsolete C RunTime (\"CRT\") DLLs were installed. Installed DLLs should link with an " + "in-support CRT. You can inspect the dependencies of a DLL with `dumpbin.exe /dependents mylibfile.dll`. If you're " + "using a custom triplet targeting an old CRT, add set(VCPKG_POLICY_ALLOW_OBSOLETE_MSVCRT enabled) to the triplet's " + ".cmake file. To suppress this message for this port, add set(VCPKG_POLICY_ALLOW_OBSOLETE_MSVCRT enabled)") DECLARE_MESSAGE( PortBugRemoveBinDir, (), "", - "If the creation of bin\\ and/or debug\\bin\\ cannot be disabled, use this in the portfile to remove them") -DECLARE_MESSAGE(PortBugRemoveEmptyDirectories, - (), - "", - "If a directory should be populated but is not, this might indicate an error in the portfile.\n" - "If the directories are not needed and their creation cannot be disabled, use something like this in " - "the portfile to remove them:") + "if creation of these directories cannot be disabled, you can add the following in portfile.cmake to remove them") DECLARE_MESSAGE(PortBugRemoveEmptyDirs, (), "Only the 'empty directories left by the above renames' part should be translated", "file(REMOVE_RECURSE empty directories left by the above renames)") -DECLARE_MESSAGE(PortBugRestrictedHeaderPaths, +DECLARE_MESSAGE( + PortBugRestrictedHeaderPaths, + (), + "", + "Taking the following restricted headers can prevent the core C++ runtime and other packages from compiling " + "correctly. These should be renamed or stored in a subdirectory instead. In exceptional circumstances, this " + "warning can be suppressed by adding set(VCPKG_POLICY_ALLOW_RESTRICTED_HEADERS enabled)") +DECLARE_MESSAGE(PortBugRestrictedHeaderPathsNote, (), - "A list of restricted headers is printed after this message, one per line. ", - "The following restricted headers can prevent the core C++ runtime and other packages from " - "compiling correctly. In exceptional circumstances, this policy can be disabled by setting CMake " - "variable VCPKG_POLICY_ALLOW_RESTRICTED_HEADERS in portfile.cmake.") + "", + "the headers are relative to ${{CURRENT_PACKAGES_DIR}}/include here") DECLARE_MESSAGE(PortBugSetDllsWithoutExports, (), - "'exports' means an entry in a DLL's export table. After this message, one file path per line is " - "printed listing each DLL with an empty export table.", - "DLLs without any exports are likely a bug in the build script. If this is intended, add the " - "following line in the portfile:\n" - "set(VCPKG_POLICY_DLLS_WITHOUT_EXPORTS enabled)\n" - "The following DLLs have no exports:") + "", + "the following DLLs were built without any exports. DLLs without exports are likely bugs in the build " + "script. If this is intended, add set(VCPKG_POLICY_DLLS_WITHOUT_EXPORTS enabled)") +DECLARE_MESSAGE(PortDeclaredHere, + (msg::package_name), + "This is printed after NoteMessage to tell the user the path on disk of a related port", + "{package_name} is declared here") DECLARE_MESSAGE(PortDependencyConflict, (msg::package_name), "", @@ -2449,7 +2504,6 @@ DECLARE_MESSAGE(PortNotInBaseline, "", "the baseline does not contain an entry for port {package_name}") DECLARE_MESSAGE(PortsAdded, (msg::count), "", "The following {count} ports were added:") -DECLARE_MESSAGE(PortsDiffHelp, (), "", "The argument should be a branch/tag/hash to checkout.") DECLARE_MESSAGE(PortDoesNotExist, (msg::package_name), "", "{package_name} does not exist") DECLARE_MESSAGE(PortMissingManifest2, (msg::package_name), @@ -2534,10 +2588,6 @@ DECLARE_MESSAGE(ScriptAssetCacheRequiresScript, (), "", "expected arguments: asset config 'x-script' requires exactly the exec template as an argument") -DECLARE_MESSAGE(SearchHelp, - (), - "", - "The argument should be a substring to search for, or no argument to display all libraries.") DECLARE_MESSAGE(SecretBanner, (), "", "*** SECRET ***") DECLARE_MESSAGE(SeeURL, (msg::url), "", "See {url} for more information.") DECLARE_MESSAGE(SerializedBinParagraphHeader, (), "", "\nSerialized Binary Paragraph") @@ -2563,6 +2613,10 @@ DECLARE_MESSAGE(SkipClearingInvalidDir, (msg::path), "", "Skipping clearing contents of {path} because it was not a directory.") +DECLARE_MESSAGE(SkippingPostBuildValidationDueTo, + (msg::cmake_var), + "", + "Skipping post-build validation due to {cmake_var}") DECLARE_MESSAGE(SourceFieldPortNameMismatch, (msg::package_name, msg::path), "{package_name} and \"{path}\" are both names of installable ports/packages. 'Source', " @@ -2582,7 +2636,6 @@ DECLARE_MESSAGE(SpecifyTargetArch, "'vcpkg help triplet' is a command line that should not be localized", "Target triplet. See 'vcpkg help triplet' (default: {env_var})") DECLARE_MESSAGE(StartCodeUnitInContinue, (), "", "found start code unit in continue position") -DECLARE_MESSAGE(StoredBinaryCache, (msg::path), "", "Stored binary cache: \"{path}\"") DECLARE_MESSAGE(StoredBinariesToDestinations, (msg::count, msg::elapsed), "", @@ -2590,10 +2643,6 @@ DECLARE_MESSAGE(StoredBinariesToDestinations, DECLARE_MESSAGE(StoreOptionMissingSha, (), "", "--store option is invalid without a sha512") DECLARE_MESSAGE(SuccessfulyExported, (msg::package_name, msg::path), "", "Exported {package_name} to {path}") DECLARE_MESSAGE(SuggestGitPull, (), "", "The result may be outdated. Run `git pull` to get the latest results.") -DECLARE_MESSAGE(SuggestResolution, - (msg::command_name, msg::option), - "", - "To attempt to resolve all errors at once, run:\nvcpkg {command_name} --{option}") DECLARE_MESSAGE(SuggestStartingBashShell, (), "", @@ -2649,7 +2698,7 @@ DECLARE_MESSAGE(UnexpectedArgument, DECLARE_MESSAGE( UnexpectedAssetCacheProvider, (), - "", + "'x-azurl', 'x-script', 'clear' are valid source types. Do not translate", "unknown asset provider type: valid source types are 'x-azurl', 'x-script', 'x-block-origin', and 'clear'") DECLARE_MESSAGE(UnexpectedByteSize, (msg::expected, msg::actual), @@ -2657,7 +2706,6 @@ DECLARE_MESSAGE(UnexpectedByteSize, "Expected {expected} bytes to be written, but {actual} were written.") DECLARE_MESSAGE(UnexpectedCharExpectedCloseBrace, (), "", "Unexpected character; expected property or close brace") DECLARE_MESSAGE(UnexpectedCharExpectedColon, (), "", "Unexpected character; expected colon") -DECLARE_MESSAGE(UnexpectedCharExpectedComma, (), "", "Unexpected character; expected comma or close brace") DECLARE_MESSAGE(UnexpectedCharExpectedName, (), "", "Unexpected character; expected property name") DECLARE_MESSAGE(UnexpectedCharExpectedValue, (), "", "Unexpected character; expected value") DECLARE_MESSAGE(UnexpectedCharMidArray, (), "", "Unexpected character in middle of array") @@ -2676,9 +2724,7 @@ DECLARE_MESSAGE(UnexpectedEOFMidArray, (), "", "Unexpected EOF in middle of arra DECLARE_MESSAGE(UnexpectedEOFMidKeyword, (), "", "Unexpected EOF in middle of keyword") DECLARE_MESSAGE(UnexpectedEOFMidString, (), "", "Unexpected EOF in middle of string") DECLARE_MESSAGE(UnexpectedEOFMidUnicodeEscape, (), "", "Unexpected end of file in middle of unicode escape") -DECLARE_MESSAGE(UnexpectedErrorDuringBulkDownload, (), "", "an unexpected error occurred during bulk download.") DECLARE_MESSAGE(UnexpectedEscapeSequence, (), "", "Unexpected escape sequence continuation") -DECLARE_MESSAGE(UnexpectedExtension, (msg::extension), "", "Unexpected archive extension: '{extension}'.") DECLARE_MESSAGE(UnexpectedField, (msg::json_field), "", "unexpected field '{json_field}'") DECLARE_MESSAGE(UnexpectedFieldSuggest, (msg::json_field, msg::value), @@ -2727,18 +2773,16 @@ DECLARE_MESSAGE(UnknownBooleanSetting, "{value} is what {option} is set to", "unknown boolean setting for {option}: \"{value}\". Valid values are '', '1', '0', 'ON', 'OFF', " "'TRUE', and 'FALSE'.") -DECLARE_MESSAGE(UnknownOptions, (msg::command_name), "", "Unknown option(s) for command '{command_name}':") DECLARE_MESSAGE(UnknownParameterForIntegrate, (msg::value), "'{value}' is a user-supplied command line option. For example, given vcpkg integrate frobinate, " "{value} would be frobinate.", "Unknown parameter '{value}' for integrate.") DECLARE_MESSAGE(UnknownPolicySetting, - (msg::option, msg::value), - "'{value}' is the policy in question. These are unlocalized names that ports use to control post " - "build checks. Some examples are VCPKG_POLICY_DLLS_WITHOUT_EXPORTS, " - "VCPKG_POLICY_MISMATCHED_NUMBER_OF_BINARIES, or VCPKG_POLICY_ALLOW_OBSOLETE_MSVCRT", - "Unknown setting for policy '{value}': {option}") + (msg::value, msg::cmake_var), + "{value} is to what the user set the variable we don't understand. The names 'enabled' and 'disabled' " + "must not be localized.", + "Unknown setting of {cmake_var}: {value}. Valid policy values are '', 'disabled', and 'enabled'.") DECLARE_MESSAGE(UnknownSettingForBuildType, (msg::option), "", @@ -2780,10 +2824,6 @@ DECLARE_MESSAGE(UnsupportedPortDependency, (msg::value), "'{value}' is the name of a port dependency.", "- dependency {value} is not supported.") -DECLARE_MESSAGE(UnsupportedShortOptions, - (msg::value), - "'{value}' is the short option given", - "short options are not supported: '{value}'") DECLARE_MESSAGE(UnsupportedSyntaxInCDATA, (), "", "]]> is not supported in CDATA block") DECLARE_MESSAGE(UnsupportedSystemName, (msg::system_name), @@ -2838,19 +2878,12 @@ DECLARE_MESSAGE( (), "", "If you are sure you want to rebuild the above packages, run this command with the --no-dry-run option.") -DECLARE_MESSAGE(UploadedBinaries, (msg::count, msg::vendor), "", "Uploaded binaries to {count} {vendor}.") -DECLARE_MESSAGE(UploadedPackagesToVendor, - (msg::count, msg::elapsed, msg::vendor), - "", - "Uploaded {count} package(s) to {vendor} in {elapsed}") DECLARE_MESSAGE(UploadingBinariesToVendor, (msg::spec, msg::vendor, msg::path), "", "Uploading binaries for '{spec}' to '{vendor}' source \"{path}\".") -DECLARE_MESSAGE(UploadingBinariesUsingVendor, - (msg::spec, msg::vendor, msg::path), - "", - "Uploading binaries for '{spec}' using '{vendor}' \"{path}\".") +DECLARE_MESSAGE(UsageTextHere, (), "", "the usage file is here") +DECLARE_MESSAGE(UsageInstallInstructions, (), "", "you can install the usage file with the following CMake") DECLARE_MESSAGE(UseEnvVar, (msg::env_var), "An example of env_var is \"HTTP(S)_PROXY\"" @@ -2864,7 +2897,6 @@ DECLARE_MESSAGE(VcpkgCeIsExperimental, (), "The name of the feature is 'vcpkg-artifacts' and should be singular despite ending in s", "vcpkg-artifacts is experimental and may change at any time.") -DECLARE_MESSAGE(VcpkgCommitTableHeader, (), "", "VCPKG Commit") DECLARE_MESSAGE( VcpkgCompletion, (msg::value, msg::path), @@ -2906,15 +2938,16 @@ DECLARE_MESSAGE(VcvarsRunFailedExitCode, (msg::exit_code), "", "while trying to get a Visual Studio environment, vcvarsall.bat returned {exit_code}") +DECLARE_MESSAGE(VersionBaselineMatch, (msg::version_spec), "", "{version_spec} matches the current baseline") DECLARE_MESSAGE(VersionBaselineMismatch, (msg::expected, msg::actual, msg::package_name), - "{expected} and {actual} are versions", - "The latest version is {expected}, but the baseline file contains {actual}.\n" - "Run:\n" - "vcpkg x-add-version {package_name}\n" - "git add versions\n" - "git commit -m \"Update version database\"\n" - "to update the baseline version.") + "{actual} and {expected} are versions", + "{package_name} is assigned {actual}, but the local port is {expected}") +DECLARE_MESSAGE(VersionBuiltinPortTreeEntryMissing, + (msg::package_name, msg::expected, msg::actual), + "{expected} and {actual} are versions like 1.0.", + "no version database entry for {package_name} at {expected}; using the checked out ports tree " + "version ({actual}).") DECLARE_MESSAGE(VersionCommandHeader, (msg::version), "", @@ -2924,34 +2957,31 @@ DECLARE_MESSAGE( (msg::path, msg::expected_version, msg::actual_version), "", "Expected {path} version: [{expected_version}], but was [{actual_version}]. Please re-run bootstrap-vcpkg.") +DECLARE_MESSAGE(VersionConstraintNotInDatabase1, + (msg::package_name, msg::version), + "", + "the \"version>=\" constraint to {package_name} names version {version} which does not exist in the " + "version database. All versions must exist in the version database to be interpreted by vcpkg.") +DECLARE_MESSAGE(VersionConstraintNotInDatabase2, + (), + "", + "consider removing the version constraint or choosing a value declared here") +DECLARE_MESSAGE(VersionConstraintOk, (), "", "all version constraints are consistent with the version database") DECLARE_MESSAGE(VersionConstraintPortVersionMustBePositiveInteger, (), "", "port-version (after the '#') in \"version>=\" must be a non-negative integer") -DECLARE_MESSAGE(VersionConstraintUnresolvable, - (msg::package_name, msg::spec), - "", - "Cannot resolve a minimum constraint for dependency {package_name} from {spec}.\nThe dependency " - "was not found in the baseline, indicating that the package did not exist at that time. This may " - "be fixed by providing an explicit override version via the \"overrides\" field or by updating the " - "baseline.\nSee `vcpkg help versioning` for more information.") DECLARE_MESSAGE(VersionConstraintViolated, (msg::spec, msg::expected_version, msg::actual_version), "", "dependency {spec} was expected to be at least version " "{expected_version}, but is currently {actual_version}.") -DECLARE_MESSAGE(VersionDatabaseFileMissing, - (msg::package_name, msg::path), +DECLARE_MESSAGE(VersionDatabaseFileMissing, (), "", "this port is not in the version database") +DECLARE_MESSAGE(VersionDatabaseFileMissing2, (), "", "the version database file should be here") +DECLARE_MESSAGE(VersionDatabaseFileMissing3, + (msg::command_line), "", - "{package_name} is missing a version database file at {path}\n" - "Run:\n" - "vcpkg x-add-version {package_name}\n" - "to create the versions file.") -DECLARE_MESSAGE(VersionBuiltinPortTreeEntryMissing, - (msg::package_name, msg::expected, msg::actual), - "{expected} and {actual} are versions like 1.0.", - "no version database entry for {package_name} at {expected}; using the checked out ports tree " - "version ({actual}).") + "run '{command_line}' to create the version database file") DECLARE_MESSAGE(VersionDatabaseEntryMissing, (msg::package_name, msg::version), "", @@ -2977,9 +3007,9 @@ DECLARE_MESSAGE(VersionIncomparable3, "This can be resolved by adding an explicit override to the preferred version. For example:") DECLARE_MESSAGE(VersionIncomparable4, (msg::url), "", "See `vcpkg help versioning` or {url} for more information.") DECLARE_MESSAGE(VersionInDeclarationDoesNotMatch, - (msg::version), - "", - "The version declared in file does not match checked-out version: {version}") + (msg::git_tree_sha, msg::expected, msg::actual), + "{expected} and {actual} are version specs", + "{git_tree_sha} is declared to contain {expected}, but appears to contain {actual}") DECLARE_MESSAGE( VersionInvalidDate, (msg::version), @@ -3003,17 +3033,33 @@ DECLARE_MESSAGE(VersionMissingRequiredFeature, (msg::version_spec, msg::feature, msg::constraint_origin), "", "{version_spec} does not have required feature {feature} needed by {constraint_origin}") -DECLARE_MESSAGE(VersionNotFound, - (msg::expected, msg::actual), - "{expected} and {actual} are versions", - "{expected} not available, only {actual} is available") -DECLARE_MESSAGE(VersionNotFoundInVersionsFile, - (msg::version, msg::package_name), - "", - "Version {version} was not found in versions file for {package_name}.\n" - "Run:\n" - "vcpkg x-add-version {package_name}\n" - "to add the new port version.") +DECLARE_MESSAGE(VersionNotFoundInVersionsFile2, + (msg::version_spec), + "", + "{version_spec} was not found in versions database") +DECLARE_MESSAGE(VersionNotFoundInVersionsFile3, (), "", "the version should be in this file") +DECLARE_MESSAGE(VersionNotFoundInVersionsFile4, + (msg::command_line), + "", + "run '{command_line}' to add the new port version") +DECLARE_MESSAGE(VersionOverrideNotInVersionDatabase, + (msg::package_name), + "", + "the version override {package_name} does not exist in the version database; does that port exist?") +DECLARE_MESSAGE( + VersionOverrideVersionNotInVersionDatabase1, + (msg::package_name, msg::version), + "", + "the override of {package_name} names version {version} which does not exist in the " + "version database. Installing this port at the top level will fail as that version will be unresolvable.") +DECLARE_MESSAGE(VersionOverrideVersionNotInVersionDatabase2, + (), + "", + "consider removing the version override or choosing a value declared here") +DECLARE_MESSAGE(VersionOverwriteVersion, + (msg::version_spec), + "", + "you can overwrite {version_spec} with correct local values by running:") DECLARE_MESSAGE(VersionRejectedDueToBaselineMissing, (msg::path, msg::json_field), "", @@ -3026,34 +3072,46 @@ DECLARE_MESSAGE(VersionRejectedDueToFeatureFlagOff, "{path} was rejected because it uses \"{json_field}\" and the `versions` feature flag is disabled. " "This can be fixed by removing \"{json_field}\" or enabling the `versions` feature flag.\nSee " "`vcpkg help versioning` for more information.") -DECLARE_MESSAGE(VersionSchemeMismatch, - (msg::version, msg::expected, msg::actual, msg::path, msg::package_name), - "{expected} and {actual} are version schemes; it here refers to the {version}", - "The version database declares {version} as {expected}, but {path} declares it as {actual}. " - "Versions must be unique, even if they are declared with different schemes.\n" - "Run:\n" - "vcpkg x-add-version {package_name} --overwrite-version\n" - "to overwrite the scheme declared in the version database with that declared in the port.") -DECLARE_MESSAGE(VersionShaMismatch, +DECLARE_MESSAGE(VersionSchemeMismatch1, (msg::version, msg::expected, msg::actual, msg::package_name), - "{expected} and {actual} are git commit SHAs", - "{version} is declared with {expected}, but the local port has a different SHA {actual}.\n" - "Please update the port's version fields and then run:\n" - "vcpkg x-add-version {package_name}\n" - "git add versions\n" - "git commit -m \"Update version database\"\n" - "to add the new version.") -DECLARE_MESSAGE(VersionShaMissing, - (msg::package_name, msg::path), + "{expected} and {actual} are version schemes; it here refers to the {version}", + "{version} is declared {expected}, but {package_name} is declared with {actual}") +DECLARE_MESSAGE(VersionSchemeMismatch1Old, + (msg::version, msg::expected, msg::actual, msg::package_name, msg::git_tree_sha), + "{expected} and {actual} are version schemes; it here refers to the {version}", + "{version} is declared {expected}, but {package_name}@{git_tree_sha} is declared with {actual}") +DECLARE_MESSAGE(VersionSchemeMismatch2, + (), "", - "while validating {package_name}, missing Git SHA.\n" - "Run:\n" - "git add \"{path}\"\n" - "git commit -m \"wip\"\n" - "vcpkg x-add-version {package_name}\n" - "git add versions\n" - "git commit --amend -m \"[{package_name}] Add new port\"\n" - "to commit the new port and create its version file.") + "versions must be unique, even if they are declared with different schemes") +DECLARE_MESSAGE(VersionShaMismatch1, + (msg::version_spec, msg::git_tree_sha), + "'git tree' is ", + "{version_spec} git tree {git_tree_sha} does not match the port directory") +DECLARE_MESSAGE(VersionShaMismatch2, (msg::git_tree_sha), "", "the port directory has git tree {git_tree_sha}") +DECLARE_MESSAGE(VersionShaMismatch3, + (msg::version_spec), + "", + "if {version_spec} is already published, update this file with a new version or port-version, commit " + "it, then add the new version by running:") +DECLARE_MESSAGE(VersionShaMismatch4, + (msg::version_spec), + "", + "if {version_spec} is not yet published, overwrite the previous git tree by running:") +DECLARE_MESSAGE( + VersionShaMissing1, + (), + "", + "the git tree of the port directory could not be determined. This is usually caused by uncommitted changes.") +DECLARE_MESSAGE(VersionShaMissing2, + (), + "", + "you can commit your changes and add them to the version database by running:") +DECLARE_MESSAGE(VersionShaMissing3, + (), + "This is short for 'work in progress' and must be enclosed in \" quotes if it is more than 1 word", + "wip") +DECLARE_MESSAGE(VersionShaMissing4, (msg::package_name), "", "[{package_name}] Add new port") DECLARE_MESSAGE(VersionSharpMustBeFollowedByPortVersion, (), "", @@ -3067,7 +3125,6 @@ DECLARE_MESSAGE(VersionSpecMismatch, "", "Failed to load port because versions are inconsistent. The file \"{path}\" contains the version " "{actual_version}, but the version database indicates that it should be {expected_version}.") -DECLARE_MESSAGE(VersionTableHeader, (), "", "Version") DECLARE_MESSAGE(VersionVerifiedOK, (msg::version_spec, msg::git_tree_sha), "", @@ -3085,9 +3142,11 @@ DECLARE_MESSAGE(WhileCheckingOutPortTreeIsh, "", "while checking out port {package_name} with git tree {git_tree_sha}") DECLARE_MESSAGE(WhileGettingLocalTreeIshObjectsForPorts, (), "", "while getting local treeish objects for ports") -DECLARE_MESSAGE(WhileLoadingLocalPort, (msg::package_name), "", "while attempting to load local port {package_name}") -DECLARE_MESSAGE(WhileLoadingPortFromGitTree, (msg::commit_sha), "", "while trying to load port from: {commit_sha}") DECLARE_MESSAGE(WhileLookingForSpec, (msg::spec), "", "while looking for {spec}:") +DECLARE_MESSAGE(WhileLoadingBaselineVersionForPort, + (msg::package_name), + "", + "while loading baseline version for {package_name}") DECLARE_MESSAGE(WhileLoadingPortVersion, (msg::version_spec), "", "while loading {version_spec}") DECLARE_MESSAGE(WhileParsingVersionsForPort, (msg::package_name, msg::path), diff --git a/include/vcpkg/base/optional.h b/include/vcpkg/base/optional.h index 50a186866d..12c192957c 100644 --- a/include/vcpkg/base/optional.h +++ b/include/vcpkg/base/optional.h @@ -76,8 +76,8 @@ namespace vcpkg } } - OptionalStorage& operator=(const OptionalStorage& o) noexcept( - std::is_nothrow_copy_constructible_v&& std::is_nothrow_copy_assignable_v) + OptionalStorage& operator=(const OptionalStorage& o) noexcept(std::is_nothrow_copy_constructible_v && + std::is_nothrow_copy_assignable_v) { if (m_is_present && o.m_is_present) { diff --git a/include/vcpkg/base/path.h b/include/vcpkg/base/path.h index c2ee167e1a..51f007c578 100644 --- a/include/vcpkg/base/path.h +++ b/include/vcpkg/base/path.h @@ -37,6 +37,7 @@ namespace vcpkg void replace_filename(StringView sv); void remove_filename(); void make_preferred(); + void make_generic(); void clear(); Path lexically_normal() const; diff --git a/include/vcpkg/base/span.h b/include/vcpkg/base/span.h index 9e994da467..c0641d3b5a 100644 --- a/include/vcpkg/base/span.h +++ b/include/vcpkg/base/span.h @@ -2,7 +2,6 @@ #include -#include #include #include #include diff --git a/include/vcpkg/base/stringview.h b/include/vcpkg/base/stringview.h index b65ac62c4f..59650c4f5c 100644 --- a/include/vcpkg/base/stringview.h +++ b/include/vcpkg/base/stringview.h @@ -6,7 +6,6 @@ #include #include -#include #include #include #include @@ -106,6 +105,12 @@ namespace vcpkg }; } +template +struct fmt::range_format_kind + : std::integral_constant +{ +}; + template struct fmt::formatter : fmt::formatter, Char, void> { @@ -116,5 +121,18 @@ struct fmt::formatter : fmt::formatter +struct fmt::range_format_kind + : std::integral_constant +{ +}; + VCPKG_FORMAT_AS(vcpkg::ZStringView, vcpkg::StringView); + +template +struct fmt::range_format_kind + : std::integral_constant +{ +}; + VCPKG_FORMAT_AS(vcpkg::StringLiteral, vcpkg::StringView); diff --git a/include/vcpkg/base/system.process.h b/include/vcpkg/base/system.process.h index 5a7378a46e..568738de33 100644 --- a/include/vcpkg/base/system.process.h +++ b/include/vcpkg/base/system.process.h @@ -35,26 +35,8 @@ namespace vcpkg explicit Command(StringView s) { string_arg(s); } Command& string_arg(StringView s) &; - Command& raw_arg(StringView s) & - { - if (!buf.empty()) - { - buf.push_back(' '); - } - - buf.append(s.data(), s.size()); - return *this; - } - - Command& forwarded_args(View args) & - { - for (auto&& arg : args) - { - string_arg(arg); - } - - return *this; - } + Command& raw_arg(StringView s) &; + Command& forwarded_args(View args) &; Command&& string_arg(StringView s) && { return std::move(string_arg(s)); }; Command&& raw_arg(StringView s) && { return std::move(raw_arg(s)); } @@ -67,6 +49,13 @@ namespace vcpkg void clear() { buf.clear(); } bool empty() const { return buf.empty(); } + // maximum UNICODE_STRING, with enough space for one MAX_PATH prepended + static constexpr size_t maximum_allowed = 32768 - 260 - 1; + + // if `other` can be appended to this command without exceeding `maximum_allowed`, appends `other` and returns + // true; otherwise, returns false + bool try_append(const Command& other); + private: std::string buf; }; diff --git a/include/vcpkg/base/util.h b/include/vcpkg/base/util.h index e619df7ee8..968c6cd5cc 100644 --- a/include/vcpkg/base/util.h +++ b/include/vcpkg/base/util.h @@ -19,16 +19,16 @@ namespace vcpkg::Util namespace Vectors { template - void append(std::vector* augend, Container&& addend) + void append(std::vector& augend, Container&& addend) { if constexpr (std::is_lvalue_reference_v || std::is_const_v) { - augend->insert(augend->end(), addend.begin(), addend.end()); + augend.insert(augend.end(), addend.begin(), addend.end()); } else { - augend->insert( - augend->end(), std::make_move_iterator(addend.begin()), std::make_move_iterator(addend.end())); + augend.insert( + augend.end(), std::make_move_iterator(addend.begin()), std::make_move_iterator(addend.end())); } } template @@ -47,7 +47,11 @@ namespace vcpkg::Util template bool contains(const Vec& container, const Key& item) { - return std::find(container.begin(), container.end(), item) != container.end(); + using std::begin; + using std::end; + const auto first = begin(container); + const auto last = end(container); + return std::find(first, last, item) != last; } template std::vector concat(View r1, View r2) @@ -213,7 +217,9 @@ namespace vcpkg::Util template using FmapOut = std::decay_t>; - template + template || std::is_const_v, int> = 0> std::vector> fmap(Range&& xs, Func&& f) { std::vector> ret; @@ -227,6 +233,28 @@ namespace vcpkg::Util return ret; } + template + using FmapRefMovedOut = decltype(std::declval()(std::move(*std::declval().begin()))); + + template + using FmapMovedOut = std::decay_t>; + + template || std::is_const_v), int> = 0> + std::vector> fmap(Range&& xs, Func&& f) + { + std::vector> ret; + ret.reserve(xs.size()); + + for (auto&& x : xs) + { + ret.emplace_back(f(std::move(x))); + } + + return ret; + } + template> Optional common_projection(Range&& input, Proj&& proj) { @@ -343,7 +371,7 @@ namespace vcpkg::Util template void search(ForwardIt1 first, ForwardIt1 last, const char*) = delete; - // 0th is the first occurence + // 0th is the first occurrence // so find_nth({1, 2, 1, 3, 1, 4}, 1, 2) // returns the 1 before the 4 template @@ -367,7 +395,7 @@ namespace vcpkg::Util return find_nth(begin(r), end(r), v, n); } - // 0th is the last occurence + // 0th is the last occurrence // so find_nth({1, 2, 1, 3, 1, 4}, 1, 2) // returns the 1 before the 2 template @@ -446,6 +474,12 @@ namespace vcpkg::Util return std::any_of(rng.begin(), rng.end(), std::move(pred)); } + template + bool none_of(Range&& rng, Pred pred) + { + return std::none_of(rng.begin(), rng.end(), std::move(pred)); + } + template> Range&& sort_unique_erase(Range&& cont, Comp comp = Comp()) { diff --git a/include/vcpkg/binarycaching.h b/include/vcpkg/binarycaching.h index 59eb9dc8b2..5c70cf04d1 100644 --- a/include/vcpkg/binarycaching.h +++ b/include/vcpkg/binarycaching.h @@ -3,6 +3,7 @@ #include #include +#include #include #include #include @@ -203,7 +204,7 @@ namespace vcpkg BinaryCache(BinaryCache&&) = default; /// Called upon a successful build of `action` to store those contents in the binary cache. - void push_success(const InstallPlanAction& action); + void push_success(CleanPackages clean_packages, const InstallPlanAction& action); private: BinaryCache(BinaryProviders&& providers, const Filesystem& fs); diff --git a/include/vcpkg/commands.build.h b/include/vcpkg/commands.build.h index ad6a2e6bc9..25a708f628 100644 --- a/include/vcpkg/commands.build.h +++ b/include/vcpkg/commands.build.h @@ -23,7 +23,6 @@ #include #include -#include #include #include #include @@ -41,17 +40,19 @@ namespace vcpkg extern const CommandMetadata CommandBuildMetadata; int command_build_ex(const VcpkgCmdArguments& args, - const FullPackageSpec& full_spec, + const VcpkgPaths& paths, Triplet host_triplet, + const BuildPackageOptions& build_options, + const FullPackageSpec& full_spec, const PathsPortFileProvider& provider, - const IBuildLogsRecorder& build_logs_recorder, - const VcpkgPaths& paths); + const IBuildLogsRecorder& build_logs_recorder); void command_build_and_exit_ex(const VcpkgCmdArguments& args, - const FullPackageSpec& full_spec, + const VcpkgPaths& paths, Triplet host_triplet, + const BuildPackageOptions& build_options, + const FullPackageSpec& full_spec, const PathsPortFileProvider& provider, - const IBuildLogsRecorder& build_logs_recorder, - const VcpkgPaths& paths); + const IBuildLogsRecorder& build_logs_recorder); void command_build_and_exit(const VcpkgCmdArguments& args, const VcpkgPaths& paths, @@ -64,47 +65,15 @@ namespace vcpkg struct BuildPackageOptions { BuildMissing build_missing; - UseHeadVersion use_head_version; AllowDownloads allow_downloads; OnlyDownloads only_downloads; CleanBuildtrees clean_buildtrees; CleanPackages clean_packages; CleanDownloads clean_downloads; DownloadTool download_tool; - PurgeDecompressFailure purge_decompress_failure; - Editable editable; BackcompatFeatures backcompat_features; PrintUsage print_usage; - }; - - static constexpr BuildPackageOptions default_build_package_options{ - BuildMissing::Yes, - UseHeadVersion::No, - AllowDownloads::Yes, - OnlyDownloads::No, - CleanBuildtrees::Yes, - CleanPackages::Yes, - CleanDownloads::No, - DownloadTool::Builtin, - PurgeDecompressFailure::Yes, - Editable::No, - BackcompatFeatures::Allow, - PrintUsage::Yes, - }; - - static constexpr BuildPackageOptions backcompat_prohibiting_package_options{ - BuildMissing::Yes, - UseHeadVersion::No, - AllowDownloads::Yes, - OnlyDownloads::No, - CleanBuildtrees::Yes, - CleanPackages::Yes, - CleanDownloads::No, - DownloadTool::Builtin, - PurgeDecompressFailure::Yes, - Editable::No, - BackcompatFeatures::Prohibit, - PrintUsage::Yes, + KeepGoing keep_going; }; struct BuildResultCounts @@ -120,7 +89,7 @@ namespace vcpkg int removed = 0; void increment(const BuildResult build_result); - void println(const Triplet& triplet) const; + LocalizedString format(const Triplet& triplet) const; }; StringLiteral to_string_locale_invariant(const BuildResult build_result); @@ -163,6 +132,7 @@ namespace vcpkg std::vector passthrough_env_vars; std::vector passthrough_env_vars_tracked; std::vector hash_additional_files; + std::vector post_portfile_includes; Optional gamedk_latest_path; Path toolchain_file() const; @@ -201,13 +171,12 @@ namespace vcpkg ExtendedBuildResult build_package(const VcpkgCmdArguments& args, const VcpkgPaths& paths, + Triplet host_triplet, + const BuildPackageOptions& build_options, const InstallPlanAction& config, const IBuildLogsRecorder& build_logs_recorder, const StatusParagraphs& status_db); - // could be constexpr, but we want to generate this and that's not constexpr in C++14 - extern const std::array ALL_POLICIES; - StringLiteral to_string_view(BuildPolicy policy); std::string to_string(BuildPolicy policy); StringLiteral to_cmake_variable(BuildPolicy policy); diff --git a/include/vcpkg/commands.install.h b/include/vcpkg/commands.install.h index 28828ff084..22d7f8f394 100644 --- a/include/vcpkg/commands.install.h +++ b/include/vcpkg/commands.install.h @@ -41,7 +41,7 @@ namespace vcpkg { std::vector results; - void print() const; + LocalizedString format() const; void print_failed() const; std::string xunit_results() const; bool failed() const; @@ -97,9 +97,10 @@ namespace vcpkg void install_preclear_packages(const VcpkgPaths& paths, const ActionPlan& action_plan); InstallSummary install_execute_plan(const VcpkgCmdArguments& args, - const ActionPlan& action_plan, - const KeepGoing keep_going, const VcpkgPaths& paths, + Triplet host_triplet, + const BuildPackageOptions& build_options, + const ActionPlan& action_plan, StatusParagraphs& status_db, BinaryCache& binary_cache, const IBuildLogsRecorder& build_logs_recorder, diff --git a/include/vcpkg/commands.set-installed.h b/include/vcpkg/commands.set-installed.h index 8d17af3a90..cec186a9e8 100644 --- a/include/vcpkg/commands.set-installed.h +++ b/include/vcpkg/commands.set-installed.h @@ -35,14 +35,12 @@ namespace vcpkg void command_set_installed_and_exit_ex(const VcpkgCmdArguments& args, const VcpkgPaths& paths, + Triplet host_triplet, + const BuildPackageOptions& build_options, const CMakeVars::CMakeVarProvider& cmake_vars, ActionPlan action_plan, DryRun dry_run, - const Optional& pkgsconfig_path, - Triplet host_triplet, - const KeepGoing keep_going, - const bool only_downloads, - const PrintUsage print_cmake_usage, + const Optional& maybe_pkgconfig, bool include_manifest_in_github_issue); void command_set_installed_and_exit(const VcpkgCmdArguments& args, const VcpkgPaths& paths, diff --git a/include/vcpkg/dependencies.h b/include/vcpkg/dependencies.h index 9d084a2848..f3f80270a8 100644 --- a/include/vcpkg/dependencies.h +++ b/include/vcpkg/dependencies.h @@ -40,13 +40,17 @@ namespace vcpkg InstallPlanAction& operator=(const InstallPlanAction&) = delete; InstallPlanAction& operator=(InstallPlanAction&&) = default; - InstallPlanAction(InstalledPackageView&& spghs, const RequestType& request_type); + InstallPlanAction(InstalledPackageView&& spghs, + RequestType request_type, + UseHeadVersion use_head_version, + Editable editable); InstallPlanAction(const PackageSpec& spec, const SourceControlFileAndLocation& scfl, const Path& packages_dir, - const RequestType& request_type, - Triplet host_triplet, + RequestType request_type, + UseHeadVersion use_head_version, + Editable editable, std::map>&& dependencies, std::vector&& build_failure_messages, std::vector default_features); @@ -64,11 +68,11 @@ namespace vcpkg InstallPlanType plan_type; RequestType request_type; - BuildPackageOptions build_options; + UseHeadVersion use_head_version; + Editable editable; std::map> feature_dependencies; std::vector build_failure_messages; - Triplet host_triplet; // only valid with source_control_file_and_location Optional abi_info; @@ -122,12 +126,43 @@ namespace vcpkg struct CreateInstallPlanOptions { - CreateInstallPlanOptions(Triplet t, const Path& p, UnsupportedPortAction action = UnsupportedPortAction::Error) - : host_triplet(t), packages_dir(p), unsupported_port_action(action) + CreateInstallPlanOptions(GraphRandomizer* randomizer, + Triplet host_triplet, + const Path& packages_dir, + UnsupportedPortAction action, + UseHeadVersion use_head_version_if_user_requested, + Editable editable_if_user_requested) + : randomizer(randomizer) + , host_triplet(host_triplet) + , packages_dir(packages_dir) + , unsupported_port_action(action) + , use_head_version_if_user_requested(use_head_version_if_user_requested) + , editable_if_user_requested(editable_if_user_requested) + { + } + + GraphRandomizer* randomizer; + Triplet host_triplet; + Path packages_dir; + UnsupportedPortAction unsupported_port_action; + UseHeadVersion use_head_version_if_user_requested; + Editable editable_if_user_requested; + }; + + struct CreateUpgradePlanOptions + { + CreateUpgradePlanOptions(GraphRandomizer* randomizer, + Triplet host_triplet, + const Path& packages_dir, + UnsupportedPortAction action) + : randomizer(randomizer) + , host_triplet(host_triplet) + , packages_dir(packages_dir) + , unsupported_port_action(action) { } - GraphRandomizer* randomizer = nullptr; + GraphRandomizer* randomizer; Triplet host_triplet; Path packages_dir; UnsupportedPortAction unsupported_port_action; @@ -161,7 +196,7 @@ namespace vcpkg const CMakeVars::CMakeVarProvider& var_provider, const std::vector& specs, const StatusParagraphs& status_db, - const CreateInstallPlanOptions& options); + const CreateUpgradePlanOptions& options); ExpectedL create_versioned_install_plan(const IVersionedPortfileProvider& vprovider, const IBaselineProvider& bprovider, @@ -180,5 +215,5 @@ namespace vcpkg FormattedPlan format_plan(const ActionPlan& action_plan, const Path& builtin_ports_dir); - void print_plan(const ActionPlan& action_plan, const bool is_recursive, const Path& builtin_ports_dir); + FormattedPlan print_plan(const ActionPlan& action_plan, const Path& builtin_ports_dir); } diff --git a/include/vcpkg/documentation.h b/include/vcpkg/documentation.h index 42f6eb0653..3b174f9768 100644 --- a/include/vcpkg/documentation.h +++ b/include/vcpkg/documentation.h @@ -6,13 +6,45 @@ namespace vcpkg { namespace docs { - inline constexpr StringLiteral registries_url = "https://learn.microsoft.com/vcpkg/users/registries"; - inline constexpr StringLiteral manifests_url = "https://learn.microsoft.com/vcpkg/users/manifests"; - inline constexpr StringLiteral package_name_url = "https://learn.microsoft.com/vcpkg/reference/vcpkg-json#name"; - inline constexpr StringLiteral assetcaching_url = "https://learn.microsoft.com/vcpkg/users/assetcaching"; - inline constexpr StringLiteral binarycaching_url = "https://learn.microsoft.com/vcpkg/users/binarycaching"; - inline constexpr StringLiteral versioning_url = "https://learn.microsoft.com/vcpkg/users/versioning"; - inline constexpr StringLiteral vcpkg_visual_studio_path_url = - "https://learn.microsoft.com/vcpkg/users/triplets#VCPKG_VISUAL_STUDIO_PATH"; + static constexpr StringLiteral registries_url = + "https://learn.microsoft.com/vcpkg/users/registries?WT.mc_id=vcpkg_inproduct_cli"; + static constexpr StringLiteral manifests_url = + "https://learn.microsoft.com/vcpkg/users/manifests?WT.mc_id=vcpkg_inproduct_cli"; + static constexpr StringLiteral vcpkg_json_ref_name = + "https://learn.microsoft.com/vcpkg/reference/vcpkg-json?WT.mc_id=vcpkg_inproduct_cli#name"; + static constexpr StringLiteral assetcaching_url = + "https://learn.microsoft.com/vcpkg/users/assetcaching?WT.mc_id=vcpkg_inproduct_cli"; + static constexpr StringLiteral binarycaching_url = + "https://learn.microsoft.com/vcpkg/users/binarycaching?WT.mc_id=vcpkg_inproduct_cli"; + static constexpr StringLiteral binarycaching_gha_url = + "https://learn.microsoft.com/vcpkg/users/binarycaching?WT.mc_id=vcpkg_inproduct_cli#gha"; + static constexpr StringLiteral versioning_url = + "https://learn.microsoft.com/vcpkg/users/versioning?WT.mc_id=vcpkg_inproduct_cli"; + static constexpr StringLiteral version_schemes = + "https://learn.microsoft.com/vcpkg/users/versioning?WT.mc_id=vcpkg_inproduct_cli#version-schemes"; + static constexpr StringLiteral triplets_url = + "https://learn.microsoft.com/vcpkg/users/triplets?WT.mc_id=vcpkg_inproduct_cli"; + static constexpr StringLiteral vcpkg_visual_studio_path_url = + "https://learn.microsoft.com/vcpkg/users/triplets?WT.mc_id=vcpkg_inproduct_cli#VCPKG_VISUAL_STUDIO_PATH"; + inline constexpr StringLiteral package_name_url = + "https://learn.microsoft.com/vcpkg/reference/vcpkg-json?WT.mc_id=vcpkg_inproduct_cli#name"; + static constexpr StringLiteral troubleshoot_build_failures_url = + "https://learn.microsoft.com/vcpkg/troubleshoot/build-failures?WT.mc_id=vcpkg_inproduct_cli"; + static constexpr StringLiteral add_command_url = + "https://learn.microsoft.com/vcpkg/commands/add?WT.mc_id=vcpkg_inproduct_cli"; + static constexpr StringLiteral add_command_recurse_opt_url = + "https://learn.microsoft.com/vcpkg/commands/remove?WT.mc_id=vcpkg_inproduct_cli#--recurse"; + static constexpr StringLiteral add_version_command_url = + "https://learn.microsoft.com/vcpkg/commands/add-version?WT.mc_id=vcpkg_inproduct_cli"; + static constexpr StringLiteral add_version_command_overwrite_version_opt_url = + "https://learn.microsoft.com/vcpkg/commands/add-version?WT.mc_id=vcpkg_inproduct_cli#--overwrite-version"; + static constexpr StringLiteral radd_version_command_all_opt_url = + "https://learn.microsoft.com/vcpkg/commands/add-version?WT.mc_id=vcpkg_inproduct_cli#--all"; + static constexpr StringLiteral format_manifest_command_url = + "https://learn.microsoft.com/vcpkg/commands/format-manifest?WT.mc_id=vcpkg_inproduct_cli"; + static constexpr StringLiteral troubleshoot_binary_cache_url = + "https://learn.microsoft.com/vcpkg/users/binarycaching-troubleshooting?WT.mc_id=vcpkg_inproduct_cli"; + static constexpr StringLiteral troubleshoot_versioning_url = + "https://learn.microsoft.com/vcpkg/users/versioning-troubleshooting?WT.mc_id=vcpkg_inproduct_cli"; } } diff --git a/include/vcpkg/fwd/build.h b/include/vcpkg/fwd/build.h index 8df71ae814..8bbc5274d1 100644 --- a/include/vcpkg/fwd/build.h +++ b/include/vcpkg/fwd/build.h @@ -63,12 +63,6 @@ namespace vcpkg Aria2, }; - enum class PurgeDecompressFailure - { - No = 0, - Yes - }; - enum class Editable { No = 0, @@ -93,6 +87,12 @@ namespace vcpkg Yes }; + enum class KeepGoing + { + No = 0, + Yes + }; + // These names are intended to match VCPKG_POLICY_Xxx constants settable in portfile.cmake enum class BuildPolicy { @@ -109,6 +109,21 @@ namespace vcpkg SKIP_ARCHITECTURE_CHECK, CMAKE_HELPER_PORT, SKIP_ABSOLUTE_PATHS_CHECK, + SKIP_ALL_POST_BUILD_CHECKS, + SKIP_APPCONTAINER_CHECK, + SKIP_CRT_LINKAGE_CHECK, + SKIP_MISPLACED_CMAKE_FILES_CHECK, + SKIP_LIB_CMAKE_MERGE_CHECK, + ALLOW_DLLS_IN_LIB, + SKIP_MISPLACED_REGULAR_FILES_CHECK, + SKIP_COPYRIGHT_CHECK, + ALLOW_KERNEL32_FROM_XBOX, + ALLOW_EXES_IN_BIN, + SKIP_USAGE_INSTALL_CHECK, + ALLOW_EMPTY_FOLDERS, + ALLOW_DEBUG_INCLUDE, + ALLOW_DEBUG_SHARE, + SKIP_PKGCONFIG_CHECK, // Must be last COUNT, }; diff --git a/include/vcpkg/fwd/commands.install.h b/include/vcpkg/fwd/commands.install.h index f8204f6b69..fb1ea3df57 100644 --- a/include/vcpkg/fwd/commands.install.h +++ b/include/vcpkg/fwd/commands.install.h @@ -2,12 +2,6 @@ namespace vcpkg { - enum class KeepGoing - { - NO = 0, - YES - }; - enum class InstallResult { FILE_CONFLICTS, diff --git a/include/vcpkg/fwd/sourceparagraph.h b/include/vcpkg/fwd/sourceparagraph.h index 7388ee570a..0b8083bd05 100644 --- a/include/vcpkg/fwd/sourceparagraph.h +++ b/include/vcpkg/fwd/sourceparagraph.h @@ -12,4 +12,4 @@ namespace vcpkg struct PortLocation; struct SourceControlFile; struct SourceControlFileAndLocation; -} \ No newline at end of file +} diff --git a/include/vcpkg/metrics.h b/include/vcpkg/metrics.h index f93eec83dd..c128099f20 100644 --- a/include/vcpkg/metrics.h +++ b/include/vcpkg/metrics.h @@ -37,7 +37,7 @@ namespace vcpkg VcpkgDefaultBinaryCache, VcpkgNugetRepository, VersioningErrorBaseline, - VersioningErrorVersion, + VersioningErrorVersion, // no longer used X_VcpkgRegistriesCache, X_WriteNugetPackagesConfig, COUNT // always keep COUNT last diff --git a/include/vcpkg/paragraphs.h b/include/vcpkg/paragraphs.h index e48b902c09..efd7b64e3f 100644 --- a/include/vcpkg/paragraphs.h +++ b/include/vcpkg/paragraphs.h @@ -26,16 +26,23 @@ namespace vcpkg::Paragraphs bool is_port_directory(const ReadOnlyFilesystem& fs, const Path& maybe_directory); + struct PortLoadResult + { + ExpectedL maybe_scfl; + std::string on_disk_contents; + }; + // If an error occurs, the Expected will be in the error state. - // Otherwise, if the port is known, result->source_control_file contains the loaded port information. - // Otherwise, result->source_control_file is nullptr. - ExpectedL try_load_port(const ReadOnlyFilesystem& fs, - StringView port_name, - const PortLocation& port_location); + // Otherwise, if the port is known, the maybe_scfl.get()->source_control_file contains the loaded port information. + // Otherwise, maybe_scfl.get()->source_control_file is nullptr. + PortLoadResult try_load_port(const ReadOnlyFilesystem& fs, StringView port_name, const PortLocation& port_location); // Identical to try_load_port, but the port unknown condition is mapped to an error. - ExpectedL try_load_port_required(const ReadOnlyFilesystem& fs, - StringView port_name, - const PortLocation& port_location); + PortLoadResult try_load_port_required(const ReadOnlyFilesystem& fs, + StringView port_name, + const PortLocation& port_location); + ExpectedL> try_load_project_manifest_text(StringView text, + StringView control_path, + MessageSink& warning_sink); ExpectedL> try_load_port_manifest_text(StringView text, StringView control_path, MessageSink& warning_sink); @@ -51,9 +58,9 @@ namespace vcpkg::Paragraphs std::vector> errors; }; - LoadResults try_load_all_registry_ports(const ReadOnlyFilesystem& fs, const RegistrySet& registries); + LoadResults try_load_all_registry_ports(const RegistrySet& registries); + std::vector load_all_registry_ports(const RegistrySet& registries); - std::vector load_all_registry_ports(const ReadOnlyFilesystem& fs, - const RegistrySet& registries); + LoadResults try_load_overlay_ports(const ReadOnlyFilesystem& fs, const Path& dir); std::vector load_overlay_ports(const ReadOnlyFilesystem& fs, const Path& dir); } diff --git a/include/vcpkg/portfileprovider.h b/include/vcpkg/portfileprovider.h index 1be1b46d58..d8ce691f2e 100644 --- a/include/vcpkg/portfileprovider.h +++ b/include/vcpkg/portfileprovider.h @@ -63,8 +63,7 @@ namespace vcpkg struct PathsPortFileProvider : PortFileProvider { - explicit PathsPortFileProvider(const ReadOnlyFilesystem& fs, - const RegistrySet& registry_set, + explicit PathsPortFileProvider(const RegistrySet& registry_set, std::unique_ptr&& overlay); ExpectedL get_control_file(const std::string& src_name) const override; std::vector load_all_control_files() const override; @@ -76,8 +75,7 @@ namespace vcpkg }; std::unique_ptr make_baseline_provider(const RegistrySet& registry_set); - std::unique_ptr make_versioned_portfile_provider(const ReadOnlyFilesystem& fs, - const RegistrySet& registry_set); + std::unique_ptr make_versioned_portfile_provider(const RegistrySet& registry_set); std::unique_ptr make_overlay_provider(const ReadOnlyFilesystem& fs, const Path& original_cwd, View overlay_ports); diff --git a/include/vcpkg/registries.h b/include/vcpkg/registries.h index 18ddc907a2..66d8886623 100644 --- a/include/vcpkg/registries.h +++ b/include/vcpkg/registries.h @@ -58,7 +58,7 @@ namespace vcpkg { virtual ExpectedL> get_port_versions() const = 0; - virtual ExpectedL get_version(const Version& version) const = 0; + virtual ExpectedL try_load_port(const Version& version) const = 0; virtual ~RegistryEntry() = default; }; @@ -166,17 +166,39 @@ namespace vcpkg std::string git_tree; }; - ExpectedL>> get_builtin_versions(const VcpkgPaths& paths, - StringView port_name); + struct GitVersionsLoadResult + { + // If the versions database file does not exist, a disengaged Optional + // Otherwise, if a file I/O error occurred or the file is malformed, that error + // Otherwise, the loaded version database records + ExpectedL>> entries; + Path versions_file_path; + }; - ExpectedL>> get_builtin_baseline(const VcpkgPaths& paths); + GitVersionsLoadResult load_git_versions_file(const ReadOnlyFilesystem& fs, + const Path& registry_versions, + StringView port_name); - bool is_git_commit_sha(StringView sv); + struct FullGitVersionsDatabase + { + explicit FullGitVersionsDatabase(const ReadOnlyFilesystem& fs, + const Path& registry_versions, + std::map>&& initial); + FullGitVersionsDatabase(FullGitVersionsDatabase&&); + FullGitVersionsDatabase& operator=(FullGitVersionsDatabase&&); - // Returns the effective match length of the package pattern `pattern` against `name`. - // No match is 0, exact match is SIZE_MAX, wildcard match is the length of the pattern. - // Note that the * is included in the match size to distinguish from 0 == no match. - size_t package_pattern_match(StringView name, StringView pattern); + const GitVersionsLoadResult& lookup(StringView port_name); + const std::map>& cache() const; + + private: + const ReadOnlyFilesystem* m_fs; + Path m_registry_versions; + std::map> m_cache; + }; + + // The outer expected only contains directory enumeration errors; individual parse errors are within + ExpectedL load_all_git_versions_files(const ReadOnlyFilesystem& fs, + const Path& registry_versions); struct FilesystemVersionDbEntry { @@ -184,6 +206,18 @@ namespace vcpkg Path p; }; + ExpectedL>> load_filesystem_versions_file( + const ReadOnlyFilesystem& fs, const Path& registry_versions, StringView port_name, const Path& registry_root); + + ExpectedL>> get_builtin_baseline(const VcpkgPaths& paths); + + bool is_git_commit_sha(StringView sv); + + // Returns the effective match length of the package pattern `pattern` against `name`. + // No match is 0, exact match is SIZE_MAX, wildcard match is the length of the pattern. + // Note that the * is included in the match size to distinguish from 0 == no match. + size_t package_pattern_match(StringView name, StringView pattern); + std::unique_ptr>> make_git_version_db_deserializer(); std::unique_ptr>> make_filesystem_version_db_deserializer( const Path& root); diff --git a/include/vcpkg/sourceparagraph.h b/include/vcpkg/sourceparagraph.h index 05dd520571..d5b200931a 100644 --- a/include/vcpkg/sourceparagraph.h +++ b/include/vcpkg/sourceparagraph.h @@ -210,6 +210,17 @@ namespace vcpkg VersionSpec to_version_spec() const { return source_control_file->to_version_spec(); } Path port_directory() const { return control_path.parent_path(); } + SourceControlFileAndLocation clone() const + { + std::unique_ptr scf; + if (source_control_file) + { + scf = std::make_unique(source_control_file->clone()); + } + + return SourceControlFileAndLocation{std::move(scf), control_path, spdx_location}; + } + std::unique_ptr source_control_file; Path control_path; diff --git a/locales/messages.cs.json b/locales/messages.cs.json index 22b1ea47b2..ef9fe1c5b8 100644 --- a/locales/messages.cs.json +++ b/locales/messages.cs.json @@ -46,7 +46,6 @@ "AVersionOfAnyType": "verze libovolného typu", "AddArtifactOnlyOne": "{command_line} může v jednu chvíli přidat jen jeden artefakt.", "AddCommandFirstArg": "První parametr, který se má přidat, musí být artefakt nebo port.", - "AddFirstArgument": "Prvním argumentem pro {command_line} musí být artifact nebo port.", "AddPortRequiresManifest": "'{command_line}' vyžaduje aktivní soubor manifestu.", "AddPortSucceeded": "Porty se úspěšně přidaly do souboru vcpkg.json.", "AddRecurseOption": "Pokud jste si jistí, že je chcete odebrat, spusťte příkaz s možností --recurse.", @@ -54,12 +53,11 @@ "AddVersionAddedVersionToFile": "přidal(a) verzi {version} do cesty {path}.", "AddVersionArtifactsOnly": "--version je jenom artefakty a nedá se použít s portem vcpkg add.", "AddVersionCommitChangesReminder": "Nezapomněli jste potvrdit změny?", - "AddVersionCommitResultReminder": "Nezapomeňte potvrdit výsledek!", "AddVersionDetectLocalChangesError": "z důvodu neočekávaného formátu ve stavu výstupu git se přeskakuje zjišťování místních změn", "AddVersionFileNotFound": "Nepovedlo se najít požadovaný soubor {path}.", "AddVersionFormatPortSuggestion": "Spuštěním {command_line} naformátujte soubor.", "AddVersionIgnoringOptionAll": "Parametr --{option} se ignoruje, protože se zadal argument názvu portu.", - "AddVersionLoadPortFailed": "nejde načíst port {package_name}.", + "AddVersionInstructions": "spuštěním následujících příkazů můžete automaticky přidat aktuální verzi {package_name}:", "AddVersionNewFile": "(nový soubor)", "AddVersionNewShaIs": "nové SHA: {commit_sha}", "AddVersionNoFilesUpdated": "Neaktualizovaly se žádné soubory.", @@ -70,8 +68,8 @@ "AddVersionPortFilesShaChanged": "soubory se změnami pro {package_name} se změnily, ale verze se neaktualizovala.", "AddVersionPortFilesShaUnchanged": "Soubory se změnami pro {package_name} se od verze {version} nezměnily.", "AddVersionPortHasImproperFormat": "{package_name} není správně naformátovaný.", - "AddVersionSuggestNewVersionScheme": "Na portu {package_name} použijte schéma verze {new_scheme} místo {old_scheme}.\nPokud chcete tuto kontrolu zakázat, použijte --{option}.", - "AddVersionUnableToParseVersionsFile": "Nepovedlo se parsovat soubor verzí {path}.", + "AddVersionSuggestVersionDate": "Formát verze {package_name} používá version-string, ale formát je přijatelný jako version-date. Pokud má být tento formát ve skutečnosti datem ISO 8601, změňte formát na version-date a spusťte tento příkaz znovu. Jinak tuto kontrolu zakažte opětovným spuštěním tohoto příkazu a přidáním příkazu --skip-version-format-check.", + "AddVersionSuggestVersionRelaxed": "Formát verze {package_name} používá version-string, ale formát je přijatelný jako version. Pokud je možné verze pro tento port objednat pomocí pravidel relaxed-version, změňte formát na version a spusťte tento příkaz znovu. Pravidla relaxed-version seřadí verze podle jednotlivých číselných komponent. Verze s příponami pomlček se pak seřadí lexikograficky před. Značky sestavení plus se ignorují. Příklady:\n1.0 < 1.1-alpha < 1.1-b < 1.1 < 1.1.1 < 1.2+build = 1.2 < 2.0\nVšimněte si zejména, že přípony s pomlčkami řadí *před*, ne po. 1.0-anything < 1.0\nVšimněte si, že toto pořadí je stejné jako u sémantické správy verzí (viz https://semver.org), i když se skutečně sémantické části nepoužívají.\nPokud verze pro tento port nejsou seřazené podle těchto pravidel, zakažte tuto kontrolu opětovným spuštěním tohoto příkazu a přidáním --skip-version-format-check .", "AddVersionUncommittedChanges": "pro {package_name} existují nepotvrzené změny.", "AddVersionUpdateVersionReminder": "Nezapomněli jste aktualizovat verzi nebo verzi portu?", "AddVersionUseOptionAll": "{command_name} bez argumentů vyžaduje předání --{option}, aby se aktualizovaly všechny verze portů najednou.", @@ -82,7 +80,7 @@ "AdditionalPackagesToRemove": "K dokončení této operace je nutné odebrat další balíčky (*).", "AllFormatArgsRawArgument": "{value} řetězce formátu obsahuje argument nezpracovaného formátu.", "AllFormatArgsUnbalancedBraces": "nevyvážená složená závorka ve formátovacím řetězci {value}", - "AllPackagesAreUpdated": "Všechny nainstalované balíčky jsou aktuální s místním souborem portů.", + "AllPackagesAreUpdated": "Všechny nainstalované balíčky jsou aktuální.", "AlreadyInstalled": "{spec} je už nainstalováno.", "AlreadyInstalledNotHead": "{spec} už je nainstalovaný – nesestavuje se z HEAD.", "AmbiguousConfigDeleteConfigFile": "Nejednoznačná konfigurace vcpkg poskytovaná manifestem i konfiguračním souborem.\n-- Odstranit konfigurační soubor {path}", @@ -110,7 +108,6 @@ "ApplocalProcessing": "nasazování závislostí", "ArtifactsBootstrapFailed": "vcpkg-artifacts není nainstalovaný a nelze jej spustit.", "ArtifactsNotInstalledReadonlyRoot": "vcpkg-artifacts není nainstalovaný a nedá se nainstalovat, protože se předpokládá, že VCPKG_ROOT je jen pro čtení. Tento problém můžete vyřešit přeinstalací balíčku vcpkg pomocí one-lineru.", - "ArtifactsNotOfficialWarning": "Používání vcpkg-artifacts s neoficiálním ", "ArtifactsOptionIncompatibility": "--{option} nemá žádný vliv na artefakt hledání.", "ArtifactsOptionJson": "Úplná cesta k souboru JSON, kde se zaznamenávají proměnné prostředí a další vlastnosti", "ArtifactsOptionMSBuildProps": "Úplná cesta k souboru, do kterého se zapíší vlastnosti nástroje MSBuild.", @@ -118,12 +115,10 @@ "ArtifactsOptionVersionMismatch": "Počet přepínačů --version musí odpovídat počtu pojmenovaných artefaktů.", "ArtifactsSwitchARM": "Vynutí detekci hostitele na ARM při získávání artefaktů", "ArtifactsSwitchARM64": "Vynutí detekci hostitele na ARM64 při získávání artefaktů", - "ArtifactsSwitchAll": "Aktualizuje všechny známé registry artefaktů", "ArtifactsSwitchAllLanguages": "Získá všechny jazykových souborů při získávání artefaktů", "ArtifactsSwitchForce": "Vynutí opětovné dotazování, pokud je artefakt již získán", "ArtifactsSwitchFreebsd": "Vynutí detekci hostitele na FreeBSD při získávání artefaktů", "ArtifactsSwitchLinux": "Vynutí detekci hostitele na Linux při získávání artefaktů", - "ArtifactsSwitchNormalize": "Použije všechny opravy vyřazení z provozu", "ArtifactsSwitchOnlyOneHostPlatform": "Může být nastavena pouze jedna hostitelská platforma (--x64, --x86, --arm, --arm64).", "ArtifactsSwitchOnlyOneOperatingSystem": "Je možné nastavit jenom jeden operační systém (--windows, --osx, --linux, --freebsd).", "ArtifactsSwitchOnlyOneTargetPlatform": "Je možné nastavit pouze jednu cílovou platformu (--target:x64, --target:x86, --target:arm, --target:arm64).", @@ -135,9 +130,12 @@ "ArtifactsSwitchWindows": "Vynutí detekci hostitele na Windows při získávání artefaktů", "ArtifactsSwitchX64": "Vynutí detekci hostitele na x64 při získávání artefaktů", "ArtifactsSwitchX86": "Vynutí detekci hostitele na x86 při získávání artefaktů", + "AssetCacheHit": "Přístup do mezipaměti prostředků pro {path}; staženo z: {url}", + "AssetCacheMiss": "Neúspěšné přístupy do mezipaměti prostředků; stahování z adresy {url}.", + "AssetCacheMissBlockOrigin": "Neúspěšné přístupy do mezipaměti prostředků pro {path} a x-block-origin blokuje stahování.", "AssetCacheProviderAcceptsNoArguments": "Neočekávané argumenty: {value} nepřijímá argumenty.", + "AssetCacheSuccesfullyStored": "Cesta {path} se úspěšně uložila na adresu {url}.", "AssetSourcesArg": "Zdroje ukládání prostředků do mezipaměti. Viz nvcpkg help assetcaching", - "AttemptingToFetchPackagesFromVendor": "Pokus o načtení tohoto počtu balíčků od {vendor}: {count}", "AttemptingToSetBuiltInBaseline": "při pokusu o nastavení předdefinovaného směrného plánu v souboru vcpkg.json při přepsání výchozího registru v souboru vcpkg-configuration.json.\nse použije výchozí registr z vcpkg-configuration.json.", "AuthenticationMayRequireManualAction": "Nejméně jeden poskytovatel přihlašovacích údajů {vendor} požádal o ruční akci. Pokud chcete povolit interaktivitu, přidejte binární zdroj interactive.", "AutoSettingEnvVar": "-- Automatické nastavení proměnných prostředí {env_var} na {url}.", @@ -147,12 +145,11 @@ "AzUrlAssetCacheRequiresBaseUrl": "Neočekávané argumenty: konfigurace prostředku azurl vyžaduje základní adresu URL.", "AzUrlAssetCacheRequiresLessThanFour": "Neočekávané argumenty: konfigurace prostředku azurl vyžaduje méně než 4 argumenty.", "BaselineConflict": "Zadání vcpkg-configuration.default-registry v souboru manifestu je v konfliktu s předdefinovanými standardními hodnotami.\nOdeberte jedno z těchto konfliktních nastavení.", - "BaselineFileNoDefaultField": "Základní soubor při potvrzení {commit_sha} byl neplatný (žádné pole „default“).", "BaselineGitShowFailed": "Při rezervaci směrného plánu ze zápisu {commit_sha} se nepovedlo Git show versions/baseline.json. To může být opraveno načtením zápisu pomocí příkazu načtení Git.", - "BaselineMissing": "Verze směrného plánu nebyla nalezena. Spusťte:\n{package_name} vcpkg x-add-version\ngit add versions\ngit commit -m \"Aktualizovat databázi verzí\"\na nastavte verzi {version} jako verzi směrného plánu.", - "BinaryCacheVendorHTTP": "Servery HTTP", + "BaselineMissing": "{package_name} nemá přiřazenou verzi", + "BinariesRelativeToThePackageDirectoryHere": "binární soubory jsou tady relativní vzhledem k ${{CURRENT_PACKAGES_DIR}}", "BinarySourcesArg": "Binární zdroje ukládání do mezipaměti. Viz vcpkg help binarycaching", - "BinaryWithInvalidArchitecture": "{path}\n Očekáváno: {expected}, ale bylo {actual}", + "BinaryWithInvalidArchitecture": "{path} – sestaveno pro {arch}", "BuildAlreadyInstalled": "{spec} je už nainstalovaný; před pokusem o sestavení prosím odeberte {spec}.", "BuildDependenciesMissing": "Příkaz sestavení vyžaduje, aby všechny závislosti byly už nainstalované.\nChybí následující závislosti:", "BuildResultBuildFailed": "BUILD_FAILED", @@ -170,22 +167,19 @@ "BuildTroubleshootingMessage1": "Ujistěte se prosím, že používáte nejnovější soubory portů s git pull a vcpkg update.\nPak zkontrolujte známé problémy na:", "BuildTroubleshootingMessage2": "Nový problém můžete odeslat tady:", "BuildTroubleshootingMessage3": "Do názvu zprávy o chybě zahrňte [{package_name}] Build error, následující informace o verzi v popisu chyby a připojte všechny relevantní protokoly chyb z výše uvedených možností.", - "BuildTroubleshootingMessage4": "Při nahlašování problému použijte předvyplněnou šablonu z {path}.", "BuildTroubleshootingMessageGH": "Problém můžete také nahlásit spuštěním (musí být nainstalované rozhraní příkazového řádku GitHubu):", "BuildingFromHead": "{spec} se sestavuje z HEAD…", "BuildingPackage": "{spec} se setavuje…", "BuildingPackageFailed": "sestavení {spec} selhalo s: {build_result}", "BuildingPackageFailedDueToMissingDeps": "kvůli následujícím chybějícím závislostem:", "BuiltInTriplets": "Předdefinovaná trojčata:", - "BuiltWithIncorrectArchitecture": "Následující soubory byly vytvořeny pro nesprávnou architekturu:", - "CISettingsExclude": "Seznam portů, které se mají přeskočit, oddělený čárkami", + "BuiltWithIncorrectArchitecture": "Triplet požaduje, aby byly binární soubory sestaveny pro {arch}, ale následující binární soubory byly sestaveny pro jinou architekturu. To obvykle znamená, že informace o sadě nástrojů se nesprávně předávají do sestavovacího systému binárních souborů. Pokud chcete tuto zprávu potlačit, přidejte set(VCPKG_POLICY_SKIP_ARCHITECTURE_CHECK enabled)", "CISettingsOptCIBase": "Cesta k souboru ci.baseline.txt. Používá se k přeskočení portů a detekci regresí.", "CISettingsOptExclude": "Seznam portů, které se mají přeskočit, oddělený čárkami", "CISettingsOptFailureLogs": "Adresář, do kterého se zkopírují protokoly selhání", "CISettingsOptHostExclude": "Seznam portů, které se mají přeskočit pro trojnásobný výskyt hostitele, oddělený čárkami", "CISettingsOptOutputHashes": "Soubor pro výstup všech určených hodnot hash balíčků", "CISettingsOptParentHashes": "Soubor pro čtení hodnot hash balíčků pro nadřazený stav CI, aby se snížila sada změněných balíčků", - "CISettingsOptSkippedCascadeCount": "Vyhodnotí, že počet příkazů --exclude a supports se přesně rovná tomuto číslu", "CISettingsOptXUnit": "Soubor pro výstup výsledků ve formátu XUnit", "CISettingsVerifyGitTree": "Ověřuje, že každý objekt stromu git odpovídá jeho deklarované verzi (je to velmi pomalé).", "CISettingsVerifyVersion": "Vytiskne výsledek pro každý port, nikoli jenom chyby", @@ -200,8 +194,6 @@ "CMakeTargetsUsageHeuristicMessage": "# toto je heuristicky generované a nemusí být správné", "CMakeToolChainFile": "Projekty CMake by měly používat: -DCMAKE_TOOLCHAIN_FILE={path}", "CMakeUsingExportedLibs": "Pokud chcete v projektech CMake používat exportované knihovny, přidejte do příkazového řádku CMake {value}.", - "CheckedOutGitSha": "Rezervováno v Git SHA: {commit_sha}", - "CheckedOutObjectMissingManifest": "Rezervovaný objekt neobsahuje soubor CONTROL nebo vcpkg.json.", "ChecksFailedCheck": "vcpkg se zhroutilo. blížší podrobnosti nejsou k dispozici.", "ChecksUnreachableCode": "nedosažitelný kód byl dosažen", "ChecksUpdateVcpkg": "aktualizace vcpkg opětovným spuštěním bootstrap-vcpkg může tuto chybu vyřešit.", @@ -235,14 +227,11 @@ "CmdBuildExternalExample2": "vcpkg build-external zlib2 C:\\path\\to\\dir\\with\\vcpkg.json", "CmdBuildExternalSynopsis": "Vytvoří port z cesty", "CmdBuildSynopsis": "Vytvoří port", - "CmdCacheExample1": "vcpkg cache ", - "CmdCacheSynopsis": "Výpis specifikace balíčků", "CmdCheckSupportExample1": "vcpkg x-check-support ", "CmdCheckSupportSynopsis": "Testuje, jestli je port podporovaný bez jeho sestavení", "CmdCiCleanSynopsis": "Vymaže všechny soubory a připraví se na spuštění CI", "CmdCiSynopsis": "Pokusí se sestavit všechny porty pro testování CI", "CmdCiVerifyVersionsSynopsis": "Zkontroluje integritu databáze verzí", - "CmdContactOptSurvey": "Spustit výchozí prohlížeč pro aktuální průzkum vcpkg", "CmdCreateExample1": "vcpkg create ", "CmdCreateExample2": "vcpkg create my-fancy-port https://example.com/sources.zip", "CmdCreateExample3": "vcpkg create ", @@ -376,8 +365,10 @@ "CmdZExtractExample2": "vcpkg z-extract source.zip source_dir --strip 2", "CmdZExtractOptStrip": "Počet úvodních adresářů, které se mají odstranit ze všech cest", "CommandEnvExample2": "vcpkg env \"ninja -C \" --triplet x64-windows", - "CommandFailed": "Příkaz:\n{command_line}\nselhal s následujícími výsledky:", + "CommandFailed": "příkaz:\n{command_line}\nselhalo s následujícím výstupem:", + "CommandFailedCode": "příkaz:\n{command_line}\nselhalo s ukončovacím kódem {exit_code} a následujícím výstupem:", "CommunityTriplets": "Trojčata komunity:", + "CompilerPath": "Nalezen kompilátor: {path}", "CompressFolderFailed": "Nepovedlo se zkomprimovat složku „{path}“:", "ComputingInstallPlan": "Počítá se plán instalace…", "ConfigurationErrorRegistriesWithoutBaseline": "Konfigurace definovaná v cestě {path} je neplatná.\n\n Použití registrů vyžaduje, aby byl pro výchozí registr nastaven směrný plán nebo aby výchozí registr byl null.\n\n Další podrobnosti najdete na adrese {url}.", @@ -386,11 +377,10 @@ "ConsideredVersions": "Následující spustitelné soubory byly zvažovány, ale byly vyřazeny, protože je vyžadována verze {version}:", "ConstraintViolation": "Bylo nalezeno porušení omezení:", "ContinueCodeUnitInStart": "našla se jednotka kódu pro pokračování na počáteční pozici", - "ControlAndManifestFilesPresent": "V adresáři portů existuje jak soubor manifestu, tak soubor CONTROL: {path}", "ControlCharacterInString": "Řídicí znak v řetězci", "ControlSupportsMustBeAPlatformExpression": "„Supports“ musí být výraz platformy.", - "CopyrightIsDir": "{path} jako adresář je zastaralá.", - "CorruptedDatabase": "Databáze je poškozena.", + "CopyrightIsDir": "tento port nastaví ${{CURRENT_PACKAGES_DIR}}/share/${{PORT}}/copyright na adresář, ale měl by to být soubor. Zvažte možnost sloučit jednotlivé soubory copyright do jednoho pomocí vcpkg_install_copyright. Pokud chcete tuto zprávu potlačit, přidejte set(VCPKG_POLICY_SKIP_COPYRIGHT_CHECK enabled)", + "CorruptedDatabase": "Instalační databáze vcpkg je poškozená. Buď je chyba v souboru vcpkg, nebo něco jiného neočekávaným způsobem změnilo obsah adresáře installed. Můžete to vyřešit odstraněním adresáře installed a přeinstalací toho, co chcete použít. Pokud k tomuto problému dochází konzistentně, nahlaste prosím chybu na https://github.com/microsoft/vcpkg.", "CorruptedInstallTree": "Strom vcpkg installed je poškozený.", "CouldNotDeduceNugetIdAndVersion": "Nepovedlo se odvodit ID a verzi NuGet z názvu souboru: {path}", "CouldNotFindBaselineInCommit": "Nepovedlo se najít směrný plán v adrese {url} na {commit_sha} pro {package_name}.", @@ -403,14 +393,12 @@ "CreatingNugetPackage": "Vytváří se balíček NuGet...", "CreatingZipArchive": "Vytváří se archiv zip...", "CreationFailed": "Nepovedlo se vytvořit cestu {path}.", - "CurlFailedToExecute": "Spuštění nástroje curl se nezdařilo s ukončovacím kódem {exit_code}.", "CurlFailedToPut": "Nástroji curl se nepodařilo vložit soubor na adresu {url} s ukončovacím kódem {exit_code}.", "CurlFailedToPutHttp": "Nástroji curl se nepodařilo vložit soubor na adresu {url} s ukončovacím kódem {exit_code} a kódem HTTP {value}.", - "CurlReportedUnexpectedResults": "Nástroj curl oznámil neočekávané výsledky pro vcpkg a vcpkg nemůže pokračovat.\nPřečtěte si prosím následující text o citlivých informacích a otevřete problém na GitHubu Microsoftu/vcpkg, který vám pomůže tento problém vyřešit.\ncmd: {command_line}\n=== výstup curl ===\n{actual}\n=== konec výstupu curl ===", - "CurlReturnedUnexpectedResponseCodes": "Curl vrátil jiný počet kódů odpovědí, než se očekávalo pro požadavek ({actual} vs. očekávané {expected}).", + "CurlResponseTruncatedRetrying": "Příkaz curl vrátil částečnou odpověď; počká se {value} milisekund a pak se to zkusí znovu.", + "CurlTimeout": "Příkaz curl nemohl provést všechny požadované operace HTTP, a to ani po vypršení časového limitu a opakovaných pokusech. Poslední příkazový řádek byl: {command_line}.", "CurrentCommitBaseline": "Aktuální potvrzení můžete použít jako směrný plán, což je:\n„builtin-baseline“: „{commit_sha}“", "CycleDetectedDuring": "cyklus zjištěný během specifikace {spec}:", - "DateTableHeader": "Datum", "DefaultBinaryCachePlatformCacheRequiresAbsolutePath": "Proměnná prostředí VCPKG_DEFAULT_BINARY_CACHE musí být adresář (byla: {path}).", "DefaultBinaryCacheRequiresAbsolutePath": "Proměnná prostředí VCPKG_DEFAULT_BINARY_CACHE musí být absolutní (byla: {path}).", "DefaultBinaryCacheRequiresDirectory": "Proměnná prostředí VCPKG_DEFAULT_BINARY_CACHE musí být adresář (byla: {path}).", @@ -419,15 +407,18 @@ "DefaultFeatureIdentifier": "názvy výchozích funkcí musí být identifikátory.", "DefaultFlag": "Nastavuje se výchozí hodnota --{option}.", "DefaultRegistryIsArtifact": "Výchozí registr nemůže být registr artefaktů.", - "DefaultTripletChanged": "Ve verzi ze září 2023 se výchozí triplety knihoven vcpkg změnily z formátu x86-windows na zjištěný hostitelský triplet ({triplet}). Pro původní chování přidejte --triplet x86-windows. Pokud chcete tuto zprávu potlačit, přidejte --triplet {triplet}.", "DeleteVcpkgConfigFromManifest": "-- Nebo odeberte vcpkg-configuration ze souboru manifestu {path}.", "DependencyFeatureCore": "funkce core nemůže být v seznamu funkcí závislosti. Pokud chcete vypnout výchozí funkce, přidejte místo toho default-features: false.", "DependencyFeatureDefault": "funkce default nemůže být v seznamu funkcí závislosti. Pokud chcete zapnout výchozí funkce, přidejte místo toho default-features: true.", "DependencyGraphCalculation": "Odesílání grafu závislostí je povolené.", "DependencyGraphFailure": "Odeslání grafu závislostí se nezdařilo.", "DependencyGraphSuccess": "Odeslání grafu závislostí proběhlo úspěšně.", + "DependencyInFeature": "závislost je ve funkci s názvem {feature}", + "DependencyNotInVersionDatabase": "závislost {package_name} neexistuje v databázi verzí; existuje daný port?", "DeprecatedPrefabDebugOption": "--prefab-debug je teď zastaralý.", "DetectCompilerHash": "Rozpoznává se hodnota hash kompilátoru pro triplet {triplet}...", + "DirectoriesRelativeToThePackageDirectoryHere": "adresáře jsou tady relativní vzhledem k ${{CURRENT_PACKAGES_DIR}}", + "DllsRelativeToThePackageDirectoryHere": "knihovny DLL jsou tady relativní vzhledem k ${{CURRENT_PACKAGES_DIR}}", "DocumentedFieldsSuggestUpdate": "Pokud se jedná o zdokumentovaná pole, která by se měla rozpoznat, zkuste aktualizovat nástroj vcpkg.", "DownloadAvailable": "Kopie nástroje je k dispozici ke stažení a dá se využít při změně nastavení hodnoty {env_var}.", "DownloadFailedCurl": "{url}: Nástroji curl se nepodařilo stáhnout s ukončovacím kódem {exit_code}.", @@ -437,8 +428,7 @@ "DownloadRootsDir": "Stáhne adresář (výchozí: {env_var})", "DownloadWinHttpError": "{url}: {system_api} selhalo s ukončovacím kódem {exit_code}.", "DownloadedSources": "Stažené zdroje pro {spec}", - "DownloadingPortableToolVersionX": "Nenašla se vhodná verze {tool_name} (požadovánA v{version}) Stahuje se přenosný {tool_name} {version}...", - "DownloadingTool": "Stahuje se {tool_name}...\n{url}->{path}", + "DownloadingPortableToolVersionX": "Nenašla se vhodná verze {tool_name} (požadovaná verze je {version}).", "DownloadingUrl": "Stahuje se adresa {url}.", "DownloadingVcpkgStandaloneBundle": "Stahuje se samostatná sada {version}.", "DownloadingVcpkgStandaloneBundleLatest": "Stahuje se nejnovější samostatná sada.", @@ -449,7 +439,6 @@ "DuplicatePackagePatternRegistry": "registr: {url}", "DuplicatedKeyInObj": "Duplicitní klíč „{value}“ v objektu", "ElapsedForPackage": "Uplynulý čas zpracování {spec}: {elapsed}", - "ElapsedInstallTime": "Celkový uplynulý čas: {count}", "ElapsedTimeForChecks": "Čas na určení úspěchu/selhání: {elapsed}", "EmailVcpkgTeam": "Pošlete e-mail na {url} se zpětnou vazbou.", "EmbeddingVcpkgConfigInManifest": "Vložení vcpkg-configuration do souboru manifestu je EXPERIMENTÁLNÍ funkce.", @@ -479,25 +468,23 @@ "ErrorWhileFetchingBaseline": "při načítání standardní hodnoty „{value}“ z úložiště {package_name}:", "ErrorWhileParsing": "Při parsování cesty {path} došlo k chybám.", "ErrorWhileWriting": "Při zápisu {path} došlo k chybě.", - "ErrorsFound": "Byly nalezeny následující chyby:", "ExamplesHeader": "Příklady:", "ExceededRecursionDepth": "Byla překročena hloubka rekurze.", "ExcludedPackage": "Vyloučené {spec}", "ExcludedPackages": "Následující balíčky jsou vyloučeny:", + "ExecutablesRelativeToThePackageDirectoryHere": "spustitelné soubory jsou zde relativní vůči ${{CURRENT_PACKAGES_DIR}}", "ExpectedAnObject": "očekával se objekt", "ExpectedAtMostOneSetOfTags": "Našel se tento počet sad: {count} z {old_value}.*{new_value}, ale očekávala se maximálně 1, v bloku\n{value}.", "ExpectedCharacterHere": "tady se očekávalo {expected}", "ExpectedDefaultFeaturesList": "v seznamu výchozích funkcí se očekával znak , nebo konec textu", "ExpectedDependenciesList": "V seznamu závislostí se očekával se znak , nebo konec textu", "ExpectedDigitsAfterDecimal": "Očekávané číslice za desetinnou čárkou", - "ExpectedEof": "očekával se znak eof.", "ExpectedExplicitTriplet": "očekával se explicitní trojdílný název", "ExpectedFailOrSkip": "zde se očekávala chyba, přeskočit nebo úspěch", "ExpectedFeatureListTerminal": "v seznamu funkcí se očekával znak , nebo ]", "ExpectedFeatureName": "očekával se název funkce (musí jít o malá písmena, číslice, -).", "ExpectedOneSetOfTags": "Našel se tento počet sad: {count} z {old_value}.*{new_value}, ale očekávala se přesně 1, v bloku\n{value}.", "ExpectedOneVersioningField": "Očekávalo se jenom jedno pole správy verzí", - "ExpectedPackageSpecifier": "očekával se specifikátor balíčku", "ExpectedPathToExist": "Po načtení se očekávalo, že {path} bude existovat.", "ExpectedPortName": "zde se očekával název portu (musí jít o malá písmena, číslice, -)", "ExpectedReadWriteReadWrite": "Neočekávaný argument: očekávalo se čteni, čtení i zápis, nebo zápis.", @@ -505,7 +492,6 @@ "ExpectedTripletName": "zde se očekával trojdílný název (musí jít o malá písmena, číslice, -)", "ExportArchitectureReq": "Předfab exportu vyžaduje, aby byla k dispozici alespoň jedna z následujících architektur arm64-v8a, arme gateway-v7a, x86_64, x86.", "ExportPrefabRequiresAndroidTriplet": "Předběžné ověřování exportu vyžaduje trojnásobek Androidu.", - "ExportUnsupportedInManifest": "Export vcpkg nepodporuje režim manifestu, aby bylo možné zvážit budoucí aspekty návrhu. Export můžete použít v klasickém režimu spuštěním souboru vcpkg mimo projekt založený na manifestu.", "Exported7zipArchive": "Archiv 7zip se exportoval v: {path}", "ExportedZipArchive": "Archiv ZIP exportovaný v: {path}", "ExportingAlreadyBuiltPackages": "Následující balíčky jsou již sestaveny a budou exportovány:", @@ -514,14 +500,12 @@ "ExtendedDocumentationAtUrl": "Rozšířená dokumentace je k dispozici na adrese {url}.", "ExtractHelp": "Extrahuje archiv.", "ExtractingTool": "Extrahování {tool_name}...", - "FailedPostBuildChecks": "Našel se tento počet problémů po kontrole sestavení: {count}. Pokud chcete odeslat tyto porty do kurátorovaných katalogů, nejprve opravte soubor portu: {path}", + "FailedPostBuildChecks": "Našel se tento počet problémů při kontrole po sestavení: {count}. Příčinou jsou obvykle chyby v souboru portfile.cmake nebo upstreamovém sestavovacího systému. Před odesláním tohoto portu do kurátorovaného registru je prosím opravte.", "FailedToAcquireMutant": "nepovedlo se získat mutantní {path}", "FailedToCheckoutRepo": "Nepovedlo se rezervovat „versions“ z úložiště {package_name}.", "FailedToDeleteDueToFile": "nepodařilo se provést akci remove_all ({value}) z důvodu {path}: ", "FailedToDeleteInsideDueToFile": "nepodařilo se provést akci remove_all_inside({value}) z důvodu {path}: ", - "FailedToDetermineArchitecture": "Nejde určit architekturu {path}.\n {command_line}", "FailedToDetermineCurrentCommit": "Nepodařilo se určit aktuální zápis:", - "FailedToDownloadFromMirrorSet": "Nepovedlo se stáhnout ze zrcadlené sady", "FailedToExtract": "{path} se nepodařilo extrahovat:", "FailedToFetchRepo": "Nepovedlo se načíst adresu {url}.", "FailedToFindPortFeature": "{package_name} nezahrnuje žádnou funkci s názvem {feature}.", @@ -530,27 +514,20 @@ "FailedToLoadManifest": "Nepovedlo se načíst manifest z adresáře {path}.", "FailedToLocateSpec": "Nepovedlo se najít specifikaci v grafu: {spec}", "FailedToObtainDependencyVersion": "Požadovaná verze závislosti nebyla nalezena.", - "FailedToObtainLocalPortGitSha": "Nepovedlo se získat git SHA pro místní porty.", "FailedToObtainPackageVersion": "Požadovaná verze balíčku nebyla nalezena.", "FailedToOpenAlgorithm": "Nepovedlo se otevřít {value}", "FailedToParseBaseline": "Nepovedlo se parsovat směrný plán: {path}", "FailedToParseCMakeConsoleOut": "Výstup konzoly CMake se nepodařilo parsovat kvůli nalezení značek začátku/konce bloku.", "FailedToParseConfig": "Nepovedlo se parsovat konfiguraci: {path}.", - "FailedToParseControl": "Nepovedlo se parsovat ŘÍDICÍ soubor: {path}", - "FailedToParseManifest": "Nepovedlo se parsovat soubor manifestu: {path}", "FailedToParseNoTopLevelObj": "Nepovedlo se parsovat {path}, očekával se objekt nejvyšší úrovně.", "FailedToParseNoVersionsArray": "Nepovedlo se parsovat {path}, očekávalo se pole „versions“.", "FailedToParseSerializedBinParagraph": "[kontrola správnosti] Nepovedlo se parsovat serializovaný binární odstavec.\nOtevřete prosím problém na https://github.com/microsoft/vcpkg s následujícím výstupem:\n{error_msg}\nSerializovaný binární odstavec:", + "FailedToParseVersionFile": "Nepovedlo se parsovat soubor verze: {path}", "FailedToParseVersionXML": "Nepovedlo se parsovat verzi nástroje {tool_name}. Řetězec verze byl: {version}", - "FailedToParseVersionsFile": "nepovedlo se parsovat soubor verzí {path}", - "FailedToProvisionCe": "Nepovedlo se zřídit artefakty vcpkg-artifacts.", - "FailedToReadParagraph": "Nepovedlo se přečíst odstavce z {path}", - "FailedToRemoveControl": "Nepovedlo se odebrat řídicí soubor {path}", "FailedToRunToolToDetermineVersion": "Nepodařilo se spustit {path} s cílem zjistit verzi {tool_name}.", - "FailedToStoreBackToMirror": "Nepovedlo se uložit zpět na zrcadlení:", + "FailedToStoreBackToMirror": "Nepovedlo se uložit {path} na adresu {url}.", "FailedToStoreBinaryCache": "Nepovedlo se uložit binární mezipaměť {path}.", "FailedToTakeFileSystemLock": "Nepovedlo se uzamknout systém souborů.", - "FailedToWriteManifest": "Nepovedlo se zapsat soubor manifestu {path}", "FailedVendorAuthentication": "Ověření nejméně jednoho zprostředkovatele přihlašovacích údajů {vendor} se nepovedlo. Další podrobnosti o tom, jak zadat přihlašovací údaje, najdete adrese {url}.", "FetchingBaselineInfo": "Načítá se informace o směrném plánu z {package_name}...", "FetchingRegistryInfo": "Načítá se informace registru z adresy {url} ({value})...", @@ -559,11 +536,13 @@ "FileNotFound": "{path}: Soubor se nenašel.", "FileReadFailed": "Čtení {count} bajtů z cesty {path} na posunu {byte_offset} se nezdařilo.", "FileSeekFailed": "Nepodařilo se vyhledat umístění pro {byte_offset} v cestě {path}.", - "FileSystemOperationFailed": "Operace systému souborů se nezdařila:", - "FilesContainAbsolutePath1": "V nainstalovaném balíčku by neměly být žádné absolutní cesty, jako jsou následující:", - "FilesContainAbsolutePath2": "V následujících souborech byly nalezeny absolutní cesty:", + "FilesContainAbsolutePath1": "V nainstalovaném balíčku by neměly být žádné absolutní cesty, jako jsou následující. Pokud chcete tuto zprávu potlačit, přidejte set(VCPKG_POLICY_SKIP_ABSOLUTE_PATHS_CHECK enabled)", + "FilesContainAbsolutePath2": "Absolutní cesty, které se tady našly", + "FilesContainAbsolutePathPkgconfigNote": "Přidáním volání do funkce vcpkg_fixup_pkgconfig() lze opravit absolutní cesty v souborech .pc", "FilesExported": "Soubory exportované v: {path}", - "FindHelp": "Vyhledá označený artefakt nebo port. Když za „artifact“ nebo „port“ nebude žádný parametr, zobrazí se všechno.", + "FilesRelativeToTheBuildDirectoryHere": "soubory jsou tady relativní vzhledem k adresáři sestavení", + "FilesRelativeToThePackageDirectoryHere": "soubory jsou tady relativní k ${{CURRENT_PACKAGES_DIR}}", + "FindCommandFirstArg": "Prvním argumentem pro find musí být artifact nebo port.", "FindVersionArtifactsOnly": "--version se nedá použít s hledáním vcpkg nebo vcpkg vyhledávacím portem.", "FishCompletion": "Dokončení vcpkg fish je už přidáno do {path}.", "FloatingPointConstTooBig": "Konstanta čísla s plovoucí desetinnou čárkou je příliš velká: {count}", @@ -581,6 +560,7 @@ "GeneratingRepo": "Generuje se úložiště {path}...", "GetParseFailureInfo": "Pokud chcete získat další informace o chybách analýzy, použijte --debug.", "GitCommandFailed": "spuštění příkazu se nepovedlo: {command_line}", + "GitCommitUpdateVersionDatabase": "git commit -m \"Aktualizovat databázi verzí\"", "GitFailedToFetch": "Nepovedlo se načíst referenční {value} z {url} úložiště.", "GitFailedToInitializeLocalRepository": "Nepovedlo se inicializovat místní úložiště {path}.", "GitRegistryMustHaveBaseline": "Registr Git {url} musí mít pole ‚baseline‘, které je platným kódem SHA potvrzení Gitu (40 šestnáctkových znaků).\nPokud chcete použít aktuální nejnovější verze, nastavte směrný plán na HEAD úložiště {commit_sha}.", @@ -591,7 +571,7 @@ "GitUnexpectedCommandOutputCmd": "Git vytvořil neočekávaný výstup při spuštění {command_line}.", "GraphCycleDetected": "V grafu byl zjištěn cyklus v {package_name}:", "HashFileFailureToRead": "Nepodařilo se přečíst soubor {path} pro hashování: ", - "HashPortManyFiles": "{package_name} obsahuje {count} souborů. Použití algoritmů hash u tohoto obsahu při určování hodnoty hash ABI pro ukládání binárních dat do mezipaměti může trvat dlouho. Zvažte snížení počtu souborů. Častou příčinou je náhodné zahrnutí zdrojových nebo buildovacích souborů do adresáře portu.", + "HashPortManyFiles": "{package_name} obsahuje tento počet souborů: {count}. Použití algoritmů hash u tohoto obsahu při určování hodnoty hash ABI pro ukládání binárních dat do mezipaměti může trvat dlouho. Zvažte snížení počtu souborů. Častou příčinou je náhodné rezervování zdrojových nebo buildovacích souborů do adresáře portu.", "HeaderOnlyUsage": "{package_name} je jenom hlavička a dá se použít z CMake přes:", "HelpAssetCaching": "**Experimentální funkce: může se změnit nebo odebrat bez upozornění.**\n\nVcpkg může ukládat stažené prostředky do mezipaměti pomocí zrcadlení a zajistit tak plynulý provoz i v případě, že se původní zdroj změní nebo zmizí.\n\nUkládání prostředků do mezipaměti je možné nakonfigurovat buď nastavením proměnné prostředí X_VCPKG_ASSET_SOURCES na seznam zdrojů oddělený středníky, nebo předáním posloupnosti možností příkazového řádku --x-asset-sources=. Zdroje příkazového řádku se interpretují po zdrojích prostředí. Čárky, středníky a obrácené čárky je možné uvozovat pomocí obrácené čárky (`).\n\nVolitelný parametr pro určité řetězce určuje, jak se k nim bude přistupovat. Je možné ho zadat jako read, write nebo readwrite s výchozí hodnotou read.\n\nPlatné zdroje:", "HelpAssetCachingAzUrl": "Přidá zdroj Azure Blob Storage, volitelně pomocí ověření sdíleného přístupového podpisu. Adresa URL by měla obsahovat cestu ke kontejneru a měla by končit koncovým znakem /. , pokud je definován, by měl mít předponu ?. Servery mimo Azure budou fungovat také v případě, že reagují na žádosti GET a PUT ve tvaru: .", @@ -623,10 +603,7 @@ "HelpEnvCommand": "Vytvoří čisté prostředí pro vývoj nebo kompilaci", "HelpExampleCommand": "Další nápovědu (včetně příkladů) najdete na https://learn.microsoft.com/vcpkg", "HelpExampleManifest": "Ukázkový manifest:", - "HelpExportCommand": "Exportuje balíček.", - "HelpHashCommand": "Zatřiďte soubor podle konkrétního algoritmu, výchozí SHA512.", "HelpInstallCommand": "Nainstaluje balíček", - "HelpListCommand": "Vypíše nainstalované balíčky", "HelpManifestConstraints": "Manifesty můžou u používaných verzí nastavit tři druhy omezení.", "HelpMinVersion": "Vcpkg vybere minimální zjištěnou verzi, která odpovídá všem použitelným omezením, včetně verze ze směrného plánu zadaného na nejvyšší úrovni, a všech omezení version>= v grafu.", "HelpOverrides": "Při použití jako manifest nejvyšší úrovně (například při spuštění vcpkg install v adresáři) umožňují přepsání manifestu zkrátit řešení závislostí a přesně určit verzi, která se má použít. Je možné je použít k řešení konfliktů verzí, například u závislostí version-string. Při přechodné závislosti se neberou v úvahu.", @@ -674,7 +651,6 @@ "IllegalPlatformSpec": "Kvalifikátor platformy není v tomto kontextu povolený.", "ImproperShaLength": "Algoritmy SHA512 musí mít 128 šestnáctkových znaků: {value}", "IncorrectArchiveFileSignature": "Nesprávný podpis souboru archivu", - "IncorrectPESignature": "Nesprávný podpis PE", "InfoSetEnvVar": "{env_var} můžete také nastavit ve vámi zvoleném editoru.", "InitRegistryFailedNoRepo": "Na cestě {path} se nepovedlo vytvořit registr, protože se nejedná o kořenový adresář úložiště GIT.\nPomocí příkazu git init {command_line} vytvořte v této složce úložiště GIT.", "InstallCopiedFile": "{path_source} -> {path_destination} dokončena", @@ -688,8 +664,8 @@ "InstalledBy": "Nainstalováno pomocí {path}", "InstalledPackages": "Následující balíčky jsou již nainstalovány:", "InstalledRequestedPackages": "Všechny požadované balíčky jsou aktuálně nainstalovány.", - "InstallingFromLocation": "-- Probíhá instalace portu z umístění: {path}", "InstallingMavenFile": "{path} instaluje soubor Maven", + "InstallingOverlayPort": "překryvný port se instaluje odsud", "InstallingPackage": "Instaluje se {action_index}/{count} {spec}...", "IntegrateBashHelp": "Povolit dokončování karet bash. Pouze jiný systém než Windows", "IntegrateFishHelp": "Povolit dokončování karet fish. Pouze jiný systém než Windows", @@ -725,7 +701,7 @@ "InvalidBundleDefinition": "Neplatná definice sady prostředků.", "InvalidCharacterInFeatureList": "neplatný znak v názvu funkce (musí jít o malá písmena, číslice, - nebo *)", "InvalidCharacterInFeatureName": "neplatný znak v názvu funkce (musí jít o malá písmena, číslice, -)", - "InvalidCharacterInPackageName": "neplatný znak v názvu balíčku (musí jít o malá písmena, číslice, -)", + "InvalidCharacterInPortName": "neplatný znak v názvu portu (musí jít o malá písmena, číslice, -)", "InvalidCodePoint": "Do utf8_encoded_code_point_count byl předán neplatný bod kódu", "InvalidCodeUnit": "neplatná jednotka kódu", "InvalidCommandArgSort": "Hodnota --sort musí být lexicographical, topological nebo reverse.", @@ -743,7 +719,6 @@ "InvalidLinkage": "Neplatný typ propojení {system_name}: [{value}]", "InvalidLogicExpressionUnexpectedCharacter": "neplatný logický výraz, neočekávaný znak", "InvalidLogicExpressionUsePipe": "neplatný logický výraz, použijte | místo operátoru or", - "InvalidNoVersions": "Soubor neobsahuje žádné verze.", "InvalidOptionForRemove": "Příkaz remove přijímá buď knihovny, nebo --outdated.", "InvalidPortVersonName": "Našel se neplatný název souboru verze portu: {path}.", "InvalidSharpInVersion": "Neplatný znak # v textu verze", @@ -751,6 +726,8 @@ "InvalidString": "Do value::string(std::string) se předala neplatná hodnota utf8.", "InvalidTriplet": "Neplatný triplet: {triplet}", "InvalidUri": "Nejde parsovat identifikátor URI: {value}", + "InvalidValueHashAdditionalFiles": "Proměnná VCPKG_HASH_ADDITIONAL_FILES obsahuje neplatnou cestu k souboru: {path}. Hodnota musí být absolutní cesta k existujícímu souboru.", + "InvalidValuePostPortfileIncludes": "Proměnná VCPKG_POST_PORTFILE_INCLUDES obsahuje neplatnou cestu k souboru: {path}. Hodnota musí být absolutní cesta k existujícímu souboru cmake.", "IrregularFile": "cesta nebyla běžným souborem: {path}", "JsonErrorMustBeAnObject": "Očekává se, že {path} bude objekt.", "JsonFieldNotObject": "Hodnota [\"{json_field}\"] musí být objekt", @@ -786,11 +763,11 @@ "LinkageStaticDebug": "Statické ladění (/MTd)", "LinkageStaticRelease": "Statická vydaná verze (/MT)", "ListHelp": "Vypíše nainstalované knihovny", - "LoadingCommunityTriplet": "-- [COMMUNITY] Načítání trojité konfigurace z: {path}", + "LoadedCommunityTriplet": "odtud je načten komunitní triplet. Komunitní triplety se nevytvářejí v kurátorovaném registru, a proto mají menší šanci na úspěch.", + "LoadedOverlayTriplet": "odsud se načetl překryvný triplet.", "LoadingDependencyInformation": "Načítají se informace o závislostech pro balíčky ({count})...", - "LoadingOverlayTriplet": "-- [OVERLAY] Načítání trojité konfigurace z: {path}", - "LocalPortfileVersion": "Používají se místní verze souboru portů. Pokud chcete aktualizovat místní soubory portů, použijte příkaz git pull.", - "ManifestConflict": "Na portu „{path}“ se našly soubory manifest i CONTROL; přejmenujte prosím jeden nebo druhý.", + "LocalPortfileVersion": "Používají se místní verze portů. Pokud chcete aktualizovat místní porty, použijte příkaz git pull.", + "ManifestConflict2": "Našel se soubor manifestu i soubor CONTROL; jeden z nich prosím přejmenujte", "ManifestFormatCompleted": "Soubory manifestu byly úspěšně naformátovány.", "MismatchedBinParagraphs": "Serializovaný binární odstavec se lišil od původního binárního odstavce. Otevřete prosím problém na https://github.com/microsoft/vcpkg s následujícím výstupem:", "MismatchedFiles": "Soubor, který se má uložit, neodpovídá hodnotě hash.", @@ -802,6 +779,7 @@ "MissingAndroidEnv": "chybí proměnná prostředí ANDROID_NDK_HOME", "MissingAndroidHomeDir": "ANDROID_NDK_HOME adresář neexistuje: {path}", "MissingArgFormatManifest": "format-manifest se předal --convert-control bez --all.\nToto nic nedělá: řídicí soubory, které se předají explicitně, se automaticky převedou.", + "MissingAssetBlockOrigin": "Chybí cesta {path} a x-block-origin blokuje stahování.", "MissingClosingParen": "chybí uzavírací závorka )", "MissingDependency": "Balíček {spec} je nainstalovaný, ale závislost {package_name} není.", "MissingExtension": "Chybí přípona {extension}.", @@ -810,9 +788,9 @@ "MissingPortSuggestPullRequest": "Pokud váš port není uvedený, otevřete prosím problém na adrese a/nebo zvažte možnost vytvořit žádost o získání dat.", "MissingRequiredField": "chybí povinné pole {json_field} ({json_type})", "MissingRequiredField2": "chybí povinné pole {json_field}", + "MissingShaVariable": "Pokud se používají jiné proměnné, musí se v šabloně použít proměnná {{sha}}.", "MixingBooleanOperationsNotAllowed": "směšování & a | není povoleno; použijte () k určení pořadí operací", "MonoInstructions": "Příčinou může být neúplná instalace mono. V některých systémech je k dispozici úplné mono prostřednictvím příkazu sudo apt install mono-complete. Uživatelé s Ubuntu 18.04 můžou potřebovat novější verzi mono, která je k dispozici na https://www.mono-project.com/download/stable/", - "MsiexecFailedToExtract": "msiexec selhalo při extrahování {path} se spouštěcím nebo ukončovacím kódem {exit_code} a zprávou:", "MultiArch": "Hodnota Multi-Arch musí být same, ale byla {option}", "MultipleFeatures": "balíček {package_name} deklaruje funkci {feature} vícekrát; ujistěte se prosím, že funkce mají odlišné názvy", "MutuallyExclusiveOption": "Parametr --{value} nejde použít s parametrem --{option}.", @@ -822,10 +800,8 @@ "NewOnlyOneVersionKind": "Musí být zadána jen jedna z těchto možností: --version-relaxed, --version-date nebo --version-string.", "NewSpecifyNameVersionOrApplication": "Buď zadáním --name a --version vytvořte manifest určený pro knihovny C++, nebo zadáním --application označte, že se manifest nemá používat jako port.", "NewVersionCannotBeEmpty": "--version nesmí být prázdné.", - "NoArgumentsForOption": "Možnost --{option} nepřijímá argument.", "NoError": "nedošlo k žádné chybě", "NoInstalledPackages": "Nejsou nainstalované žádné balíčky. Měli jste na mysli „hledat“?", - "NoLocalizationForMessages": "Žádné lokalizované zprávy pro následující: ", "NoOutdatedPackages": "Neexistují žádné zastaralé balíčky.", "NoRegistryForPort": "pro port {package_name} není nakonfigurovaný žádný registr", "NoUrlsAndHashSpecified": "Nejsou zadané žádné adresy URL pro stažení SHA: {sha}", @@ -866,7 +842,6 @@ "PackageManipulationHeader": "Manipulace s balíčky", "PackageRootDir": "Adresář balíčků (experimentální)", "PackagesToInstall": "Budou sestaveny a nainstalovány následující balíčky:", - "PackagesToInstallDirectly": "Následující balíčky se nainstalují přímo:", "PackagesToModify": "Další balíčky (*) budou upraveny za účelem dokončení této operace.", "PackagesToRebuild": "Následující balíčky budou znovu sestaveny:", "PackagesToRebuildSuggestRecurse": "Pokud jste si jisti, že chcete výše uvedené balíčky znovu sestavit, spusťte příkaz s možností --recurse.", @@ -882,47 +857,50 @@ "ParseFeatureNameError": "{package_name} není platný název funkce. Názvy funkcí musí být malé alfanumerické znaky + pomlčky a nesmí být vyhrazené (další informace najdete na adrese {url}).", "ParseIdentifierError": "{value} není platný identifikátor. Identifikátory musí být malé alfanumerické znaky + pomlčky a nesmí být vyhrazené (další informace najdete na adrese {url}).", "ParsePackageNameError": "{package_name} není platný název balíčku. Názvy balíčků musí být malé alfanumerické znaky + pomlčky a nesmí být vyhrazené (další informace najdete na adrese {url}).", + "ParsePackageNameNotEof": "očekával se konec vstupu při parsování názvu balíčku; obvykle to znamená, že uvedený znak není povolen v názvu portu. Všechny znaky v názvech portů jsou malé alfanumerické znaky + spojovníky a nejsou vyhrazené (další informace najdete na adrese {url}).", "ParsePackagePatternError": "{package_name} není platný vzor balíčku. Vzory balíčků musí používat jenom jeden zástupný znak (*) a musí to být poslední znak ve vzoru (další informace najdete na adrese {url}).", + "ParseQualifiedSpecifierNotEof": "očekával se konec vstupu při parsování specifikace balíčku; obvykle to znamená, že uvedený znak není povolen ve specifikaci balíčku. Názvy portů, tripletů a funkcí obsahují pouze malé alfanumerické znaky a spojovníky.", + "ParseQualifiedSpecifierNotEofSquareBracket": "Očekával se konec vstupu při parsování specifikace balíčku; neměli jste spíš na mysli {version_spec}?", "PathMustBeAbsolute": "Hodnota proměnné prostředí X_VCPKG_REGISTRIES_CACHE není absolutní: {path}", - "PerformingPostBuildValidation": "-- Provádí se ověření po sestavení.", - "PortBugAllowRestrictedHeaders": "Za výjimečných okolností se tyto zásady dají zakázat přes {env_var}.", - "PortBugBinDirExists": "Ve statickém sestavení by neměl být žádný adresář bin\\, ale existuje cesta {path}.", - "PortBugDebugBinDirExists": "Ve statickém sestavení by neměl být žádný adresář debug\\bin\\, ale existuje cesta {path}.", - "PortBugDebugShareDir": "/debug/share by neměl existovat. Přeuspořádejte prosím všechny důležité soubory a pak použijte\nsoubor (REMOVE_RECURSE ${{CURRENT_PACKAGES_DIR}}/debug/share).", - "PortBugDllAppContainerBitNotSet": "Bit kontejneru aplikací musí být nastavený pro aplikace pro Windows Store. Následující knihovny DLL nemají nastavený bit kontejneru aplikací:", - "PortBugDllInLibDir": "V souboru /lib nebo /debug/lib byly nalezeny následující knihovny DLL. Přesuňte je prosím do /bin nebo /debug/bin.", - "PortBugDuplicateIncludeFiles": "Zahrnuté soubory by se neměly duplikovat do adresáře /debug/include. Pokud to nejde v nástroji cmake projektu zakázat, použijte\nfile(REMOVE_RECURSE ${{CURRENT_PACKAGES_DIR}}/debug/include).", - "PortBugFoundCopyrightFiles": "Následující soubory jsou potenciální soubory autorských práv:", - "PortBugFoundDebugBinaries": "Nalazlo se {count} ladicích binárních souborů:", - "PortBugFoundDllInStaticBuild": "Knihovny DLL by neměly být přítomny ve statickém sestavení, ale byly nalezeny následující knihovny DLL:", - "PortBugFoundEmptyDirectories": "V cestě {path} by neměly být žádné prázdné adresáře. Byly nalezeny následující prázdné adresáře:", - "PortBugFoundExeInBinDir": "V parametrech /bin nebo /debug/bin byly nalezeny následující objekty EXE. Objekty EXE nejsou platné distribuční cíle.", - "PortBugFoundReleaseBinaries": "Nalezlo se {count} binárních souborů verze:", - "PortBugIncludeDirInCMakeHelperPort": "Složka /include existuje v pomocném portu cmake; toto není správné, protože by se měly instalovat jenom soubory cmake.", - "PortBugInspectFiles": "Pokud chcete zkontrolovat soubory {extension}, použijte:", - "PortBugInvalidCrtLinkage": "Následující binární soubory by měly používat crt {expected}.", - "PortBugInvalidCrtLinkageEntry": "{path} odkazuje na:", - "PortBugKernel32FromXbox": "Vybraný triplet cílí na Xbox, ale následující knihovny DLL jsou propojeny s kernel32. Tyto knihovny DLL nelze načíst na konzoli Xbox, kde není k dispozici kernel32. To je obvykle způsobeno propojením s kernel32.lib namísto vhodné knihovny umbrella, jako je onecore_apiset.lib nebo xgameplatform.lib.", - "PortBugMergeLibCMakeDir": "Složka /lib/cmake by se měla sloučit s /debug/lib/cmake a přesunout do složky /share/{package_name}/cmake. Použijte pomocnou funkci vcpkg_cmake_config_fixup() z portu vcpkg-cmake-config.", - "PortBugMismatchedNumberOfBinaries": "Neshoduje se počet binárních souborů ladění a vydání.", - "PortBugMisplacedCMakeFiles": "Následující soubory cmake byly nalezeny mimo /share/{spec}. Umístěte prosím soubory cmake do složky /share/{spec}.", - "PortBugMisplacedFiles": "Následující soubory jsou umístěny v cestě {path}:", - "PortBugMisplacedFilesCont": "V těchto adresářích nemůžou být soubory.", - "PortBugMisplacedPkgConfigFiles": "Adresáře pkgconfig by měly být jedním ze share/pkgconfig (jenom pro knihovny hlaviček), lib/pkgconfig nebo lib/debug/pkgconfig. Byly nalezeny následující chybně umístěné soubory pkgconfig:", + "PerformingPostBuildValidation": "Provádí se ověření po sestavení.", + "PortBugBinDirExists": "${{CURRENT_PACKAGES_DIR}}/{path} existuje, ale nesmí se nacházet ve statickém sestavení. Pokud chcete tuto zprávu potlačit, přidejte set(VCPKG_POLICY_DLLS_IN_STATIC_LIBRARY enabled)", + "PortBugDebugShareDir": "${{CURRENT_PACKAGES_DIR}}/debug/share nesmí existovat. Přeuspořádejte prosím všechny důležité soubory a pak odstraňte všechny zbývající soubory tak, že přidáte file(REMOVE_RECURSE \"${{CURRENT_PACKAGES_DIR}}/debug/share\"). Pokud chcete tuto zprávu potlačit, přidejte set(VCPKG_POLICY_ALLOW_DEBUG_SHARE enabled)", + "PortBugDllAppContainerBitNotSet": "Bit kontejneru aplikací musí být nastavený pro všechny knihovny DLL v aplikacích pro Windows Store a triplet vyžaduje cílení na Windows Store, ale následující knihovny DLL nebyly sestaveny se sadou bitů. To obvykle znamená, že příznaky linkeru sady nástrojů nejsou správně šířeny nebo použitý linker nepodporuje přepínač /APPCONTAINER. Pokud chcete tuto zprávu potlačit, přidejte set(VCPKG_POLICY_SKIP_APPCONTAINER_CHECK enabled)", + "PortBugDllInLibDir": "V souboru ${{CURRENT_PACKAGES_DIR}}/lib nebo ${{CURRENT_PACKAGES_DIR}}/debug/lib byly nalezeny následující knihovny DLL. Přesuňte je prosím do ${{CURRENT_PACKAGES_DIR}}/bin nebo ${{CURRENT_PACKAGES_DIR}}/debug/bin.", + "PortBugDuplicateIncludeFiles": "${{CURRENT_PACKAGES_DIR}}/debug/include nesmí existovat. Pokud chcete tuto zprávu potlačit, přidejte set(VCPKG_POLICY_ALLOW_DEBUG_INCLUDE enabled)", + "PortBugDuplicateIncludeFilesFixIt": "Pokud byl tento adresář vytvořen sestavovacím systémem, který neumožňuje zakázat instalaci hlaviček v režimu ladění, odstraňte duplicitní adresář pomocí file(REMOVE_RECURSE \"${{CURRENT_PACKAGES_DIR}}/debug/include\").", + "PortBugFoundCopyrightFiles": "následující soubory jsou potenciální soubory copyright", + "PortBugFoundDebugBinaries": "Následují binární soubory ladění:", + "PortBugFoundDllInStaticBuild": "Knihovny DLL by neměly být přítomny ve statickém sestavení, ale byly nalezeny následující knihovny DLL. Pokud chcete tuto zprávu potlačit, přidejte set(VCPKG_POLICY_DLLS_IN_STATIC_LIBRARY enabled)", + "PortBugFoundEmptyDirectories": "Neměly by existovat žádné nainstalované prázdné adresáře. Prázdné adresáře nejsou reprezentovatelné pro několik zprostředkovatelů mezipaměti binárních souborů, úložišť git a nejsou považovány za sémantické výstupy sestavení. V jednotlivých prázdných adresářích byste měli buď vytvořit běžný soubor, nebo byste je měli je odstranit pomocí následujícího příkazu CMake. Pokud chcete tuto zprávu potlačit, přidejte set(VCPKG_POLICY_ALLOW_EMPTY_FOLDERS enabled)", + "PortBugFoundExeInBinDir": "V ${{CURRENT_PACKAGES_DIR}}/bin nebo ${{CURRENT_PACKAGES_DIR}}/debug/bin byly nalezeny následující spustitelné soubory. Spustitelné soubory nejsou platné cíle distribuce. Pokud jsou tyto spustitelné soubory nástroje sestavení, zvažte možnost použít vcpkg_copy_tools. Pokud chcete tuto zprávu potlačit, přidejte set(VCPKG_POLICY_ALLOW_EXES_IN_BIN enabled)", + "PortBugFoundReleaseBinaries": "Následují binární soubory verze:", + "PortBugIncludeDirInCMakeHelperPort": "Složka ${{CURRENT_PACKAGES_DIR}}/include existuje v pomocném portu CMake; toto není správné, protože by se měly instalovat jenom soubory CMake. Pokud chcete tuto zprávu potlačit, odeberte set(VCPKG_POLICY_CMAKE_HELPER_PORT enabled).", + "PortBugInvalidCrtLinkageCrtGroup": "Následující binární soubory by měly být propojeny pouze s: {expected}", + "PortBugInvalidCrtLinkageEntry": "{path} se propojuje s: {actual}", + "PortBugInvalidCrtLinkageHeader": "binární soubory vytvořené tímto portem se propojí s objekty CRT (C RunTimes), které nejsou konzistentní s těmi, které jsou požadovány tripletem a strukturou nasazení. Pokud má triplet používat pouze CRT pro verze, měli byste do souboru .cmake přidat set(VCPKG_POLICY_ONLY_RELEASE_CRT enabled). Pokud chcete tuto kontrolu zcela potlačit, přidejte set(VCPKG_POLICY_SKIP_CRT_LINKAGE_CHECK enabled), a to buď do souboru .cmake pro celý triplet, nebo do souboru portfile.cmake, pokud je tato kontrola specifická pro daný port. Binární soubory můžete zkontrolovat pomocí dumpbin.exe /directives mylibfile.lib.", + "PortBugKernel32FromXbox": "Vybraný triplet cílí na Xbox, ale následující knihovny DLL se propojují s kernel32. Tyto knihovny DLL nejde načíst na Xboxu, kde kernel32 není k dispozici. To je obvykle způsobeno propojením s kernel32.lib namísto vhodné knihovny umbrella, jako je onecore_apiset.lib nebo xgameplatform.lib. Závislosti knihovny DLL můžete zkontrolovat pomocí dumpbin.exe /dependents mylibfile.dll. Pokud chcete tuto zprávu potlačit, přidejte set(VCPKG_POLICY_ALLOW_KERNEL32_FROM_XBOX enabled)", + "PortBugMergeLibCMakeDir": "Tento port vytvoří ${{CURRENT_PACKAGES_DIR}}/lib/cmake a/nebo{{CURRENT_PACKAGES_DIR}}$ /debug/lib/cmake, které by se měly sloučit a přesunout do ${{CURRENT_PACKAGES_DIR}}/share/${{PORT}}/cmake. Použijte prosím pomocnou funkci vcpkg_cmake_config_fixup() z portu vcpkg-cmake-config. Pokud chcete tuto zprávu potlačit, přidejte set(VCPKG_POLICY_SKIP_LIB_CMAKE_MERGE_CHECK enabled)", + "PortBugMismatchingNumberOfBinaries": "neshoduje se počet binárních souborů ladění a vydání. To často indikuje nesprávné zpracování ladění nebo vydání verze v souboru portfile.cmake nebo v sestavovacím systému. Pokud je záměrem vytvářet pro tento triplet pouze komponenty pro vydání, měli byste do souboru .cmake přidat set(VCPKG_BUILD_TYPE release). Pokud chcete tuto zprávu potlačit, přidejte set(VCPKG_POLICY_MISMATCHED_NUMBER_OF_BINARIES enabled)", + "PortBugMisplacedCMakeFiles": "Tento port instaluje následující soubory CMake na místa, kde se soubory CMake neočekávají. Soubory CMake by se měly nainstalovat do ${{CURRENT_PACKAGES_DIR}}/share/${{PORT}}. Pokud chcete tuto zprávu potlačit, přidejte set(VCPKG_POLICY_SKIP_MISPLACED_CMAKE_FILES_CHECK enabled)", + "PortBugMisplacedFiles": "Následující běžné soubory jsou nainstalovány do umístění, kde nemusí být nainstalovány běžné soubory. Ty by se měly nainstalovat v podadresáři. Pokud chcete tuto zprávu potlačit, přidejte set(VCPKG_POLICY_SKIP_MISPLACED_REGULAR_FILES_CHECK enabled)", + "PortBugMisplacedPkgConfigFiles": "Byly nainstalovány následující chybně umístěné adresáře pkgconfig. Chybně umístěné soubory pkgconfig nebudou správně nalezeny nástroji pkgconf nebo pkg-config. Adresáře pkgconfig by měly být ${{CURRENT_PACKAGES_DIR}}/share/pkgconfig (pouze pro knihovny nezávislé na architektuře / pouze header-only knihovny), ${{CURRENT_PACKAGES_DIR}}/lib/pkgconfig (pro závislosti na verzi) nebo ${{CURRENT_PACKAGES_DIR}}/debug/lib/pkgconfig (pro závislosti na ladění). Pokud chcete tuto zprávu potlačit, přidejte set(VCPKG_POLICY_SKIP_PKGCONFIG_CHECK enabled)", + "PortBugMissingCMakeHelperPortFile": "Soubor ${{CURRENT_PACKAGES_DIR}}/share/${{PORT}}/vcpkg-port-config.cmake neexistuje. Tento soubor musí existovat pro pomocné porty CMake. Pokud chcete tuto zprávu potlačit, odeberte set(VCPKG_POLICY_CMAKE_HELPER_PORT enabled)", "PortBugMissingDebugBinaries": "Binární soubory ladění nebyly nalezeny.", - "PortBugMissingFile": "Soubor /{path} neexistuje. Tento soubor musí existovat pro pomocné porty CMake.", - "PortBugMissingImportedLibs": "V {path} se nenacházely knihovny importu.\nPokud je to zamýšleno, přidejte do souboru portů následující řádek:\nset (VCPKG_POLICY_DLLS_WITHOUT_LIBS povoleno)", - "PortBugMissingIncludeDir": "Složka /include je prázdná nebo není k dispozici. To znamená, že knihovna nebyla správně nainstalována.", - "PortBugMissingLicense": "Softwarová licence musí být dostupná na adrese ${{CURRENT_PACKAGES_DIR}}/share/{package_name}/copyright.", - "PortBugMissingProvidedUsage": "Port poskytl \"usage\", ale zapomněl nainstalovat na /share/{package_name}/usage, přidejte do souboru portu portfile následující řádek:", + "PortBugMissingImportedLibs": "Vypadá to, že chybí knihovny importu pro nainstalované knihovny DLL. Pokud je to záměr, přidejte set(VCPKG_POLICY_DLLS_WITHOUT_LIBS enabled)", + "PortBugMissingIncludeDir": "Složka ${{CURRENT_PACKAGES_DIR}}/include je prázdná nebo neexistuje. To obvykle znamená, že nejsou správně nainstalované hlavičky. Pokud se jedná o pomocný port CMake, přidejte set(VCPKG_POLICY_CMAKE_HELPER_PORT enabled). Pokud se nejedná o pomocný port CMake, ale jedná se o záměr, potlačte tuto zprávu přidáním set(VCPKG_POLICY_EMPTY_INCLUDE_FOLDER enabled).", + "PortBugMissingLicense": "licence není nainstalovaná do ${{CURRENT_PACKAGES_DIR}}/share/${{PORT}}/copyright. Tento problém lze vyřešit přidáním volání do funkce vcpkg_install_copyright. Pokud chcete tuto zprávu potlačit, přidejte set(VCPKG_POLICY_SKIP_COPYRIGHT_CHECK enabled)", + "PortBugMissingLicenseFixIt": "Zvažte možnost přidat: {value}", + "PortBugMissingProvidedUsage": "tento port obsahuje soubor s názvem usage, ale nenainstaloval ho do ${{CURRENT_PACKAGES_DIR}}/share/${{PORT}}/usage. Pokud tento soubor nemá být textem „usage“, zvažte možnost zvolit jiný název. V opačném případě ho nainstalujte. Pokud chcete tuto zprávu potlačit, přidejte set(VCPKG_POLICY_SKIP_USAGE_INSTALL_CHECK enabled)", "PortBugMissingReleaseBinaries": "Binární soubory vydaných verzí nebyly nalezeny.", "PortBugMovePkgConfigFiles": "Soubory pkgconfig můžete přesunout pomocí podobných příkazů:", - "PortBugOutdatedCRT": "V následujících souborech byl zjištěn zastaralý dynamický crt:", - "PortBugRemoveBinDir": "Pokud se vytvoření bin\\ nebo debug\\bin\\ nedá zakázat, odeberte je pomocí této možnosti v souboru portu.", - "PortBugRemoveEmptyDirectories": "Pokud má být adresář naplněn, ale není, může to znamenat chybu v souboru portu.\n Pokud adresáře nepotřebujete a jejich vytváření nejde zakázat, odeberte je v souboru portů následujícím způsobem:", + "PortBugOutdatedCRT": "Byly nainstalovány knihovny DLL, které jsou propojeny se zastaralými knihovnami DLL C RunTime („CRT“). Nainstalované knihovny DLL by měly být propojeny s podporovanými objekty CRT. Závislosti knihovny DLL můžete zkontrolovat pomocí dumpbin.exe /dependents mylibfile.dll. Pokud používáte vlastní triplet, který cílí na starý objekt CRT, přidejte set(VCPKG_POLICY_ALLOW_OBSOLETE_MSVCRT enabled) do souboru .cmake pro triplet. Pokud chcete tuto zprávu pro tento port potlačit, přidejte set(VCPKG_POLICY_ALLOW_OBSOLETE_MSVCRT enabled)", + "PortBugRemoveBinDir": "pokud nelze vytváření těchto adresářů zakázat, můžete je odebrat přidáním následujícího nastavení do souboru portfile.cmake.", "PortBugRemoveEmptyDirs": "file(REMOVE_RECURSE prázdné adresáře, které ponechala výše uvedená přejmenování)", - "PortBugRestrictedHeaderPaths": "Následující omezená záhlaví můžou zabránit správnému kompilaci základního modulu runtime C++ a dalších balíčků. Za výjimečných okolností je možné tuto politiku zakázat nastavením proměnné CMake VCPKG_POLICY_ALLOW_RESTRICTED_HEADERS v souboru portfile.cmake.", - "PortBugSetDllsWithoutExports": "Knihovny DLL bez exportů jsou pravděpodobně chybou ve skriptu sestavení. Pokud je to záměrné, přidejte do souboru portfile:\nset(VCPKG_POLICY_DLLS_WITHOUT_EXPORTS povoleno).\nNásledující knihovny DLL nemají žádné exporty:", + "PortBugRestrictedHeaderPaths": "Použitím následujících omezených hlaviček lze zabránit správné kompilaci základního modulu runtime C++ a dalších balíčků. Místo toho by měly být přejmenovány nebo uloženy v podadresáři. Za výjimečných okolností lze toto upozornění potlačit přidáním set(VCPKG_POLICY_ALLOW_RESTRICTED_HEADERS enabled)", + "PortBugRestrictedHeaderPathsNote": "hlavičky jsou tady relativní vzhledem k ${{CURRENT_PACKAGES_DIR}}/include", + "PortBugSetDllsWithoutExports": "následující knihovny DLL byly sestaveny bez jakýchkoli exportů. Knihovny DLL bez exportů jsou pravděpodobně chybami ve skriptu sestavení. Pokud je to záměr, přidejte set(VCPKG_POLICY_DLLS_WITHOUT_EXPORTS enabled)", + "PortDeclaredHere": "tady se deklaruje {package_name}", "PortDependencyConflict": "{package_name} portu má následující nepodporované závislosti:", "PortDoesNotExist": "{package_name} neexistuje.", "PortMissingManifest2": "Chybí manifest portu {package_name} (žádný soubor vcpkg.json ani CONTROL)", @@ -932,7 +910,6 @@ "PortVersionControlMustBeANonNegativeInteger": "„Port-Version“ musí být nezáporné celé číslo.", "PortVersionMultipleSpecification": "port_version\" nejde kombinovat s vloženým # ve verzi.", "PortsAdded": "Přidaly se tyto porty (celkem {count}):", - "PortsDiffHelp": "Aby šel rezervovat, argument by měl být větev, značka nebo hodnota hash.", "PortsNoDiff": "Mezi těmito dvěma potvrzeními nedošlo k žádným změnám portů.", "PortsRemoved": "Odebraly se tyto porty (celkem {count}):", "PortsUpdated": "Aktualizovaly se tyto porty (celkem {count}):", @@ -957,7 +934,6 @@ "RestoredPackagesFromNuGet": "Počet obnovených balíčků z NuGetu: {count} za {elapsed} Pokud si chcete zobrazit další podrobnosti, použijte --debug.", "ResultsHeader": "VÝSLEDKY", "ScriptAssetCacheRequiresScript": "Očekávané argumenty: konfigurace prostředků x-script vyžaduje přesně šablonu exec jako argument.", - "SearchHelp": "Argument by měl být podřetězec, který se má vyhledat, nebo žádný argument pro zobrazení všech knihoven.", "SecretBanner": "*** TAJNÝ KÓD ***", "SeeURL": "Další informace najdete na adrese {url}.", "SerializedBinParagraphHeader": "\nSerializovaný binární odstavec", @@ -966,6 +942,7 @@ "ShaPassedWithConflict": "Algoritmus SHA512 proběhl úspěšně, ale předal se i parametr --skip-sha512; můžete udělat jen jedno nebo druhé.", "ShallowRepositoryDetected": "Vcpkg se naklonoval jako mělké úložiště v: {path}\nZkuste to znovu s úplným klonem vcpkg.", "SkipClearingInvalidDir": "Vymazání obsahu cesty {path} se přeskakuje, protože se nejedná o adresář.", + "SkippingPostBuildValidationDueTo": "Kvůli {cmake_var} se přeskočí ověřování po sestavení.", "SourceFieldPortNameMismatch": "Pole Source v souboru CONTROL nebo pole name v souboru vcpkg.json má název {package_name} a neodpovídá adresáři portu {path}.", "SpecifiedFeatureTurnedOff": "Funkce {command_name} je konkrétně vypnutá, ale zadala se možnost --{option}.", "SpecifyHostArch": "Hostující trojčata. Viz vcpkg help triplet (výchozí: {env_var})", @@ -973,10 +950,8 @@ "StartCodeUnitInContinue": "našla se jednotka počátečního kódu na pozici pro pokračování", "StoreOptionMissingSha": "Možnost --store je bez sha512 neplatná.", "StoredBinariesToDestinations": "Uložené binární soubory v(e) {count} cílech v {elapsed}.", - "StoredBinaryCache": "Uložená binární mezipaměť: {path}", "SuccessfulyExported": "{package_name} se exportoval do cesty {path}.", "SuggestGitPull": "Výsledek může být zastaralý. Nejnovější výsledky získáte spuštěním příkazu git pull.", - "SuggestResolution": "Pokud se chcete pokusit vyřešit všechny chyby najednou, spusťte:\nvcpkg {command_name} --{option}", "SuggestStartingBashShell": "Tato změna se projeví až po spuštění nového prostředí Bash.", "SupportedPort": "Podporuje se {package_name} portu.", "SwitchUsedMultipleTimes": "příkaz switch {option} se zadal vícekrát", @@ -1004,7 +979,6 @@ "UnexpectedByteSize": "Očekávalo se, že se zapíše tento počet bajtů: {expected}, ale zapisovaly se {actual}.", "UnexpectedCharExpectedCloseBrace": "Neočekávaný znak; Očekávaná vlastnost nebo pravá složená závorka", "UnexpectedCharExpectedColon": "Neočekávaný znak; Očekávala se dvojtečka.", - "UnexpectedCharExpectedComma": "Neočekávaný znak; Očekávala se čárka nebo pravá složená závorka", "UnexpectedCharExpectedName": "Neočekávaný znak; Očekával se název vlastnosti.", "UnexpectedCharExpectedValue": "Neočekávaný znak; Očekávaná hodnota", "UnexpectedCharMidArray": "Neočekávaný znak uprostřed pole", @@ -1023,15 +997,11 @@ "UnexpectedEOFMidKeyword": "Neočekávaný EOF uprostřed klíčového slova", "UnexpectedEOFMidString": "Neočekávaný EOF uprostřed řetězce", "UnexpectedEOFMidUnicodeEscape": "Neočekávaný konec souboru uprostřed řídicího znaku Unicode", - "UnexpectedErrorDuringBulkDownload": "při hromadném stahování došlo k neočekávané chybě.", "UnexpectedEscapeSequence": "Neočekávané pokračování řídicí sekvence", - "UnexpectedExtension": "Neočekávaná přípona archivu: {extension}", - "UnexpectedFeatureList": "neočekávaný seznam funkcí", "UnexpectedField": "neočekávané pole {json_field}", "UnexpectedFieldSuggest": "neočekávané pole {json_field}, měli jste na mysli {value}?", "UnexpectedFormat": "Očekávaný formát je [{expected}], byl ale [{actual}].", "UnexpectedOption": "neočekávaná možnost: {option}", - "UnexpectedPlatformExpression": "neočekávaný výraz platformy", "UnexpectedPortName": "Port {expected} je v cestě {path} deklarovaný jako {actual}.", "UnexpectedPortversion": "Neočekávaná verze portu bez pole správy verzí", "UnexpectedSwitch": "neočekávaný příkaz switch: {option}", @@ -1040,9 +1010,8 @@ "UnknownBaselineFileContent": "nerozpoznatelná položka směrného plánu; očekávalo se port:triplet=(fail|skip|pass)", "UnknownBinaryProviderType": "Neznámý typ binárního zprostředkovatele: platní zprostředkovatelé jsou clear, default, nuget, nugetconfig, nugettimeout, interactive, x-azblob, x-gcs, x-aws, x-aws-config, http a files.", "UnknownBooleanSetting": "neznámé nastavení logického operátoru pro možnost {option}: „{value}“. Platné hodnoty jsou 1, 0, ON, OFF, TRUE a FALSE, nebo prázdné.", - "UnknownOptions": "Neznámé možnosti pro příkaz {command_name}:", "UnknownParameterForIntegrate": "Neznámý parametr {value} pro integraci.", - "UnknownPolicySetting": "Neznámé nastavení pro zásadu {value}: {option}", + "UnknownPolicySetting": "Neznámé nastavení {cmake_var}: {value}. Platné hodnoty zásady jsou disabled a enabled.", "UnknownSettingForBuildType": "Neznámé nastavení pro VCPKG_BUILD_TYPE {option}. Platné nastavení jsou '', 'debug' a 'release'.", "UnknownTool": "Vcpkg nemá definici tohoto nástroje pro tuto platformu.", "UnknownTopic": "neznámé téma {value}", @@ -1054,7 +1023,6 @@ "UnsupportedFeatureSupportsExpressionWarning": "{feature_spec} se podporuje jenom u {supports_expression}, která neodpovídá {triplet}. To obvykle znamená, že při sestavování jiných platforem dochází ke známým selháním sestavení nebo problémům s moduly runtime. Přesto probíhá kvůli --allow-unsupported.", "UnsupportedPort": "Nepodporuje se {package_name} portu.", "UnsupportedPortDependency": "- {value} závislostí se nepodporuje.", - "UnsupportedShortOptions": "krátké možnosti se nepodporují: {value}", "UnsupportedSyntaxInCDATA": "]]> se v bloku CDATA nepodporuje.", "UnsupportedSystemName": "Nepovedlo se namapovat VCPKG_CMAKE_SYSTEM_NAME {system_name} na platformu vcvarsall. Podporované názvy systémů jsou „“, „Windows“ a „WindowsStore“.", "UnsupportedToolchain": "v trojitém {triplet}: Nepovedlo se najít platnou sadu nástrojů pro požadovanou cílovou architekturu {arch}.\nVybraná instance Visual Studio je na: {path}\nDostupné kombinace sad nástrojů: {list}", @@ -1068,21 +1036,18 @@ "UpdateBaselineUpdatedBaseline": "aktualizovala se '{url}' registru: směrný plán '{old_value}' -> '{new_value}'", "UpgradeInManifest": "Upgrade upgraduje instalaci klasického režimu, a proto nepodporuje režim manifestu. Zvažte aktualizaci závislostí aktualizací směrného plánu na aktuální hodnotu pomocí vcpkg x-update-baseline a spuštěním instalace vcpkg.", "UpgradeRunWithNoDryRun": "Pokud jste si jistí, že chcete výše uvedené balíčky znovu sestavit, spusťte tento příkaz s možností --no-dry-run.", - "UploadedBinaries": "Binární soubory se nahrály do {count} {vendor}.", - "UploadedPackagesToVendor": "Počet balíčků nahraných do {vendor} za {elapsed}: {count}", "UploadingBinariesToVendor": "Binární soubory pro {spec} se nahrávají do zdroje {vendor} {path}.", - "UploadingBinariesUsingVendor": "Nahrávají se binární soubory pro {spec} pomocí {vendor} {path}.", + "UsageInstallInstructions": "pomocí následujícího příkazu CMake můžete nainstalovat soubor usage", + "UsageTextHere": "tady je soubor usage", "UseEnvVar": "-- Používání {env_var} v proměnných prostředí.", "UserWideIntegrationDeleted": "Integrace na úrovni uživatele není nainstalována.", "UserWideIntegrationRemoved": "Integrace na úrovni uživatele byla odebrána.", - "UsingCommunityTriplet": "-- Používá se triplet {triplet} komunity. U této trojité konfigurace není zaručeno, že bude úspěšná.", "UsingManifestAt": "Používá se soubor manifestu na {path}.", "Utf8ConversionFailed": "Převod na UTF-8 se nezdařil", "VSExaminedInstances": "Zvažovaly se následující instance Visual Studio:", "VSExaminedPaths": "Následující cesty byly zkontrolovány pro Visual Studio instance:", "VSNoInstances": "Nepovedlo se najít úplnou instanci Visual Studio.", "VcpkgCeIsExperimental": "vcpkg-artifacts jsou experimentální a můžou se kdykoli změnit.", - "VcpkgCommitTableHeader": "Potvrzení VCPKG", "VcpkgCompletion": "Dokončení vcpkg {value} je už naimportováno do souboru {path}.\nByly nalezeny následující položky:", "VcpkgDisallowedClassicMode": "Nad aktuálním pracovním adresářem se nepovedlo najít manifest (vcpkg.json).\nTato distribuce vcpkg nemá instanci klasického režimu.", "VcpkgHasCrashed": "vcpkg se ukončil s chybou. Vytvořte prosím problém na https://github.com/microsoft/vcpkg se stručným souhrnem toho, co jste chtěli udělat, a následující informace.", @@ -1095,17 +1060,22 @@ "VcpkgUsage": "použití: vcpkg [--switches] [--options=values] [arguments] @response_file", "VcvarsRunFailed": "Spuštění souboru vcvarsall.bat za účelem získání prostředí Visual Studio se nezdařilo.", "VcvarsRunFailedExitCode": "Při pokusu o získání prostředí Visual Studio vrátil soubor vcvarsall.bat {exit_code}.", - "VersionBaselineMismatch": "Nejnovější verze je {expected}, ale soubor směrného plánu obsahuje {actual}.\nSpusťte:\n{package_name} vcpkg x-add-version\ngit add versions\ngit commit -m \"Aktualizovat databázi verzí\"\na aktualizujte verzi směrného plánu.", + "VersionBaselineMatch": "{version_spec} odpovídá aktuální základní konfiguraci", + "VersionBaselineMismatch": "{package_name} má přiřazený port {actual}, ale místní port je {expected}", "VersionBuiltinPortTreeEntryMissing": "žádná položka databáze verzí pro {package_name} v {expected}; pomocí verze stromové struktury rezervovaných portů ({actual}).", "VersionCommandHeader": "Verze {version} programu pro správu balíčků vcpkg\n\nInformace o licenci najdete v LICENSE.txt.", "VersionConflictXML": "Byla očekávána verze {path}: [{expected_version}], ale byla [{actual_version}]. Spusťte prosím znovu bootstrap-vcpkg.", + "VersionConstraintNotInDatabase1": "omezení \"version>=\" pro {package_name} uvádí verzi {version}, která v databázi verzí neexistuje. Všechny verze musí existovat v databázi verzí, aby je vcpkg mohl interpretovat.", + "VersionConstraintNotInDatabase2": "zvažte odebrání omezení verze nebo zvolte zde deklarovanou hodnotu", + "VersionConstraintOk": "všechna omezení verze jsou konzistentní s databází verzí", "VersionConstraintPortVersionMustBePositiveInteger": "portport-version (za #) ve „version>=“ musí být kladné celé číslo.", - "VersionConstraintUnresolvable": "Nelze přeložit minimální omezení pro závislost {package_name} ze specifikace {spec}.\nZávislost nebyla ve směrném plánu nalezena, což znamená, že balíček v té době neexistoval. To může být opraveno zadáním verze explicitního přepsání v poli „overrides“ nebo aktualizací směrného plánu.\nDalší informace najdete v nápovědě k „správě verzí vcpkg“.", "VersionConstraintViolated": "Očekávalo se, že závislost {spec} bude alespoň verze {expected_version}, ale aktuálně je {actual_version}.", "VersionDatabaseEntryMissing": "ve verzi {version} není pro {package_name} žádná položka verze.", - "VersionDatabaseFileMissing": "{package_name} v {path} postrádá soubor databáze verzí.\nSpusťte:\n{package_name} vcpkg x-add-version\na vytvořte soubor verzí.", + "VersionDatabaseFileMissing": "tento port není v databázi verzí", + "VersionDatabaseFileMissing2": "tady by měl být soubor databáze verzí", + "VersionDatabaseFileMissing3": "spuštěním příkazu {command_line} vytvořte soubor s databází verzí", "VersionGitEntryMissing": "ve verzi {version} není pro {package_name} žádná položka databáze verzí.\nDostupné verze:", - "VersionInDeclarationDoesNotMatch": "Verze deklarovaná v souboru neodpovídá rezervované verzi: {version}", + "VersionInDeclarationDoesNotMatch": "podle deklarace má {git_tree_sha} obsahovat {expected}, ale zdá se, že obsahuje {actual}", "VersionIncomparable1": "Konflikt verzí na {spec}: {constraint_origin} vyžaduje {expected}, což se nedá porovnat se standardní verzí {actual}.", "VersionIncomparable2": "{version_spec} má schéma {new_scheme}", "VersionIncomparable3": "Tento problém lze vyřešit přidáním explicitního přepsání do upřednostňované verze. Například:", @@ -1117,17 +1087,29 @@ "VersionInvalidSemver": "{version} není platná sémantická verze, řiďte se .", "VersionMissing": "očekávalo se pole správy verzí (jedna verze, datum verze, verze semver nebo řetězec verze).", "VersionMissingRequiredFeature": "{version_spec} nemá požadovanou funkci {feature}, kterou {constraint_origin} potřebuje.", - "VersionNotFound": "{expected} není k dispozici, k dispozici je pouze {actual}", - "VersionNotFoundInVersionsFile": "Verze {version} se nenašla v souboru verzí pro {package_name}.\nSpuštěním příkazu:\nvcpkg x-add-version {package_name}\npřidáte novou verzi portu.", + "VersionNotFoundInVersionsFile2": "verze {version_spec} nebyla v databázi verzí nalezena", + "VersionNotFoundInVersionsFile3": "verze by měla být v tomto souboru", + "VersionNotFoundInVersionsFile4": "spuštěním příkazu {command_line} přidejte novou verzi portu", + "VersionOverrideNotInVersionDatabase": "přepsání verze {package_name} neexistuje v databázi verzí; existuje daný port?", + "VersionOverrideVersionNotInVersionDatabase1": "přepsání {package_name} uvádí verzi {version}, která v databázi verzí neexistuje. Instalace tohoto portu na nejvyšší úrovni se nezdaří, protože tato verze nebude přeložitelná.", + "VersionOverrideVersionNotInVersionDatabase2": "zvažte odebrání přepsání verze nebo zvolte zde deklarovanou hodnotu", + "VersionOverwriteVersion": "{version_spec} můžete přepsat správnými místními hodnotami spuštěním následujícího příkazu:", "VersionRejectedDueToBaselineMissing": "Cesta {path} byla odmítnuta, protože používá {json_field} a nemá předdefinovaný směrný plán. Tento problém můžete vyřešit odebráním použití {json_field} nebo přidáním předdefinovaného směrného plánu.\nDalší informace najdete v vcpkg help versioning.", "VersionRejectedDueToFeatureFlagOff": "Cesta {path} byla odmítnuta, protože používá {json_field} a příznak funkce verze je zakázán. Tento problém můžete vyřešit odebráním {json_field} nebo povolením příznaku funkce verze.\nDalší informace najdete v tématu vcpkg help versioning.", - "VersionSchemeMismatch": "Databáze verzí deklaruje verzi {version} jako {expected}, ale {path} ji deklaruje jako {actual}. Verze musí být jedinečné, i když jsou deklarované s různými schématy.\nSpustit:\nvcpkg x-add-version {package_name} --overwrite-version\nza účelem přepsání schématu deklarovaného v databázi verzí schématem deklarovaným v portu.", - "VersionShaMismatch": "verze {version} se deklaruje jako {expected}, ale místní port má jinou SHA {actual}.\nAktualizujte prosím pole verze portu a spusťte:\n{package_name} vcpkg x-add-version\ngit add versions\ngit commit -m \"Aktualizovat databázi verzí\"\na přidejte novou verzi.", - "VersionShaMissing": "při ověřování {package_name}, chybí Git SHA.\nSpusťte:\ngit add \"{path}\"\ngit commit -m \"wip\"\nvcpkg x-add-version {package_name}\ngit add versions\ngit commit --amend -m \"[{package_name}] Přidat nový port\"\na potvrďte nový port a vytvořte jeho soubor verze.", + "VersionSchemeMismatch1": "{version} má deklaraci {expected}, ale {package_name} má deklaraci {actual}", + "VersionSchemeMismatch1Old": "{version} má deklaraci {expected}, ale {package_name}@{git_tree_sha} má deklaraci {actual}", + "VersionSchemeMismatch2": "verze musí být jedinečné, i když jsou deklarované s různými schématy", + "VersionShaMismatch1": "{git_tree_sha} stromu git {version_spec} neodpovídá adresáři portu", + "VersionShaMismatch2": "adresář portu má strom git {git_tree_sha}", + "VersionShaMismatch3": "pokud je již verze {version_spec} publikovaná, aktualizujte tento soubor novou verzí nebo verzí portu, potvrďte ji a pak přidejte novou verzi spuštěním následujícího příkazu:", + "VersionShaMismatch4": "pokud ještě verze {version_spec} není publikovaná, přepište předchozí strom git spuštěním následujícího příkazu:", + "VersionShaMissing1": "nebylo možné určit strom git adresáře portu. To je obvykle způsobeno nepotvrzenými změnami.", + "VersionShaMissing2": "změny můžete potvrdit a přidat je do databáze verzí spuštěním následujícího příkazu:", + "VersionShaMissing3": "wip", + "VersionShaMissing4": "[{package_name}] Přidat nový port", "VersionSharpMustBeFollowedByPortVersion": "Za # musí v textu verze následovat verze portu", "VersionSharpMustBeFollowedByPortVersionNonNegativeInteger": "Za # musí v textu verze následovat verze portu (nezáporné celé číslo)", "VersionSpecMismatch": "Nepodařilo se načíst port, protože verze jsou nekonzistentní. Soubor „{path}“ obsahuje verzi {actual_version}, ale databáze verzí uvádí, že by to měla být {expected_version}.", - "VersionTableHeader": "Verze", "VersionVerifiedOK": "{version_spec} je správně ve verzi databáze ({git_tree_sha}).", "WaitingForChildrenToExit": "Čeká se na ukončení podřízených procesů…", "WaitingToTakeFilesystemLock": "čeká se na uzamčení systému souborů na {path}…", @@ -1136,8 +1118,7 @@ "WhileCheckingOutBaseline": "při rezervaci směrného plánu {commit_sha}", "WhileCheckingOutPortTreeIsh": "při přechodu na aktuální port {package_name} se stromem Gitu {git_tree_sha}", "WhileGettingLocalTreeIshObjectsForPorts": "při získávání místních stromových objektů pro porty", - "WhileLoadingLocalPort": "při pokusu o načtení místního portu {package_name}", - "WhileLoadingPortFromGitTree": "při pokusu o načtení portu z: {commit_sha}", + "WhileLoadingBaselineVersionForPort": "při načítání základní verze pro {package_name}", "WhileLoadingPortVersion": "při načítání {version_spec}", "WhileLookingForSpec": "při hledání {spec}:", "WhileParsingVersionsForPort": "při parsování verzí pro {package_name} z {path}", @@ -1165,7 +1146,7 @@ "descriptionShouldBeOfTypestringFound$": "popis by měl být typu string, našlo se: ${p0}.", "optionsShouldBeASequenceFound$": "možnosti by měly být sekvence, našlo se : ${p0}.", "DuplicateKeysDetectedInManifest$": "V manifestu se zjistily duplicitní klíče: ${p0}.", - "noPostscriptFileRerunWithTheVcpkgShellFunctionRatherThanExecutable": "žádný postscriptový soubor: spusťte ho znovu s funkcí prostředí vcpkg místo spustitelného souboru.", + "noPostscriptFileRunVcpkgshellWithTheSameArguments": "žádný postscriptový soubor: spusťte příkaz vcpkg-shell se stejnými argumenty", "DuplicateDefine$DuringActivationNewValueWillReplaceOld": "Duplicitní definice ${p0} během aktivace. Nová hodnota nahradí starou hodnotu.", "DuplicateToolDeclared$DuringActivationNewValueWillReplaceOld": "Během aktivace se deklaroval duplicitní nástroj ${p0}. Nová hodnota nahradí starou hodnotu.", "DuplicateAliasDeclared$DuringActivationNewValueWillReplaceOld": "Během aktivace se deklaroval duplicitní alias ${p0}. Nová hodnota nahradí starou hodnotu.", @@ -1257,7 +1238,7 @@ "MultipleArtifactsSpecifiedButNotAnEqualNumberOf$Switches": "Zadalo se více artefaktů, ale ne stejný počet přepínačů ${p0}.", "TriedToAddAnArtifact$$ButCouldNotDetermineTheRegistryToUse": "Pokusili jste se přidat artefakt [${p0}]:${p1}, ale nepovedlo se určit registr, který se má použít.", "TriedToAddRegistry$As$ButItWasAlready$PleaseAdd$ToThisProjectManuallyAndReattempt": "Pokusili jste se přidat registr ${p0} jako ${p1}, ale už to bylo ${p2}. Přidejte prosím ${p3} do tohoto projektu ručně a zkuste to znovu.", - "RunvcpkgActivateToApplyToTheCurrentTerminal": "Spuštěním příkazu \\'vcpkg activate\\ použijte aktuální terminál.", + "RunvcpkgshellActivateToApplyToTheCurrentTerminal": "Spuštěním příkazu vcpkg-shell activate použijte aktuální terminál.", "DownloadsFolderCleared$": "Složka Stažené soubory se vymazala (${p0}). ", "InstalledArtifactFolderCleared$": "Složka nainstalovaného artefaktu se vymazala (${p0}). ", "CacheFolderCleared$": "Složka mezipaměti se vymazala (${p0}). ", diff --git a/locales/messages.de.json b/locales/messages.de.json index c16f62529d..66f68d639b 100644 --- a/locales/messages.de.json +++ b/locales/messages.de.json @@ -46,7 +46,6 @@ "AVersionOfAnyType": "eine Version eines beliebigen Typs", "AddArtifactOnlyOne": "„{command_line}“ kann jeweils nur ein Artefakt auf einmal hinzufügen.", "AddCommandFirstArg": "Der erste hinzuzufügende Parameter muss \"artifact\" oder \"port\" sein.", - "AddFirstArgument": "Das erste Argument für „{command_line}“ muss „artifact“ oder „port“ sein.", "AddPortRequiresManifest": "„{command_line}“ erfordert eine aktive Manifestdatei.", "AddPortSucceeded": "Der Datei „vcpkg.json“ konnten erfolgreich Ports hinzugefügt werden.", "AddRecurseOption": "Wenn Sie sicher sind, dass Sie sie entfernen möchten, führen Sie den Befehl mit der Option „--recurse“ aus.", @@ -54,12 +53,11 @@ "AddVersionAddedVersionToFile": "Version {version} zu {path} hinzugefügt", "AddVersionArtifactsOnly": "--version ist nur Artefakte und kann nicht mit vcpkg-Hinzufügungport verwendet werden.", "AddVersionCommitChangesReminder": "Haben Sie daran gedacht, Ihre Änderungen zu übernehmen?", - "AddVersionCommitResultReminder": "Vergessen Sie nicht, das Ergebnis zu committen!", "AddVersionDetectLocalChangesError": "Die Erkennung lokaler Änderungen wird aufgrund eines unerwarteten Formats in der Git-Statusausgabe übersprungen", "AddVersionFileNotFound": "Die erforderliche Datei \"{path}\" wurde nicht gefunden", "AddVersionFormatPortSuggestion": "Führen Sie \"{command_line}\" aus, um die Datei zu formatieren", "AddVersionIgnoringOptionAll": "--{option} wird ignoriert, da ein Portnamenargument angegeben wurde", - "AddVersionLoadPortFailed": "Port {package_name} kann nicht geladen werden", + "AddVersionInstructions": "Sie können die folgenden Befehle ausführen, um die aktuelle Version von „{package_name}“ automatisch hinzuzufügen:", "AddVersionNewFile": "(neue Datei)", "AddVersionNewShaIs": "Neues SHA: {commit_sha}", "AddVersionNoFilesUpdated": "Es wurden keine Dateien aktualisiert", @@ -70,8 +68,8 @@ "AddVersionPortFilesShaChanged": "Eingecheckte Dateien für {package_name} wurden geändert, aber die Version wurde nicht aktualisiert", "AddVersionPortFilesShaUnchanged": "Eingecheckte Dateien für {package_name} sind gegenüber Version {version} unverändert", "AddVersionPortHasImproperFormat": "{package_name} ist nicht ordnungsgemäß formatiert", - "AddVersionSuggestNewVersionScheme": "Verwenden Sie das Versionsschema „{new_scheme}“ anstelle von „{old_scheme}“ in Port „{package_name}“.\nVerwenden Sie --{option}, um diese Überprüfung zu deaktivieren.", - "AddVersionUnableToParseVersionsFile": "Die Versionsdatei \"{path}\" kann nicht analysiert werden", + "AddVersionSuggestVersionDate": "Das Versionsformat von „{package_name}“ verwendet „version-string“, das Format ist jedoch als „version-date“ zulässig. Wenn dieses Format tatsächlich als ISO 8601-Datum vorgesehen ist, ändern Sie das Format in „version-date“, und führen Sie diesen Befehl erneut aus. Deaktivieren Sie andernfalls diese Überprüfung, indem Sie diesen Befehl erneut ausführen und „--skip-version-format-check“ hinzufügen.", + "AddVersionSuggestVersionRelaxed": "Das Versionsformat von „{package_name}“ verwendet „version-string“, das Format ist jedoch als „version“ zulässig. Wenn die Versionen für diesen Port mithilfe von Regeln mit lockerer Versionen sortiert werden können, ändern Sie das Format in „version“, und führen Sie diesen Befehl erneut aus. Regeln mit lockerer Version sortieren Versionen nach jeder numerischen Komponente. Versionen mit Bindestrichsuffixen werden zuvor lexikographische sortiert. „Plus'd“-Buildtags werden ignoriert. Beispiele:\n1.0 < 1.1-alpha < 1.1-b < 1.1 < 1.1.1 < 1.2+Build = 1.2 < 2.0\nBeachten Sie insbesondere, dass Bindestrichsuffixen als *vor* und nicht als danach sortiert werden. 1.0-beliebig < 1.0\nBeachten Sie, dass diese Sortierreihenfolge mit der in der semantischen Versionsverwaltung ausgewählten Sortierreihenfolge übereinstimmt (siehe https://semver.org), obwohl die tatsächlichen semantischen Teile nicht angewendet werden.\nWenn Versionen für diesen Port nicht nach diesen Regeln geordnet werden, deaktivieren Sie diese Überprüfung, indem Sie diesen Befehl erneut ausführen und „--skip-version-format-check“ hinzufügen.", "AddVersionUncommittedChanges": "Für {package_name} wurden keine Änderungen ausgeführt", "AddVersionUpdateVersionReminder": "Erinnern Sie sich daran, die Version oder Portversion zu aktualisieren?", "AddVersionUseOptionAll": "{command_name} ohne Argumente erfordert die Übergabe von --{option}, um alle Portversionen gleichzeitig zu aktualisieren", @@ -82,7 +80,7 @@ "AdditionalPackagesToRemove": "Zusätzliche Pakete (*) müssen entfernt werden, um diesen Vorgang abzuschließen.", "AllFormatArgsRawArgument": "Formatzeichenfolge „{value}“ enthält ein nicht formatiertes Formatargument.", "AllFormatArgsUnbalancedBraces": "nicht ausgeglichene Klammer in der Formatzeichenfolge „{value}“", - "AllPackagesAreUpdated": "Alle installierten Pakete sind mit der lokalen Portdatei auf dem neuesten Stand.", + "AllPackagesAreUpdated": "Alle installierten Pakete sind auf dem neuesten Stand.", "AlreadyInstalled": "{spec} ist bereits installiert.", "AlreadyInstalledNotHead": "{spec} ist bereits installiert – wird nicht aus HEAD erstellt.", "AmbiguousConfigDeleteConfigFile": "Mehrdeutige vcpkg-Konfiguration, die sowohl von Manifest als auch von der Konfigurationsdatei bereitgestellt wird.\n– Konfigurationsdatei {path} löschen", @@ -110,7 +108,6 @@ "ApplocalProcessing": "Bereitstellen von Abhängigkeiten", "ArtifactsBootstrapFailed": "vcpkg-artifacts ist nicht installiert und konnte nicht mit dem Bootstrapping ausgeführt werden.", "ArtifactsNotInstalledReadonlyRoot": "vcpkg-artifacts ist nicht installiert und kann nicht installiert werden, da VCPKG_ROOT als schreibgeschützt angenommen wird. Dieses Problem kann möglicherweise durch erneutes Installieren von vcpkg mithilfe des One Liners behoben werden.", - "ArtifactsNotOfficialWarning": "Verwenden von vcpkg-artifacts mit einer inoffiziellen ", "ArtifactsOptionIncompatibility": "--{option} hat keine Auswirkungen auf \"Artefakt suchen\".", "ArtifactsOptionJson": "Vollständiger Pfad zur JSON-Datei, in der Umgebungsvariablen und andere Eigenschaften aufgezeichnet werden.", "ArtifactsOptionMSBuildProps": "Vollständiger Pfad zu der Datei, in die MSBuild-Eigenschaften geschrieben werden", @@ -118,12 +115,10 @@ "ArtifactsOptionVersionMismatch": "Die Anzahl der --version-Switches muss mit der Anzahl der benannten Artefakte übereinstimmen.", "ArtifactsSwitchARM": "Erzwingt die Hosterkennung auf ARM beim Abrufen von Artefakten.", "ArtifactsSwitchARM64": "Erzwingt die Hosterkennung auf ARM64 beim Abrufen von Artefakten.", - "ArtifactsSwitchAll": "Aktualisiert alle bekannten Artefaktregistrierungen", "ArtifactsSwitchAllLanguages": "Ruft beim Abrufen von Artefakten alle Sprachdateien ab.", "ArtifactsSwitchForce": "Erzwingt die erneute Anforderung, wenn bereits ein Artefakt abgerufen wurde.", "ArtifactsSwitchFreebsd": "Erzwingt die Hosterkennung auf FreeBSD beim Abrufen von Artefakten.", "ArtifactsSwitchLinux": "Erzwingt die Hosterkennung auf Linux beim Abrufen von Artefakten.", - "ArtifactsSwitchNormalize": "Wendet alle veralteten Fixups an.", "ArtifactsSwitchOnlyOneHostPlatform": "Es kann nur eine Hostplattform (--x64, --x86, --arm, --arm64) festgelegt werden.", "ArtifactsSwitchOnlyOneOperatingSystem": "Es kann nur ein Betriebssystem (--windows, --osx, --linux, --freebsd) festgelegt werden.", "ArtifactsSwitchOnlyOneTargetPlatform": "Es kann nur eine Zielplattform (--target:x64, --target:x86, --target:arm, --target:arm64) festgelegt werden.", @@ -135,9 +130,12 @@ "ArtifactsSwitchWindows": "Erzwingt die Hosterkennung auf Windows beim Abrufen von Artefakten.", "ArtifactsSwitchX64": "Erzwingt die Hosterkennung auf x64 beim Abrufen von Artefakten.", "ArtifactsSwitchX86": "Erzwingt die Hosterkennung auf x86 beim Abrufen von Artefakten.", + "AssetCacheHit": "Ressourcencachetreffer für {path}; heruntergeladen von: {url}", + "AssetCacheMiss": "Ressourcencachefehler; Download von {url}", + "AssetCacheMissBlockOrigin": "Ressourcencachefehler für {path} und Downloads werden durch x-block-origin blockiert.", "AssetCacheProviderAcceptsNoArguments": "Unerwartete Argumente: \"{value}\" akzeptiert keine Argumente.", + "AssetCacheSuccesfullyStored": "Der {path} wurden erfolgreich in {url} gespeichert.", "AssetSourcesArg": "Objekt-Cachequellen. Siehe „vcpkg-Hilfe zum Objekt-Zwischenspeichern“", - "AttemptingToFetchPackagesFromVendor": "Es wird versucht, {count} Pakete von {vendor} abzurufen.", "AttemptingToSetBuiltInBaseline": "Es wird versucht, die integrierte Baseline in \"vcpkg.json\" festzulegen, während die Standardregistrierung in \"vcpkg-configuration.json\" überschrieben wird.\ndie Standardregistrierung aus \"vcpkg-configuration.json\" wird verwendet.", "AuthenticationMayRequireManualAction": "Mindestens ein {vendor}-Anmeldeinformationsanbieter hat eine manuelle Aktion angefordert. Fügen Sie die binäre Quelle \"interactive\" hinzu, um Interaktivität zuzulassen.", "AutoSettingEnvVar": "-- Automatisches Setzen von {env_var} Umgebungsvariablen auf \"{url}\".", @@ -147,12 +145,11 @@ "AzUrlAssetCacheRequiresBaseUrl": "Unerwartete Argumente: Die Ressourcenkonfiguration \"azurl\" erfordert eine Basis-URL.", "AzUrlAssetCacheRequiresLessThanFour": "Unerwartete Argumente: Die Ressourcenkonfiguration \"azurl\" erfordert weniger als 4 Argumente.", "BaselineConflict": "Die Angabe von \"vcpkg-configuration.default-registry\" in einer Manifestdatei verursacht einen Konflikt mit der integrierten Baseline.\nEntfernen Sie eine dieser widersprüchlichen Einstellungen.", - "BaselineFileNoDefaultField": "Die Baselinedatei beim Commit \"{commit_sha}\" war ungültig (kein Feld \"Standard\").", "BaselineGitShowFailed": "Beim Auschecken der Baseline aus dem Commit \"{commit_sha}\" konnte \"git show\" versions/baseline.json nicht ausgeführt werden. Dies kann behoben werden, indem Commits mit \"git fetch\" abgerufen werden.", - "BaselineMissing": "Die Baselineversion wurde nicht gefunden. Führen Sie Folgendes aus:\nvcpkg x-add-version {package_name}\nGit-Add-Versionen\ngit commit -m \"Versionsdatenbank aktualisieren\"\num die Version {version} als Baselineversion festzulegen.", - "BinaryCacheVendorHTTP": "HTTP-Server", + "BaselineMissing": "„{package_name}“ ist keine Version zugewiesen.", + "BinariesRelativeToThePackageDirectoryHere": "die Binärdateien sind hier relativ zu ${{CURRENT_PACKAGES_DIR}} ", "BinarySourcesArg": "Binäre Cachequellen. Siehe „vcpkg-Hilfe zu binärem Zwischenspeichern“", - "BinaryWithInvalidArchitecture": "{path}\n Erwartet: {expected}, war aber {actual}", + "BinaryWithInvalidArchitecture": "{path} wurde für {arch} erstellt", "BuildAlreadyInstalled": "„{spec}“ ist bereits installiert; entfernen Sie „{spec}“, bevor Sie versuchen, es zu erstellen.", "BuildDependenciesMissing": "Für den Buildbefehl müssen alle Abhängigkeiten bereits installiert sein.\nDie folgenden Abhängigkeiten fehlen:", "BuildResultBuildFailed": "BUILD_FAILED", @@ -170,22 +167,19 @@ "BuildTroubleshootingMessage1": "Stellen Sie sicher, dass Sie die neuesten Portdateien mit „git pull“ und „vcpkg update“ verwenden.\nÜberprüfen Sie dann auf bekannte Probleme unter:", "BuildTroubleshootingMessage2": "Sie können ein neues Problem einreichen unter:", "BuildTroubleshootingMessage3": "Schließen Sie „[{package_name}] Buildfehler“ in Ihren Titel des Fehlerberichts, die folgenden Versionsinformationen in Ihre Fehlerbeschreibung ein, und fügen Sie alle relevanten Fehlerprotokolle von oben an.", - "BuildTroubleshootingMessage4": "Bitte verwenden Sie die vorausgefüllte Vorlage von {path}, wenn Sie Ihr Problem melden.", "BuildTroubleshootingMessageGH": "Sie können ein Problem auch einreichen, indem Sie Folgendes tun (GitHub-CLI muss installiert sein):", "BuildingFromHead": "{spec} wird aus HEAD erstellt...", "BuildingPackage": "{spec} wird erstellt...", "BuildingPackageFailed": "Fehler beim Erstellen von \"{spec}\": {build_result}", "BuildingPackageFailedDueToMissingDeps": "aufgrund der folgenden fehlenden Abhängigkeiten:", "BuiltInTriplets": "Integrierte Triplets:", - "BuiltWithIncorrectArchitecture": "Die folgenden Dateien wurden für eine falsche Architektur erstellt:", - "CISettingsExclude": "Durch Komma getrennte Liste der zu überspringenden Ports", + "BuiltWithIncorrectArchitecture": "Die Tripletanforderungen, die Binärdateien für {arch} erstellen, aber die folgenden Binärdateien wurden für eine andere Architektur erstellt. Dies bedeutet in der Regel, dass Toolketteninformationen fälschlicherweise an das Buildsystem der Binärdateien übermittelt werden. Um diese Meldung zu unterdrücken, fügen Sie set(VCPKG_POLICY_SKIP_ARCHITECTURE_CHECK enabled) hinzu.", "CISettingsOptCIBase": "Pfad zur Datei \"ci.baseline.txt\". Wird verwendet, um Ports zu überspringen und Regressionen zu erkennen.", "CISettingsOptExclude": "Durch Komma getrennte Liste der zu überspringenden Ports", "CISettingsOptFailureLogs": "Verzeichnis, in das Fehlerprotokolle kopiert werden", "CISettingsOptHostExclude": "Durch Komma getrennte Liste der Ports, die für das Host-Triplet übersprungen werden sollen", "CISettingsOptOutputHashes": "Datei zum Ausgeben aller ermittelten Pakethashes", "CISettingsOptParentHashes": "Datei zum Lesen von Pakethashes für einen übergeordneten CI-Zustand, um den Satz geänderter Pakete zu reduzieren", - "CISettingsOptSkippedCascadeCount": "Bestätigt, dass die Anzahl der \"--exclude and supports skips\" genau dieser Anzahl entspricht", "CISettingsOptXUnit": "Datei, die Ergebnisse im XUnit-Format ausgibt", "CISettingsVerifyGitTree": "Überprüft, ob jedes Git-Strukturobjekt mit seiner deklarierten Version übereinstimmt (dies ist sehr langsam).", "CISettingsVerifyVersion": "Druckt das Ergebnis für jeden Port und nicht nur für die Fehler", @@ -200,8 +194,6 @@ "CMakeTargetsUsageHeuristicMessage": "# this is heuristically generated, and may be not correct", "CMakeToolChainFile": "CMake-Projekte sollten Folgendes verwenden: „-DCMAKE_TOOLCHAIN_FILE={path}“", "CMakeUsingExportedLibs": "Um exportierte Bibliotheken in CMake-Projekten zu verwenden, fügen Sie Ihrer CMake-Befehlszeile {value} hinzu.", - "CheckedOutGitSha": "Ausgechecktes Git-SHA: {commit_sha}", - "CheckedOutObjectMissingManifest": "Das ausgecheckte Objekt enthält keine CONTROL- oder vcpkg.json-Datei.", "ChecksFailedCheck": "„vcpkg“ ist abgestürzt; es sind keine weiteren Details verfügbar.", "ChecksUnreachableCode": "Nicht erreichbarer Code wurde erreicht.", "ChecksUpdateVcpkg": "Das Aktualisieren von vcpkg durch erneutes Ausführen von „bootstrap-vcpkg“ kann diesen Fehler möglicherweise beheben.", @@ -235,14 +227,11 @@ "CmdBuildExternalExample2": "vcpkg build-external zlib2 C:\\path\\to\\dir\\with\\vcpkg.json", "CmdBuildExternalSynopsis": "Erstellt einen Port aus einem Pfad.", "CmdBuildSynopsis": "Erstellt einen Port.", - "CmdCacheExample1": "vcpkg-Cache ", - "CmdCacheSynopsis": "Paketspezifikationen auflisten", "CmdCheckSupportExample1": "vcpkg x-check-support ", "CmdCheckSupportSynopsis": "Testet, ob ein Port unterstützt wird, ohne ihn zu erstellen.", "CmdCiCleanSynopsis": "Löscht alle Dateien, um sich auf eine CI-Ausführung vorzubereiten.", "CmdCiSynopsis": "Versucht, alle Ports für CI-Tests zu erstellen.", "CmdCiVerifyVersionsSynopsis": "Überprüft die Integrität der Versionsdatenbank.", - "CmdContactOptSurvey": "Standardbrowser für die aktuelle vcpkg-Umfrage starten", "CmdCreateExample1": "vcpkg-Erstellung ", "CmdCreateExample2": "vcpkg-Erstellung my-fancy-port https://example.com/sources.zip", "CmdCreateExample3": "vcpkg-Erstellung ", @@ -265,7 +254,7 @@ "CmdEditOptBuildTrees": "Öffnet den Editor im portspezifischen Buildstrukturunterordner.", "CmdEnvOptions": "Fügt installierten {path} zu {env_var} hinzu.", "CmdExportEmptyPlan": "Es wird abgelehnt, einen Export von Nullpaketen zu erstellen. Installieren Sie Pakete vor dem Exportieren.", - "CmdExportExample1": "vcpkg-Export [--nuget] [--directory=out_dir]", + "CmdExportExample1": "vcpkg export [--nuget] [--output-dir=out_dir]", "CmdExportOpt7Zip": "Exportiert in eine 7zip(.7z)-Datei.", "CmdExportOptChocolatey": "Exportiert ein Chocolatey-Paket (experimentell)", "CmdExportOptDebug": "Aktiviert das Prefab-Debuggen", @@ -376,8 +365,10 @@ "CmdZExtractExample2": "vcpkg z-extract source.zip source_dir --strip 2", "CmdZExtractOptStrip": "Die Anzahl der führenden Verzeichnisse, die aus allen Pfaden entfernt werden sollen.", "CommandEnvExample2": "vcpkg env „ninja -C “ --triplet x64-windows", - "CommandFailed": "Befehl:\n{command_line}\nmit den folgenden Ergebnissen fehlgeschlagen:", + "CommandFailed": "Befehl:\n{command_line}\nFehler bei der folgenden Ausgabe:", + "CommandFailedCode": "Befehl:\n{command_line}\nFehler mit Exitcode {exit_code} und der folgenden Ausgabe:", "CommunityTriplets": "Community-Triplets:", + "CompilerPath": "Compiler gefunden: {path}", "CompressFolderFailed": "Fehler beim Komprimieren des Ordners \"{path}\":", "ComputingInstallPlan": "Installationsplan wird berechnet...", "ConfigurationErrorRegistriesWithoutBaseline": "Die in {path} definierte Konfiguration ist ungültig.\n\nDie Verwendung von Registrierungen erfordert, dass eine Baseline für die Standardregistrierung festgelegt ist, oder dass die Standardregistrierung NULL ist.\n\nWeitere Informationen finden Sie unter {url}.", @@ -386,11 +377,10 @@ "ConsideredVersions": "Die folgenden ausführbaren Dateien wurden berücksichtigt, aber aufgrund der Versionsanforderung von {version} verworfen:", "ConstraintViolation": "Es wurde eine Einschränkungsverletzung gefunden:", "ContinueCodeUnitInStart": "Fortsetzungscodeeinheit wurde an der Startposition gefunden.", - "ControlAndManifestFilesPresent": "Sowohl eine Manifestdatei als auch eine CONTROL-Datei sind im Portverzeichnis vorhanden: {path}", "ControlCharacterInString": "Steuerzeichen in Zeichenfolge", "ControlSupportsMustBeAPlatformExpression": "\"Unterstützt\" muss ein Plattformausdruck sein", - "CopyrightIsDir": "'{path}' als Verzeichnis ist veraltet.", - "CorruptedDatabase": "Die Datenbank ist beschädigt.", + "CopyrightIsDir": "dieser Port legt ${{CURRENT_PACKAGES_DIR}}/share/${{PORT}}/copyright auf ein Verzeichnis fest, es sollte sich jedoch um eine Datei handeln. Erwägen Sie, separate Copyright-Dateien mithilfe von vcpkg_install_copyright zu einer Datei zusammenzufassen. Um diese Meldung zu unterdrücken, fügen Sie set(VCPKG_POLICY_SKIP_COPYRIGHT_CHECK enabled) hinzu.", + "CorruptedDatabase": "Die Installationsdatenbank von vcpkg ist beschädigt. Dies ist entweder ein Fehler in vcpkg, oder etwas anderes hat den Inhalt des Verzeichnisses \"installed\" auf unerwartete Weise geändert. Sie können dies möglicherweise beheben, indem Sie das Verzeichnis \"installed\" löschen und das gewünschte Verzeichnis neu installieren. Wenn dieses Problem weiterhin auftritt, melden Sie einen Fehler unter https://github.com/microsoft/vcpkg.", "CorruptedInstallTree": "Die vcpkg-Struktur \"installiert\" ist beschädigt.", "CouldNotDeduceNugetIdAndVersion": "Die NuGet-ID und die Version konnten nicht aus dem Dateinamen abgeleitet werden: {path}", "CouldNotFindBaselineInCommit": "Die Baseline wurde in {url} unter {commit_sha} für {package_name} nicht gefunden.", @@ -403,14 +393,12 @@ "CreatingNugetPackage": "NuGet-Paket wird erstellt...", "CreatingZipArchive": "ZIP-Archiv wird erstellt...", "CreationFailed": "Fehler beim Erstellen von {path}.", - "CurlFailedToExecute": "curl konnte nicht ausgeführt werden. Exitcode: {exit_code}.", "CurlFailedToPut": "CURL konnte die Datei nicht unter {url} mit Exitcode {exit_code} ablegen.", "CurlFailedToPutHttp": "CURL konnte die Datei nicht unter {url} mit dem Exitcode {exit_code} und dem HTTP-Code {value} ablegen.", - "CurlReportedUnexpectedResults": "„curl“ hat unerwartete Ergebnisse für „vcpkg“ gemeldet, und „vcpkg“ kann nicht fortgesetzt werden. \nÜberprüfen Sie den folgenden Text auf vertrauliche Informationen, und öffnen Sie ein Problem auf dem GitHub von „Microsoft/vcpkg“, um dieses Problem zu beheben.\ncmd: {command_line}\n=== curl output ===\n{actual}\n=== end curl output ===", - "CurlReturnedUnexpectedResponseCodes": "curl hat eine andere Anzahl von Antwortcodes zurückgegeben als für die Anforderung erwartet ({actual} statt {expected}).", + "CurlResponseTruncatedRetrying": "curl hat eine partielle Antwort zurückgegeben; warten Sie {value} Millisekunden, und wiederholen Sie den Vorgang.", + "CurlTimeout": "Curl konnte nicht alle angeforderten HTTP-Vorgänge ausführen, auch nach Timeout und Wiederholungen. Letzte Befehlszeile: {command_line}", "CurrentCommitBaseline": "Sie können den aktuellen Commit als Baseline verwenden, d. h.:\n \"builtin-baseline\": \"{commit_sha}\"", "CycleDetectedDuring": "Zyklus während {spec} erkannt:", - "DateTableHeader": "Datum", "DefaultBinaryCachePlatformCacheRequiresAbsolutePath": "Die Umgebungsvariable VCPKG_DEFAULT_BINARY_CACHE muss ein Verzeichnis sein (war: {path}).", "DefaultBinaryCacheRequiresAbsolutePath": "Die Umgebungsvariable VCPKG_DEFAULT_BINARY_CACHE muss absolut sein (war: {path}).", "DefaultBinaryCacheRequiresDirectory": "Die Umgebungsvariable VCPKG_DEFAULT_BINARY_CACHE muss ein Verzeichnis sein (war: {path}).", @@ -419,15 +407,18 @@ "DefaultFeatureIdentifier": "Die Namen der Standardfeatures müssen Bezeichner sein", "DefaultFlag": "Standardmäßig wird --{option} aktiviert.", "DefaultRegistryIsArtifact": "Die Standardregistrierung kann keine Artefaktregistrierung sein.", - "DefaultTripletChanged": "In der Version vom September 2023 wurde das Standard-Triplet für vcpkg-Bibliotheken von x86-windows in das erkannte Host-Triplet ({triplet}) geändert. Fügen Sie für das alte Verhalten --triplet x86-windows hinzu. Um diese Meldung zu unterdrücken, fügen Sie --triplet {triplet} hinzu.", "DeleteVcpkgConfigFromManifest": "– Oder entfernen Sie \"vcpkg-configuration\" aus der Manifestdatei \"{path}\".", "DependencyFeatureCore": "das Feature \"Core\" darf nicht in der Featureliste einer Abhängigkeit enthalten sein. Um die Standardfunktionen zu deaktivieren, fügen Sie stattdessen \"default-features\": false hinzu.", "DependencyFeatureDefault": "das Feature \"default\" darf nicht in der Featureliste einer Abhängigkeit enthalten sein. Um die Standardfunktionen zu aktivieren, fügen Sie stattdessen \"default-features\": true hinzu.", "DependencyGraphCalculation": "Abhängigkeitsdiagrammübermittlung aktiviert.", "DependencyGraphFailure": "Fehler bei der Übermittlung des Abhängigkeitsdiagramms.", "DependencyGraphSuccess": "Die Übermittlung des Abhängigkeitsdiagramms war erfolgreich.", + "DependencyInFeature": "Die Abhängigkeit befindet sich in der Funktion mit dem Namen „{feature}“.", + "DependencyNotInVersionDatabase": "Die Abhängigkeit „{package_name}“ ist in der Versionsdatenbank nicht vorhanden. Ist dieser Port vorhanden?", "DeprecatedPrefabDebugOption": "--prefab-debug ist jetzt veraltet.", "DetectCompilerHash": "Compilerhash für Triplet {triplet} wird erkannt...", + "DirectoriesRelativeToThePackageDirectoryHere": "die Verzeichnisse sind hier relativ zu ${{CURRENT_PACKAGES_DIR}}", + "DllsRelativeToThePackageDirectoryHere": "die DLLs sind hier relativ zu ${{CURRENT_PACKAGES_DIR}}", "DocumentedFieldsSuggestUpdate": "Wenn es sich um dokumentierte Felder handelt, die erkannt werden sollen, aktualisieren Sie das vcpkg-Tool.", "DownloadAvailable": "Eine herunterladbare Kopie dieses Tools ist verfügbar und kann verwendet werden, indem {env_var} zurückgesetzt wird.", "DownloadFailedCurl": "{url}: CURL konnte nicht heruntergeladen werden. Exitcode: {exit_code}", @@ -437,8 +428,7 @@ "DownloadRootsDir": "Downloadverzeichnis (Standard: {env_var})", "DownloadWinHttpError": "{url}: Fehler bei {system_api} mit Exitcode {exit_code}", "DownloadedSources": "Heruntergeladene Quellen für {spec}", - "DownloadingPortableToolVersionX": "Eine geeignete Version von {tool_name} wurde nicht gefunden (v{version} erforderlich). Portierbare {tool_name} {version} wird heruntergeladen...", - "DownloadingTool": "{tool_name} wird heruntergeladen...\n{url}->{path}", + "DownloadingPortableToolVersionX": "Eine geeignete Version von {tool_name} wurde nicht gefunden (v{version} erforderlich).", "DownloadingUrl": "{url} wird herunterladen", "DownloadingVcpkgStandaloneBundle": "Das eigenständige Paket \"{version}\" wird heruntergeladen.", "DownloadingVcpkgStandaloneBundleLatest": "Das neueste eigenständige Paket wird heruntergeladen.", @@ -449,7 +439,6 @@ "DuplicatePackagePatternRegistry": "Registrierung: {url}", "DuplicatedKeyInObj": "Doppelter Schlüssel \"{value}\" in einem Objekt", "ElapsedForPackage": "Verstrichene Zeit für die Bearbeitung von {spec}: {elapsed}", - "ElapsedInstallTime": "Insgesamt verstrichene Zeit: {count}", "ElapsedTimeForChecks": "Zeit bis zum Bestimmen des Status Erfolgreich/Fehler: {elapsed}", "EmailVcpkgTeam": "Senden Sie eine E-Mail mit beliebigem Feedback an {url}.", "EmbeddingVcpkgConfigInManifest": "Das Einbetten von \"vcpkg-configuration\" in eine Manifestdatei ist ein EXPERIMENTELLEs Feature.", @@ -479,25 +468,23 @@ "ErrorWhileFetchingBaseline": "beim Abrufen der Baseline \"{value}\" aus dem Repository \"{package_name}\":", "ErrorWhileParsing": "Fehler beim Analysieren von {path}.", "ErrorWhileWriting": "Fehler beim Schreiben von {path}.", - "ErrorsFound": "Die folgenden Fehler wurden gefunden:", "ExamplesHeader": "Beispiele:", "ExceededRecursionDepth": "Die Rekursionstiefe wurde überschritten.", "ExcludedPackage": "Ausgeschlossen: {spec}", "ExcludedPackages": "Die folgenden Pakete sind ausgeschlossen:", + "ExecutablesRelativeToThePackageDirectoryHere": "die ausführbaren Dateien sind hier relativ zu ${{CURRENT_PACKAGES_DIR}}", "ExpectedAnObject": "ein Objekt wurde erwartet", "ExpectedAtMostOneSetOfTags": "Es wurden {count} Sets mit dem Wert {old_value}.*{new_value} gefunden, aber mindestens 1 im Block erwartet:\n{value}", "ExpectedCharacterHere": "'{expected}' wurde hier erwartet", "ExpectedDefaultFeaturesList": "In der Standardfeatureliste wurde „,“ oder das Textende erwartet.", "ExpectedDependenciesList": "In der Abhängigkeitsliste wurde „,“ oder das Textende erwartet.", "ExpectedDigitsAfterDecimal": "Ziffern nach dem Dezimaltrennzeichen erwartet", - "ExpectedEof": "EOF erwartet", "ExpectedExplicitTriplet": "Es wurde ein explizites Triplet erwartet.", "ExpectedFailOrSkip": "\"fail\", \"skip\" oder \"pass\" wird hier erwartet.", "ExpectedFeatureListTerminal": "In der Featureliste wurde „,“ oder „]“ erwartet", "ExpectedFeatureName": "Erwarteter Featurename (muss aus Kleinbuchstaben, Ziffern und „-“ bestehen)", "ExpectedOneSetOfTags": "Es wurden {count} Sets mit dem Wert {old_value}.*{new_value} gefunden, aber genau 1 im Block erwartet:\n{value}", "ExpectedOneVersioningField": "Es wurde nur ein Versionsverwaltungsfeld erwartet.", - "ExpectedPackageSpecifier": "Es wurde ein Paketspezifizierer erwartet.", "ExpectedPathToExist": "Es wurde erwartet, dass {path} nach dem Abrufen vorhanden ist.", "ExpectedPortName": "Hier wurde ein Portname erwartet (muss aus Kleinbuchstaben, Ziffern und „-“ bestehen).", "ExpectedReadWriteReadWrite": "Unerwartetes Argument: \"read\", \"readwrite\" oder \"write\" erwartet", @@ -505,7 +492,6 @@ "ExpectedTripletName": "Hier wurde ein Dreifachname erwartet (muss aus Kleinbuchstaben, Ziffern und „-“ bestehen).", "ExportArchitectureReq": "Für den Export des Prefabs ist mindestens eine der folgenden Architekturen erforderlich: arm64-v8a, armeabi-v7a, x86_64, x86.", "ExportPrefabRequiresAndroidTriplet": "Für den Export des Prefabs ist ein Android-Triplet erforderlich.", - "ExportUnsupportedInManifest": "Der vcpkg-Export unterstützt den Manifestmodus nicht, um zukünftige Entwurfsüberlegungen zu ermöglichen. Sie können den Export im klassischen Modus verwenden, indem Sie vcpkg außerhalb eines manifestbasierten Projekts ausführen.", "Exported7zipArchive": "7zip-Archiv exportiert an: {path}", "ExportedZipArchive": "Zip-Archiv exportiert an: {path}", "ExportingAlreadyBuiltPackages": "Die folgenden Pakete sind bereits erstellt und werden exportiert:", @@ -514,14 +500,12 @@ "ExtendedDocumentationAtUrl": "Unter \"{url}\" ist eine ausführliche Dokumentation erhältlich.", "ExtractHelp": "Extrahiert ein Archiv.", "ExtractingTool": "{tool_name} wird extrahiert...", - "FailedPostBuildChecks": "{count} Problem(e) nach der Buildüberprüfung gefunden. Um diese Ports an zusammengestellte Kataloge zu übermitteln, korrigieren Sie zuerst die Portdatei: {path}", + "FailedPostBuildChecks": "{count} Problem(e) nach der Buildüberprüfung gefunden. Diese werden in der Regel durch Fehler in \"portfile.cmake\" oder im Upstreambuildsystem verursacht. Korrigieren Sie diese, bevor Sie diesen Port an die zusammengestellte Registrierung übermitteln.", "FailedToAcquireMutant": "Fehler beim Abrufen des Mutant-Objekts {path}", "FailedToCheckoutRepo": "Fehler beim Auschecken von \"Versionen\" aus dem Repository \"{package_name}\".", "FailedToDeleteDueToFile": "Fehler beim Ausführen von remove_all ({value}) aufgrund von {path}: ", "FailedToDeleteInsideDueToFile": "Fehler beim Ausführen von remove_all_inside ({value}) aufgrund von {path}: ", - "FailedToDetermineArchitecture": "Die Architektur von {path} kann nicht ermittelt werden.\n{command_line}", "FailedToDetermineCurrentCommit": "Fehler beim Ermitteln des aktuellen Commits:", - "FailedToDownloadFromMirrorSet": "Fehler beim Herunterladen aus dem Spiegelsatz.", "FailedToExtract": "Fehler beim Extrahieren von „{path}“:", "FailedToFetchRepo": "Fehler beim Abrufen von {url}.", "FailedToFindPortFeature": "{package_name} verfügt über kein Feature mit dem Namen {feature}.", @@ -530,27 +514,20 @@ "FailedToLoadManifest": "Fehler beim Laden des Manifests aus dem Verzeichnis \"{path}\".", "FailedToLocateSpec": "Fehler beim Suchen der Spezifikation im Diagramm: {spec}", "FailedToObtainDependencyVersion": "Die gewünschte Abhängigkeitsversion wurde nicht gefunden.", - "FailedToObtainLocalPortGitSha": "Fehler beim Abrufen von Git-SHAs für lokale Ports.", "FailedToObtainPackageVersion": "Die gewünschte Paketversion wurde nicht gefunden.", "FailedToOpenAlgorithm": "Fehler beim Öffnen des Ports {value}", "FailedToParseBaseline": "Fehler beim Parsen der Baseline: {path}", "FailedToParseCMakeConsoleOut": "Fehler beim Analysieren der CMake-Konsolenausgabe, um Blockstart-/Endmarkierungen zu finden.", "FailedToParseConfig": "Fehler beim Parsen der Konfiguration: {path}.", - "FailedToParseControl": "Fehler beim Parsen der STEUERUNGSDATEI: {path}", - "FailedToParseManifest": "Fehler beim Analysieren der Manifestdatei: {path}", "FailedToParseNoTopLevelObj": "Fehler beim Analysieren von {path}. Es wurde ein Objekt der obersten Ebene erwartet.", "FailedToParseNoVersionsArray": "Fehler beim Parsen von {path}. Es wurde ein „Versionen“-Array erwartet.", "FailedToParseSerializedBinParagraph": "[Integritätsprüfung] Fehler beim Analysieren eines serialisierten binären Absatzes.\nÖffnen Sie ein Problem unter https://github.com/microsoft/vcpkg, und geben Sie folgende Ausgabe an:\n{error_msg}\nSerialisierter binärer Absatz:", + "FailedToParseVersionFile": "Fehler beim Parsen der Versionsdatei: {path}", "FailedToParseVersionXML": "Die Version für das Tool \"{tool_name}\" konnte nicht analysiert werden. Versionszeichenfolge: {version}", - "FailedToParseVersionsFile": "Die Versionsdatei {path} kann nicht geparst werden", - "FailedToProvisionCe": "Fehler beim Bereitstellen von vcpkg-Artefakten.", - "FailedToReadParagraph": "Fehler beim Lesen von Absätzen aus \"{path}\".", - "FailedToRemoveControl": "Fehler beim Entfernen der Steuerungsdatei \"{path}\".", "FailedToRunToolToDetermineVersion": "Fehler beim Ausführen von „{path}“ zum Bestimmen der {tool_name}-Version.", - "FailedToStoreBackToMirror": "Fehler beim Speichern in der Spiegelung:", + "FailedToStoreBackToMirror": "Fehler beim Speichern von {path} in {url}.", "FailedToStoreBinaryCache": "Fehler beim Speichern des binären Caches {path}", "FailedToTakeFileSystemLock": "Fehler beim Verarbeiten der Dateisystemsperre.", - "FailedToWriteManifest": "Fehler beim Schreiben der Manifestdatei \"{path}\".", "FailedVendorAuthentication": "Mindestens ein {vendor}-Anmeldeinformationsanbieter konnte nicht authentifiziert werden. Weitere Informationen zum Bereitstellen von Anmeldeinformationen finden Sie unter \"{url}\".", "FetchingBaselineInfo": "Baselineinformationen werden von \"{package_name}\" abgerufen...", "FetchingRegistryInfo": "Registrierungsinformationen werden von {url} ({value}) abgerufen...", @@ -559,11 +536,13 @@ "FileNotFound": "{path}: Datei nicht gefunden", "FileReadFailed": "Fehler beim Lesen von {count} Bytes aus {path} bei Offset {byte_offset}.", "FileSeekFailed": "Fehler beim Suchen nach der Position von {byte_offset} in {path}.", - "FileSystemOperationFailed": "Fehler beim Vorgang des Dateisystems:", - "FilesContainAbsolutePath1": "In einem installierten Paket sollten keine absoluten Pfade, wie die folgenden, vorhanden sein:", - "FilesContainAbsolutePath2": "Absolute Pfade wurden in den folgenden Dateien gefunden:", + "FilesContainAbsolutePath1": "In einem installierten Paket sollten keine absoluten Pfade, wie die folgenden, vorhanden sein. Um diese Meldung zu unterdrücken, fügen Sie set(VCPKG_POLICY_SKIP_ABSOLUTE_PATHS_CHECK enabled) hinzu.", + "FilesContainAbsolutePath2": "absolute Pfade, die hier gefunden werden", + "FilesContainAbsolutePathPkgconfigNote": "Durch hinzufügen eines Aufrufs von \"vcpkg_fixup_pkgconfig()\" können absolute Pfade in PC-Dateien korrigiert werden.", "FilesExported": "Exportierte Dateien unter: {path}", - "FindHelp": "Sucht nach dem angegebenen Artefakt oder Port. Ohne Parameter wird nach „Artefakt\" oder „Port“ alles angezeigt.", + "FilesRelativeToTheBuildDirectoryHere": "die Dateien sind hier relativ zum Buildverzeichnis", + "FilesRelativeToThePackageDirectoryHere": "die Dateien sind hier relativ zu ${{CURRENT_PACKAGES_DIR}}", + "FindCommandFirstArg": "Das erste Argument für „find“ muss „artifact“ oder „port“ sein.", "FindVersionArtifactsOnly": "--version kann nicht mit der vcpkg-Suche oder dem vcpkg-Suchport verwendet werden.", "FishCompletion": "Die vcpkg-fish-Vervollständigung wurde bereits unter „{path}“ hinzugefügt.", "FloatingPointConstTooBig": "Gleitkommakonstante zu groß: {count}", @@ -581,6 +560,7 @@ "GeneratingRepo": "Repository \"{path}\" wird generiert...", "GetParseFailureInfo": "Verwenden Sie „--debug“, um weitere Informationen zu den Analysefehlern zu erhalten.", "GitCommandFailed": "Fehler beim Ausführen von {command_line}", + "GitCommitUpdateVersionDatabase": "Git-Commit -m „Versionsdatenbank aktualisieren“", "GitFailedToFetch": "Fehler beim Abrufen von Verweis \"{value}\" aus Repository \"{url}\".", "GitFailedToInitializeLocalRepository": "Fehler beim Initialisieren des lokalen Repositorys \"{path}\".", "GitRegistryMustHaveBaseline": "Die Git-Registrierung \"{url}\" muss über ein \"Baseline\"-Feld verfügen, das ein gültiges GIT-Commit-SHA (40 Hexadezimalzeichen) ist.\nUm die aktuellen Versionen zu verwenden, legen Sie die Baseline auf HEAD dieses Repositorys fest: \"{commit_sha}\".", @@ -623,10 +603,7 @@ "HelpEnvCommand": "Erstellt eine bereinigende Shellumgebung für die Entwicklung oder Kompilierung.", "HelpExampleCommand": "Weitere Hilfe (einschließlich Beispielen) finden Sie unter https://learn.microsoft.com/vcpkg", "HelpExampleManifest": "Beispielmanifest:", - "HelpExportCommand": "Exportiert ein Paket.", - "HelpHashCommand": "Hash einer Datei nach einem bestimmten Algorithmus, Standardmäßig SHA512.", "HelpInstallCommand": "Installiert ein Paket.", - "HelpListCommand": "Listet installierte Pakete auf.", "HelpManifestConstraints": "Manifeste können drei Arten von Einschränkungen auf die verwendeten Versionen platzieren.", "HelpMinVersion": "Vcpkg wählt die gefundene Mindestversion aus, die allen anwendbaren Einschränkungen entspricht, einschließlich der Version aus der Baseline, die auf oberster Ebene angegeben wurde, sowie alle \"version>=\"-Einschränkungen im Diagramm.", "HelpOverrides": "Bei Verwendung als Manifest der obersten Ebene (z. B. beim Ausführen von \"vcpkg install\" im Verzeichnis) lassen Außerkraftsetzungen zu, dass ein Manifest die Abhängigkeitsauflösung kurzschließt und die zu verwendende Version angibt. Sie können verwendet werden, um Versionskonflikte wie Abhängigkeiten vom Typ \"version-string\" zu behandeln. Sie werden nicht berücksichtigt, wenn sie transitiv abhängig sind.", @@ -674,7 +651,6 @@ "IllegalPlatformSpec": "Der Plattformqualifizierer ist in diesem Kontext nicht zulässig", "ImproperShaLength": "SHA512-Zeichen müssen 128 Hexadezimalzeichen umfassen: {value}", "IncorrectArchiveFileSignature": "Falsche Archivdateisignatur", - "IncorrectPESignature": "Falsche PE-Signatur", "InfoSetEnvVar": "Sie können {env_var} auch auf Ihren bevorzugten Editor festlegen.", "InitRegistryFailedNoRepo": "Unter {path} konnte keine Registrierung erstellt werden, da es sich nicht um einen Git-Repositorystamm handelt.\nVerwenden Sie „git init {command_line}“, um ein Git-Repository in diesem Ordner zu erstellen.", "InstallCopiedFile": "{path_source} -> {path_destination} abgeschlossen", @@ -688,8 +664,8 @@ "InstalledBy": "Installiert von {path}", "InstalledPackages": "Die folgenden Pakete sind bereits installiert:", "InstalledRequestedPackages": "Alle angeforderten Pakete sind derzeit installiert.", - "InstallingFromLocation": "-- Installation des Ports von Speicherort: {Pfad}", "InstallingMavenFile": "{path}-Installation der Maven-Datei", + "InstallingOverlayPort": "Überlagerungsport wird von hier aus installiert", "InstallingPackage": "Installing {action_index}/{count} {spec}...", "IntegrateBashHelp": "Aktivieren Sie die Tab-Vervollständigung in bash. Nur Nicht-Windows", "IntegrateFishHelp": "Aktivieren Sie die Tab-Vervollständigung in Fish. Nur Nicht-Windows", @@ -725,7 +701,7 @@ "InvalidBundleDefinition": "Ungültige Paketdefinition.", "InvalidCharacterInFeatureList": "Ungültiges Zeichen im Featurenamen (muss aus Kleinbuchstaben, Ziffern, „-“ oder „*“ bestehen).", "InvalidCharacterInFeatureName": "Ungültiges Zeichen im Featurenamen (muss aus Kleinbuchstaben, Ziffern, „-“ bestehen).", - "InvalidCharacterInPackageName": "ungültiges Zeichen im Paketnamen (muss aus Kleinbuchstaben, Ziffern, „-“ bestehen).", + "InvalidCharacterInPortName": "ungültiges Zeichen im Portnamen (muss aus Kleinbuchstaben, Ziffern, „-“ bestehen).", "InvalidCodePoint": "An utf8_encoded_code_point_count wurde ein ungültiger Codepunkt übergeben", "InvalidCodeUnit": "Ungültige Codeeinheit", "InvalidCommandArgSort": "Der Wert von „--sort“ muss „lexikografisch“, „topologisch“ oder „umgekehrt“ sein.", @@ -743,7 +719,6 @@ "InvalidLinkage": "Ungültiger {system_name} Bindungstyp: [{value}]", "InvalidLogicExpressionUnexpectedCharacter": "Ungültiger logischer Ausdruck, unerwartetes Zeichen", "InvalidLogicExpressionUsePipe": "Ungültiger Logikausdruck. Verwenden Sie \"|\" anstelle von \"or\".", - "InvalidNoVersions": "Die Datei enthält keine Versionen.", "InvalidOptionForRemove": "„remove“ akzeptiert entweder Bibliotheken oder „--outdated“", "InvalidPortVersonName": "Ungültiger Dateiname der Portversion gefunden: {path}.", "InvalidSharpInVersion": "Ungültiges Zeichen \"#\" im Versionstext", @@ -751,6 +726,8 @@ "InvalidString": "An Value::string(std::string) wurde ungültiger UTF8-Code übergeben.", "InvalidTriplet": "Ungültiges Triplet: {triplet}", "InvalidUri": "URI kann nicht geparst werden: {value}", + "InvalidValueHashAdditionalFiles": "Die Variable VCPKG_HASH_ADDITIONAL_FILES enthält einen ungültigen Dateipfad: \"{path}\". Der Wert muss ein absoluter Pfad zu einer vorhandenen Datei sein.", + "InvalidValuePostPortfileIncludes": "Die variable VCPKG_POST_PORTFILE_INCLUDES enthält einen ungültigen Dateipfad: \"{path}\". Der Wert muss ein absoluter Pfad zu einer vorhandenen Cmakedatei sein.", "IrregularFile": "Der Pfad war keine reguläre Datei: {path}", "JsonErrorMustBeAnObject": "Es wurde erwartet, dass es sich bei „{path}“ um ein Objekt handelt.", "JsonFieldNotObject": "Der Wert von [\"{json_field}\"] muss ein Objekt sein.", @@ -786,11 +763,11 @@ "LinkageStaticDebug": "Statisches Debuggen (/MTd)", "LinkageStaticRelease": "Statisches Release (/MT)", "ListHelp": "Listet installierte Bibliotheken auf", - "LoadingCommunityTriplet": "-- [COMMUNITY] Laden der Triplet-Konfiguration von: {Pfad}", + "LoadedCommunityTriplet": "hat von hier aus das Community-Triplet geladen. Community-Triplets sind nicht in der zusammengestellten Registrierung integriert und weniger wahrscheinlich erfolgreich.", + "LoadedOverlayTriplet": "hat das Überlagerungsd-Triplet von hier geladen", "LoadingDependencyInformation": "Abhängigkeitsinformationen für {count} Pakete werden geladen...", - "LoadingOverlayTriplet": "-- [OVERLAY] Laden der Triplet-Konfiguration von: {Pfad}", - "LocalPortfileVersion": "Verwenden lokaler Portdateiversionen. Verwenden Sie \"git pull\", um die lokalen Portdateien zu aktualisieren.", - "ManifestConflict": "Es wurden sowohl Manifest- als auch CONTROL-Dateien im Port „{path}“ gefunden; benennen Sie die eine oder die andere um", + "LocalPortfileVersion": "Verwenden lokaler Portversionen. Verwenden Sie \"git pull\", um die lokalen Ports zu aktualisieren.", + "ManifestConflict2": "Es wurden sowohl ein Manifest als auch CONTROL-Dateien gefunden. Benennen Sie die eine der beiden um.", "ManifestFormatCompleted": "Die Manifestdateien wurden erfolgreich formatiert.", "MismatchedBinParagraphs": "Der serialisierte binäre Absatz unterscheidet sich vom ursprünglichen binären Absatz. Öffnen Sie unter https://github.com/microsoft/vcpkg ein Problem mit der folgenden Ausgabe:", "MismatchedFiles": "Die zu speichernde Datei stimmt nicht mit dem Hash überein.", @@ -802,6 +779,7 @@ "MissingAndroidEnv": "ANDROID_NDK_HOME Umgebungsvariable fehlt", "MissingAndroidHomeDir": "ANDROID_NDK_HOME Verzeichnis ist nicht vorhanden: {path}", "MissingArgFormatManifest": "format-manifest wurde ohne \"--all\" an \"--convert-control\" übergeben.\nDies führt keine Aktion aus: Explizit übergebene Steuerdateien werden automatisch konvertiert.", + "MissingAssetBlockOrigin": "Fehlender {path} und Downloads werden durch x-block-origin blockiert.", "MissingClosingParen": "Schließende geschweifte Klammer „)“ fehlt.", "MissingDependency": "Das Paket {spec} ist installiert, die Abhängigkeit {package_name} jedoch nicht.", "MissingExtension": "Die Erweiterung „{extension}“ fehlt.", @@ -810,9 +788,9 @@ "MissingPortSuggestPullRequest": "Wenn Ihr Port nicht aufgeführt ist, öffnen Sie ein Problem und/oder erwägen Sie, einen Pull Request zu erstellen.", "MissingRequiredField": "fehlendes Pflichtfeld \"{json_field}\" ({json_type})", "MissingRequiredField2": "fehlendes Pflichtfeld \"{json_field}\"", + "MissingShaVariable": "Die {{sha}} Variable muss in der Vorlage verwendet werden, wenn andere Variablen verwendet werden.", "MixingBooleanOperationsNotAllowed": "Das Mischen von „&“ und „|“ ist nicht zulässig. Verwenden Sie „()“, um die Reihenfolge der Vorgänge anzugeben", "MonoInstructions": "Dies kann auf eine unvollständige Mono-Installation zurückzuführen sein. Vollständige Mono-Installationen sind auf einigen Systemen über „sudo apt install mono-complete“ verfügbar. Ubuntu 18.04-Benutzer benötigen möglicherweise eine neuere Mono-Version, die unter „https://www.mono-project.com/download/stable/“ verfügbar ist", - "MsiexecFailedToExtract": "msiexec-Fehler beim Extrahieren von „{path}“ mit Start- oder Exitcode {exit_code} und Meldung:", "MultiArch": "Multi-Arch muss \"same\" sein, war aber {option}", "MultipleFeatures": "Das Paket {package_name} deklariert das Feature {feature} mehrmals. Stellen Sie sicher, dass Features unterschiedliche Namen haben.", "MutuallyExclusiveOption": "--{value} kann nicht mit --{option} verwendet werden.", @@ -822,10 +800,8 @@ "NewOnlyOneVersionKind": "Es kann nur eine der Zeichenfolgen „--version-relaxed“, „--version-date“ oder „--version-string“ angegeben werden.", "NewSpecifyNameVersionOrApplication": "Geben Sie entweder „--name“ und „--version“ an, um ein Manifest für C++-Bibliotheken zu erstellen, oder geben Sie „--application“ an, um anzugeben, dass das Manifest nicht als Port verwendet werden soll.", "NewVersionCannotBeEmpty": "„--version“ darf nicht leer sein.", - "NoArgumentsForOption": "Die Option --{option} akzeptiert kein Argument.", "NoError": "Kein Fehler", "NoInstalledPackages": "Es sind keine Pakete installiert. Meinten Sie „Suchen“?", - "NoLocalizationForMessages": "Keine lokalisierte Meldungen für Folgendes: ", "NoOutdatedPackages": "Es sind keine veralteten Pakete vorhanden.", "NoRegistryForPort": "für Port {package_name} ist keine Registrierung konfiguriert", "NoUrlsAndHashSpecified": "Es wurden keine URLs zum Herunterladen des SHA angegeben: {sha}", @@ -866,7 +842,6 @@ "PackageManipulationHeader": "Paketmanipulation", "PackageRootDir": "Paketverzeichnis (experimentell)", "PackagesToInstall": "Die folgenden Pakete werden erstellt und installiert:", - "PackagesToInstallDirectly": "Die folgenden Pakete werden direkt installiert:", "PackagesToModify": "Zusätzliche Pakete (*) werden geändert, um diesen Vorgang abzuschließen.", "PackagesToRebuild": "Die folgenden Pakete werden neu erstellt:", "PackagesToRebuildSuggestRecurse": "Wenn Sie sicher sind, dass Sie die obigen Pakete neu erstellen möchten, führen Sie den Befehl mit der Option \"--recurse\" aus.", @@ -882,47 +857,50 @@ "ParseFeatureNameError": "\"{package_name}\" ist kein gültiger Featurename. Featurenamen müssen aus alphanumerischen Kleinbuchstaben+Bindestrichen bestehen und dürfen nicht reserviert sein (weitere Informationen finden Sie unter {url}).", "ParseIdentifierError": "„{value}“ ist kein gültiger Bezeichner. Bezeichner müssen aus alphanumerischen Kleinbuchstaben+Bindestrichen bestehen und dürfen nicht reserviert sein (weitere Informationen finden Sie unter {url}).", "ParsePackageNameError": "„{package_name}“ ist kein gültiger Paketname. Paketnamen müssen aus alphanumerischen Kleinbuchstaben+Bindestrichen bestehen und dürfen nicht reserviert sein (weitere Informationen finden Sie unter {url}).", + "ParsePackageNameNotEof": "Es wurde das Ende der Eingabeanalyse eines Paketnamens erwartet. Dies bedeutet in der Regel, dass das angegebene Zeichen nicht in einem Portnamen enthalten sein darf. Portnamen sind alphanumerische Kleinbuchstaben+Bindestriche und dürfen nicht reserviert sein (weitere Informationen finden Sie unter {url}).", "ParsePackagePatternError": "„{package_name}“ ist kein gültiges Paketmuster. Paketmuster dürfen nur ein Platzhalterzeichen (*) verwenden, und es muss das letzte Zeichen im Muster sein (weitere Informationen finden Sie unter {url}).", + "ParseQualifiedSpecifierNotEof": "Es wurde das Ende der Eingabeanalyse einer Paketspezifikation erwartet. Dies bedeutet in der Regel, dass das angegebene Zeichen nicht in einer Paketspezifikation enthalten sein darf. Port-, Triplet- und Featurenamen sind alle Kleinbuchstaben, alphanumerische Zeichen und Bindestriche.", + "ParseQualifiedSpecifierNotEofSquareBracket": "Es wurde das Ende der Eingabeanalyse einer Paketspezifikation erwartet. Meinten Sie stattdessen {version_spec}?", "PathMustBeAbsolute": "Der Wert der Umgebungsvariablen X_VCPKG_REGISTRIES_CACHE ist nicht absolut: {path}", - "PerformingPostBuildValidation": "-- Durchführen der Validierung nach dem Build", - "PortBugAllowRestrictedHeaders": "In Ausnahmefällen kann diese Richtlinie über {env_var} deaktiviert werden.", - "PortBugBinDirExists": "In einem statischen Build sollte kein Verzeichnis \"bin\\\" vorhanden sein, aber \"{path}\" ist vorhanden.", - "PortBugDebugBinDirExists": "In einem statischen Build sollte kein Verzeichnis \"debug\\bin\\\" vorhanden sein, aber {path} ist vorhanden.", - "PortBugDebugShareDir": "/debug/share darf nicht vorhanden sein. Organisieren Sie alle wichtigen Dateien neu, und verwenden Sie\ndann \"file(REMOVE_RECURSE \"${{CURRENT_PACKAGES_DIR}}/debug/share\").", - "PortBugDllAppContainerBitNotSet": "Das App Container-Bit muss für Windows Store-Apps festgelegt werden. Für die folgenden DLLs ist das App Container-Bit nicht festgelegt:", - "PortBugDllInLibDir": "Die folgenden DLL-Dateien wurden in \"/lib\" oder \"/debug/lib\" gefunden. Verschieben Sie sie in \"/bin\" bzw. \"/debug/bin\".", - "PortBugDuplicateIncludeFiles": "Includedateien dürfen nicht im Verzeichnis \"/debug/include\" dupliziert werden. Wenn dies im Projekt-Cmake nicht deaktiviert werden kann, verwenden Sie\nfile(REMOVE_RECURSE \"${{CURRENT_PACKAGES_DIR}}/debug/include\")", - "PortBugFoundCopyrightFiles": "Die folgenden Dateien sind potenzielle Urheberrechtsdateien:", - "PortBugFoundDebugBinaries": "{count} Debugbinärdateien gefunden:", - "PortBugFoundDllInStaticBuild": "DLLs sollten nicht in einem statischen Build vorhanden sein, aber die folgenden DLLs wurden gefunden:", - "PortBugFoundEmptyDirectories": "Es sollten keine leeren Verzeichnisse in {path} vorhanden sein. Die folgenden leeren Verzeichnisse wurden gefunden:", - "PortBugFoundExeInBinDir": "Die folgenden EXEs wurden in \"/bin\" oder \"/debug/bin\" gefunden. EXEs sind keine gültigen Verteilungsziele.", - "PortBugFoundReleaseBinaries": "{count} Releasebinärdateien gefunden:", - "PortBugIncludeDirInCMakeHelperPort": "Der Ordner \"/include\" ist in einem Cmake-Hilfsprogrammport vorhanden. Dies ist falsch, da nur Cmake-Dateien installiert werden sollten.", - "PortBugInspectFiles": "Verwenden Sie Folgendes, um die {extension}-Dateien zu überprüfen:", - "PortBugInvalidCrtLinkage": "Die folgenden Binärdateien sollten die CRT „{expected}“ verwenden.", - "PortBugInvalidCrtLinkageEntry": "{path} verbindet mit:", - "PortBugKernel32FromXbox": "Das ausgewählte Triplet ist auf Xbox ausgerichtet, aber die folgenden DLLs sind mit kernel32 verknüpft. Diese DLLs können nicht auf Xbox geladen werden, wenn kernel32 nicht vorhanden ist. Dies wird in der Regel durch das Verknüpfen mit kernel32.lib und nicht durch eine geeignete Umbrella-Bibliothek verursacht, z. B. onecore_apiset.lib oder xgameplatform.lib.", - "PortBugMergeLibCMakeDir": "Der Ordner „/lib/cmake“ sollte mit „/debug/lib/cmake“ zusammengeführt und nach „/share/{package_name}/cmake“ verschoben werden. Verwenden Sie die Hilfsfunktion „vcpkg_cmake_config_fixup()“ aus dem Port „vcpkg-cmake-config“.", - "PortBugMismatchedNumberOfBinaries": "Die Anzahl der Debug- und Releasebinärdateien stimmt nicht überein.", - "PortBugMisplacedCMakeFiles": "Die folgenden CMAKE-Dateien wurden außerhalb von \"/share/{spec}\" gefunden. Platzieren Sie cmake-Dateien in \"/share/{spec}\".", - "PortBugMisplacedFiles": "Die folgenden Dateien werden in {path} abgelegt:", - "PortBugMisplacedFilesCont": "Dateien können in diesen Verzeichnissen nicht vorhanden sein.", - "PortBugMisplacedPkgConfigFiles": "pkgconfig-Verzeichnisse sollten eins von \"share/pkgconfig\" (nur für Headerbibliotheken), \"lib/pkgconfig\" oder \"lib/debug/pkgconfig\" sein. Die folgenden falsch eingefügten pkgconfig-Dateien wurden gefunden:", + "PerformingPostBuildValidation": "Durchführen der Validierung nach dem Build", + "PortBugBinDirExists": "${{CURRENT_PACKAGES_DIR}}/{path} ist vorhanden, sollte sich aber nicht in einem statischen Build befinden. Um diese Meldung zu unterdrücken, fügen Sie set(VCPKG_POLICY_DLLS_IN_STATIC_LIBRARY enabled) hinzu.", + "PortBugDebugShareDir": "${{CURRENT_PACKAGES_DIR}}/debug/share darf nicht vorhanden sein. Organisieren Sie alle wichtigen Dateien neu, und löschen Sie dann alle verbleibenden Dateien, indem Sie \"file(REMOVE_RECURSE \"${{CURRENT_PACKAGES_DIR}}/debug/share\")\" hinzufügen. Um diese Meldung zu unterdrücken, fügen Sie set(VCPKG_POLICY_ALLOW_DEBUG_SHARE enabled) hinzu.", + "PortBugDllAppContainerBitNotSet": "Das App Container-Bit muss für alle DLLs in Windows Store-Apps und die Tripletanforderungen für den Windows Store festgelegt werden, aber die folgenden DLLs wurden nicht mit dem Bitsatz erstellt. Dies bedeutet in der Regel, dass Toolkettenlinkerflags nicht ordnungsgemäß weitergegeben werden oder der verwendete Linker den Schalter /APPCONTAINER nicht unterstützt. Um diese Meldung zu unterdrücken, fügen Sie set(VCPKG_POLICY_SKIP_APPCONTAINER_CHECK enabled) hinzu.", + "PortBugDllInLibDir": "Die folgenden DLL-Dateien wurden in ${{CURRENT_PACKAGES_DIR}}/lib or ${{CURRENT_PACKAGES_DIR}}/debug/lib gefunden. Verschieben Sie sie in ${{CURRENT_PACKAGES_DIR}}/bin oder ${{CURRENT_PACKAGES_DIR}}/debug/bin.", + "PortBugDuplicateIncludeFiles": "${{CURRENT_PACKAGES_DIR}}/debug/include darf nicht vorhanden sein. Um diese Meldung zu unterdrücken, fügen Sie set(VCPKG_POLICY_ALLOW_DEBUG_INCLUDE enabled) hinzu.", + "PortBugDuplicateIncludeFilesFixIt": "Wenn dieses Verzeichnis von einem Buildsystem erstellt wurde, das die Deaktivierung der Installation von Headern im Debugmodus nicht zulässt, löschen Sie das doppelte Verzeichnis mit der Datei (REMOVE_RECURSE \"${{CURRENT_PACKAGES_DIR}}/debug/include\").", + "PortBugFoundCopyrightFiles": "Die folgenden Dateien sind potenzielle Urheberrechtsdateien", + "PortBugFoundDebugBinaries": "Im Folgenden sind Debugbinärdateien aufgeführt:", + "PortBugFoundDllInStaticBuild": "DLLs sollten nicht in einem statischen Build vorhanden sein, aber die folgenden DLLs wurden gefunden. Um diese Meldung zu unterdrücken, fügen Sie set(VCPKG_POLICY_DLLS_IN_STATIC_LIBRARY enabled) hinzu.", + "PortBugFoundEmptyDirectories": "Es sollten keine leeren Verzeichnisse installiert sein. Leere Verzeichnisse sind für mehrere Binär-Cacheanbieter und Git-Repositorys nicht darstellbar und werden nicht als semantische Buildausgaben betrachtet. Sie sollten entweder eine reguläre Datei in jedem leeren Verzeichnis erstellen oder sie mit dem folgenden CMake löschen. Um diese Meldung zu unterdrücken, fügen Sie set(VCPKG_POLICY_ALLOW_EMPTY_FOLDERS enabled) hinzu.", + "PortBugFoundExeInBinDir": "Die folgenden ausführbaren Dateien wurden in ${{CURRENT_PACKAGES_DIR}}/bin oder ${{CURRENT_PACKAGES_DIR}}/debug/bin gefunden. Ausführbare Dateien sind keine gültigen Verteilungsziele. Wenn es sich bei diesen ausführbaren Dateien um Buildtools handelt, sollten Sie \"vcpkg_copy_tools\" verwenden. Um diese Meldung zu unterdrücken, fügen Sie set(VCPKG_POLICY_ALLOW_EXES_IN_BIN enabled) hinzu.", + "PortBugFoundReleaseBinaries": "Im Folgenden sind Releasebinärdateien aufgeführt:", + "PortBugIncludeDirInCMakeHelperPort": "Der Ordner ${{CURRENT_PACKAGES_DIR}}/include ist in einem CMake-Hilfsprogrammport vorhanden. Dies ist falsch, da nur CMake-Dateien installiert werden sollten. Um diese Meldung zu unterdrücken, entfernen Sie set(VCPKG_POLICY_CMAKE_HELPER_PORT enabled).", + "PortBugInvalidCrtLinkageCrtGroup": "Die folgenden Binärdateien sollten nur verknüpft werden mit: {expected}", + "PortBugInvalidCrtLinkageEntry": "{path} Links mit: {actual}", + "PortBugInvalidCrtLinkageHeader": "Binärdateien, die von diesem Port erstellt werden, sind mit C RunTimes (\"CRTs\") inkonsistent mit denen, die von der Triplet- und Bereitstellungsstruktur angefordert werden. Wenn das Triplet nur die Release-CRT verwenden soll, sollten Sie der CMAKE-Datei des Triplets set(VCPKG_POLICY_ONLY_RELEASE_CRT enabled) hinzufügen. Um diese Überprüfung vollständig zu unterdrücken,fügen Sie set(VCPKG_POLICY_SKIP_CRT_LINKAGE_CHECK enabled) der CMAKE-Datei des Triplets hinzu, wenn dies für das gesamte Triplett gilt, oder der Datei \"portfile.cmake\", wenn dies spezifisch für den Port ist. Sie können die Binärdateien überprüfen mit: dumpbin.exe /directives mylibfile.lib", + "PortBugKernel32FromXbox": "Das ausgewählte Triplet ist auf Xbox ausgerichtet, aber die folgenden DLLs sind mit kernel32 verknüpft. Diese DLLs können nicht auf Xbox geladen werden, wenn kernel32 nicht vorhanden ist. Dies wird in der Regel durch das Verknüpfen mit kernel32.lib und nicht durch eine geeignete Umbrella-Bibliothek verursacht, z. B. onecore_apiset.lib oder xgameplatform.lib. Sie können die Abhängigkeiten einer DLL mit \"dumpbin.exe /dependents mylibfile.dll\" überprüfen. Um diese Meldung zu unterdrücken, fügen Sie set(VCPKG_POLICY_ALLOW_KERNEL32_FROM_XBOX enabled) hinzu.", + "PortBugMergeLibCMakeDir": "Dieser Port erstellt ${{CURRENT_PACKAGES_DIR}}/lib/cmake und/oder ${{CURRENT_PACKAGES_DIR}}/debug/lib/cmake, die zusammengeführt und in ${{CURRENT_PACKAGES_DIR}}/share/${{PORT}}/cmake verschoben werden sollen. Verwenden Sie die Hilfsfunktion vcpkg_cmake_config_fixup() aus dem Port vcpkg-cmake-config. Um diese Meldung zu unterdrücken, fügen Sie set(VCPKG_POLICY_SKIP_LIB_CMAKE_MERGE_CHECK enabled) hinzu.", + "PortBugMismatchingNumberOfBinaries": "die Anzahl der Debug- und Releasebinärdateien stimmt nicht überein. Dies weist häufig auf eine falsche Behandlung von Debug- oder Releasefehlern in \"portfile.cmake\" oder im Buildsystem hin. Wenn die Absicht darin besteht, nur Releasekomponenten für dieses Triplet zu erzeugen, sollte das Triplet set(VCPKG_BUILD_TYPE release) der CMAKE-Datei hinzugefügt werden. Um diese Meldung zu unterdrücken, fügen Sie set(VCPKG_POLICY_MISMATCHED_NUMBER_OF_BINARIES enabled) hinzu.", + "PortBugMisplacedCMakeFiles": "Dieser Port installiert die folgenden CMake-Dateien an Stellen, an denen CMake-Dateien nicht erwartet werden. CMake-Dateien sollten in ${{CURRENT_PACKAGES_DIR}}/share/${{PORT}} installiert werden. Um diese Meldung zu unterdrücken, fügen Sie set(VCPKG_POLICY_SKIP_MISPLACED_CMAKE_FILES_CHECK enabled) hinzu.", + "PortBugMisplacedFiles": "Die folgenden regulären Dateien werden an Speicherorten installiert, an denen reguläre Dateien möglicherweise nicht installiert werden. Diese sollten in einem Unterverzeichnis installiert werden. Um diese Meldung zu unterdrücken, fügen Sie set(VCPKG_POLICY_SKIP_MISPLACED_REGULAR_FILES_CHECK enabled) hinzu.", + "PortBugMisplacedPkgConfigFiles": "Die folgenden falsch eingefügten pkgconfig-Verzeichnisse wurden installiert. Falsch eingefügte pkgconfig-Dateien werden von pkgconf oder pkg-config nicht ordnungsgemäß gefunden. pkgconfig-Verzeichnisse sollten ${{CURRENT_PACKAGES_DIR}}/share/pkgconfig (nur für architekturunabhängige /header-Bibliotheken), ${{CURRENT_PACKAGES_DIR}}/lib/pkgconfig (für Releaseabhängigkeiten) oder ${{CURRENT_PACKAGES_DIR}}/debug/lib/pkgconfig (für Debugabhängigkeiten) sein. Um diese Meldung zu unterdrücken, fügen Sie set(VCPKG_POLICY_SKIP_PKGCONFIG_CHECK enabled) hinzu.", + "PortBugMissingCMakeHelperPortFile": "Die Datei ${{CURRENT_PACKAGES_DIR}}/share/${{PORT}}/vcpkg-port-config.cmake ist nicht vorhanden. Diese Datei muss für CMake-Hilfsprogrammports vorhanden sein. Um diese Meldung zu unterdrücken, entfernen Sie set(VCPKG_POLICY_CMAKE_HELPER_PORT enabled).", "PortBugMissingDebugBinaries": "Debugbinärdateien wurden nicht gefunden.", - "PortBugMissingFile": "Die Datei \"/{path}\" ist nicht vorhanden. Diese Datei muss für CMake-Hilfsports vorhanden sein.", - "PortBugMissingImportedLibs": "Importbibliotheken waren in {path} nicht vorhanden.\nWenn dies beabsichtigt ist, fügen Sie die folgende Zeile in der Portdatei hinzu:\nset(VCPKG_POLICY_DLLS_WITHOUT_LIBS aktiviert)", - "PortBugMissingIncludeDir": "Der Ordner \"/include\" ist leer oder nicht vorhanden. Dies weist darauf hin, dass die Bibliothek nicht ordnungsgemäß installiert wurde.", - "PortBugMissingLicense": "Die Softwarelizenz muss unter „${{CURRENT_PACKAGES_DIR}}/share/{package_name}/copyright“ verfügbar sein.", - "PortBugMissingProvidedUsage": "Der Port hat „usage“ bereitgestellt, die Installation in „/share/{package_name}/usage“ jedoch vergessen. Fügen Sie der Portdatei die folgende Zeile hinzu:", + "PortBugMissingImportedLibs": "Importbibliotheken für installierte DLLs scheinen zu fehlen. Wenn dies beabsichtigt ist, fügen Sie set(VCPKG_POLICY_DLLS_WITHOUT_LIBS enabled) hinzu.", + "PortBugMissingIncludeDir": "Der Ordner ${{CURRENT_PACKAGES_DIR}}/include ist leer oder nicht vorhanden. Dies bedeutet in der Regel, dass Header nicht ordnungsgemäß installiert sind. Wenn es sich um einen CMake-Hilfsport handelt, fügen Sie set(VCPKG_POLICY_CMAKE_HELPER_PORT enabled) hinzu. Wenn es sich nicht um einen CMake-Hilfsport handelt, dies aber andernfalls beabsichtigt ist, fügen Si set(VCPKG_POLICY_EMPTY_INCLUDE_FOLDER enabled) hinzu, um diese Meldung zu unterdrücken.", + "PortBugMissingLicense": "die Lizenz ist nicht auf ${{CURRENT_PACKAGES_DIR}}/share/${{PORT}}/copyright installiert. Dies kann durch Hinzufügen eines Aufrufs zu vcpkg_install_copyright behoben werden. Um diese Meldung zu unterdrücken, fügen Sie set(VCPKG_POLICY_SKIP_COPYRIGHT_CHECK enabled) hinzu.", + "PortBugMissingLicenseFixIt": "Fügen Sie ggf. Folgendes hinzu: {value}", + "PortBugMissingProvidedUsage": "Dieser Port enthält eine Datei mit dem Namen \"usage\", wurde aber nicht in ${{CURRENT_PACKAGES_DIR}}/share/${{PORT}}/usage installiert. Wenn diese Datei nicht als Verwendungstext gedacht ist, sollten Sie einen anderen Namen wählen; andernfalls installieren Sie sie. Um diese Meldung zu unterdrücken, fügen Sie set(VCPKG_POLICY_SKIP_USAGE_INSTALL_CHECK enabled) hinzu.", "PortBugMissingReleaseBinaries": "Releasebinärdateien wurden nicht gefunden.", "PortBugMovePkgConfigFiles": "Sie können die pkgconfig-Dateien mit Befehlen wie den folgenden verschieben:", - "PortBugOutdatedCRT": "Veraltete dynamische CRT in den folgenden Dateien erkannt:", - "PortBugRemoveBinDir": "Wenn die Erstellung von \"bin\\\" und/oder \"debug\\bin\\\" nicht deaktiviert werden kann, verwenden Sie dies in der Portdatei, um sie zu entfernen.", - "PortBugRemoveEmptyDirectories": "Wenn ein Verzeichnis aufgefüllt werden soll, aber nicht vorhanden ist, kann dies auf einen Fehler in der Portdatei hinweisen.\nWenn die Verzeichnisse nicht benötigt werden und ihre Erstellung nicht deaktiviert werden kann, entfernen Sie sie in der Portdatei zum Beispiel wie folgt:", + "PortBugOutdatedCRT": "DLLs, die mit veralteten CRT-DLLs (C RunTime) verknüpft sind, wurden installiert. Installierte DLLs sollten mit einer In-support-CRT verknüpft werden. Sie können die Abhängigkeiten einer DLL mit \"dumpbin.exe /dependents mylibfile.dll\" überprüfen. Wenn Sie ein benutzerdefiniertes Triplet für eine alte CRT verwenden, fügen Sie set(VCPKG_POLICY_ALLOW_OBSOLETE_MSVCRT enabled) zur CMAKE-Datei des Triplets hinzu. Um diese Meldung für diesen Port zu unterdrücken, fügen Sie set(VCPKG_POLICY_ALLOW_OBSOLETE_MSVCRT enabled) hinzu.", + "PortBugRemoveBinDir": "Wenn die Erstellung dieser Verzeichnisse nicht deaktiviert werden kann, können Sie Folgendes in \"portfile.cmake\" hinzufügen, um sie zu entfernen.", "PortBugRemoveEmptyDirs": "file(REMOVE_RECURSE leere Verzeichnisse, die von den oben genannten Umbenennungen übrig bleiben)", - "PortBugRestrictedHeaderPaths": "Die folgenden eingeschränkten Header können verhindern, dass die C++-Kernruntime und andere Pakete ordnungsgemäß kompiliert werden. In Ausnahmefällen kann diese Richtlinie deaktiviert werden, indem die CMake-Variable VCPKG_POLICY_ALLOW_RESTRICTED_HEADERS in „portfile.cmake“ festgelegt wird.", - "PortBugSetDllsWithoutExports": "DLLs ohne Exporte sind wahrscheinlich ein Fehler im Buildskript. Wenn dies beabsichtigt ist, fügen Sie die folgende Zeile in der Portdatei hinzu:\nset(VCPKG_POLICY_DLLS_WITHOUT_EXPORTS aktiviert)\nDie folgenden DLLs haben keine Exporte:", + "PortBugRestrictedHeaderPaths": "Die folgenden eingeschränkten Header können verhindern, dass die C++-Kernruntime und andere Pakete ordnungsgemäß kompiliert werden. Diese sollten stattdessen umbenannt oder in einem Unterverzeichnis gespeichert werden. In Ausnahmefällen kann diese Warnung unterdrückt werden, indem set(VCPKG_POLICY_ALLOW_RESTRICTED_HEADERS enabled) hinzugefügt wird.", + "PortBugRestrictedHeaderPathsNote": "die Header sind hier relativ zu ${{CURRENT_PACKAGES_DIR}}/include", + "PortBugSetDllsWithoutExports": "Die folgenden DLLs wurden ohne Exporte erstellt. DLLs ohne Exporte sind wahrscheinlich Fehler im Buildskript. Wenn dies beabsichtigt ist, fügen Sie set(VCPKG_POLICY_DLLS_WITHOUT_EXPORTS enabled) hinzu.", + "PortDeclaredHere": "„{package_name}“ ist hier deklariert.", "PortDependencyConflict": "Port {package_name} weist die folgenden nicht unterstützten Abhängigkeiten auf:", "PortDoesNotExist": "{package_name} ist nicht vorhanden", "PortMissingManifest2": "{package_name} Portmanifest fehlt (keine vcpkg.json- oder CONTROL-Datei)", @@ -932,7 +910,6 @@ "PortVersionControlMustBeANonNegativeInteger": "\"Port-Version\" muss eine nicht negative ganze Zahl sein", "PortVersionMultipleSpecification": "\"port_version\" kann nicht mit einem eingebetteten \"#\" in der Version kombiniert werden.", "PortsAdded": "Die folgenden {count} Ports wurden hinzugefügt:", - "PortsDiffHelp": "Das Argument muss zum Auschecken ein Branch/Tag/Hash sein.", "PortsNoDiff": "Es wurden keine Änderungen an den Ports zwischen den beiden Commits vorgenommen.", "PortsRemoved": "Die folgenden {count} Ports wurden entfernt:", "PortsUpdated": "Die folgenden {count} Ports wurden entfernt:", @@ -957,7 +934,6 @@ "RestoredPackagesFromNuGet": "{count} Paket(e) wurde(n) von NuGet in {elapsed} wiederhergestellt. Verwenden Sie „--debug\", um weitere Details anzuzeigen.", "ResultsHeader": "ERGEBNISSE", "ScriptAssetCacheRequiresScript": "Erwartete Argumente: Die Objektkonfiguration \"x-script\" erfordert genau die exec-Vorlage als Argument.", - "SearchHelp": "Das Argument muss ein zu suchender substring und darf kein Argument sein, um alle Bibliotheken anzuzeigen.", "SecretBanner": "*** GEHEIMNIS ***", "SeeURL": "Weitere Informationen finden Sie unter {url}.", "SerializedBinParagraphHeader": "\nSerialisierter binärer Absatz", @@ -966,6 +942,7 @@ "ShaPassedWithConflict": "SHA512 erfolgreich, aber --skip-sha512 wurde ebenfalls übergeben. Führen Sie nur eine dieser Optionen aus.", "ShallowRepositoryDetected": "vcpkg wurde als flaches Repository geklont in: {path}\nWiederholen Sie den Vorgang mit einem vollständigen vcpkg-Klon.", "SkipClearingInvalidDir": "Das Löschen des Inhalts von {path} wird übersprungen, da es sich nicht um ein Verzeichnis handelte.", + "SkippingPostBuildValidationDueTo": "Die Überprüfung nach dem Build wird aufgrund von {cmake_var} übersprungen.", "SourceFieldPortNameMismatch": "Das Feld „Source“ innerhalb der CONTROL-Datei oder das Feld „name“ innerhalb der Datei „vcpkg.json“ weist den Namen „{package_name}“ auf und stimmt nicht mit dem Portverzeichnis „{path}“ überein.", "SpecifiedFeatureTurnedOff": "Das Feature '{command_name}' wurde speziell deaktiviert, aber --{option} wurde angegeben.", "SpecifyHostArch": "Host-Triplet. Siehe „vcpkg-Hilfe zu Triplets“ (Standard: {env_var})", @@ -973,10 +950,8 @@ "StartCodeUnitInContinue": "Startcodeeinheit in Fortsetzungsposition gefunden", "StoreOptionMissingSha": "Die Option \"--store\" ist ohne sha512 ungültig.", "StoredBinariesToDestinations": "Gespeicherte Binärdateien in {count} Zielen in {elapsed}.", - "StoredBinaryCache": "Gespeicherter binärer Cache: „{path}“", "SuccessfulyExported": "{package_name} nach {path} exportiert", "SuggestGitPull": "Das Ergebnis ist möglicherweise veraltet. Führen Sie \"git pull\" aus, um die neuesten Ergebnisse zu erhalten.", - "SuggestResolution": "Um zu versuchen, alle Fehler gleichzeitig zu beheben, führen Sie Folgendes aus:\nvcpkg {command_name} --{option}", "SuggestStartingBashShell": "Stellen Sie sicher, dass Sie eine neue Bash-Shell gestartet haben, damit die Änderung wirksam wird.", "SupportedPort": "Port {package_name} wird unterstützt.", "SwitchUsedMultipleTimes": "Der Schalter \"{option}\" wurde mehrmals angegeben.", @@ -1004,7 +979,6 @@ "UnexpectedByteSize": "Es wurde erwartet, dass {expected} Bytes geschrieben werden, aber {actual} wurden geschrieben.", "UnexpectedCharExpectedCloseBrace": "Unerwartetes Zeichen; Eigenschaft oder schließende geschweifte Klammer erwartet", "UnexpectedCharExpectedColon": "Unerwartetes Zeichen; Doppelpunkt erwartet", - "UnexpectedCharExpectedComma": "Unerwartetes Zeichen; Komma oder schließende geschweifte Klammer erwartet", "UnexpectedCharExpectedName": "Unerwartetes Zeichen; Eigenschaftenname erwartet", "UnexpectedCharExpectedValue": "Unerwartetes Zeichen; Wert erwartet", "UnexpectedCharMidArray": "Unerwartetes Zeichen in der Mitte des Arrays", @@ -1023,15 +997,11 @@ "UnexpectedEOFMidKeyword": "Unerwartetes EOF in der Mitte des Schlüsselworts", "UnexpectedEOFMidString": "Unerwartetes EOF in der Mitte der Zeichenfolge", "UnexpectedEOFMidUnicodeEscape": "Unerwartetes Dateiende in der Mitte des Unicode-Escapezeichens", - "UnexpectedErrorDuringBulkDownload": "Unerwarteter Fehler beim Massendownload.", "UnexpectedEscapeSequence": "Unerwartete Fortsetzung der Escapesequenz", - "UnexpectedExtension": "Unerwartete Archiverweiterung: „{extension}“.", - "UnexpectedFeatureList": "Unerwartete Featureliste", "UnexpectedField": "unerwartetes Feld \"{json_field}\"", "UnexpectedFieldSuggest": "unerwartetes Feld \"{json_field}\", meinten Sie \"{value}\"?", "UnexpectedFormat": "Das erwartete Format ist [{expected}], war aber [{actual}].", "UnexpectedOption": "Unerwartete Option: {option}", - "UnexpectedPlatformExpression": "unerwarteter Plattformausdruck", "UnexpectedPortName": "Der Port {expected} wird als {actual} in {path} deklariert.", "UnexpectedPortversion": "Unerwartete \"port-version\" ohne Versionsverwaltungsfeld", "UnexpectedSwitch": "Unerwarteter Schalter: {option}", @@ -1040,9 +1010,8 @@ "UnknownBaselineFileContent": "Nicht erkennbarer Baselineeintrag; erwartet \"port:triplet=(fail|skip)\".", "UnknownBinaryProviderType": "Unbekannter Binäranbietertyp: Gültige Anbieter sind \"clear\", \"default\", \"nuget\", \"nugetconfig\", \"nugettimeout\", \"interactive\", \"interactive\", \"x-azblob\", \"x-gcs\", \"x-aws\", \"x-aws-config\", \"http\" und \"files\"", "UnknownBooleanSetting": "unbekannte boolesche Einstellung für die Option {option}: „{value}“. Gültige Werte sind „,“, „1“, „0“, „ON“, „OFF“, „TRUE“ und „FALSE“.", - "UnknownOptions": "Unbekannte(r) Option(n) für Befehl „{command_name}“:", "UnknownParameterForIntegrate": "Unbekannter Parameter „{value}“ für die Integration.", - "UnknownPolicySetting": "Unbekannte Einstellung für Richtlinien-'{value}': {option}", + "UnknownPolicySetting": "Unbekannte Einstellung von {cmake_var}: {value}. Gültige Richtlinienwerte sind \"\", \"disabled\" und \"enabled\".", "UnknownSettingForBuildType": "Unbekannte Einstellung für VCPKG_BUILD_TYPE {option}. Gültige Einstellungen sind „“, „debug“ und „release“.", "UnknownTool": "vcpkg verfügt nicht über eine Definition dieses Tools für diese Plattform.", "UnknownTopic": "Unbekannter Thementyp {Wert}", @@ -1054,7 +1023,6 @@ "UnsupportedFeatureSupportsExpressionWarning": "{feature_spec} wird nur für den Ausdruck „{supports_expression}“ unterstützt, der nicht mit {triplet} übereinstimmt. Dies bedeutet in der Regel, dass beim Erstellen anderer Plattformen bekannte Buildfehler oder Laufzeitprobleme auftreten. Der Vorgang wird trotzdem fortgesetzt, weil „--allow-unsupported“ angegeben ist.", "UnsupportedPort": "Port {package_name} wird nicht unterstützt.", "UnsupportedPortDependency": "- Abhängigkeits-{value} wird nicht unterstützt.", - "UnsupportedShortOptions": "Kurze Optionen werden nicht unterstützt: „{value}“", "UnsupportedSyntaxInCDATA": "]]> wird im CDATA-Block nicht unterstützt.", "UnsupportedSystemName": "VCPKG_CMAKE_SYSTEM_NAME „{system_name}“ konnte keiner „vcvarsall“-Plattform zugeordnet werden. Unterstützte Systemnamen sind „Windows“ und „WindowsStore“.", "UnsupportedToolchain": "in Triplet {triplet}: Es wurde keine gültige Toolkette für die angeforderte Zielarchitektur „{arch}“ gefunden.\nDie ausgewählte Visual Studio-Instanz befindet sich unter: {path}\nDie verfügbaren Toolkettenkombinationen sind: {list}", @@ -1068,21 +1036,18 @@ "UpdateBaselineUpdatedBaseline": "aktualisierte Registry „{url}“: Baseline „{old_value}“ -> „{new_value}“", "UpgradeInManifest": "Upgrade aktualisiert eine Installation im klassischen Modus und unterstützt daher keinen Manifestmodus. Erwägen Sie, Ihre Abhängigkeiten zu aktualisieren, indem Sie Ihre Baseline mit vcpkg x-update-baseline auf einen aktuellen Wert aktualisieren und die vcpkg-Installation ausführen.", "UpgradeRunWithNoDryRun": "Wenn Sie sicher sind, dass Sie die obigen Pakete neu erstellen möchten, führen Sie diesen Befehl mit der Option \"--no-dry-run\" aus.", - "UploadedBinaries": "Binärdateien wurden in {count} {vendor} hochgeladen.", - "UploadedPackagesToVendor": "{count} Pakete in {vendor} in {elapsed} hochgeladen", "UploadingBinariesToVendor": "Binärdateien für „{spec}“ werden in „{vendor}“-Quellpfad „{path}“ hochgeladen.", - "UploadingBinariesUsingVendor": "Binärdateien für „{spec}“ werden mithilfe von „{vendor}“ nach „{path}“ hochgeladen.", + "UsageInstallInstructions": "Sie können die Nutzungsdatei mit dem folgenden CMake installieren", + "UsageTextHere": "die Nutzungsdatei ist vorhanden", "UseEnvVar": "-- Verwendung von {env_var} in Umgebungsvariablen.", "UserWideIntegrationDeleted": "Die benutzerweite Integration ist nicht installiert.", "UserWideIntegrationRemoved": "Die benutzerweite Integration wurde entfernt.", - "UsingCommunityTriplet": "-- Verwendung von Community-Triplett {Triplett}. Der Erfolg dieser Triplet-Konfiguration ist nicht garantiert.", "UsingManifestAt": "Die Manifestdatei unter {path} wird verwendet.", "Utf8ConversionFailed": "Fehler beim Konvertieren in UTF-8", "VSExaminedInstances": "Die folgenden Visual Studio-Instanzen wurden berücksichtigt:", "VSExaminedPaths": "Die folgenden Pfade wurden für Visual Studio-Instanzen untersucht:", "VSNoInstances": "Es konnte keine vollständige Visual Studio-Instanz gefunden werden.", "VcpkgCeIsExperimental": "Vcpkg-artifacts ist experimentell und kann sich jederzeit ändern.", - "VcpkgCommitTableHeader": "VCPKG-Commit", "VcpkgCompletion": "Die vcpkg {value}-Vervollständigung wurde bereits in Ihr „{path}“-Datei importiert.\nDie folgenden Einträge wurden gefunden:", "VcpkgDisallowedClassicMode": "Es wurde kein Manifest (vcpkg.json) über dem aktuellen Arbeitsverzeichnis gefunden.\nDiese „vcpkg“-Verteilung verfügt nicht über eine Instanz im klassischen Modus.", "VcpkgHasCrashed": "„vcpkg“ ist abgestürzt. Erstellen Sie unter „https://github.com/microsoft/vcpkg“ ein Problem, das eine kurze Zusammenfassung Ihrer Vorgehensweise und die folgenden Informationen enthält.", @@ -1095,17 +1060,22 @@ "VcpkgUsage": "Syntax: vcpkg [--switches] [--options=values] [Argumente] @response_file", "VcvarsRunFailed": "Fehler beim Ausführen von \"vcvarsall.bat\", um eine Visual Studio-Umgebung abzurufen.", "VcvarsRunFailedExitCode": "beim Versuch, eine Visual Studio-Umgebung abzurufen, hat vcvarsall.bat \"{exit_code}\" zurückgegeben.", - "VersionBaselineMismatch": "Die neueste Version ist {expected}, aber die Baselinedatei enthält {actual}.\nFühren Sie Folgendes aus:\nvcpkg x-add-version {package_name}\nGit-Add-Versionen\ngit commit -m \"Versionsdatenbank aktualisieren\"\nDadurch wird die Baselineversion aktualisiert.", + "VersionBaselineMatch": "„{version_spec}“ stimmt mit der aktuellen Baseline überein.", + "VersionBaselineMismatch": "„{package_name}“ ist „{actual}“ zugewiesen, aber der lokale Port ist „{expected}“", "VersionBuiltinPortTreeEntryMissing": "kein Versionsdatenbankeintrag für das Paket {package_name} bei {expected}; mithilfe der Strukturversion der ausgecheckten Ports ({actual}).", "VersionCommandHeader": "Version des vcpkg-Paketverwaltungsprogramms {version}\n\nLizenzinformationen finden Sie unter LICENSE.txt.", "VersionConflictXML": "{path}-Version erwartet: [{expected_version}], war aber [{actual_version}]. Führen Sie bootstrap-vcpkg erneut aus.", + "VersionConstraintNotInDatabase1": "Die Einschränkung „version>=“ für „{package_name}“ nennt Version „{version}, die in der Versionsdatenbank nicht vorhanden ist. Alle Versionen müssen in der Versionsdatenbank vorhanden sein, damit sie von vcpkg interpretiert werden können.", + "VersionConstraintNotInDatabase2": "Erwägen Sie, die Versionseinschränkung zu entfernen oder einen hier deklarierten Wert auszuwählen.", + "VersionConstraintOk": "Alle Versionseinschränkungen sind mit der Versionsdatenbank konsistent.", "VersionConstraintPortVersionMustBePositiveInteger": "Portversion (nach \"#\") in \"version>=\" muss eine nicht negative ganze Zahl sein.", - "VersionConstraintUnresolvable": "Eine Mindesteinschränkung für die Abhängigkeit des Pakets {package_name} aus {spec} kann nicht aufgelöst werden.\nDie Abhängigkeit wurde in der Baseline nicht gefunden. Dies weist darauf hin, dass das Paket zu diesem Zeitpunkt nicht vorhanden war. Dies kann behoben werden, indem mithilfe des Felds „Außerkraftsetzung“ eine explizite Außerkraftsetzungsversion bereitgestellt oder die Baseline aktualisiert wird.\nWeitere Informationen finden Sie unter „vcpkg-Hilfeversionsverwaltung“.", "VersionConstraintViolated": "Es wurde erwartet, dass die Abhängigkeit {spec} mindestens Version {expected_version} ist, sie ist derzeit aber {actual_version}.", "VersionDatabaseEntryMissing": "kein Versionseintrag für das Paket {package_name} mit Version {version}.", - "VersionDatabaseFileMissing": "Dem Paket {package_name} fehlt eine Versionsdatenbankdatei im Pfad {path}.\nAusführen:\nvcpkg x-add-version {package_name}\num die Versionsdatei zu erstellen.", + "VersionDatabaseFileMissing": "Dieser Port befindet sich nicht in der Versionsdatenbank.", + "VersionDatabaseFileMissing2": "Die Versionsdatenbankdatei sollte sich hier befinden.", + "VersionDatabaseFileMissing3": "Führen Sie „{command_line}“ aus, um die Versionsdatenbankdatei zu erstellen.", "VersionGitEntryMissing": "Kein Versionsdatenbankeintrag für das Paket {package_name} in der Version {version}.\nVerfügbare Versionen:", - "VersionInDeclarationDoesNotMatch": "Die in der Datei deklarierte Version stimmt nicht mit der ausgecheckten Version überein: {version}", + "VersionInDeclarationDoesNotMatch": "„{git_tree_sha}“ ist als „{expected}“ deklariert, scheint aber „{actual}“ zu enthalten.", "VersionIncomparable1": "Versionskonflikt für {spec}: {constraint_origin} erfordert {expected}, der nicht mit der Baselineversion {actual} verglichen werden kann.", "VersionIncomparable2": "{version_spec} weist das Schema „{new_scheme}“ auf", "VersionIncomparable3": "Dies kann behoben werden, indem der bevorzugten Version eine explizite Außerkraftsetzung hinzugefügt wird, z. B.:", @@ -1117,17 +1087,29 @@ "VersionInvalidSemver": "„{version}“ ist keine gültige semantische Version. Weitere Informationen finden Sie unter .", "VersionMissing": "Es wurde ein Versionsverwaltungsfeld erwartet (version, version-date, version-semver oder version-string).", "VersionMissingRequiredFeature": "{version_spec} verfügt nicht über die erforderliche Funktion {feature}, die von {constraint_origin} benötigt wird", - "VersionNotFound": "{expected} nicht verfügbar. Es ist nur {actual} verfügbar.", - "VersionNotFoundInVersionsFile": "Version {version} wurde in der Versionsdatei für {Paketname} nicht gefunden.\nAusführen:\nvcpkg x-add-version {Paket_name}\num die neue Portversion hinzuzufügen.", + "VersionNotFoundInVersionsFile2": "„{version_spec}“ wurde in der Versionsdatenbank nicht gefunden.", + "VersionNotFoundInVersionsFile3": "Die Version sollte sich in dieser Datei befinden.", + "VersionNotFoundInVersionsFile4": "Führen Sie „{command_line}“ aus, um die neue Portversion hinzuzufügen.", + "VersionOverrideNotInVersionDatabase": "Die Versionsüberschreibung „{package_name}“ ist in der Versionsdatenbank nicht vorhanden. Ist dieser Port vorhanden?", + "VersionOverrideVersionNotInVersionDatabase1": "Die Außerkraftsetzung von Namen „{package_name}“, Version „{version}“, die in der Versionsdatenbank nicht vorhanden ist. Die Installation dieses Ports auf oberster Ebene schlägt fehl, da diese Version nicht aufgelöst werden kann.", + "VersionOverrideVersionNotInVersionDatabase2": "Erwägen Sie, die Versionsüberschreibung zu entfernen oder einen hier deklarierten Wert auszuwählen.", + "VersionOverwriteVersion": "Sie können „{version_spec}“ mit korrekten lokalen Werten überschreiben, indem Sie Folgendes ausführen:", "VersionRejectedDueToBaselineMissing": "{path} wurde abgelehnt, weil er „{json_field}“ verwendet wird und keine integrierte Baseline aufweist. Dies kann behoben werden, indem die Verwendung von „{json_field}“ entfernt oder eine „integrierte Baseline“ hinzugefügt wird.\nWeitere Informationen finden Sie unter „Versionsverwaltung der vcpkg-Hilfe“.", "VersionRejectedDueToFeatureFlagOff": "{path} wurde abgelehnt, weil er „{json_field}“ verwendet wird und das Feature-Flag „versions“ deaktiviert ist. Dies kann behoben werden, indem „{json_field}“ entfernt oder das Feature-Flag „versions“ aktiviert wird.\nWeitere Informationen finden Sie unter „Versionsverwaltung der vcpkg-Hilfe“.", - "VersionSchemeMismatch": "Die Versionsdatenbank deklariert die Version {version} als {expected}, der {path} deklariert sie jedoch als {actual}. Versionen müssen eindeutig sein, auch wenn sie mit unterschiedlichen Schemas deklariert sind.:\nFühren Sie Folgendes aus:\nvcpkg x-add-version {package_name} --overwrite-version\nDadurch wird das in der Versionsdatenbank deklarierte Schema mit dem im Port deklarierten Schema überschrieben.", - "VersionShaMismatch": "Die Version {version} wird mit {expected} deklariert, aber der lokale Port verfügt über einen anderen SHA {actual}.\nAktualisieren Sie die Versionsfelder des Ports, und führen Sie dann Folgendes aus:\nvcpkg x-add-version {package_name}\ngit add versions\ngit commit -m \"Version der Datenbank aktualisieren\"\nDadurch wird die neue Version hinzugefügt.", - "VersionShaMissing": "beim Überprüfen des Pakets {package_name}, Git SHA fehlt.\nFühren Sie folgendes aus:\ngit add \"{path}\"\ngit commit -m \"wip\"\nvcpkg x-add-version {package_name}\nGit-Add-Versionen\ngit commit --amend -m \"[{package_name}] Neuen Port hinzufügen\"\nDadurch werden ein Commit für den neuen Port ausgeführt und die zugehörige Versionsdatei erstellt.", + "VersionSchemeMismatch1": "„{version}“ ist als „{expected}“ deklariert, aber „{package_name}“ wird mit „{actual}“ deklariert.", + "VersionSchemeMismatch1Old": "„{version}“ ist als „{expected}“ deklariert, aber „{package_name}@{git_tree_sha}“ wird mit „{actual}“ deklariert.", + "VersionSchemeMismatch2": "Versionen müssen eindeutig sein, auch wenn sie mit unterschiedlichen Schemas deklariert sind.", + "VersionShaMismatch1": "Die Git-Struktur „{version_spec}“ „{git_tree_sha}“ stimmt nicht mit dem Portverzeichnis überein.", + "VersionShaMismatch2": "Das Portverzeichnis enthält die Git-Struktur „{git_tree_sha}“.", + "VersionShaMismatch3": "Wenn „{version_spec}“ bereits veröffentlicht ist, aktualisieren Sie diese Datei mit einer neuen Version oder Portversion, committen Sie sie, und fügen Sie dann die neue Version hinzu, indem Sie Folgendes ausführen:", + "VersionShaMismatch4": "Wenn „{version_spec}“ noch nicht veröffentlicht wurde, überschreiben Sie die vorherige Git-Struktur, indem Sie Folgendes ausführen:", + "VersionShaMissing1": "Die Git-Struktur des Portverzeichnisses konnte nicht bestimmt werden. Dies wird in der Regel durch Änderungen verursacht, für die kein Commit ausgeführt wurde.", + "VersionShaMissing2": "Sie können Ihre Änderungen committen und der Versionsdatenbank hinzufügen, indem Sie Folgendes ausführen:", + "VersionShaMissing3": "WIP", + "VersionShaMissing4": "[{package_name}] Neuen Port hinzufügen", "VersionSharpMustBeFollowedByPortVersion": "Auf \"#\" im Versionstext muss eine Portversion folgen.", "VersionSharpMustBeFollowedByPortVersionNonNegativeInteger": "Auf \"#\" im Versionstext muss eine Portversion folgen (eine nicht negative ganze Zahl).", "VersionSpecMismatch": "Fehler beim Laden des Ports, da die Versionen inkonsistent sind. Die Datei „{path}“ enthält die Version {actual_version}, aber die Versionsdatenbank gibt an, dass sie {expected_version} sein soll.", - "VersionTableHeader": "Version", "VersionVerifiedOK": "{version_spec} befindet sich ordnungsgemäß in der Versionsdatenbank ({git_tree_sha}).", "WaitingForChildrenToExit": "Es wird auf das Beenden untergeordneter Prozesse gewartet...", "WaitingToTakeFilesystemLock": "Es wird auf die Sperre des Dateisystems für „{path}“ gewartet...", @@ -1136,8 +1118,7 @@ "WhileCheckingOutBaseline": "beim Auschecken der Baseline \"{commit_sha}\".", "WhileCheckingOutPortTreeIsh": "beim Auschecken von Port {package_name} mit Git-Struktur {git_tree_sha}", "WhileGettingLocalTreeIshObjectsForPorts": "beim Abrufen lokaler Strukturobjekte für Ports", - "WhileLoadingLocalPort": "beim Laden des lokalen Ports {package_name}", - "WhileLoadingPortFromGitTree": "beim Laden des Ports von: {commit_sha}", + "WhileLoadingBaselineVersionForPort": "Beim Laden der Baselineversion für „{package_name}“", "WhileLoadingPortVersion": "beim Laden von {version_spec}", "WhileLookingForSpec": "bei der Suche nach {spec}:", "WhileParsingVersionsForPort": "beim Parsen von Versionen für das Paket {package_name} aus {path}", @@ -1165,7 +1146,7 @@ "descriptionShouldBeOfTypestringFound$": "Die Beschreibung muss vom Typ \"string\" sein, gefunden wurde \"${p0}\".", "optionsShouldBeASequenceFound$": "Die Optionen sollten eine Sequenz sein, gefunden wurde \"${p0}\".", "DuplicateKeysDetectedInManifest$": "Doppelte Schlüssel im Manifest erkannt: \"${p0}\"", - "noPostscriptFileRerunWithTheVcpkgShellFunctionRatherThanExecutable": "keine Postscript-Datei: Führen Sie die Ausführung mit der vcpkg-Shellfunktion statt mit der ausführbaren Datei erneut aus.", + "noPostscriptFileRunVcpkgshellWithTheSameArguments": "keine Postscript-Datei: Führen Sie vcpkg-shell mit den gleichen Argumenten aus.", "DuplicateDefine$DuringActivationNewValueWillReplaceOld": "Definieren Sie ${p0} während der Aktivierung doppelt. Der neue Wert ersetzt den alten Wert.", "DuplicateToolDeclared$DuringActivationNewValueWillReplaceOld": "Doppeltes Tool hat ${p0} während der Aktivierung deklariert. Der neue Wert ersetzt den alten Wert.", "DuplicateAliasDeclared$DuringActivationNewValueWillReplaceOld": "Doppelter Alias wurde während der Aktivierung als ${p0} deklariert. Der neue Wert ersetzt den alten Wert.", @@ -1257,7 +1238,7 @@ "MultipleArtifactsSpecifiedButNotAnEqualNumberOf$Switches": "Es wurden mehrere Artefakte angegeben, aber nicht die gleiche Anzahl von ${p0}-Schaltern.", "TriedToAddAnArtifact$$ButCouldNotDetermineTheRegistryToUse": "Es wurde versucht, [${p0}]:${p1} ein Artefakt hinzuzufügen, die zu verwendende Registrierung konnte jedoch nicht bestimmt werden.", "TriedToAddRegistry$As$ButItWasAlready$PleaseAdd$ToThisProjectManuallyAndReattempt": "Es wurde versucht, die Registrierung ${p0} als ${p1} hinzuzufügen, aber es war bereits ${p2}. Fügen Sie ${p3} diesem Projekt manuell hinzu, und versuchen Sie es erneut.", - "RunvcpkgActivateToApplyToTheCurrentTerminal": "Führen Sie \"vcpkg activate\\\" aus, um es auf das aktuelle Terminal anzuwenden.", + "RunvcpkgshellActivateToApplyToTheCurrentTerminal": "Führen Sie \\\"vcpkg-shell activate\\\" aus, um es auf das aktuelle Terminal anzuwenden.", "DownloadsFolderCleared$": "Ordner \"Downloads\" gelöscht (${p0}) ", "InstalledArtifactFolderCleared$": "Installierter Artefaktordner gelöscht (${p0}) ", "CacheFolderCleared$": "Cacheordner gelöscht (${p0}) ", diff --git a/locales/messages.es.json b/locales/messages.es.json index 92993c7351..5611de2daf 100644 --- a/locales/messages.es.json +++ b/locales/messages.es.json @@ -46,7 +46,6 @@ "AVersionOfAnyType": "una versión de cualquier tipo", "AddArtifactOnlyOne": "'{command_line}' solo puede agregar un artefacto a la vez.", "AddCommandFirstArg": "El primer parámetro que se va a agregar debe ser \"artefacto\" o \"puerto\".", - "AddFirstArgument": "El primer argumento para \"{command_line}\" debe ser \"artifact\" o \"port\".", "AddPortRequiresManifest": "'{command_line}' requiere un archivo de manifiesto activo.", "AddPortSucceeded": "Los puertos se agregaron correctamente al archivo vcpkg.json.", "AddRecurseOption": "Si está seguro de que quiere quitarlos, ejecute el comando con la opción --recurse.", @@ -54,12 +53,11 @@ "AddVersionAddedVersionToFile": "se ha agregado la versión {version} a {path}", "AddVersionArtifactsOnly": "--La versión es solo artefactos y no se puede usar con vcpkg add port", "AddVersionCommitChangesReminder": "¿Se acordó de confirmar los cambios?", - "AddVersionCommitResultReminder": "No olvide confirmar el resultado.", "AddVersionDetectLocalChangesError": "omitiendo la detección de cambios locales debido a un formato inesperado en la salida de estado de GIT", "AddVersionFileNotFound": "no se pudo encontrar la ruta {path} de archivo que se necesita", "AddVersionFormatPortSuggestion": "Ejecute \"{command_line}\" para dar formato al archivo.", "AddVersionIgnoringOptionAll": "omitiendo --{option} desde que se proporcionó un argumento de nombre de puerto", - "AddVersionLoadPortFailed": "no se puede cargar el puerto {package_name}", + "AddVersionInstructions": "puede ejecutar los siguientes comandos para agregar automáticamente la versión actual de {package_name}:", "AddVersionNewFile": "(nuevo archivo)", "AddVersionNewShaIs": "nuevo SHA: {commit_sha}", "AddVersionNoFilesUpdated": "No se actualizó ningún archivo", @@ -70,8 +68,8 @@ "AddVersionPortFilesShaChanged": "Los archivos protegidos de {package_name} han cambiado, pero no se ha actualizado la versión", "AddVersionPortFilesShaUnchanged": "los archivos protegidos de {package_name} no cambian con respecto a la versión {version}", "AddVersionPortHasImproperFormat": "{package_name} no tiene el formato correcto.", - "AddVersionSuggestNewVersionScheme": "Utilice el esquema de versión \"{new_scheme}\" en lugar de \"{old_scheme}\" en el puerto \"{package_name}\".\nUtilice --{option} para deshabilitar esta comprobación.", - "AddVersionUnableToParseVersionsFile": "no se puede analizar el archivo de versiones {path}", + "AddVersionSuggestVersionDate": "El formato de versión de \"{package_name}\" usa \"version-string\", pero el formato es aceptable como \"version-date\". Si este formato está pensado para ser una fecha ISO 8601, cambie el formato a \"version-date\" y vuelva a ejecutar este comando. De lo contrario, para deshabilitar esta comprobación, vuelva a ejecutar este comando y agregue --skip-version-format-check .", + "AddVersionSuggestVersionRelaxed": "El formato de versión de \"{package_name}\" usa \"version-string\", pero el formato es aceptable como \"version\". Si las versiones de este puerto se pueden ordenar mediante reglas de versión flexible, cambie el formato a \"version\" y vuelva a ejecutar este comando. Las reglas de versión flexible ordenan las versiones por cada componente numérico. A continuación, las versiones con sufijos de guiones se ordenan léxicamente antes. Se omiten las etiquetas de compilación plus. Ejemplos:\n1.0 < 1.1-alpha < 1.1-b < 1.1 < 1.1.1 < 1.2+build = 1.2 < 2.0\nTenga en cuenta que los sufijos discontinuos se ordenan *antes*, no después. 1.0-anything < 1.0\nTenga en cuenta que este criterio de ordenación es el mismo que el elegido en el control de versiones semántico (consulte https://semver.org), aunque no se apliquen las partes semánticas realmente.\nSi estas reglas no ordenan las versiones de este puerto, vuelva a ejecutar el comando y agregue --skip-version-format-check para deshabilitar esta comprobación.", "AddVersionUncommittedChanges": "hay cambios no confirmados para {package_name}", "AddVersionUpdateVersionReminder": "¿Recuerda actualizar la versión o la versión del puerto?", "AddVersionUseOptionAll": "{command_name} sin argumentos requiere pasar --{option} para actualizar todas las versiones de puerto a la vez", @@ -82,7 +80,7 @@ "AdditionalPackagesToRemove": "Es necesario quitar paquetes adicionales (*) para completar esta operación.", "AllFormatArgsRawArgument": "la cadena de formato \"{value}\" contiene un argumento de formato sin formato", "AllFormatArgsUnbalancedBraces": "llave desequilibrada en la cadena de formato \"{value}\"", - "AllPackagesAreUpdated": "Todos los paquetes instalados están actualizados con el archivo de puerto local.", + "AllPackagesAreUpdated": "Todos los paquetes instalados están actualizados.", "AlreadyInstalled": "{spec} ya está instalado", "AlreadyInstalledNotHead": "{spec} ya está instalado; no se está compilando desde HEAD", "AmbiguousConfigDeleteConfigFile": "Configuración ambigua de vcpkg proporcionada por el manifiesto y el archivo de configuración.\n-- Eliminar archivo de configuración {path}", @@ -110,7 +108,6 @@ "ApplocalProcessing": "implementar dependencias", "ArtifactsBootstrapFailed": "vcpkg-artifacts no está instalado y no se pudo arrancar.", "ArtifactsNotInstalledReadonlyRoot": "vcpkg-artifacts no está instalado y no se puede instalar porque se supone que VCPKG_ROOT es de solo lectura. La reinstalación de vcpkg mediante el \"un liner\" puede solucionar este problema.", - "ArtifactsNotOfficialWarning": "Uso de vcpkg-artifacts con una invitación ", "ArtifactsOptionIncompatibility": "--{option} no tiene ningún efecto en la búsqueda de artefactos.", "ArtifactsOptionJson": "Ruta de acceso completa al archivo JSON donde se registran las variables de entorno y otras propiedades", "ArtifactsOptionMSBuildProps": "Ruta de acceso completa al archivo en el que se escribirán las propiedades de MSBuild", @@ -118,12 +115,10 @@ "ArtifactsOptionVersionMismatch": "La cantidad de modificadores --version debe coincidir con la cantidad de artefactos nombrados", "ArtifactsSwitchARM": "Fuerza la detección de host a ARM al adquirir artefactos", "ArtifactsSwitchARM64": "Fuerza la detección de host a ARM64 al adquirir artefactos", - "ArtifactsSwitchAll": "Actualiza todos los registros de artefactos conocidos", "ArtifactsSwitchAllLanguages": "Adquiere todos los archivos de idioma al adquirir artefactos.", "ArtifactsSwitchForce": "Fuerza la requisición si ya se ha adquirido un artefacto", "ArtifactsSwitchFreebsd": "Fuerza la detección de host a FreeBSD al adquirir artefactos", "ArtifactsSwitchLinux": "Fuerza la detección de host en Linux al adquirir artefactos", - "ArtifactsSwitchNormalize": "Aplica las correcciones de desuso", "ArtifactsSwitchOnlyOneHostPlatform": "Sólo se puede configurar una plataforma de host (--x64, --x86, --arm, --arm64).", "ArtifactsSwitchOnlyOneOperatingSystem": "Sólo se puede configurar un sistema operativo (--windows, --osx, --linux, --freebsd).", "ArtifactsSwitchOnlyOneTargetPlatform": "Solo se puede configurar una plataforma de destino (--target:x64, --target:x86, --target:arm, --target:arm64).", @@ -135,9 +130,12 @@ "ArtifactsSwitchWindows": "Fuerza la detección de host en Windows al adquirir artefactos", "ArtifactsSwitchX64": "Fuerza la detección de host a x64 al adquirir artefactos", "ArtifactsSwitchX86": "Fuerza la detección de host a x86 al adquirir artefactos", + "AssetCacheHit": "Acierto de caché de recursos para {path}; descargado de: {url}", + "AssetCacheMiss": "Error de caché de recursos; descargando desde {url}", + "AssetCacheMissBlockOrigin": "Error de caché de recursos para {path} y las descargas están bloqueadas por x-block-origin.", "AssetCacheProviderAcceptsNoArguments": "argumentos inesperados: \"{value}\" no acepta argumentos", + "AssetCacheSuccesfullyStored": "{path} se almacenó correctamente en {url}.", "AssetSourcesArg": "Orígenes de almacenamiento en caché de recursos. Consulte \"vcpkg help assetcaching\"", - "AttemptingToFetchPackagesFromVendor": "Intentando capturar {count} paquetes de {vendor}", "AttemptingToSetBuiltInBaseline": "intentando establecer builtin-baseline en vcpkg.json al invalidar default-registry en vcpkg-configuration.json.\nse usará default-registry de vcpkg-configuration.json.", "AuthenticationMayRequireManualAction": "Uno o más proveedores de credenciales de {vendor} solicitaron una acción manual. Agregue el origen binario \"interactivo\" para permitir la interactividad.", "AutoSettingEnvVar": "-- Estableciendo automáticamente variables de entorno {env_var} en {url}.", @@ -147,12 +145,11 @@ "AzUrlAssetCacheRequiresBaseUrl": "argumentos inesperados: la configuración de recursos \"azurl\" requiere una URL base", "AzUrlAssetCacheRequiresLessThanFour": "argumentos inesperados: la configuración de recursos \"azurl\" requiere menos de 4 argumentos", "BaselineConflict": "La especificación de vcpkg-configuration.default-registry en un archivo de manifiesto entra en conflicto con la línea base.\nQuite una de estas configuraciones en conflicto.", - "BaselineFileNoDefaultField": "El archivo de referencia en el comando {commit_sha} no era válido (no había campo \"predeterminado\").", "BaselineGitShowFailed": "Error en `git show` versions/baseline.json al restaurar la línea base de la confirmación \"{commit_sha}\". Esto puede solucionarse recuperando las confirmaciones con `git fetch`.", - "BaselineMissing": "No se encontró la versión de línea base. Ejecute:\nvcpkg x-add-version {package_name}\ngit add versions\ngit commit -m \"Update version database\"\npara establecer {version} como la versión de línea base.", - "BinaryCacheVendorHTTP": "Servidores HTTP", + "BaselineMissing": "{package_name} no tiene asignada una versión", + "BinariesRelativeToThePackageDirectoryHere": "los archivos binarios son relativos a ${{CURRENT_PACKAGES_DIR}} aquí", "BinarySourcesArg": "Orígenes de almacenamiento en caché binarios. Consulte \"vcpkg help binarycaching\"", - "BinaryWithInvalidArchitecture": "{path}\n Se esperaba: {expected}, pero fue {actual}", + "BinaryWithInvalidArchitecture": "{path} está diseñado para {arch}", "BuildAlreadyInstalled": "{spec} ya está instalado; quite {spec} antes de intentar compilarlo.", "BuildDependenciesMissing": "El comando de compilación requiere que todas las dependencias estén instaladas.\nFaltan las siguientes dependencias:", "BuildResultBuildFailed": "BUILD_FAILED", @@ -170,22 +167,19 @@ "BuildTroubleshootingMessage1": "Asegúrese de que usa los archivos de puerto más recientes con \"git pull\" y \"vcpkg update\".\nA continuación, compruebe si hay problemas conocidos en:", "BuildTroubleshootingMessage2": "Puede enviar un nuevo problema en:", "BuildTroubleshootingMessage3": "Incluya \"Error de compilación de [{package_name}]\" en el título del informe de errores, la siguiente información de versión en la descripción del error y adjunte los registros de errores relevantes de arriba.", - "BuildTroubleshootingMessage4": "Use la plantilla rellenada previamente de {path} al informar del problema.", "BuildTroubleshootingMessageGH": "También puede enviar una incidencia ejecutando (GitHub CLI debe estar instalado):", "BuildingFromHead": "Compilando {spec} de HEAD...", "BuildingPackage": "Compilando {spec}...", "BuildingPackageFailed": "error en la compilación de {spec} con: {build_result}", "BuildingPackageFailedDueToMissingDeps": "debido a que faltan las siguientes dependencias:", "BuiltInTriplets": "Tripletes integrados:", - "BuiltWithIncorrectArchitecture": "Los siguientes archivos se compilaron para una arquitectura incorrecta:", - "CISettingsExclude": "Lista de puertos separados por comas que se omitirán", + "BuiltWithIncorrectArchitecture": "Los tripletes solicitan que los binarios se compilen para {arch}, pero los siguientes archivos binarios se compilaron para una arquitectura diferente. Normalmente, esto significa que la información de la cadena de herramientas se transmite incorrectamente al sistema de compilación de los archivos binarios. Para suprimir este mensaje, agregue set(VCPKG_POLICY_SKIP_ARCHITECTURE_CHECK enabled)", "CISettingsOptCIBase": "Ruta de acceso al archivo ci.baseline.txt. Se usa para omitir puertos y detectar regresiones.", "CISettingsOptExclude": "Lista de puertos separados por comas que se omitirán", "CISettingsOptFailureLogs": "Directorio en el que se copiarán los registros de errores", "CISettingsOptHostExclude": "Lista separada por comas de los puertos que se omitirán para el triplete de host", "CISettingsOptOutputHashes": "Archivo para imprimir todos los hash de paquete determinados", "CISettingsOptParentHashes": "Archivo para leer los hash del paquete para un estado de CI primario para reducir el conjunto de paquetes modificados", - "CISettingsOptSkippedCascadeCount": "Asevera que el número de --exclude y soportes omite exactamente lo que sea igual a este número", "CISettingsOptXUnit": "Archivo de salida de resultados en formato XUnit", "CISettingsVerifyGitTree": "Verifica que cada objeto del árbol git coincide con su versión declarada (esto es muy lento)", "CISettingsVerifyVersion": "Imprime el resultado de cada puerto en lugar de solo errores.", @@ -200,8 +194,6 @@ "CMakeTargetsUsageHeuristicMessage": "# esto se genera de forma heurística y puede que no sea correcto", "CMakeToolChainFile": "Los proyectos de CMake deben usar\" \"-DCMAKE_TOOLCHAIN_FILE={path}\"", "CMakeUsingExportedLibs": "Para usar bibliotecas exportadas en proyectos de CMake, agregue {value} a la línea de comandos de CMake.", - "CheckedOutGitSha": "SHA de Git restaurado: {commit_sha}", - "CheckedOutObjectMissingManifest": "El objeto restaurado no contiene un archivo CONTROL ni un archivo vcpkg.json.", "ChecksFailedCheck": "vcpkg se bloqueó; no hay detalles adicionales disponibles.", "ChecksUnreachableCode": "se ha alcanzado un código inaccesible", "ChecksUpdateVcpkg": "actualizar vcpkg volviendo a ejecutar bootstrap-vcpkg puede resolver este error.", @@ -235,14 +227,11 @@ "CmdBuildExternalExample2": "vcpkg build-external zlib2 C:\\ruta\\al\\directorio\\con\\vcpkg.json", "CmdBuildExternalSynopsis": "Compila el puerto a partir de una ruta de acceso.", "CmdBuildSynopsis": "Compila un puerto", - "CmdCacheExample1": "vcpkg cache ", - "CmdCacheSynopsis": "Enumeración de especificaciones de paquetes", "CmdCheckSupportExample1": "vcpkg x-check-support ", "CmdCheckSupportSynopsis": "Comprueba si se admite un puerto sin compilarlo", "CmdCiCleanSynopsis": "Borra todos los archivos para prepararse para una ejecución de CI.", "CmdCiSynopsis": "Intenta crear todos los puertos para las pruebas de integración continua", "CmdCiVerifyVersionsSynopsis": "Comprueba la integridad de la base de datos de versiones", - "CmdContactOptSurvey": "Iniciar el explorador predeterminado en la encuesta de vcpkg actual", "CmdCreateExample1": "vcpkg create ", "CmdCreateExample2": "vcpkg create my-fancy-port https://example.com/sources.zip", "CmdCreateExample3": "vcpkg create ", @@ -265,7 +254,7 @@ "CmdEditOptBuildTrees": "Abre el editor en la subcarpeta del árbol de compilación específico del puerto", "CmdEnvOptions": "Añade {path} instalada a {env_var}", "CmdExportEmptyPlan": "Se rechaza la creación de una exportación de cero paquetes. Instale los paquetes antes de exportarlos.", - "CmdExportExample1": "vcpkg export [--nuget] [--directory=out_dir]", + "CmdExportExample1": "vcpkg export [--nuget] [--output-dir=out_dir]", "CmdExportOpt7Zip": "Exporta a un archivo 7zip (.7z)", "CmdExportOptChocolatey": "Exporta un paquete Chocolatey (experimental)", "CmdExportOptDebug": "Activa la depuración de prefabricados", @@ -376,8 +365,10 @@ "CmdZExtractExample2": "vcpkg z-extract origen.zip origen_diretorio --strip 2", "CmdZExtractOptStrip": "El número de directorios principales a eliminar de todas las rutas", "CommandEnvExample2": "vcpkg env \"ninja -C \" --triplet x64-windows", - "CommandFailed": "command:\n{command_line}\nha fallado con los siguientes resultados:", + "CommandFailed": "comando:\n{command_line}\nerror con la salida siguiente:", + "CommandFailedCode": "comando:\n{command_line}\nerror con el código de salida {exit_code} y la salida siguiente:", "CommunityTriplets": "Tripletes de la comunidad:", + "CompilerPath": "Se encontró el compilador: {path}", "CompressFolderFailed": "No se pudo comprimir la carpeta \"{path}\":", "ComputingInstallPlan": "Calculando plan de instalación...", "ConfigurationErrorRegistriesWithoutBaseline": "La configuración definida en {path} no es válida.\n\nEl uso de registros requiere que se establezca una línea base para el registro predeterminado o que el registro predeterminado sea null.\n\nConsulte {url} para obtener más detalles.", @@ -386,11 +377,10 @@ "ConsideredVersions": "Se tuvieron en cuenta los siguientes ejecutables, pero se descartaron debido al requisito de versión de {version}:", "ConstraintViolation": "Se ha encontrado una infracción de restricción:", "ContinueCodeUnitInStart": "se encontró la unidad de código de continuación en la posición inicial", - "ControlAndManifestFilesPresent": "Tanto un archivo de manifiesto como un archivo CONTROL existen en el directorio de puertos: {path}", "ControlCharacterInString": "Carácter de control en la cadena", "ControlSupportsMustBeAPlatformExpression": "\"Supports\" debe ser una expresión de plataforma", - "CopyrightIsDir": "`{path}` como directorio está en desuso.", - "CorruptedDatabase": "Base de datos dañada.", + "CopyrightIsDir": "este puerto establece ${{CURRENT_PACKAGES_DIR}}/share/${{PORT}}/copyright en un directorio, pero debería ser un archivo. Puede combinar varios archivos de copyright en uno solo con vcpkg_install_copyright. Para suprimir este mensaje, agregue set(VCPKG_POLICY_SKIP_COPYRIGHT_CHECK enabled)", + "CorruptedDatabase": "La base de datos de instalación de vcpkg está dañada. Se trata de un error de vcpkg o de algo que ha modificado el contenido del directorio \"instalado\" de forma inesperada. Es posible que pueda corregirlo eliminando el directorio \"instalado\" y volviendo a instalar lo que quiera utilizar. Si este problema se produce de forma coherente, presente un error en https://github.com/microsoft/vcpkg .", "CorruptedInstallTree": "El árbol vcpkg \"installed\" está dañado.", "CouldNotDeduceNugetIdAndVersion": "No se pudo deducir el id. y la versión de NuGet del nombre de archivo: {path}", "CouldNotFindBaselineInCommit": "No se pudo encontrar la línea base en {url} en {commit_sha} para {package_name}.", @@ -403,14 +393,12 @@ "CreatingNugetPackage": "Creando paquete NuGet...", "CreatingZipArchive": "Creando archivo ZIP...", "CreationFailed": "Error al crear {path}.", - "CurlFailedToExecute": "Ha ocurrido un error al ejecutarse el rizo con el código de salida {exit_code}.", "CurlFailedToPut": "cURL no pudo colocar el archivo en {url} con el código de salida {exit_code}.", "CurlFailedToPutHttp": "cURL no pudo colocar el archivo en {url} con el código de salida {exit_code} y el código HTTP {value}.", - "CurlReportedUnexpectedResults": "curl ha informado de resultados inesperados para vcpkg, que no puede continuar.\nRevise el texto siguiente para obtener información confidencial y abra una incidencia en el GitHub microsoft/vcpkg para solucionarlo.\ncmd: {command_line}\n=== curl output ===\n{actual}\n=== end curl output ===", - "CurlReturnedUnexpectedResponseCodes": "el rizo ha devuelto un número de códigos de respuesta diferente al esperado para la solicitud ({actual} frente a {expected}).", + "CurlResponseTruncatedRetrying": "curl devolvió una respuesta parcial; espere {value} milisegundos e inténtelo de nuevo", + "CurlTimeout": "curl no pudo realizar todas las operaciones HTTP solicitadas, incluso después del tiempo de espera y los reintentos. La última línea de comandos fue: {command_line}", "CurrentCommitBaseline": "Puede usar la confirmación actual como línea base, que es:\n\t\"builtin-baseline\": \"{commit_sha}\"", "CycleDetectedDuring": "ciclo detectado durante {spec}:", - "DateTableHeader": "Fecha", "DefaultBinaryCachePlatformCacheRequiresAbsolutePath": "La variable de entorno VCPKG_DEFAULT_BINARY_CACHE debe ser un directorio (era: {path})", "DefaultBinaryCacheRequiresAbsolutePath": "La variable de entorno VCPKG_DEFAULT_BINARY_CACHE debe ser absoluta (era: {path})", "DefaultBinaryCacheRequiresDirectory": "La variable de entorno VCPKG_DEFAULT_BINARY_CACHE debe ser un directorio (era: {path})", @@ -419,15 +407,18 @@ "DefaultFeatureIdentifier": "los nombres de las características por defecto deben ser identificadores", "DefaultFlag": "El valor predeterminado es --{option} activado.", "DefaultRegistryIsArtifact": "El Registro predeterminado no puede ser un registro de artefacto.", - "DefaultTripletChanged": "En la versión de septiembre de 2023, el triplete predeterminado para las bibliotecas vcpkg cambió de x86-windows al triplete del host detectado ({triplet}). Para obtener el comportamiento antiguo, añada --triplet x86-windows . Para suprimir este mensaje, añada --triplet {triplet} .", "DeleteVcpkgConfigFromManifest": "-- O bien, quite “vcpkg-configuration” del archivo de manifiesto {path}.", "DependencyFeatureCore": "la característica \"core\" no puede estar en la lista de características de una dependencia. Para desactivar las características por defecto, agregue \"default-features\": false en su lugar.", "DependencyFeatureDefault": "la característica \"por defecto\" no puede estar en la lista de características de una dependencia. Para activar las características por defecto, agregue \"default-features\": true en su lugar.", "DependencyGraphCalculation": "Se ha habilitado el envío del gráfico de dependencias.", "DependencyGraphFailure": "Error al enviar el gráfico de dependencias.", "DependencyGraphSuccess": "El gráfico de dependencias se envió correctamente.", + "DependencyInFeature": "la dependencia está en la característica denominada {feature}", + "DependencyNotInVersionDatabase": "la dependencia {package_name} no existe en la base de datos de versión; ¿existe ese puerto?", "DeprecatedPrefabDebugOption": "--prefab-debug está en desuso.", "DetectCompilerHash": "Detectando hash del compilador para el triplete {triplet}...", + "DirectoriesRelativeToThePackageDirectoryHere": "los directorios son relativos a ${{CURRENT_PACKAGES_DIR}} aquí", + "DllsRelativeToThePackageDirectoryHere": "las DLL son relativas a ${{CURRENT_PACKAGES_DIR}} aquí", "DocumentedFieldsSuggestUpdate": "Si se trata de campos documentados que deben reconocerse, intente actualizar la herramienta vcpkg.", "DownloadAvailable": "Hay disponible una copia descargable de esta herramienta que se puede usar al anular la configuración {env_var}.", "DownloadFailedCurl": "{url}: cURL no se pudo descargar con el código de salida {exit_code}", @@ -437,8 +428,7 @@ "DownloadRootsDir": "Descarga el directorio (predeterminado: {env_var})", "DownloadWinHttpError": "{url}: error de {system_api} con el código de salida {exit_code}", "DownloadedSources": "Orígenes descargados para {spec}", - "DownloadingPortableToolVersionX": "No se encontró la versión adecuada de {tool_name} (se requiere v{version}). Descargando {tool_name} portable {version}...", - "DownloadingTool": "Descargando {tool_name}...\n{url}->{path}", + "DownloadingPortableToolVersionX": "No se encontró una versión adecuada de {tool_name} (se requiere v{version}).", "DownloadingUrl": "Descargando {url}", "DownloadingVcpkgStandaloneBundle": "Descargando el paquete independiente {version}.", "DownloadingVcpkgStandaloneBundleLatest": "Descargando el paquete independiente más reciente.", @@ -449,7 +439,6 @@ "DuplicatePackagePatternRegistry": "registro: {url}", "DuplicatedKeyInObj": "Clave duplicada \"{value}\" en un objeto", "ElapsedForPackage": "Tiempo transcurrido para controlar {spec}: {elapsed}", - "ElapsedInstallTime": "Tiempo total transcurrido: {count}", "ElapsedTimeForChecks": "Tiempo para determinar si se ha realizado correctamente o ha fallado: {elapsed}", "EmailVcpkgTeam": "Envíe un correo electrónico a {url} con cualquier comentario.", "EmbeddingVcpkgConfigInManifest": "La inserción de “vcpkg-configuration” en un archivo de manifiesto es una característica EXPERIMENTAL.", @@ -479,25 +468,23 @@ "ErrorWhileFetchingBaseline": "mientras se obtiene la línea de base `\"{value}\"` del repositorio {package_name}:", "ErrorWhileParsing": "Se produjeron errores al analizar {path}.", "ErrorWhileWriting": "Error al escribir {path}.", - "ErrorsFound": "Se encontraron los siguientes errores:", "ExamplesHeader": "Ejemplos:", "ExceededRecursionDepth": "La profundidad de recursividad superó el límite.", "ExcludedPackage": "{spec} excluido", "ExcludedPackages": "Se excluyen los siguientes paquetes:", + "ExecutablesRelativeToThePackageDirectoryHere": "los ejecutables son relativos a ${{CURRENT_PACKAGES_DIR}} aquí", "ExpectedAnObject": "se esperaba un objeto", "ExpectedAtMostOneSetOfTags": "Se encontraron {count} conjuntos de {old_value}.*{new_value} pero se esperaba como máximo 1, en el bloque:\n{value}", "ExpectedCharacterHere": "Se esperaba “{expected}” aquí", "ExpectedDefaultFeaturesList": "se esperaba \",\" o el final del texto en la lista de características predeterminadas", "ExpectedDependenciesList": "se esperaba ',' o final de texto en la lista de dependencias", "ExpectedDigitsAfterDecimal": "Dígitos previstos después del punto decimal", - "ExpectedEof": "EOF inesperado", "ExpectedExplicitTriplet": "se esperaba un triplete explícito", "ExpectedFailOrSkip": "se esperaba 'fail', 'skip' o 'pass'", "ExpectedFeatureListTerminal": "se esperaba ',' o ']' en la lista de características", "ExpectedFeatureName": "nombre de característica esperado (debe estar en minúsculas, dígitos, '-')", "ExpectedOneSetOfTags": "Se encontraron {count} conjuntos de {old_value}.*{new_value} pero se esperaba exactamente 1, en el bloque:\n{value}", "ExpectedOneVersioningField": "solo se esperaba un campo de control de versión", - "ExpectedPackageSpecifier": "se esperaba un especificador de paquete", "ExpectedPathToExist": "Se esperaba que {path} existiera después de hacer “fetch”", "ExpectedPortName": "se esperaba un nombre de puerto aquí (debe estar en minúsculas, dígitos, '-')", "ExpectedReadWriteReadWrite": "argumento inesperado: se esperaba \"read\", \"readwrite\" o \"write\"", @@ -505,7 +492,6 @@ "ExpectedTripletName": "se esperaba un nombre de triplete aquí (debe estar en minúsculas, dígitos, '-')", "ExportArchitectureReq": "El prefab de exportación requiere que al menos una de las arquitecturas siguientes arm64-v8a, armeabi-v7a, x86_64 y x86 esté presente.", "ExportPrefabRequiresAndroidTriplet": "El prefab de exportación requiere un triplete de Android.", - "ExportUnsupportedInManifest": "La exportación de vcpkg no admite el modo de manifiesto para permitir consideraciones de diseño futuras. Puede usar la exportación en modo clásico ejecutando vcpkg fuera de un proyecto basado en manifiesto.", "Exported7zipArchive": "Archivo 7zip exportado en: {path}", "ExportedZipArchive": "Archivo ZIP exportado en: {path}", "ExportingAlreadyBuiltPackages": "Los siguientes paquetes ya están compilados y se exportarán:", @@ -514,14 +500,12 @@ "ExtendedDocumentationAtUrl": "Documentación ampliada disponible en \"{url}\".", "ExtractHelp": "Extrae un archivo.", "ExtractingTool": "Extrayendo {tool_name}...", - "FailedPostBuildChecks": "Se encontraron {count} problemas posteriores a la compilación. Para enviar estos puertos a catálogos protegidos, corrija primero el archivo de puerto: {path}", + "FailedPostBuildChecks": "Se encontraron {count} problema(s) posterior(es) a la compilación. Esto suele deberse a errores en portfile.cmake o en el sistema de compilación ascendente. Corríjalos antes de enviar este puerto al registro mantenido.", "FailedToAcquireMutant": "no se pudo adquirir el {path} mutante", "FailedToCheckoutRepo": "ha ocurrido un error en la comprobación de \"versiones\" del repositorio {package_name}", "FailedToDeleteDueToFile": "no se pudo remove_all({value}) debido a {path}: ", "FailedToDeleteInsideDueToFile": "no se pudo remove_all_inside({value}) debido a {path}: ", - "FailedToDetermineArchitecture": "no se puede determinar la arquitectura de {path}.\n{command_line}", "FailedToDetermineCurrentCommit": "No se pudo determinar commit actual:", - "FailedToDownloadFromMirrorSet": "Ha ocurrido un error en la descarga del conjunto de réplicas", "FailedToExtract": "No se pudieron extraer \"{path}\":", "FailedToFetchRepo": "No se pudo recuperar la {url}.", "FailedToFindPortFeature": "{package_name} no tiene ninguna característica denominada {feature}.", @@ -530,27 +514,20 @@ "FailedToLoadManifest": "No se pudo cargar el manifiesto desde el directorio {path}", "FailedToLocateSpec": "No se ha podido encontrar la especificación en el gráfico: {spec}", "FailedToObtainDependencyVersion": "No se encuentra la versión de dependencia deseada.", - "FailedToObtainLocalPortGitSha": "Error al obtener los SHA de Git para los puertos locales.", "FailedToObtainPackageVersion": "No se encuentra la versión del paquete deseada.", "FailedToOpenAlgorithm": "no se pudo abrir {value}", "FailedToParseBaseline": "No se pudo analizar la línea base: {path}", "FailedToParseCMakeConsoleOut": "No se pudo analizar la salida de la consola de CMake para buscar marcadores de inicio y finalización de bloques.", "FailedToParseConfig": "No se pudo analizar la configuración: {path}", - "FailedToParseControl": "Error al analizar el archivo de CONTROL: {path}", - "FailedToParseManifest": "No se pudo analizar el archivo de manifiesto: {path}", "FailedToParseNoTopLevelObj": "No se pudo analizar {path}. Se esperaba un objeto de nivel superior.", "FailedToParseNoVersionsArray": "No se pudo analizar {path}. Se esperaba una matriz \"versions\".", "FailedToParseSerializedBinParagraph": "[comprobación de integridad] No se pudo analizar un párrafo binario serializado.\nAbra una incidencia en https://github.com/microsoft/vcpkg, con la siguiente salida:\n{error_msg}\n Párrafo binario serializado:", + "FailedToParseVersionFile": "No se pudo analizar el archivo de versión: {path}", "FailedToParseVersionXML": "No se pudo analizar la versión de la herramienta {tool_name}. La cadena de versión fue: {version}", - "FailedToParseVersionsFile": "no se puede analizar el archivo de versiones {path}", - "FailedToProvisionCe": "No se pudo aprovisionar vcpkg-artifacts.", - "FailedToReadParagraph": "Error al leer los párrafos de {path}", - "FailedToRemoveControl": "No se pudo quitar el archivo de control {path}", "FailedToRunToolToDetermineVersion": "No se pudo ejecutar \"{path}\" para determinar la versión de {tool_name}.", - "FailedToStoreBackToMirror": "no se pudo almacenar en el reflejo:", + "FailedToStoreBackToMirror": "No se pudo almacenar {path} en {url}.", "FailedToStoreBinaryCache": "No se pudo almacenar la caché binaria {path}", "FailedToTakeFileSystemLock": "No se pudo realizar el bloqueo del sistema de archivos", - "FailedToWriteManifest": "No se pudo escribir el archivo de manifiesto {path}", "FailedVendorAuthentication": "No se pudieron autenticar uno o varios proveedores de credenciales de {vendor}. Consulte \"{url}\" para obtener más detalles sobre cómo proporcionar credenciales.", "FetchingBaselineInfo": "Obteniendo información de referencia de {package_name}...", "FetchingRegistryInfo": "Obteniendo información del registro de {url} ({valor})...", @@ -559,11 +536,13 @@ "FileNotFound": "{path}: no se encontró el archivo", "FileReadFailed": "No se pudieron leer {count} bytes de {path} en el desplazamiento {byte_offset}.", "FileSeekFailed": "No se pudo buscar la posición {byte_offset} en {path}.", - "FileSystemOperationFailed": "Error en la operación del sistema de archivos:", - "FilesContainAbsolutePath1": "No debe haber rutas de acceso absolutas, como las siguientes, en un paquete instalado:", - "FilesContainAbsolutePath2": "Se han encontrado rutas de acceso absolutas en los siguientes archivos:", + "FilesContainAbsolutePath1": "No debe haber rutas de acceso absolutas, como las siguientes, en un paquete instalado. Para suprimir este mensaje, agregue set(VCPKG_POLICY_SKIP_ABSOLUTE_PATHS_CHECK enabled)", + "FilesContainAbsolutePath2": "rutas de acceso absolutas que se encuentran aquí", + "FilesContainAbsolutePathPkgconfigNote": "Agregar una llamada a 'vcpkg_fixup_pkgconfig()' puede corregir rutas de acceso absolutas en archivos .pc", "FilesExported": "Archivos exportados en: {path}", - "FindHelp": "Busca el artefacto o puerto indicado. Sin ningún parámetro después de \"artifact\" o \"port\", muestra todo.", + "FilesRelativeToTheBuildDirectoryHere": "los archivos son relativos al directorio de compilación aquí", + "FilesRelativeToThePackageDirectoryHere": "los archivos son relativos a ${{CURRENT_PACKAGES_DIR}} aquí", + "FindCommandFirstArg": "El primer argumento de \"find\" debe ser \"artifact\" o \"port\".", "FindVersionArtifactsOnly": "--La versión no se puede utilizar con vcpkg search o vcpkg find port", "FishCompletion": "La finalización del pez vcpkg ya se agregó en \"{path}\".", "FloatingPointConstTooBig": "Constante en punto flotante demasiado grande: {count}", @@ -581,6 +560,7 @@ "GeneratingRepo": "Generando {path} de repositorio...", "GetParseFailureInfo": "Use '--debug' para obtener más información sobre los errores de análisis.", "GitCommandFailed": "no se pudo ejecutar: {command_line}", + "GitCommitUpdateVersionDatabase": "git commit -m \"Actualizar base de datos de versión\"", "GitFailedToFetch": "error al capturar la referencia {value} del repositorio {url}", "GitFailedToInitializeLocalRepository": "no se pudo inicializar el repositorio local {path}", "GitRegistryMustHaveBaseline": "La \"{url}\" del Registro git debe tener un campo \"baseline\" que sea un SHA de confirmación de GIT válido (40 caracteres hexadecimales).\nPara usar las últimas versiones actuales, establezca la línea base en HEAD, \"{commit_sha}\" del repositorio.", @@ -591,7 +571,7 @@ "GitUnexpectedCommandOutputCmd": "Git generó una salida inesperada al ejecutar {command_line}", "GraphCycleDetected": "Ciclo detectado en el gráfico en {package_name}:", "HashFileFailureToRead": "no se pudo leer el \"{path}\" de archivo para el algoritmo hash: ", - "HashPortManyFiles": "{package_name} contiene {count} archivos. El hash de este contenido puede tardar mucho tiempo al determinar el hash de ABI para el almacenamiento en caché binario. Considera la posibilidad de reducir el número de archivos. Las causas comunes de esto son extraer accidentalmente los archivos de origen o de compilación en el directorio de un puerto.", + "HashPortManyFiles": "{package_name} contiene {count} archivos. El hash de este contenido puede tardar mucho tiempo al determinar el hash de ABI para el almacenamiento en caché binario. Considera la posibilidad de reducir el número de archivos. Las causas comunes de esto son extraer accidentalmente los archivos de origen o de compilación en el directorio de un puerto.", "HeaderOnlyUsage": "{package_name} es de solo encabezado y se puede usar desde CMake a través de:", "HelpAssetCaching": "**Característica experimental: esto puede cambiar o quitarse en cualquier momento**\n\nvcpkg puede usar reflejos para almacenar en caché los recursos descargados, lo que garantiza una operación continua aunque el origen original cambie o desaparezca.\n\nEl almacenamiento en caché de recursos se puede configurar estableciendo la variable de entorno X_VCPKG_ASSET_SOURCES en una lista de orígenes delimitada por punto y coma o pasando una secuencia de opciones de línea de comando --x-asset-sources=. Los orígenes de línea de comandos se interpretan después de los orígenes de entorno. Las comas, los puntos y comas, y los acentos graves pueden escaparse utilizando el acento grave (`).\n\nEl parámetro opcional para determinadas cadenas controla cómo se tendrá acceso a las cadenas. Se puede especificar como \"read\", \"write\" o \"readwrite\" y el valor predeterminado es \"read\".\n\nOrígenes válidos:", "HelpAssetCachingAzUrl": "Agrega un origen de Azure Blob Storage, opcionalmente mediante la validación de Firma de acceso compartido. La dirección URL debe incluir la ruta de acceso del contenedor y terminar con el signo \"/\" final. , si se define, debe ir precedida de \"?\". Los servidores que no son de Azure también funcionarán si responden a las solicitudes GET y PUT del formulario: \"\".", @@ -623,10 +603,7 @@ "HelpEnvCommand": "Crea un entorno shell limpio para el desarrollo o la compilación", "HelpExampleCommand": "Para obtener más ayuda (incluidos ejemplos), consulte https://learn.microsoft.com/vcpkg", "HelpExampleManifest": "Manifiesto de ejemplo:", - "HelpExportCommand": "Exporta un paquete.", - "HelpHashCommand": "Aplicar hash a un archivo por algoritmo específico, SHA512 predeterminado.", "HelpInstallCommand": "Instala un paquete", - "HelpListCommand": "Enumera los paquetes instalados", "HelpManifestConstraints": "Los manifiestos pueden colocar tres tipos de restricciones en las versiones usadas", "HelpMinVersion": "Vcpkg seleccionará la versión mínima encontrada que coincida con todas las restricciones aplicables, incluida la versión de la línea base especificada en el nivel superior, así como cualquier restricción \"version>=\" en el gráfico.", "HelpOverrides": "Cuando se usa como manifiesto de nivel superior (por ejemplo, cuando se ejecuta \"vcpkg install\" en el directorio), las invalidaciones permiten a un manifiesto cortocircuitar la resolución de dependencias y especifican exactamente la versión que se va a usar. Se pueden usar para controlar los conflictos de versión, como con las dependencias \"version-string\". No se tendrán en cuenta cuando dependan de forma transitiva.", @@ -674,7 +651,6 @@ "IllegalPlatformSpec": "No se permite el calificador de plataforma en este contexto", "ImproperShaLength": "Sha512 debe tener 128 caracteres hexadecimales: {value}", "IncorrectArchiveFileSignature": "Firma de archivo incorrecta", - "IncorrectPESignature": "Firma incorrecta del PE", "InfoSetEnvVar": "También puede establecer {env_var} en el editor que prefiera.", "InitRegistryFailedNoRepo": "No se pudo crear un registro en {path} porque no es una raíz de repositorio git.\nUse \"git init {command_line}\" para crear un repositorio git en esta carpeta.", "InstallCopiedFile": "{path_source} -> {path_destination} listo", @@ -688,8 +664,8 @@ "InstalledBy": "Instalado por {path}", "InstalledPackages": "Los siguientes paquetes ya están instalados:", "InstalledRequestedPackages": "Todos los paquetes solicitados están instalados actualmente.", - "InstallingFromLocation": "-- Instalando el puerto desde la ubicación: {path}", "InstallingMavenFile": "{path} instalando el archivo Maven", + "InstallingOverlayPort": "instalar el puerto de superposición desde aquí", "InstallingPackage": "Instalando {action_index}/{count} {spec}...", "IntegrateBashHelp": "Habilitar la finalización con tabulación de Bash. Solo para usuarios que no son de Windows", "IntegrateFishHelp": "Habilitar la finalización de tabulación de pez. Solo para usuarios que no son de Windows", @@ -725,7 +701,7 @@ "InvalidBundleDefinition": "Definición de agrupación no válida.", "InvalidCharacterInFeatureList": "carácter no válido en el nombre de la característica (debe estar en minúsculas, dígitos, '-' o '*')", "InvalidCharacterInFeatureName": "carácter no válido en el nombre de la característica (debe estar en minúsculas, dígitos, '-')", - "InvalidCharacterInPackageName": "carácter no válido en el nombre del paquete (debe estar en minúsculas, dígitos, '-')", + "InvalidCharacterInPortName": "carácter no válido en el nombre del puerto (debe estar en minúsculas, dígitos, \"-\")", "InvalidCodePoint": "Punto de código no válido pasado a utf8_encoded_code_point_count", "InvalidCodeUnit": "unidad de código no válida", "InvalidCommandArgSort": "El valor de --sort solo puede ser \"lexicographical\", \"toplogic\" o \"reverse\".", @@ -743,7 +719,6 @@ "InvalidLinkage": "Tipo de vinculación de {system_name} no válido: [{value}]", "InvalidLogicExpressionUnexpectedCharacter": "expresión lógica no válida, carácter inesperado", "InvalidLogicExpressionUsePipe": "expresión lógica no válida, use \"|\" en lugar de \"or\"", - "InvalidNoVersions": "El archivo no contiene versiones.", "InvalidOptionForRemove": "'remove' acepta bibliotecas o '--outdated'", "InvalidPortVersonName": "Se ha encontrado un nombre de archivo de versión de puerto no válido: \"{path}\".", "InvalidSharpInVersion": "carácter no válido \"#\" en el texto de la versión", @@ -751,6 +726,8 @@ "InvalidString": "Se ha pasado un utf8 inválido a Value::string(std::string)", "InvalidTriplet": "Triplete no válido: {triplet}", "InvalidUri": "no se puede analizar el URI: {value}", + "InvalidValueHashAdditionalFiles": "La variable VCPKG_HASH_ADDITIONAL_FILES contiene una ruta de acceso de archivo no válida: \"{path}\". El valor debe ser una ruta de acceso absoluta a un archivo existente.", + "InvalidValuePostPortfileIncludes": "La variable VCPKG_POST_PORTFILE_INCLUDES contiene una ruta de acceso de archivo no válida: '{path}'. El valor debe ser una ruta de acceso absoluta a un archivo cmake existente.", "IrregularFile": "la ruta de acceso no era un archivo normal: {path}", "JsonErrorMustBeAnObject": "Se esperaba que \"{path}\" fuera un objeto.", "JsonFieldNotObject": "el valor de [\"{json_field}\"] debe ser un objeto", @@ -786,11 +763,11 @@ "LinkageStaticDebug": "Depuración estática (/MTd)", "LinkageStaticRelease": "Versión estática (/MT)", "ListHelp": "Enumera las bibliotecas instaladas", - "LoadingCommunityTriplet": "-- [COMMUNITY] Cargando configuración de triplet desde: {path}", + "LoadedCommunityTriplet": "triplete de la comunidad cargado desde aquí. Los tripletes de la comunidad no se crean en el registro mantenido y, por tanto, tienen menos probabilidades de éxito.", + "LoadedOverlayTriplet": "triplete superpuesto cargado desde aquí", "LoadingDependencyInformation": "Cargando información de dependencia para {count} paquetes...", - "LoadingOverlayTriplet": "-- [OVERLAY] Cargando configuración de triplet desde: {path}", - "LocalPortfileVersion": "Usando las versiones de los archivos de puerto locales. Para actualizar los archivos de puerto locales, use “git pull”.", - "ManifestConflict": "Se encontraron archivos de manifiesto y CONTROL en el puerto \"{path}\"; cambie el nombre de uno de ellos", + "LocalPortfileVersion": "Usando versiones de puerto local. Para actualizar los archivos de puerto locales, use “git pull”.", + "ManifestConflict2": "Se encontraron archivos de manifiesto y control; cambie el nombre de uno u otro", "ManifestFormatCompleted": "Se ha aplicado formato a los archivos de manifiesto con éxito.", "MismatchedBinParagraphs": "El párrafo binario serializado era diferente del párrafo binario original. Abra una incidencia en https://github.com/microsoft/vcpkg con la siguiente salida:", "MismatchedFiles": "el archivo que se va a almacenar no coincide con el hash", @@ -802,6 +779,7 @@ "MissingAndroidEnv": "Falta la variable de entorno ANDROID_NDK_HOME", "MissingAndroidHomeDir": "El directorio ANDROID_NDK_HOME no existe: {path}", "MissingArgFormatManifest": "format-manifest se pasó a --convert-control sin \"--all\".\nEsto no hace nada: los archivos de control pasados explícitamente se convierten automáticamente.", + "MissingAssetBlockOrigin": "Falta {path} y las descargas están bloqueadas por x-block-origin.", "MissingClosingParen": "falta el cierre )", "MissingDependency": "El paquete {spec} está instalado, pero la dependencia {package_name} no lo está.", "MissingExtension": "Falta la extensión '{extension}'.", @@ -810,9 +788,9 @@ "MissingPortSuggestPullRequest": "Si su puerto no aparece en la lista, abra un problema en y/o considere la posibilidad de realizar una solicitud de incorporación de cambios.", "MissingRequiredField": "falta el campo obligatorio '{json_field}' ({json_type})", "MissingRequiredField2": "falta el campo obligatorio ''{json_field}''", + "MissingShaVariable": "La variable {{sha}} debe usarse en la plantilla si se usan otras variables.", "MixingBooleanOperationsNotAllowed": "mezclar & y | no se permite; usar () para especificar el orden de las operaciones", "MonoInstructions": "Esto puede deberse a una instalación mono incompleta. Mono completo está disponible en algunos sistemas a través de `sudo apt install mono-complete`. Los usuarios de Ubuntu 18.04 pueden necesitar una versión más reciente de mono, disponible en https://www.mono-project.com/download/stable/", - "MsiexecFailedToExtract": "error de msiexec al extraer \"{path}\" con el {exit_code} y el mensaje de código de inicio o salida:", "MultiArch": "La arquitectura multiarquitectura debe ser \"igual\", pero era {option}", "MultipleFeatures": "{package_name} declara {feature} varias veces; asegúrese de que las características tengan nombres distintos.", "MutuallyExclusiveOption": "--{value} no se puede usar con --{option}.", @@ -822,10 +800,8 @@ "NewOnlyOneVersionKind": "Solo se puede especificar --version-relaxed, --version-date o --version-string.", "NewSpecifyNameVersionOrApplication": "Especifique el --nombre y la --version para generar un manifiesto destinado a bibliotecas de C++, o bien especifique --aplicación para indicar que el manifiesto no está destinado a usarse como puerto.", "NewVersionCannotBeEmpty": "--versión no puede estar vacía.", - "NoArgumentsForOption": "La opción --{option} no acepta ningún argumento.", "NoError": "sin errores", "NoInstalledPackages": "No hay paquetes instalados. ¿Quiso decir \"buscar\"?", - "NoLocalizationForMessages": "No hay mensajes localizados para lo siguiente: ", "NoOutdatedPackages": "No hay paquetes obsoletos.", "NoRegistryForPort": "no hay ningún registro configurado para el puerto {package_name}", "NoUrlsAndHashSpecified": "No se ha especificado ninguna dirección URL para descargar SHA: {sha}", @@ -866,7 +842,6 @@ "PackageManipulationHeader": "Manipulación de paquetes", "PackageRootDir": "Directorio de paquetes (experimental)", "PackagesToInstall": "Se compilarán e instalarán los siguientes paquetes:", - "PackagesToInstallDirectly": "Los siguientes paquetes se instalarán directamente:", "PackagesToModify": "Se modificarán paquetes adicionales (*) para completar esta operación.", "PackagesToRebuild": "Se volverán a generar los siguientes paquetes:", "PackagesToRebuildSuggestRecurse": "Si está seguro de que desea recompilar los paquetes anteriores, ejecute el comando con la opción --recurse.", @@ -882,47 +857,50 @@ "ParseFeatureNameError": "\"{package_name}\" no es un nombre de característica válido. Los nombres de las características deben ser alfanuméricos en minúsculas+hipónimos y no estar reservados (consulte {url} para obtener más información).", "ParseIdentifierError": "\"{value}\" no es un identificador válido. Los identificadores deben ser alfanuméricos en minúsculas+hipónimos y no reservados (consulte {url} para obtener más información).", "ParsePackageNameError": "\"{package_name}\" no es un nombre de paquete válido. Los nombres de los paquetes deben ser alfanuméricos en minúsculas+hipónimos y no estar reservados (consulte {url} para obtener más información).", + "ParsePackageNameNotEof": "se esperaba el final del análisis de entrada de un nombre de paquete; esto normalmente significa que no se permite que el carácter indicado esté en un nombre de puerto. Todos los nombres de puerto son alfanuméricos en minúsculas y guiones y no deben estar reservados (consulte {url} para obtener más información).", "ParsePackagePatternError": "\"{package_name}\" no es un patrón de paquete válido. Los patrones de paquetes deben utilizar solo un carácter comodín (*) y debe ser el último carácter del patrón (consulte {url} para obtener más información).", + "ParseQualifiedSpecifierNotEof": "se esperaba el final del análisis de entrada de una especificación de paquete; esto normalmente significa que no se permite que el carácter indicado esté en una especificación de paquete. Los nombres de puerto, triplete y característica son alfanuméricos en minúsculas y guiones.", + "ParseQualifiedSpecifierNotEofSquareBracket": "se esperaba el final de la entrada analizando una especificación de paquete; ¿Quería decir {version_spec} en su lugar?", "PathMustBeAbsolute": "El valor de la variable de entorno X_VCPKG_REGISTRIES_CACHE no es absoluto: {path}", - "PerformingPostBuildValidation": "-- Realizando validación posterior a la compilación", - "PortBugAllowRestrictedHeaders": "En circunstancias excepcionales, esta directiva se puede deshabilitar mediante {env_var}", - "PortBugBinDirExists": "No debería haber ningún directorio bin\\ en una compilación estática, pero {path} está presente.", - "PortBugDebugBinDirExists": "No debería haber ningún directorio debug\\bin\\ en una compilación estática, pero {path} está presente.", - "PortBugDebugShareDir": "/debug/share no debe existir. Reorganice los archivos importantes y, a continuación, use\nfile(REMOVE_RECURSE \"${{CURRENT_PACKAGES_DIR}}/debug/share\")", - "PortBugDllAppContainerBitNotSet": "El bit contenedor de aplicaciones debe establecerse para las aplicaciones de la Tienda Windows. Las siguientes DLL no tienen establecido el bit contenedor de aplicaciones:", - "PortBugDllInLibDir": "Se encontraron las siguientes DLL en /lib o /debug/lib. Muévalas a /bin o /debug/bin, respectivamente.", - "PortBugDuplicateIncludeFiles": "Los archivos de inclusión no deben duplicarse en el directorio /debug/include. Si no se puede deshabilitar en CMake del proyecto, use\nfile(REMOVE_RECURSE \"${{CURRENT_PACKAGES_DIR}}/debug/include\")", - "PortBugFoundCopyrightFiles": "Los siguientes archivos son posibles archivos de copyright:", - "PortBugFoundDebugBinaries": "Se encontraron {count} binarios de depuración:", - "PortBugFoundDllInStaticBuild": "Las DLL no deben estar presentes en una compilación estática, pero se encontraron las siguientes DLL:", - "PortBugFoundEmptyDirectories": "No debería haber directorios vacíos en {path}. Se encontraron los siguientes directorios vacíos:", - "PortBugFoundExeInBinDir": "Se encontraron los siguientes archivos EXE en /bin o /debug/bin. Los archivos EXE no son destinos de distribución válidos.", - "PortBugFoundReleaseBinaries": "Se encontraron {count} binarios de versión:", - "PortBugIncludeDirInCMakeHelperPort": "La carpeta /include existe en un puerto auxiliar de CMake; esto es incorrecto, ya que solo se deben instalar los archivos de CMake", - "PortBugInspectFiles": "Para inspeccionar los archivos {extension}, use:", - "PortBugInvalidCrtLinkage": "Los archivos binarios siguientes deben usar CRT {expected}.", - "PortBugInvalidCrtLinkageEntry": "{path} se vincula con:", - "PortBugKernel32FromXbox": "El triplo seleccionado tiene como objetivo Xbox, pero las siguientes DLL se vinculan con kernel32. Estas DLL no se pueden cargar en Xbox, donde kernel32 no está presente. Esto suele deberse a que se vinculan con kernel32.lib en lugar de con una biblioteca paraguas adecuada, como onecore_apiset.lib o xgameplatform.lib.", - "PortBugMergeLibCMakeDir": "La carpeta /lib/cmake debe combinarse con /debug/lib/cmake y moverse a /share/{package_name}/cmake. Use la función auxiliar `vcpkg_cmake_config_fixup()` del puerto vcpkg-cmake-config.`", - "PortBugMismatchedNumberOfBinaries": "El número de archivos binarios de depuración y versión no coincide.", - "PortBugMisplacedCMakeFiles": "Se encontraron los siguientes archivos de CMake fuera de /share/{spec}. Coloque los archivos de CMake en /share/{spec}.", - "PortBugMisplacedFiles": "Los siguientes archivos se colocan en {path}:", - "PortBugMisplacedFilesCont": "Los archivos no pueden estar presentes en esos directorios.", - "PortBugMisplacedPkgConfigFiles": "Los directorios pkgconfig deben ser uno de los siguientes: share/pkgconfig (solo para bibliotecas de encabezado), lib/pkgconfig o lib/debug/pkgconfig. Se encontraron los siguientes archivos pkgconfig mal colocados:", + "PerformingPostBuildValidation": "Realizando la validación posterior a la compilación", + "PortBugBinDirExists": "${{CURRENT_PACKAGES_DIR}}/{path} existe, pero no debe estar en una compilación estática. Para suprimir este mensaje, agregue set(VCPKG_POLICY_DLLS_IN_STATIC_LIBRARY enabled)", + "PortBugDebugShareDir": "${{CURRENT_PACKAGES_DIR}}/debug/share no debe existir. Reorganice los archivos importantes y elimine los restantes al agregar \"file(REMOVE_RECURSE \"${{CURRENT_PACKAGES_DIR}}/debug/share\")\". Para suprimir este mensaje, agregue set(VCPKG_POLICY_ALLOW_DEBUG_SHARE enabled)", + "PortBugDllAppContainerBitNotSet": "El bit contenedor de aplicaciones debe establecerse para todas las DLL de las aplicaciones de la Tienda Windows y las solicitudes de triplet destinadas a la Tienda Windows, pero las siguientes DLL no se compilaron con el conjunto de bits. Esto suele significar que las marcas del vinculador de cadena de herramientas no se propagan correctamente o que el enlazador en uso no admite el modificador /APPCONTAINER. Para suprimir este mensaje, agregue set(VCPKG_POLICY_SKIP_APPCONTAINER_CHECK enabled)", + "PortBugDllInLibDir": "Se encontraron las siguientes DLL en ${{CURRENT_PACKAGES_DIR}}/lib or ${{CURRENT_PACKAGES_DIR}}/debug/lib. Muévalas a ${{CURRENT_PACKAGES_DIR}}/bin or ${{CURRENT_PACKAGES_DIR}}/debug/bin, respectivamente.", + "PortBugDuplicateIncludeFiles": "${{CURRENT_PACKAGES_DIR}}/debug/include no debe existir. Para suprimir este mensaje, agregue set(VCPKG_POLICY_ALLOW_DEBUG_INCLUDE enabled)", + "PortBugDuplicateIncludeFilesFixIt": "Si este directorio lo creó un sistema de compilación que no permite deshabilitar la instalación de encabezados en la depuración, elimine el directorio duplicado con el archivo (REMOVE_RECURSE \"${{CURRENT_PACKAGES_DIR}}/debug/include\")", + "PortBugFoundCopyrightFiles": "Los siguientes archivos son posibles archivos de copyright", + "PortBugFoundDebugBinaries": "A continuación se muestran los archivos binarios de depuración:", + "PortBugFoundDllInStaticBuild": "Las DLL no deben estar presentes en una compilación estática, pero se encontraron las siguientes DLL. Para suprimir este mensaje, agregue set(VCPKG_POLICY_DLLS_IN_STATIC_LIBRARY enabled)", + "PortBugFoundEmptyDirectories": "No debe haber directorios vacíos instalados. Los directorios vacíos no se pueden representar en varios proveedores de caché binarios ni repositorios GIT y no se consideran salidas de compilación semántica. Debe crear un archivo normal dentro de cada directorio vacío o eliminarlo con el siguiente CMake. Para suprimir este mensaje, agregue set(VCPKG_POLICY_ALLOW_EMPTY_FOLDERS enabled)", + "PortBugFoundExeInBinDir": "Se encontraron los siguientes ejecutables en ${{CURRENT_PACKAGES_DIR}}/bin o ${{CURRENT_PACKAGES_DIR}}/debug/bin. Los ejecutables no son destinos de distribución válidos. Si estos ejecutables son herramientas de compilación, puede usar \"vcpkg_copy_tools\". Para suprimir este mensaje, agregue set(VCPKG_POLICY_ALLOW_EXES_IN_BIN enabled)", + "PortBugFoundReleaseBinaries": "A continuación se muestran los archivos binarios de versión:", + "PortBugIncludeDirInCMakeHelperPort": "La carpeta ${{CURRENT_PACKAGES_DIR}}/include existe en un puerto auxiliar de CMake; esto es incorrecto, ya que solo se deben instalar los archivos de CMake. Para suprimir este mensaje, quite set(VCPKG_POLICY_CMAKE_HELPER_PORT enabled).", + "PortBugInvalidCrtLinkageCrtGroup": "Los archivos binarios siguientes solo deben vincularse con {expected}", + "PortBugInvalidCrtLinkageEntry": "{path} vínculos con: {actual}", + "PortBugInvalidCrtLinkageHeader": "binarios generados por este vínculo de puerto con C RunTimes (\"CRT\") no son coherentes con los solicitados por el triplete y la estructura de implementación. Si el triplete solo va a usar la versión CRT, debe agregar set(VCPKG_POLICY_ONLY_RELEASE_CRT enabled) al archivo .cmake de triplet. Para suprimir esta comprobación completamente, agregue set(VCPKG_POLICY_SKIP_CRT_LINKAGE_CHECK enabled) al archivo .cmake de triplete si se trata de un triplete o a portfile.cmake si es específico del puerto. Puede inspeccionar los archivos binarios con: dumpbin.exe /directives mylibfile.lib", + "PortBugKernel32FromXbox": "El triplete seleccionado tiene como destino Xbox, pero los siguientes archivos DLL están enlazados con kernel32. Estas DLL no se pueden cargar en Xbox, donde kernel32 no está presente. Esto suele deberse a la vinculación con kernel32.lib en lugar de una biblioteca aglutinante adecuada, como onecore_apiset.lib o xgameplatform.lib. Puede inspeccionar las dependencias de una DLL con \"dumpbin.exe /dependents mylibfile.dll\". Para suprimir este mensaje, agregue set(VCPKG_POLICY_ALLOW_KERNEL32_FROM_XBOX enabled)", + "PortBugMergeLibCMakeDir": "Este puerto crea ${{CURRENT_PACKAGES_DIR}}/lib/cmake o ${{CURRENT_PACKAGES_DIR}}/debug/lib/cmake, que se debe combinar y mover a ${{CURRENT_PACKAGES_DIR}}/share/${{PORT}}/cmake. Use la función auxiliar vcpkg_cmake_config_fixup() del puerto vcpkg-cmake-config. Para suprimir este mensaje, agregue set(VCPKG_POLICY_SKIP_LIB_CMAKE_MERGE_CHECK enabled)", + "PortBugMismatchingNumberOfBinaries": "no coincide el número de archivos binarios de depuración y de versión. Esto suele indicar un control incorrecto de la depuración o la versión en portfile.cmake o en el sistema de compilación. Si la intención es producir solo componentes de versión para este triplete, debe agregarse set(VCPKG_BUILD_TYPE release) a su archivo .cmake. Para suprimir este mensaje, agregue set(VCPKG_POLICY_MISMATCHED_NUMBER_OF_BINARIES enabled)", + "PortBugMisplacedCMakeFiles": "Este puerto instala los siguientes archivos de CMake en lugares en los que no se esperan archivos de CMake. Los archivos de CMake deben instalarse en ${{CURRENT_PACKAGES_DIR}}/share/${{PORT}}. Para suprimir este mensaje, agregue set(VCPKG_POLICY_SKIP_MISPLACED_CMAKE_FILES_CHECK enabled)", + "PortBugMisplacedFiles": "Los siguientes archivos normales se instalan en ubicaciones en las que es posible que no se instalen los archivos normales. Deben instalarse en un subdirectorio. Para suprimir este mensaje, agregue set(VCPKG_POLICY_SKIP_MISPLACED_REGULAR_FILES_CHECK enabled)", + "PortBugMisplacedPkgConfigFiles": "Se instalaron los siguientes directorios pkgconfig en ubicación incorrecta. pkgconf o pkg-config no encuentran correctamente los archivos pkgconfig mal ubicados. Los directorios de pkgconfig deben ser ${{CURRENT_PACKAGES_DIR}}/share/pkgconfig (solo para bibliotecas independientes de la arquitectura o solo para encabezados), ${{CURRENT_PACKAGES_DIR}}/lib/pkgconfig (para dependencias de versión) o ${{CURRENT_PACKAGES_DIR}}/debug/lib/pkgconfig (para dependencias de depuración). Para suprimir este mensaje, agregue set(VCPKG_POLICY_SKIP_PKGCONFIG_CHECK enabled)", + "PortBugMissingCMakeHelperPortFile": "El archivo ${{CURRENT_PACKAGES_DIR}}/share/${{PORT}}/vcpkg-port-config.cmake no existe. Este archivo debe existir para los puertos auxiliares de CMake. Para suprimir este mensaje, quite set(VCPKG_POLICY_CMAKE_HELPER_PORT enabled)", "PortBugMissingDebugBinaries": "No se encontraron binarios de depuración.", - "PortBugMissingFile": "El archivo /{path} no existe. Este archivo debe existir para los puertos auxiliares de CMake.", - "PortBugMissingImportedLibs": "Las bibliotecas de importación no estaban presentes en {path}.\nSi se trata de esto, agregue la siguiente línea en el archivo de puerto:\nset(VCPKG_POLICY_DLLS_WITHOUT_LIBS habilitado)", - "PortBugMissingIncludeDir": "La carpeta /include está vacía o no está presente. Esto indica que la biblioteca no se instaló correctamente.", - "PortBugMissingLicense": "La licencia de software debe estar disponible en ${{CURRENT_PACKAGES_DIR}}/share/{package_name}/copyright", - "PortBugMissingProvidedUsage": "El puerto proporcionó \"usage\", pero omitió instalar en /share/{package_name}/usage. Agregue la siguiente línea en el archivo de puerto:", + "PortBugMissingImportedLibs": "Parece que faltan bibliotecas de importación para las DLL instaladas. Si es así, agregue set(VCPKG_POLICY_DLLS_WITHOUT_LIBS enabled)", + "PortBugMissingIncludeDir": "La carpeta ${{CURRENT_PACKAGES_DIR}}/include está vacía o no está presente. Normalmente, esto significa que los encabezados no están instalados correctamente. Si se trata de un puerto auxiliar de CMake, agregue set(VCPKG_POLICY_CMAKE_HELPER_PORT enabled). Si no es un puerto auxiliar de CMake, pero esto es intencionado, agregue set(VCPKG_POLICY_EMPTY_INCLUDE_FOLDER enabled) para suprimir este mensaje.", + "PortBugMissingLicense": "la licencia no está instalada en ${{CURRENT_PACKAGES_DIR}}/share/${{PORT}}/copyright. Esto se puede solucionar agregando una llamada a vcpkg_install_copyright. Para suprimir este mensaje, agregue set(VCPKG_POLICY_SKIP_COPYRIGHT_CHECK enabled)", + "PortBugMissingLicenseFixIt": "Considere la posibilidad de agregar: {value}", + "PortBugMissingProvidedUsage": "este puerto contiene un archivo denominado \"usage\", pero no se instaló en ${{CURRENT_PACKAGES_DIR}}/share/${{PORT}}/usage. Si este archivo no está pensado para ser texto de uso, considere la posibilidad de elegir otro nombre. De lo contrario, instálelo. Para suprimir este mensaje, agregue set(VCPKG_POLICY_SKIP_USAGE_INSTALL_CHECK enabled)", "PortBugMissingReleaseBinaries": "No se encontraron binarios de versión.", "PortBugMovePkgConfigFiles": "Puede mover los archivos pkgconfig con comandos similares a:", - "PortBugOutdatedCRT": "Se detectó CRT dinámico obsoleto en los siguientes archivos:", - "PortBugRemoveBinDir": "Si no se puede deshabilitar la creación de bin\\ o debug\\bin\\, úselo en el archivo de puerto para quitarlos", - "PortBugRemoveEmptyDirectories": "Si se debe rellenar un directorio pero no lo está, esto podría indicar un error en el archivo de puerto.\nSi los directorios no son necesarios y su creación no se puede deshabilitar, use algo como esto en el archivo de puerto para quitarlos:", + "PortBugOutdatedCRT": "Se instalaron DLL que se vinculan con archivos DLL obsoletos de C RunTime (\"CRT\"). Las DLL instaladas deben vincularse con un CRT compatible. Puede inspeccionar las dependencias de un archivo DLL con \"dumpbin.exe /dependents mylibfile.dll\". Si usa un triplete personalizado destinado a un CRT antiguo, agregue set(VCPKG_POLICY_ALLOW_OBSOLETE_MSVCRT enabled) al archivo .cmake del triplet. Para suprimir este mensaje para este puerto, agregue set(VCPKG_POLICY_ALLOW_OBSOLETE_MSVCRT enabled)", + "PortBugRemoveBinDir": "si no se puede deshabilitar la creación de estos directorios, puede agregar lo siguiente en portfile.cmake para quitarlos.", "PortBugRemoveEmptyDirs": "file(REMOVE_RECURSE directorios vacíos dejados por los cambios de nombre anteriores)", - "PortBugRestrictedHeaderPaths": "Los siguientes encabezados restringidos pueden impedir que el entorno de ejecución principal de C++ y otros paquetes se compilen correctamente. En circunstancias excepcionales, esta directiva se puede deshabilitar estableciendo la variable de CMake VCPKG_POLICY_ALLOW_RESTRICTED_HEADERS en portfile.cmake.", - "PortBugSetDllsWithoutExports": "Es probable que las DLL sin exportaciones sean un error en el script de compilación. Si se trata de esto, agregue la siguiente línea en el archivo de puerto:\nset(VCPKG_POLICY_DLLS_WITHOUT_EXPORTS habilitado)\nLas siguientes DLL no tienen exportaciones:", + "PortBugRestrictedHeaderPaths": "Tomar los siguientes encabezados restringidos puede impedir que el entorno de ejecución de C++ principal y otros paquetes se compilen correctamente. Deben cambiarse de nombre o almacenarse en un subdirectorio. En circunstancias excepcionales, esta advertencia se puede suprimir agregando set(VCPKG_POLICY_ALLOW_RESTRICTED_HEADERS enabled)", + "PortBugRestrictedHeaderPathsNote": "los encabezados son relativos a ${{CURRENT_PACKAGES_DIR}}/include aquí", + "PortBugSetDllsWithoutExports": "las siguientes DLL se compilaron sin exportaciones. Es probable que las DLL sin exportaciones sean errores en el script de compilación. Si es así, agregue set(VCPKG_POLICY_DLLS_WITHOUT_EXPORTS enabled)", + "PortDeclaredHere": "{package_name} se declara aquí", "PortDependencyConflict": "El puerto {package_name} tiene las siguientes dependencias no admitidas:", "PortDoesNotExist": "{package_name} no existe", "PortMissingManifest2": "{package_name} falta el manifiesto del puerto (no hay archivo vcpkg.json o CONTROL)", @@ -932,7 +910,6 @@ "PortVersionControlMustBeANonNegativeInteger": "\"Port-Version\" debe ser un entero no negativo", "PortVersionMultipleSpecification": "\"port_version\" no se puede combinar con un \"#\" insertado en la versión", "PortsAdded": "Se agregaron los siguientes {count} puertos:", - "PortsDiffHelp": "El argumento debe ser una rama, etiqueta o hash para restaurar.", "PortsNoDiff": "No hubo cambios en los puertos entre las dos confirmaciones.", "PortsRemoved": "Se quitaron los siguientes {count} puertos:", "PortsUpdated": "Se actualizaron los siguientes {count} puertos:", @@ -957,7 +934,6 @@ "RestoredPackagesFromNuGet": "Se restauraron {count} paquetes de NuGet en {elapsed}. Use --debug para ver más detalles.", "ResultsHeader": "RESULTADOS", "ScriptAssetCacheRequiresScript": "argumentos esperados: la configuración de recursos \"x-script\" requiere exactamente la plantilla exec como argumento", - "SearchHelp": "El argumento debe ser substring que se va a buscar o ningún argumento para mostrar todas las bibliotecas.", "SecretBanner": "*** SECRETO ***", "SeeURL": "Consulte {url} para obtener más información.", "SerializedBinParagraphHeader": "\nPárrafo binario serializado", @@ -966,6 +942,7 @@ "ShaPassedWithConflict": "SHA512 se superó, pero también se superó --skip-sha512; hacer solo una o la otra.", "ShallowRepositoryDetected": "vcpkg se clonó como repositorio superficial en: {path}\nVuelva a intentarlo con un clon completo de vcpkg.", "SkipClearingInvalidDir": "Omitiendo el borrado del contenido de {path} porque no era un directorio.", + "SkippingPostBuildValidationDueTo": "Omitiendo validación posterior a la compilación debido a {cmake_var}", "SourceFieldPortNameMismatch": "El campo \"Source\" dentro del archivo CONTROL o \"name\" dentro del archivo vcpkg.json tiene el nombre {package_name} y no coincide con el directorio de puerto \"{path}\".", "SpecifiedFeatureTurnedOff": "La característica '{command_name}' está desactivada específicamente, pero se especificó --{option}.", "SpecifyHostArch": "Triplete de host. Consulte \"vcpkg help triplet\" (valor predeterminado: {env_var})", @@ -973,10 +950,8 @@ "StartCodeUnitInContinue": "se encontró la unidad de código de inicio en la posición de continuación", "StoreOptionMissingSha": "La opción --store no es válida sin sha512", "StoredBinariesToDestinations": "Archivos binarios almacenados en {count} destinos en {elapsed}.", - "StoredBinaryCache": "Caché binaria almacenada: \"{path}\"", "SuccessfulyExported": "Se exportó {package_name} a {path}", "SuggestGitPull": "El resultado puede estar obsoleto. Ejecute `git pull` para obtener los resultados más recientes.", - "SuggestResolution": "Para intentar resolver todos los errores a la vez, ejecute:\nvcpkg {command_name} --{option}", "SuggestStartingBashShell": "Asegúrese de que ha iniciado un nuevo shell de Bash para que el cambio surta efecto.", "SupportedPort": "Se admite el puerto {package_name}.", "SwitchUsedMultipleTimes": "el modificador '{option}' se especificó varias veces", @@ -1004,7 +979,6 @@ "UnexpectedByteSize": "Se esperaba que se escribiesen {expected} bytes, pero se escribieron {actual}.", "UnexpectedCharExpectedCloseBrace": "Carácter inesperado; propiedad esperada o corchete cerrado", "UnexpectedCharExpectedColon": "Carácter inesperado; dos puntos esperados", - "UnexpectedCharExpectedComma": "Carácter inesperado; se espera una coma o un corchete cerrado", "UnexpectedCharExpectedName": "Carácter inesperado; nombre de propiedad esperado", "UnexpectedCharExpectedValue": "Carácter inesperado; valor esperado", "UnexpectedCharMidArray": "Carácter inesperado en medio de una matriz", @@ -1023,15 +997,11 @@ "UnexpectedEOFMidKeyword": "EOF inesperado en medio de la palabra clave", "UnexpectedEOFMidString": "EOF inesperado en medio de la cadena", "UnexpectedEOFMidUnicodeEscape": "Fin de archivo inesperado en medio de un escape unicode", - "UnexpectedErrorDuringBulkDownload": "error inesperado durante la descarga masiva.", "UnexpectedEscapeSequence": "Continuación inesperada de la secuencia de escape", - "UnexpectedExtension": "Extensión de archivo inesperada: '{extension}'.", - "UnexpectedFeatureList": "lista inesperada de características", "UnexpectedField": "campo inesperado '{json_field}'", "UnexpectedFieldSuggest": "'{json_field}' de campo inesperado, ¿quiso decir '{value}'?", "UnexpectedFormat": "El formato esperado es [{expected}], pero era [{actual}].", "UnexpectedOption": "opción inesperada: {option}", - "UnexpectedPlatformExpression": "expresión de plataforma inesperada", "UnexpectedPortName": "el puerto {expected} se declara como {actual} en {path}", "UnexpectedPortversion": "\"port-version\" inesperado sin un campo de control de versión", "UnexpectedSwitch": "modificador inesperado: {option}", @@ -1040,9 +1010,8 @@ "UnknownBaselineFileContent": "entrada de base de referencia irreconocible; se esperaba 'port:triplet=(fail|skip|pass)'", "UnknownBinaryProviderType": "tipo de proveedor binario desconocido: los proveedores válidos son \"clear\", \"default\", \"nuget\", \"nugetconfig\", \"nugettimeout\", \"interactive\", \"x-azblob\", \"x-gcs\", \"x-aws\", \"x-aws-config\", \"http\" y \"files\".", "UnknownBooleanSetting": "valor booleano desconocido para {option}: \"{value}\". Los valores válidos son '', '1', '0', 'ON', 'OFF', 'TRUE' y 'FALSE'.", - "UnknownOptions": "Opciones desconocidas para el comando '{command_name}':", "UnknownParameterForIntegrate": "Parámetro desconocido '{value}' para la integración.", - "UnknownPolicySetting": "Configuración desconocida para la directiva '{value}': {option}", + "UnknownPolicySetting": "Configuración desconocida de {cmake_var}: {value}. Los valores de directiva válidos son 'disabled' y 'enabled'.", "UnknownSettingForBuildType": "Configuración desconocida para VCPKG_BUILD_TYPE {option}. Los valores válidos son '', 'debug' y 'release'.", "UnknownTool": "vcpkg no tiene una definición de esta herramienta para esta plataforma.", "UnknownTopic": "tema desconocido {value}", @@ -1054,7 +1023,6 @@ "UnsupportedFeatureSupportsExpressionWarning": "{feature_spec} solo se admite en '{supports_expression}', que no coincide con {triplet}. Esto suele ser porque hay errores de compilación conocidos o problemas en tiempo de ejecución al compilar otras plataformas. Se va a continuar de todos modos debido a `--allow-unsupported`.", "UnsupportedPort": "No se admite el puerto {package_name}.", "UnsupportedPortDependency": "- No se admite la dependencia {value}.", - "UnsupportedShortOptions": "no se admiten opciones cortas: '{value}'", "UnsupportedSyntaxInCDATA": "]]> no se admite en el bloque CDATA", "UnsupportedSystemName": "No se pudo asignar VCPKG_CMAKE_SYSTEM_NAME \"{system_name}\" a una plataforma vcvarsall. Los nombres de sistema admitidos son '', \"Windows\" y \"WindowsStore\".", "UnsupportedToolchain": "en el triplete {triplet}: no se puede encontrar una cadena de herramientas válida para la arquitectura de destino solicitada {arch}.\nLa instancia de Visual Studio seleccionada está en: {path}\nLas combinaciones de cadenas de herramientas disponibles son: {list}", @@ -1068,21 +1036,18 @@ "UpdateBaselineUpdatedBaseline": "se actualizó el registro \"{url}\": línea base \"{old_value}\" -> \"{new_value}\"", "UpgradeInManifest": "La actualización actualiza una instalación en modo clásico y, por tanto, no es compatible con el modo manifiesto. Considere la posibilidad de actualizar las dependencias actualizando la línea base a un valor actual con vcpkg x-update-baseline y ejecutando la instalación de vcpkg.", "UpgradeRunWithNoDryRun": "Si está seguro de que desea recompilar los paquetes anteriores, ejecute este comando con la opción --no-dry-run.", - "UploadedBinaries": "Archivos binarios cargados en {count} {vendor}.", - "UploadedPackagesToVendor": "{count} paquetes cargados en {vendor} en {elapsed}", "UploadingBinariesToVendor": "Cargando archivos binarios para \"{spec}\" en \"{vendor}\" con origen \"{path}\".", - "UploadingBinariesUsingVendor": "Cargando archivos binarios para \"{spec}\" mediante \"{vendor}\" \"{path}\".", + "UsageInstallInstructions": "puede instalar el archivo de uso con el siguiente CMake", + "UsageTextHere": "el archivo de uso está aquí", "UseEnvVar": "-- Uso de {env_var} en variables de entorno.", "UserWideIntegrationDeleted": "La integración en todo el usuario no está instalada.", "UserWideIntegrationRemoved": "Se quitó la integración en todo el usuario.", - "UsingCommunityTriplet": "-- Uso del triplete de la comunidad {triplet}. No se garantiza que esta configuración de triplete se realice correctamente.", "UsingManifestAt": "Usando el archivo de manifiesto en {path}.", "Utf8ConversionFailed": "No se pudo convertir a UTF-8", "VSExaminedInstances": "Se han considerado las siguientes instancias de Visual Studio:", "VSExaminedPaths": "Se examinaron las siguientes rutas de acceso para Visual Studio instancias:", "VSNoInstances": "No se pudo encontrar una instancia de Visual Studio completa", "VcpkgCeIsExperimental": "El vcpkg-artifacts es experimental y puede cambiar en cualquier momento.", - "VcpkgCommitTableHeader": "Confirmación de VCPKG", "VcpkgCompletion": "ya se importó la finalización de vcpkg {value} al archivo \"{path}\".\nSe encontraron las siguientes entradas:", "VcpkgDisallowedClassicMode": "No se pudo encontrar un manifiesto (vcpkg.json) encima del directorio de trabajo actual.\nEsta distribución vcpkg no tiene una instancia de modo clásico.", "VcpkgHasCrashed": "vcpkg se bloqueó. Cree una incidencia en https://github.com/microsoft/vcpkg que contenga un breve resumen de lo que estaba intentando hacer y la siguiente información.", @@ -1095,17 +1060,22 @@ "VcpkgUsage": "uso: vcpkg [--switches] [--options=values] [arguments] @archivo_respuesta", "VcvarsRunFailed": "no se pudo ejecutar vcvarsall.bat para obtener un entorno de Visual Studio", "VcvarsRunFailedExitCode": "al intentar obtener un entorno de Visual Studio, vcvarsall.bat devolvió {exit_code}", - "VersionBaselineMismatch": "La versión más reciente es {expected}, pero el archivo de línea base contiene {actual}.\nEjecute:\nvcpkg x-add-version {package_name}\ngit add versions\ngit commit -m \"Update version database\"\npara actualizar la versión de línea base.", + "VersionBaselineMatch": "{version_spec} coincide con la línea base actual", + "VersionBaselineMismatch": "{package_name} está asignado {actual}, pero el puerto local es {expected}", "VersionBuiltinPortTreeEntryMissing": "no hay ninguna entrada de base de datos de versión para {package_name} en {expected}; usando la versión del árbol de puertos restaurada ({actual}).", "VersionCommandHeader": "versión del programa de administración de paquetes vcpkg {version}\n\nConsulte LICENSE.txt para obtener información sobre la licencia.", "VersionConflictXML": "Se esperaba {path} versión: [{expected_version}], pero fue [{actual_version}]. Vuelva a ejecutar bootstrap-vcpkg.", + "VersionConstraintNotInDatabase1": "la restricción \"version>=\" a {package_name} nombres versión {version} que no existe en la base de datos de versión. Todas las versiones deben existir en la base de datos de versiones para que vcpkg las interprete.", + "VersionConstraintNotInDatabase2": "considere la posibilidad de quitar la restricción de versión o elegir un valor declarado aquí", + "VersionConstraintOk": "todas las restricciones de versión son coherentes con la base de datos de versión", "VersionConstraintPortVersionMustBePositiveInteger": "port-version (después de \"#\") en \"version>=\" debe ser un número no negativo", - "VersionConstraintUnresolvable": "No se puede resolver una restricción mínima para la dependencia {package_name} de {spec}.\nNo se encontró la dependencia en la línea base, lo que indica que el paquete no existía en ese momento. Esto puede corregirse proporcionando una versión de invalidación explícita a través del campo \"invalidaciones\" o actualizando la línea base.\nConsulte \"control de versiones de ayuda de vcpkg\" para obtener más información.", "VersionConstraintViolated": "Se esperaba que la dependencia {spec} fuera al menos la versión {expected_version}, pero actualmente es la {actual_version}.", "VersionDatabaseEntryMissing": "no hay ninguna entrada de versión para {package_name} en {version}.", - "VersionDatabaseFileMissing": "Falta un archivo de base de datos de versión en {package_name} en {path}\nEjecute:\nvcpkg x-add-version {package_name}\npara crear el archivo de versiones.", + "VersionDatabaseFileMissing": "este puerto no está en la base de datos de versión", + "VersionDatabaseFileMissing2": "el archivo de base de datos de versión debe estar aquí", + "VersionDatabaseFileMissing3": "ejecute \"{command_line}\" para crear el archivo de base de datos de versión.", "VersionGitEntryMissing": "no hay ninguna entrada de base de datos de versión para {package_name} en {version}.\nVersiones disponibles:", - "VersionInDeclarationDoesNotMatch": "La versión declarada en el archivo no coincide con la versión restaurada: {version}", + "VersionInDeclarationDoesNotMatch": "{git_tree_sha} se declaró para contener {expected}, pero parece contener {actual}", "VersionIncomparable1": "conflicto de versión en {spec}: {constraint_origin} requerido {expected}, que no se puede comparar con la versión de línea base {actual}.", "VersionIncomparable2": "{version_spec} tiene el esquema {new_scheme}", "VersionIncomparable3": "Esto se puede resolver agregando una invalidación explícita a la versión preferida. Por ejemplo:", @@ -1117,17 +1087,29 @@ "VersionInvalidSemver": "'{version}' no es una versión semántica válida, consulte .", "VersionMissing": "se esperaba un campo de control de versión (versión, fecha-versión, versión-servidor o versión-cadena)", "VersionMissingRequiredFeature": "{version_spec} no tiene la característica {feature} necesaria necesaria para {constraint_origin}", - "VersionNotFound": "{expected} no está disponible, solo {actual} está disponible", - "VersionNotFoundInVersionsFile": "No se encontró la versión {versión} en el archivo de versiones de {package_name}.\n Ejecute:\nvcpkg x-add-versión {package_name}\npara agregar la nueva versión del puerto.", + "VersionNotFoundInVersionsFile2": "No se encontró {version_spec} en la base de datos de versiones", + "VersionNotFoundInVersionsFile3": "la versión debe estar en este archivo", + "VersionNotFoundInVersionsFile4": "ejecute \"{command_line}\" para agregar la nueva versión del puerto.", + "VersionOverrideNotInVersionDatabase": "la invalidación de versión {package_name} no existe en la base de datos de versiones; ¿existe ese puerto?", + "VersionOverrideVersionNotInVersionDatabase1": "la invalidación de {package_name} nombres versión {version} que no existe en la base de datos de versión. Se producirá un error al instalar este puerto en el nivel superior, ya que esa versión no se podrá resolver.", + "VersionOverrideVersionNotInVersionDatabase2": "considere la posibilidad de quitar la invalidación de la versión o de elegir un valor declarado aquí", + "VersionOverwriteVersion": "puede sobrescribir {version_spec} con los valores locales correctos ejecutando:", "VersionRejectedDueToBaselineMissing": "{path} se rechazó porque usa \"{json_field}\" y no tiene una \"línea base integrada\". Esto se puede corregir quitando los usos de \"{json_field}\" o agregando una \"línea base integrada\".\nConsulte `vcpkg help versioning` para obtener más información.", "VersionRejectedDueToFeatureFlagOff": "{path} se rechazó porque usa \"{json_field}\" y la marca de característica `versions` está deshabilitada. Esto se puede corregir quitando \"{json_field}\" o habilitando la marca de característica \"`versions`.\nConsulte `vcpkg help versioning` para obtener más información.", - "VersionSchemeMismatch": "La base de datos de versión declara {version} como {expected}, pero {path} lo declara como {actual}. Las versiones deben ser únicas, incluso si se declaran con esquemas diferentes.\nEjecute:\nvcpkg x-add-version {package_name} --overwrite-version\npara sobrescribir el esquema declarado en la base de datos de la versión con el declarado en el puerto.", - "VersionShaMismatch": "{version} se ha declarado con {expected}, pero el puerto local tiene un SHA diferente {actual}.\nActualice los campos de versión del puerto y, a continuación, ejecute:\nvcpkg x-add-version {package_name}\ngit add versions\ngit commit -m \"Update version database\"\npara agregar la nueva versión.", - "VersionShaMissing": "al validar {package_name}, falta SHA de Git.\nEjecutar:\ngit add \"{path}\"\ngit commit -m \"wip\"\nvcpkg x-add-version {package_name}\ngit add versions\ngit commit --amend -m \"[{package_name}] Add new port\"\npara hacer \"commit\" del nuevo puerto y crear su archivo de versión.", + "VersionSchemeMismatch1": "{version} se declaró {expected}, pero {package_name} se declaró con {actual}", + "VersionSchemeMismatch1Old": "{version} se declaró {expected}, pero {package_name}@{git_tree_sha} se declaró con {actual}", + "VersionSchemeMismatch2": "las versiones deben ser únicas, incluso si se declaran con esquemas diferentes", + "VersionShaMismatch1": "El árbol git {version_spec} {git_tree_sha} no coincide con el directorio de puertos.", + "VersionShaMismatch2": "el directorio de puertos tiene el árbol git {git_tree_sha}", + "VersionShaMismatch3": "si {version_spec} ya está publicado, actualice este archivo con una nueva versión o una versión de puerto, confírmelo y, a continuación, agregue la nueva versión mediante la ejecución de:", + "VersionShaMismatch4": "Si {version_spec} aún no se ha publicado, sobrescriba el árbol de Git anterior mediante la ejecución de:", + "VersionShaMissing1": "No se pudo determinar el árbol git del directorio de puertos. Esto suele deberse a cambios no confirmados.", + "VersionShaMissing2": "puede confirmar los cambios y agregarlos a la base de datos de versión mediante la ejecución de:", + "VersionShaMissing3": "Wip", + "VersionShaMissing4": "[{package_name}] Agregar nuevo puerto", "VersionSharpMustBeFollowedByPortVersion": "\"#\" en el texto de la versión debe ir seguido de una versión de puerto", "VersionSharpMustBeFollowedByPortVersionNonNegativeInteger": "\"#\" en el texto de la versión debe ir seguido de una versión de puerto (un número entero no negativo)", "VersionSpecMismatch": "No se pudo cargar el puerto porque las versiones no coinciden. El archivo \"{path}\" contiene la versión {actual_version}, pero la base de datos de versión indica que debe ser {expected_version}.", - "VersionTableHeader": "Versión", "VersionVerifiedOK": "{version_spec} está correctamente en la base de datos de la versión ({git_tree_sha})", "WaitingForChildrenToExit": "Esperando a que se cierren los procesos secundarios...", "WaitingToTakeFilesystemLock": "esperando para realizar el bloqueo del sistema de archivos en {path}...", @@ -1136,8 +1118,7 @@ "WhileCheckingOutBaseline": "al restaurar la línea base {commit_sha}", "WhileCheckingOutPortTreeIsh": "al restaurar el puerto {package_name} con el árbol Git {git_tree_sha}", "WhileGettingLocalTreeIshObjectsForPorts": "al obtener objetos de árbol locales para los puertos", - "WhileLoadingLocalPort": "al intentar cargar el puerto local {package_name}", - "WhileLoadingPortFromGitTree": "al intentar cargar el puerto desde: {commit_sha}", + "WhileLoadingBaselineVersionForPort": "al cargar la versión de línea base para {package_name}", "WhileLoadingPortVersion": "al cargar {version_spec}", "WhileLookingForSpec": "mientras busca {spec}:", "WhileParsingVersionsForPort": "al analizar las versiones de {package_name} desde {path}", @@ -1165,7 +1146,7 @@ "descriptionShouldBeOfTypestringFound$": "la descripción debe ser de tipo \"string\"; se encontró \"${p0}\".", "optionsShouldBeASequenceFound$": "las opciones deben ser una secuencia, se encontró \"${p0}\"", "DuplicateKeysDetectedInManifest$": "Claves duplicadas detectadas en el manifiesto: \"${p0}\"", - "noPostscriptFileRerunWithTheVcpkgShellFunctionRatherThanExecutable": "no hay ningún archivo postscript: vuelva a ejecutar con la función shell vcpkg en lugar de con el ejecutable", + "noPostscriptFileRunVcpkgshellWithTheSameArguments": "no hay ningún archivo postscript: ejecute vcpkg-shell con los mismos argumentos", "DuplicateDefine$DuringActivationNewValueWillReplaceOld": "Definición duplicada ${p0} durante la activación. El nuevo valor reemplazará al antiguo.", "DuplicateToolDeclared$DuringActivationNewValueWillReplaceOld": "La herramienta duplicada declaró ${p0} durante la activación. El nuevo valor reemplazará al antiguo.", "DuplicateAliasDeclared$DuringActivationNewValueWillReplaceOld": "El alias duplicado declaró ${p0} durante la activación. El nuevo valor reemplazará al antiguo.", @@ -1257,7 +1238,7 @@ "MultipleArtifactsSpecifiedButNotAnEqualNumberOf$Switches": "Se especificaron varios artefactos, pero no un número igual de conmutadores ${p0}", "TriedToAddAnArtifact$$ButCouldNotDetermineTheRegistryToUse": "Se intentó agregar un artefacto [${p0}]:${p1}, pero no se pudo determinar el registro que se va a usar.", "TriedToAddRegistry$As$ButItWasAlready$PleaseAdd$ToThisProjectManuallyAndReattempt": "Se intentó agregar el registro ${p0} como ${p1}, pero ya era ${p2}. Agrega ${p3} a este proyecto manualmente e inténtalo de nuevo.", - "RunvcpkgActivateToApplyToTheCurrentTerminal": "Ejecute \\`vcpkg activate\\` para aplicarlo al terminal actual", + "RunvcpkgshellActivateToApplyToTheCurrentTerminal": "Ejecute \\'vcpkg-shell activate\\' para aplicarlo al terminal actual", "DownloadsFolderCleared$": "Carpeta de descargas borrada (${p0}) ", "InstalledArtifactFolderCleared$": "Carpeta de artefactos instalada borrada (${p0}) ", "CacheFolderCleared$": "Carpeta de caché borrada (${p0}) ", diff --git a/locales/messages.fr.json b/locales/messages.fr.json index fb6c844a2f..428642fb69 100644 --- a/locales/messages.fr.json +++ b/locales/messages.fr.json @@ -46,7 +46,6 @@ "AVersionOfAnyType": "version de n’importe quel type", "AddArtifactOnlyOne": "'{command_line}' ne pouvez ajouter qu’un seul artefact à la fois.", "AddCommandFirstArg": "Le premier paramètre à ajouter doit être « artifact » ou « port ».", - "AddFirstArgument": "Le premier argument de '{command_line}' doit être 'artifact' ou 'port'.", "AddPortRequiresManifest": "'{command_line}' requiert un fichier manifeste actif.", "AddPortSucceeded": "L’ajout de ports au fichier vcpkg.json a réussi.", "AddRecurseOption": "Si vous êtes sûr de vouloir les supprimer, exécutez la commande avec l’option --recurse.", @@ -54,12 +53,11 @@ "AddVersionAddedVersionToFile": "version ajoutée {version} à {path}", "AddVersionArtifactsOnly": "--cette version est composée uniquement d’artefacts et ne peut pas être utilisée avec le port d’ajout vcpkg", "AddVersionCommitChangesReminder": "Avez-vous pensé à valider vos modifications ?", - "AddVersionCommitResultReminder": "N'oubliez pas de valider le résultat !", "AddVersionDetectLocalChangesError": "détection des modifications locales ignorée en raison d’un format inattendu dans la sortie d’état git", "AddVersionFileNotFound": "Impossible de trouver le fichier requis {path}", "AddVersionFormatPortSuggestion": "Exécutez `{command_line}` pour formater le fichier.", "AddVersionIgnoringOptionAll": "ignorer --{option} car un argument de nom de port a été fourni.", - "AddVersionLoadPortFailed": "Impossible de charger le port {package_name}", + "AddVersionInstructions": "vous pouvez exécuter les commandes suivantes pour ajouter automatiquement la version actuelle de {package_name} :", "AddVersionNewFile": "(nouveau fichier)", "AddVersionNewShaIs": "nouveau SHA : {commit_sha}", "AddVersionNoFilesUpdated": "Aucun fichier n'a été mis à jour.", @@ -70,8 +68,8 @@ "AddVersionPortFilesShaChanged": "Les fichiers archivés pour {package_name} ont changé mais la version n'a pas été mise à jour.", "AddVersionPortFilesShaUnchanged": "Les fichiers archivés pour {package_name} sont inchangés par rapport à la version {version}.", "AddVersionPortHasImproperFormat": "{package_name} n'a pas un format correct.", - "AddVersionSuggestNewVersionScheme": "Utilisez le schéma de version « {new_scheme} » plutôt que « {old_scheme} » dans le port « {package_name} ».\nUtilisez --{option} pour désactiver cette vérification.", - "AddVersionUnableToParseVersionsFile": "Impossible d'analyser les versions du fichier {path}", + "AddVersionSuggestVersionDate": "Le format de version de « {package_name} » utilise « version-string », mais le format est acceptable en tant que « version-date ». Si ce format est effectivement destiné à être une date ISO 8601, remplacez le format par « version-date », puis réexécutez cette commande. Sinon, désactivez cette vérification en réexécutant cette commande et en ajoutant --skip-version-format-check.", + "AddVersionSuggestVersionRelaxed": "Le format de version de « {package_name} » utilise « version-string », mais le format est acceptable en tant que « version ». Si les versions de ce port sont classables en utilisant des règles de version souples, remplacez le format par « version », puis réexécutez cette commande. Les règles de version souples trient les versions par composant numérique. Ensuite, les versions ayant des tirets comme suffixe sont triées lexicographiquement au préalable. Les balises de build avec des signes plus sont ignorées. Exemples :\n1.0 < 1.1-alpha < 1.1-b < 1.1 < 1.1.1 < 1.2+build = 1.2 < 2.0\nNotez en particulier que les suffixes avec des tirets effectuent un tri *avant*, et non après. 1.0-n’importe quoi < 1.0\nNotez que cet ordre de tri est le même que celui choisi dans le contrôle de version sémantique (voir https://semver.org), même si les parties effectivement sémantiques ne s’appliquent pas.\nSi les versions de ce port ne sont pas triées selon ces règles, désactivez cette vérification en réexécutant cette commande et en ajoutant --skip-version-format-check.", "AddVersionUncommittedChanges": "il y a des changements non engagés pour {package_name}.", "AddVersionUpdateVersionReminder": "Avez-vous pensé à mettre à jour la version ou la version du port ?", "AddVersionUseOptionAll": "{command_name} sans arguments nécessite de passer --{option} pour mettre à jour toutes les versions du port en une seule fois.", @@ -82,7 +80,7 @@ "AdditionalPackagesToRemove": "Des packages supplémentaires (*) doivent être supprimés pour terminer cette opération.", "AllFormatArgsRawArgument": "la chaîne de format \"{value}\" contient un argument de format brut.", "AllFormatArgsUnbalancedBraces": "accolade non équilibré dans la chaîne de format \"{value}\"", - "AllPackagesAreUpdated": "Tous les packages installés sont à jour avec le fichier de port local.", + "AllPackagesAreUpdated": "Tous les packages installés sont à jour.", "AlreadyInstalled": "{spec} est déjà installé", "AlreadyInstalledNotHead": "{spec} est déjà installé - ne pas générer à partir de HEAD", "AmbiguousConfigDeleteConfigFile": "Configuration vcpkg ambiguë fournie par le fichier manifeste et le fichier de configuration.\n-- Supprimez le fichier de configuration {path}", @@ -110,7 +108,6 @@ "ApplocalProcessing": "déploiement de dépendances", "ArtifactsBootstrapFailed": "vcpkg-artifacts n’est pas installé et n’a pas pu être lancé.", "ArtifactsNotInstalledReadonlyRoot": "vcpkg-artifacts n’est pas installé et ne peut pas être installé, car VCPKG_ROOT est supposé être en lecture seule. La réinstallation de vcpkg à l’aide du « one-pack » peut résoudre ce problème.", - "ArtifactsNotOfficialWarning": "Utilisation de vcpkg-artifacts avec une instruction ", "ArtifactsOptionIncompatibility": "--{option} n’a aucun effet sur la recherche d’artefact.", "ArtifactsOptionJson": "Chemin d’accès complet au fichier JSON où les variables d’environnement et d’autres propriétés sont enregistrées", "ArtifactsOptionMSBuildProps": "Chemin d’accès complet au fichier, dans lequel les propriétés MSBuild seront écrites", @@ -118,12 +115,10 @@ "ArtifactsOptionVersionMismatch": "Le nombre de --commutateurs de version doit correspondre au nombre d’artefacts nommés", "ArtifactsSwitchARM": "Force la détection de l’hôte à ARM lors de l’acquisition d’artefacts", "ArtifactsSwitchARM64": "Force la détection de l’hôte à ARM64 lors de l’acquisition d’artefacts", - "ArtifactsSwitchAll": "Met à jour tous les registres d’artefacts connus", "ArtifactsSwitchAllLanguages": "Acquiert tous les fichiers de langage lors de l’acquisition d’artefacts", "ArtifactsSwitchForce": "Force la réacquire si un artefact est déjà acquis", "ArtifactsSwitchFreebsd": "Force la détection de l’hôte à FreeBSD lors de l’acquisition d’artefacts", "ArtifactsSwitchLinux": "Force la détection de l’hôte sur Linux lors de l’acquisition d’artefacts", - "ArtifactsSwitchNormalize": "Applique toutes les corrections de dépréciation", "ArtifactsSwitchOnlyOneHostPlatform": "Il n’est possible de définir qu’une seule plateforme hôte (--x64, --x86, --arm, --arm64).", "ArtifactsSwitchOnlyOneOperatingSystem": "Il n’est possible de définir qu’un seul système d’exploitation (--windows, --osx, --linux, --freebsd).", "ArtifactsSwitchOnlyOneTargetPlatform": "Il n’est possible de définir qu’une seule plateforme cible (--target:x64, --target:x86, --target:arm, --target:arm64).", @@ -135,9 +130,12 @@ "ArtifactsSwitchWindows": "Force la détection de l’hôte à Windows lors de l’acquisition d’artefacts", "ArtifactsSwitchX64": "Force la détection de l’hôte à x64 lors de l’acquisition d’artefacts", "ArtifactsSwitchX86": "Force la détection de l’hôte à x86 lors de l’acquisition d’artefacts", + "AssetCacheHit": "Accès au cache des ressources pour {path}; téléchargé à partir de : {url}", + "AssetCacheMiss": "Échec dans le cache des ressources; téléchargement à partir de {url}", + "AssetCacheMissBlockOrigin": "Le cache des actifs a été manqué pour {chemin} et les téléchargements sont bloqués par x-block-origin.", "AssetCacheProviderAcceptsNoArguments": "arguments inattendus : ’{value}’ n’accepte pas les arguments", + "AssetCacheSuccesfullyStored": "La {path} a été stockée dans {url}.", "AssetSourcesArg": "Sources de mise en cache des ressources. Voir « mise en cache des ressources d’aide vcpkg »", - "AttemptingToFetchPackagesFromVendor": "Tentative de récupération du ou des packages {count} à partir de {vendor}", "AttemptingToSetBuiltInBaseline": "tentative de définition d’une ligne de base intégrée dans vcpkg.json lors du remplacement du default-registry dans vcpkg-configuration.json.\nLe default-registry de vcpkg-configuration.json sera utilisé.", "AuthenticationMayRequireManualAction": "Un ou plusieurs fournisseurs d’informations d’identification {vendor} ont demandé une action manuelle. Ajoutez la source binaire « interactive » pour autoriser l’interactivité.", "AutoSettingEnvVar": "-- Définir automatiquement les variables d’environnement {env_var} sur « {url} ».", @@ -147,12 +145,11 @@ "AzUrlAssetCacheRequiresBaseUrl": "arguments inattendus : la configuration de la ressource ’azurl’ nécessite une URL de base", "AzUrlAssetCacheRequiresLessThanFour": "arguments inattendus : la configuration de la ressource 'azurl' requiert moins de 4 arguments", "BaselineConflict": "La spécification de vcpkg-configuration.default-registry dans un fichier manifeste est en conflit avec la ligne de base intégrée.\nSupprimez l’un de ces paramètres en conflit.", - "BaselineFileNoDefaultField": "Le fichier de base de référence à la validation {commit_sha} n’était pas valide (aucun champ « par défaut »).", "BaselineGitShowFailed": "lors de l’extraction de la ligne de base à partir de la ’{commit_sha}’ de validation, échec de ’git show’ versions/baseline.json. Pour résoudre ce problème, récupérez les validations avec ’git fetch’.", - "BaselineMissing": "Version de référence introuvable. Run:\nvcpkg x-add-version {package_name}\ngit add versions\ngit commit -m « Update version database »\n pour définir {version} comme version de base de référence.", - "BinaryCacheVendorHTTP": "Serveurs HTTP", + "BaselineMissing": "{package_name} n’a pas de version attribuée", + "BinariesRelativeToThePackageDirectoryHere": "les fichiers binaires sont relatifs à ${{CURRENT_PACKAGES_DIR}} ici", "BinarySourcesArg": "Sources de mise en cache binaire. Voir « vcpkg help binarycaching »", - "BinaryWithInvalidArchitecture": "{path}\n Attendu : {expected}, mais était {actual}", + "BinaryWithInvalidArchitecture": "{path} est conçu pour {arch}", "BuildAlreadyInstalled": "{spec} est déjà installé ; supprimez {spec} avant de tenter de le générer.", "BuildDependenciesMissing": "La commande build nécessite que toutes les dépendances soient déjà installées.\nLes dépendances suivantes sont manquantes :", "BuildResultBuildFailed": "BUILD_FAILED", @@ -170,22 +167,19 @@ "BuildTroubleshootingMessage1": "Vérifiez que vous utilisez les derniers fichiers de port avec 'git pull' et 'vcpkg update'.\nRechercher ensuite les problèmes connus sur :", "BuildTroubleshootingMessage2": "Vous pouvez soumettre un nouveau problème à l’adresse :", "BuildTroubleshootingMessage3": "Incluez « [{package_name}] Erreur de build » dans le titre de votre rapport de bogues, les informations de version suivantes dans votre description de bogue et joignez les journaux des échecs pertinents ci-dessus.", - "BuildTroubleshootingMessage4": "Utilisez le modèle prérempli de {path} lors du signalement de votre problème.", "BuildTroubleshootingMessageGH": "Vous pouvez également soumettre un problème en exécutant (l’interface de ligne de commande GitHub doit être installée) :", "BuildingFromHead": "Génération de {spec} à partir de HEAD...", "BuildingPackage": "Génération de {spec}...", "BuildingPackageFailed": "échec de la génération de {spec} avec : {build_result}", "BuildingPackageFailedDueToMissingDeps": "en raison des dépendances manquantes suivantes :", "BuiltInTriplets": "Triplets intégrés :", - "BuiltWithIncorrectArchitecture": "Les fichiers suivants ont été générés pour une architecture incorrecte :", - "CISettingsExclude": "Liste de ports séparés par des virgules à ignorer", + "BuiltWithIncorrectArchitecture": "Les triplets demandent que les fichiers binaires soient générés pour {arch}, mais les binaires suivants ont été créés pour une architecture différente. Cela signifie généralement que les informations de chaîne d’outils sont transmises de manière incorrecte au système de génération des fichiers binaires. Pour supprimer ce message, ajoutez set (VCPKG_POLICY_SKIP_ARCHITECTURE_CHECK activé)", "CISettingsOptCIBase": "Chemin du fichier ci.baseline.txt. Utilisé pour ignorer les ports et détecter les régressions.", "CISettingsOptExclude": "Liste de ports séparés par des virgules à ignorer", "CISettingsOptFailureLogs": "Répertoire dans lequel les journaux d’échec seront copiés", "CISettingsOptHostExclude": "Liste de ports séparés par des virgules à ignorer pour le triplet hôte", "CISettingsOptOutputHashes": "Fichier permettant de générer tous les hachages de package déterminés", "CISettingsOptParentHashes": "Fichier permettant de lire les hachages de package d’un état CI parent, afin de réduire l’ensemble des packages modifiés", - "CISettingsOptSkippedCascadeCount": "Déclare que le nombre de --exclude et le nombre de fois où le support a été ignoré correspond exactement à ce nombre", "CISettingsOptXUnit": "Fichier pour générer des résultats au format XUnit", "CISettingsVerifyGitTree": "Vérifie que chaque objet d’arborescence Git correspond à sa version déclarée (c’est très lent)", "CISettingsVerifyVersion": "Imprime le résultat pour chaque port au lieu de seulement des erreurs", @@ -200,8 +194,6 @@ "CMakeTargetsUsageHeuristicMessage": "# ceci est généré de manière heuristique et peut ne pas être correct", "CMakeToolChainFile": "Les projets CMake doivent utiliser : « -DCMAKE_TOOLCHAIN_FILE={path} »", "CMakeUsingExportedLibs": "Pour utiliser des bibliothèques exportées dans des projets CMake, ajoutez {value} à votre ligne de commande CMake.", - "CheckedOutGitSha": "Extraction de Git SHA : {commit_sha}", - "CheckedOutObjectMissingManifest": "L’objet extrait ne contient pas de fichier CONTROL ou de fichier vcpkg.json.", "ChecksFailedCheck": "vcpkg s’est bloqué; aucun détail supplémentaire n’est disponible.", "ChecksUnreachableCode": "code inaccessible atteint", "ChecksUpdateVcpkg": "la mise à jour de vcpkg en réexécutant bootstrap-vcpkg peut résoudre cet échec.", @@ -235,14 +227,11 @@ "CmdBuildExternalExample2": "vcpkg build-external zlib2 C:\\path\\to\\dir\\with\\vcpkg.json", "CmdBuildExternalSynopsis": "Génère le port à partir d’un chemin d’accès", "CmdBuildSynopsis": "Génère un port", - "CmdCacheExample1": "vcpkg cache ", - "CmdCacheSynopsis": "Répertorier les spécifications des packages", "CmdCheckSupportExample1": "vcpkg x-check-support ", "CmdCheckSupportSynopsis": "Teste si un port est pris en charge sans le générer", "CmdCiCleanSynopsis": "Efface tous les fichiers à préparer pour une exécution d’élément de configuration", "CmdCiSynopsis": "Tente de générer tous les ports pour les tests d’intégration continue", "CmdCiVerifyVersionsSynopsis": "Vérifie l’intégrité de la base de données de versions", - "CmdContactOptSurvey": "Lancer le navigateur par défaut vers l’enquête vcpkg actuelle", "CmdCreateExample1": "vcpkg create ", "CmdCreateExample2": "vcpkg create my-fancy-port https://example.com/sources.zip", "CmdCreateExample3": "vcpkg create ", @@ -265,7 +254,7 @@ "CmdEditOptBuildTrees": "Ouvre l’éditeur dans le sous-dossier buildtree spécifique au port", "CmdEnvOptions": "Ajoute {path} installé à {env_var}", "CmdExportEmptyPlan": "Refus de la création d’une exportation sans aucun package. Installez des packages avant l’exportation.", - "CmdExportExample1": "vcpkg export [--nuget] [--directory=out_dir]", + "CmdExportExample1": "vcpkg export [--nuget] [--output-dir=out_dir]", "CmdExportOpt7Zip": "Exporte vers un fichier 7zip (.7z)", "CmdExportOptChocolatey": "Exporte un package Chocolatey (expérimental)", "CmdExportOptDebug": "Active le débogage de pré-détection", @@ -376,8 +365,10 @@ "CmdZExtractExample2": "vcpkg z-extract source.zip source_dir --strip 2", "CmdZExtractOptStrip": "Nombre de répertoires de début à supprimer de tous les chemins d’accès", "CommandEnvExample2": "vcpkg env \"ninja -C \" --triplet x64-windows", - "CommandFailed": "Commande : \n {command_line}\na échoué avec les résultats suivants :", + "CommandFailed": "commande :\n{command_line}\néchec avec la sortie suivante :", + "CommandFailedCode": "commande :\n{command_line}\néchec avec le code de sortie {exit_code} et la sortie suivante :", "CommunityTriplets": "Triplets de la communauté :", + "CompilerPath": "Compilateur trouvé : {path}", "CompressFolderFailed": "Échec de la compression du dossier « {path} » :", "ComputingInstallPlan": "Calcul du plan d’installation...", "ConfigurationErrorRegistriesWithoutBaseline": "La configuration définie dans {path} n’est pas valide.\n\nL’utilisation de registres nécessite qu’une ligne de base soit définie pour le Registre par défaut ou que le Registre par défaut soit null.\n\nPour plus d’informations, consultez {url}.", @@ -386,11 +377,10 @@ "ConsideredVersions": "Les exécutables suivants ont été pris en compte mais ignorés en raison de l’exigence de version de {version} :", "ConstraintViolation": "Une violation de contrainte a été trouvée :", "ContinueCodeUnitInStart": "unité de code continue trouvée en position de départ", - "ControlAndManifestFilesPresent": "Un fichier manifeste et un fichier CONTROL existent dans le répertoire du port : {path}", "ControlCharacterInString": "Caractère de contrôle dans la chaîne", "ControlSupportsMustBeAPlatformExpression": "« Supports » doit être une expression de plateforme", - "CopyrightIsDir": "'{path}' en tant que répertoire est déconseillé.", - "CorruptedDatabase": "Base de données endommagée.", + "CopyrightIsDir": "ce port définit ${{CURRENT_PACKAGES_DIR}}/share/${{PORT}}/copyright dans un répertoire, mais il doit s’agir d’un fichier. Envisagez de combiner des fichiers de droits d’auteur distincts en un seul fichier à l’aide de vcpkg_install_copyright. Pour supprimer ce message, ajoutez set (VCPKG_POLICY_SKIP_COPYRIGHT_CHECK activé)", + "CorruptedDatabase": "la base de données d’installation de vcpkg est corrompue. Il s’agit d’un bogue dans vcpkg ou d’un autre élément qui a modifié le contenu du répertoire « installé » de manière inattendue. Vous pouvez être en mesure de le corriger en supprimant le répertoire « installé » et en réinstallant ce que vous souhaitez utiliser. Si ce problème se produit régulièrement, veuillez signaler un bogue surhttps://github.com/microsoft/vcpkg.", "CorruptedInstallTree": "L’arborescence « installé » de votre vcpkg est endommagée.", "CouldNotDeduceNugetIdAndVersion": "Impossible de déduire l’ID nuget et la version à partir du nom de fichier : {path}", "CouldNotFindBaselineInCommit": "Base de référence introuvable dans {url} à {commit_sha} pour {package_name}.", @@ -403,14 +393,12 @@ "CreatingNugetPackage": "Création du package NuGet...", "CreatingZipArchive": "Création de l’archive zip...", "CreationFailed": "Échec de la création de {path}.", - "CurlFailedToExecute": "Curl n’a pas pu s’exécuter avec le code de sortie {exit_code}.", "CurlFailedToPut": "Curl n’a pas pu placer le fichier dans {url} avec le code de sortie {exit_code}.", "CurlFailedToPutHttp": "Curl n’a pas pu placer le fichier dans {url} avec le code de sortie {exit_code} et le code http {value}.", - "CurlReportedUnexpectedResults": "curl a signalé des résultats inattendus à vcpkg et vcpkg ne peut pas continuer.\nConsultez le texte suivant pour obtenir des informations sensibles et ouvrez un problème sur Microsoft/vcpkg GitHub pour vous aider à résoudre ce problème !\ncmd : {command_line}\n=== sortie de boucle ===\n{actual}\n=== end curl output ===", - "CurlReturnedUnexpectedResponseCodes": "Curl a retourné un nombre de codes de réponse différent de celui attendu pour la demande ({actual} par rapport au {expected}attendu).", + "CurlResponseTruncatedRetrying": "curl a renvoyé une réponse partielle, en attente de {value} millisecondes et réessayer", + "CurlTimeout": "curl n’a pas pu effectuer toutes les opérations HTTP demandées, même après les nouvelles tentatives et délai d’expiration. La dernière ligne de commande était : {command_line}", "CurrentCommitBaseline": "Vous pouvez utiliser la commit actuelle comme ligne de base, c’est-à-dire :\n\t« builtin-baseline » : « {commit_sha} »", "CycleDetectedDuring": "cycle détecté pendant {spec} :", - "DateTableHeader": "Date", "DefaultBinaryCachePlatformCacheRequiresAbsolutePath": "La variable d’environnement VCPKG_DEFAULT_BINARY_CACHE doit être un répertoire (était : {path})", "DefaultBinaryCacheRequiresAbsolutePath": "La variable d’environnement VCPKG_DEFAULT_BINARY_CACHE doit être absolue (était : {path})", "DefaultBinaryCacheRequiresDirectory": "La variable d’environnement VCPKG_DEFAULT_BINARY_CACHE doit être un répertoire (était : {path})", @@ -419,15 +407,18 @@ "DefaultFeatureIdentifier": "les noms des fonctionnalités par défaut doivent être des identificateurs", "DefaultFlag": "La valeur par défaut est --{option} activée.", "DefaultRegistryIsArtifact": "Le Registre par défaut ne peut pas être un registre d’artefacts.", - "DefaultTripletChanged": "Dans la version de septembre 2023, le triplet par défaut pour les bibliothèques vcpkg est passé de x86-windows au triplet hôte détecté ({triplet}). Pour l’ancien comportement, ajoutez --triplet x86-windows. Pour supprimer ce message, ajoutez --triplet {triplet}.", "DeleteVcpkgConfigFromManifest": "-- Ou supprimez « vcpkg-configuration » du fichier manifeste {path}.", "DependencyFeatureCore": "la fonctionnalité « core » ne peut pas figurer dans la liste des fonctionnalités d’une dépendance. Pour désactiver les fonctionnalités par défaut, ajoutez « default-features » : false à la place.", "DependencyFeatureDefault": "la fonctionnalité « default » ne peut pas figurer dans la liste des fonctionnalités d’une dépendance. Pour activer les fonctionnalités par défaut, ajoutez « default-features » : true à la place.", "DependencyGraphCalculation": "Soumission du graphe des dépendances activée.", "DependencyGraphFailure": "Soumission du graphe des dépendances en échec.", "DependencyGraphSuccess": "Soumission du graphe des dépendances réussie.", + "DependencyInFeature": "la dépendance se trouve dans la fonctionnalité nommée {feature}", + "DependencyNotInVersionDatabase": "le {package_name} de dépendance n’existe pas dans la base de données de versions; ce port existe-t-il ?", "DeprecatedPrefabDebugOption": "--prefab-debug est désormais déconseillé.", "DetectCompilerHash": "Détection du hachage du compilateur pour le triplet {triplet}...", + "DirectoriesRelativeToThePackageDirectoryHere": "les répertoires sont relatifs à ${{CURRENT_PACKAGES_DIR}} ici", + "DllsRelativeToThePackageDirectoryHere": "les DLL sont relatives à ${{CURRENT_PACKAGES_DIR}} ici", "DocumentedFieldsSuggestUpdate": "S’il s’agit de champs documentés qui doivent être reconnus, essayez de mettre à jour l’outil vcpkg.", "DownloadAvailable": "Une copie téléchargeable de cet outil est disponible et peut être utilisée en désépinglant {env_var}.", "DownloadFailedCurl": "{url} : échec du téléchargement de curl avec le code de sortie {exit_code}", @@ -437,8 +428,7 @@ "DownloadRootsDir": "Répertoire de téléchargements (par défaut : {env_var})", "DownloadWinHttpError": "{url} : {system_api} a échoué avec le code de sortie {exit_code}", "DownloadedSources": "Sources téléchargées pour {spec}", - "DownloadingPortableToolVersionX": "Une version appropriée de {tool_name} est introuvable (version requise v{version}) Téléchargement en cours de {tool_name} {version}...", - "DownloadingTool": "Téléchargement en cours de {tool_name}...\n{url}->{path}", + "DownloadingPortableToolVersionX": "Une version appropriée de {tool_name} est introuvable (version requise v{version}).", "DownloadingUrl": "Téléchargement de {url}", "DownloadingVcpkgStandaloneBundle": "Téléchargement de l’offre groupée autonome {version}.", "DownloadingVcpkgStandaloneBundleLatest": "Téléchargement de la dernière offre groupée autonome.", @@ -449,7 +439,6 @@ "DuplicatePackagePatternRegistry": "registre : {url}", "DuplicatedKeyInObj": "Clé « {value} » dupliquée dans un objet", "ElapsedForPackage": "Temps écoulé pour gérer {spec}: {elapsed}", - "ElapsedInstallTime": "Temps total écoulé : {count}", "ElapsedTimeForChecks": "Temps nécessaire pour déterminer la réussite/l’échec : {elapsed}", "EmailVcpkgTeam": "Envoyez un e-mail à {url} avec vos commentaires.", "EmbeddingVcpkgConfigInManifest": "L’incorporation de 'vcpkg-configuration' dans un fichier manifeste est une fonctionnalité EXPÉRIMENTALE.", @@ -479,25 +468,23 @@ "ErrorWhileFetchingBaseline": "lors de la récupération de la ligne de base « {value} » à partir du dépôt {package_name} :", "ErrorWhileParsing": "Des erreurs se sont produites lors de l’analyse de {path}.", "ErrorWhileWriting": "Une erreur s’est produite lors de l’écriture de {path}.", - "ErrorsFound": "Nous avons trouvé les erreurs suivantes :", "ExamplesHeader": "Exemples :", "ExceededRecursionDepth": "Profondeur de récursivité dépassée.", "ExcludedPackage": "{spec} exclus", "ExcludedPackages": "Les packages suivants sont exclus :", + "ExecutablesRelativeToThePackageDirectoryHere": "les exécutables sont relatifs à ${{CURRENT_PACKAGES_DIR}} ici", "ExpectedAnObject": "objet attendu", "ExpectedAtMostOneSetOfTags": "{count} jeux trouvés de {old_value}.*{new_value}, mais 1 attendu au plus, dans le bloc :\n{value}", "ExpectedCharacterHere": "'{expected}' attendu ici", "ExpectedDefaultFeaturesList": "',' ou fin de texte attendue dans la liste des fonctionnalités par défaut", "ExpectedDependenciesList": "',' ou fin de texte attendue dans la liste des dépendances", "ExpectedDigitsAfterDecimal": "Chiffres attendus après la virgule décimale", - "ExpectedEof": "eof attendu", "ExpectedExplicitTriplet": "triplet explicite attendu", "ExpectedFailOrSkip": "'échec', 'ignorer' ou 'réussite' attendu ici", "ExpectedFeatureListTerminal": "',' ou ']' attendu dans la liste des fonctionnalités", "ExpectedFeatureName": "nom de fonctionnalité attendu (doit être en minuscules, chiffres, '-')", "ExpectedOneSetOfTags": "{count} jeux trouvés de {old_value}.*{new_value}, mais 1 attendu exactement, dans le bloc :\n{value}", "ExpectedOneVersioningField": "un seul champ de contrôle de version attendu", - "ExpectedPackageSpecifier": "spécificateur de package attendu", "ExpectedPathToExist": "Le {path} attenduu doit exister après la récupération", "ExpectedPortName": "nom de port attendu ici (doit être en minuscules, chiffres, « - »)", "ExpectedReadWriteReadWrite": "argument inattendu : 'read', 'readwrite' ou 'write' attendu", @@ -505,7 +492,6 @@ "ExpectedTripletName": "nom de triplet attendu ici (doit être en minuscules, chiffres, « - »)", "ExportArchitectureReq": "Le préfabriqué d’exportation nécessite le ciblage d’au moins l’une des architectures suivantes : arm64-v8a, armeabi-v7a, x86_64, x86.", "ExportPrefabRequiresAndroidTriplet": "le préfabriqué d'exportation nécessite un triplet Android.", - "ExportUnsupportedInManifest": "L’exportation vcpkg ne prend pas en charge le mode manifeste, afin d’autoriser des considérations de conception ultérieures. Vous pouvez utiliser l’exportation en mode classique en exécutant vcpkg en dehors d’un projet basé sur un manifeste.", "Exported7zipArchive": "Archive 7zip exportée à : {path}", "ExportedZipArchive": "Archive zip exportée à : {path}", "ExportingAlreadyBuiltPackages": "Les packages suivants sont déjà générés et seront exportés :", @@ -514,14 +500,12 @@ "ExtendedDocumentationAtUrl": "Documentation étendue disponible sur '{url}'", "ExtractHelp": "Extrait une archive.", "ExtractingTool": "Extraction en cours de {tool_name}...", - "FailedPostBuildChecks": "{count} problème(s) de vérification post-build trouvé(s). Pour envoyer ces ports à des catalogues organisés, corrigez d’abord le fichier de port : {path}", + "FailedPostBuildChecks": "{count} problèmes de vérification post-build trouvés. Ils sont généralement causés par des bogues dans portfile.cmake ou le système de génération en amont. Corrigez-les avant d’envoyer ce port au Registre organisé.", "FailedToAcquireMutant": "échec de l’acquisition de {path} de {path}", "FailedToCheckoutRepo": "échec de l’extraction de « versions » à partir du dépôt {package_name}", "FailedToDeleteDueToFile": "échec de remove_all({value}) en raison de {path} : ", "FailedToDeleteInsideDueToFile": "échec de remove_all_inside({value}) en raison de {path} : ", - "FailedToDetermineArchitecture": "impossible de déterminer l’architecture de {path}.\n{commande_line}", "FailedToDetermineCurrentCommit": "Échec de la détermination du commit actuel :", - "FailedToDownloadFromMirrorSet": "Échec du téléchargement à partir du jeu de miroirs", "FailedToExtract": "Échec de l’extraction de «{path}» :", "FailedToFetchRepo": "Échec de la récupération de {url}.", "FailedToFindPortFeature": "{package_name} n’a aucune fonctionnalité nommée {feature}.", @@ -530,27 +514,20 @@ "FailedToLoadManifest": "Échec du chargement du manifest depuis le répertoire {path}", "FailedToLocateSpec": "Impossible de localiser la spécification dans le graphique : {spec}", "FailedToObtainDependencyVersion": "Impossible de trouver la version de dépendance souhaitée.", - "FailedToObtainLocalPortGitSha": "Échec de l’obtention des SHA git pour les ports locaux.", "FailedToObtainPackageVersion": "Impossible de trouver la version de package souhaitée.", "FailedToOpenAlgorithm": "échec de l’ouverture de {value}", "FailedToParseBaseline": "Échec de l’analyse de la ligne de base : {path}", "FailedToParseCMakeConsoleOut": "Échec de l’analyse de la sortie de la console CMake pour localiser les marqueurs de début/fin de bloc.", "FailedToParseConfig": "Échec de l'analyse de la configuration : {path}", - "FailedToParseControl": "Échec de l’analyse du fichier de contrôle : {path}", - "FailedToParseManifest": "Échec de l’analyse du fichier manifeste : {path}", "FailedToParseNoTopLevelObj": "Échec de l’analyse de {path}, objet de niveau supérieur attendu.", "FailedToParseNoVersionsArray": "Échec de l’analyse de {path}, tableau « versions » attendu.", "FailedToParseSerializedBinParagraph": "[vérification de l’intégrité] Échec de l’analyse d’un paragraphe binaire sérialisé.\nOuvrez un problème à https://github.com/microsoft/vcpkg, avec la sortie suivante :\n{error_msg}\nparagraphe binaire sérialisé :", + "FailedToParseVersionFile": "Échec de l’analyse du fichier de version : {chemin}", "FailedToParseVersionXML": "Impossible d’analyser la version de l’outil {tool_name}. La chaîne de version était : {version}", - "FailedToParseVersionsFile": "échec de l’analyse du fichier de versions {path}", - "FailedToProvisionCe": "Échec de l’approvisionnement de vcpkg-artifacts.", - "FailedToReadParagraph": "Échec de la lecture des paragraphes à partir de {path}", - "FailedToRemoveControl": "Échec de la suppression du fichier de contrôle {path}", "FailedToRunToolToDetermineVersion": "Impossible d’exécuter {path} pour déterminer la version {tool_name}.", - "FailedToStoreBackToMirror": "échec du stockage dans le miroir :", + "FailedToStoreBackToMirror": "Échec du stockage de {path} dans {url}.", "FailedToStoreBinaryCache": "Échec du stockage du cache binaire {path}", "FailedToTakeFileSystemLock": "Échec de la prise du verrou du système de fichiers", - "FailedToWriteManifest": "Échec de l’écriture du fichier manifeste {path}", "FailedVendorAuthentication": "Un ou plusieurs fournisseurs d’informations d’identification {vendor} n’ont pas pu s’authentifier. Consultez '{url}' pour plus d’informations sur la façon de fournir des informations d’identification.", "FetchingBaselineInfo": "Récupération des informations de référence à partir de {package_name}...", "FetchingRegistryInfo": "Récupération des informations de Registre à partir de {url} ({value})...", @@ -559,11 +536,13 @@ "FileNotFound": "{path} : fichier introuvable", "FileReadFailed": "Échec de la lecture de {count} octets à partir de {path} au décalage {byte_offset}.", "FileSeekFailed": "Échec de la recherche de la position {byte_offset} dans {path}.", - "FileSystemOperationFailed": "Échec de l’opération du système de fichiers :", - "FilesContainAbsolutePath1": "Il ne doit y avoir aucun chemin absolu, tel que le suivant, dans un package installé :", - "FilesContainAbsolutePath2": "Des chemins d’accès absolu ont été trouvés dans les fichiers suivants :", + "FilesContainAbsolutePath1": "Il ne doit y avoir aucun chemin absolu, tel que le suivant, dans un package installé : Pour supprimer ce message, ajoutez set (VCPKG_POLICY_SKIP_ABSOLUTE_PATHS_CHECK activé)", + "FilesContainAbsolutePath2": "chemins absolus trouvés ici", + "FilesContainAbsolutePathPkgconfigNote": "L’ajout d’un appel à 'vcpkg_fixup_pkgconfig()' peut corriger les chemins absolus dans les fichiers .pc", "FilesExported": "Fichiers exportés à : {path}", - "FindHelp": "Recherche l’artefact ou le port indiqué. Sans paramètre après 'artifact' ou 'port', affiche tout.", + "FilesRelativeToTheBuildDirectoryHere": "les fichiers sont relatifs au répertoire de build ici", + "FilesRelativeToThePackageDirectoryHere": "les fichiers sont relatifs à ${{CURRENT_PACKAGES_DIR}} ici", + "FindCommandFirstArg": "Le premier argument de « find » doit être « artefact » ou « port ».", "FindVersionArtifactsOnly": "--cette version ne peut pas être utilisé avec la recherche vcpkg ou le port de recherche vcpkg", "FishCompletion": "La saisie semi-automatique des poissons vcpkg est déjà ajoutée à \"{path}\".", "FloatingPointConstTooBig": "Constante à virgule flottante trop grande : {count}", @@ -581,6 +560,7 @@ "GeneratingRepo": "Génération du référentiel {path}...", "GetParseFailureInfo": "Utilisez '--debug' pour obtenir plus d’informations sur les échecs d’analyse.", "GitCommandFailed": "échec de l’exécution : {command_line}", + "GitCommitUpdateVersionDatabase": "git commit -m « Mettre à jour la base de données de version »", "GitFailedToFetch": "impossible de récupérer des {value} ref à partir du {url} de référentiel", "GitFailedToInitializeLocalRepository": "impossible d’initialiser {path} de dépôt local", "GitRegistryMustHaveBaseline": "Le registre git « {url} » doit avoir un champ « baseline » qui est un SHA de validation git valide (40 caractères hexadécimals).\nPour utiliser les versions les plus récentes, définissez la ligne de base sur head de ce référentiel, « {commit_sha} ».", @@ -623,10 +603,7 @@ "HelpEnvCommand": "Crée un environnement shell propre pour le développement ou la compilation", "HelpExampleCommand": "Pour obtenir de l’aide supplémentaire (notamment des exemples), voir https://learn.microsoft.com/vcpkg", "HelpExampleManifest": "Exemple de manifeste :", - "HelpExportCommand": "Exporte un package.", - "HelpHashCommand": "Hacher un fichier par algorithme spécifique, SHA512 par défaut.", "HelpInstallCommand": "Installe un package", - "HelpListCommand": "Répertorie les packages installés", "HelpManifestConstraints": "Les manifestes peuvent placer trois types de contraintes sur les versions utilisées", "HelpMinVersion": "Vcpkg sélectionne la version minimale trouvée qui correspond à toutes les contraintes applicables, y compris la version de la base de référence spécifiée au niveau supérieur, ainsi que toute contrainte « version>= » dans le graphique.", "HelpOverrides": "Lorsqu’ils sont utilisés comme manifeste de niveau supérieur (par exemple, lors de l’exécution de « vcpkg install » dans le répertoire), les remplacements permettent à un manifeste de court-circuiter la résolution des dépendances et de spécifier exactement la version à utiliser. Ils peuvent être utilisés pour gérer les conflits de version, par exemple avec les dépendances « version-string ». Elles ne sont pas prises en compte quand elles dépendent de manière transitive.", @@ -674,7 +651,6 @@ "IllegalPlatformSpec": "Le qualificateur de plateforme n’est pas autorisé dans ce contexte.", "ImproperShaLength": "SHA512 doit comporter 128 caractères hexadécimaux : {value}.", "IncorrectArchiveFileSignature": "Signature de fichier d’archive incorrecte", - "IncorrectPESignature": "Signature PE incorrecte", "InfoSetEnvVar": "Vous pouvez également définir {env_var} sur l’éditeur de votre choix.", "InitRegistryFailedNoRepo": "Impossible de créer un registre sur {path}, car il ne s’agit pas d’une racine de dépôt Git.\nUtilisez `git init {command_line}` pour créer un référentiel Git dans ce dossier.", "InstallCopiedFile": "{path_source} -> {path_destination} effectué", @@ -688,8 +664,8 @@ "InstalledBy": "Installé par {path}", "InstalledPackages": "Les packages suivants sont déjà installés :", "InstalledRequestedPackages": "Tous les packages demandés sont actuellement installés.", - "InstallingFromLocation": "-- Installation du port à partir de l’emplacement : {path}", "InstallingMavenFile": "{path} installation du fichier Maven", + "InstallingOverlayPort": "installation du port de superposition ici", "InstallingPackage": "Installation de {action_index}/{count} {spec}...", "IntegrateBashHelp": "Activez la saisie semi-automatique de tabulation Bash. Non-Windows uniquement", "IntegrateFishHelp": "Activez la saisie semi-automatique des onglets. Non Windows uniquement", @@ -725,7 +701,7 @@ "InvalidBundleDefinition": "Définition d’offre groupée non valide.", "InvalidCharacterInFeatureList": "caractère non valide dans le nom de la fonctionnalité (il doit s’agir de minuscules, de chiffres, de « - » ou de « * »)", "InvalidCharacterInFeatureName": "caractère non valide dans le nom de la fonctionnalité (doit être en minuscules, chiffres, '-')", - "InvalidCharacterInPackageName": "caractère non valide dans le nom du package (doit être en minuscules, chiffres, '-')", + "InvalidCharacterInPortName": "caractère non valide dans le nom du port (doit être en minuscules, chiffres, '-')", "InvalidCodePoint": "Point de code non valide passé à utf8_encoded_code_point_count", "InvalidCodeUnit": "unité de code non valide", "InvalidCommandArgSort": "La valeur de --sort doit être l’une des valeurs suivantes : 'lexicographical', 'topological', 'reverse'.", @@ -743,7 +719,6 @@ "InvalidLinkage": "Type de liaison {system_name} non valide : [{value}]", "InvalidLogicExpressionUnexpectedCharacter": "expression logique non valide, caractère inattendu", "InvalidLogicExpressionUsePipe": "expression logique non valide, utilisez « | » plutôt que « or »", - "InvalidNoVersions": "Le fichier ne contient aucune version.", "InvalidOptionForRemove": "'remove' accepte les bibliothèques ou '--outdated'", "InvalidPortVersonName": "Nom de fichier de version de port non valide trouvé : '{path}'.", "InvalidSharpInVersion": "caractère « # » non valide dans le texte de version", @@ -751,6 +726,8 @@ "InvalidString": "Utf8 non valide passé à Value::string(std::string)", "InvalidTriplet": "Triplet non valide : {triplet}", "InvalidUri": "Impossible d’analyser l’uri : {valeur}.", + "InvalidValueHashAdditionalFiles": "La variable VCPKG_HASH_ADDITIONAL_FILES contient un chemin d’accès au fichier non valide : « {path} ». La valeur doit être un chemin d’accès absolu vers un fichier existant.", + "InvalidValuePostPortfileIncludes": "La variable VCPKG_POST_PORTFILE_INCLUDES contient un chemin de fichier non valide : « {path} ». La valeur doit être un chemin d’accès absolu vers un fichier cmake existant.", "IrregularFile": "le chemin d’accès n’était pas un fichier normal : {path}", "JsonErrorMustBeAnObject": "Le {path} prévu doit être un objet.", "JsonFieldNotObject": "la valeur de [\"{json_field}\"] doit être un objet", @@ -786,11 +763,11 @@ "LinkageStaticDebug": "Débogage statique (/MTd)", "LinkageStaticRelease": "Mise en production statique (/MT)", "ListHelp": "Répertorie les bibliothèques installées", - "LoadingCommunityTriplet": "-- [COMMUNITY] Chargement de la configuration triplet à partir de : {path}", + "LoadedCommunityTriplet": "triplet de communauté chargé ici. Les triplets de communauté ne sont pas créés dans le registre organisé et sont par conséquent moins susceptibles de réussir.", + "LoadedOverlayTriplet": "triplet de superposition chargé ici.", "LoadingDependencyInformation": "Chargement des informations de dépendance pour {count} packages...", - "LoadingOverlayTriplet": "-- [OVERLAY] Chargement de la configuration triplet à partir de : {path}", - "LocalPortfileVersion": "Utilisation des versions du fichier de port local. Pour mettre à jour les fichiers de port locaux, utilisez `git pull`.", - "ManifestConflict": "Un manifeste et des fichiers CONTROL ont été trouvés dans le port \"{path}\"; renommez l’un ou l’autre", + "LocalPortfileVersion": "Utilisation des versions de port local. Pour mettre à jour les ports locaux, utilisez « git pull ».", + "ManifestConflict2": "Un fichier manifeste et un fichier CONTROL ont été trouvés ; veuillez renommer l’un ou l’autre.", "ManifestFormatCompleted": "La mise en forme des fichiers manifeste a réussi.", "MismatchedBinParagraphs": "Le paragraphe binaire sérialisé était différent du paragraphe binaire d’origine. Veuillez ouvrir un problème à https://github.com/microsoft/vcpkg avec la sortie suivante :", "MismatchedFiles": "le fichier à stocker ne correspond pas au hachage.", @@ -802,6 +779,7 @@ "MissingAndroidEnv": "Variable d’environnement ANDROID_NDK_HOME manquante", "MissingAndroidHomeDir": "Le répertoire ANDROID_NDK_HOME n’existe pas : {path}", "MissingArgFormatManifest": "--convert-control a été transmis à format-manifest sans « --all ».\nCela n’est pas nécessaire : les fichiers de contrôle transmis explicitement sont convertis automatiquement.", + "MissingAssetBlockOrigin": "Les {path} manquants et les téléchargements sont bloqués par x-block-origin.", "MissingClosingParen": "fermeture manquante )", "MissingDependency": "Le package {spec} est installé, mais la dépendance {package_name} ne l’est pas.", "MissingExtension": "Extension de '{extension}' manquante.", @@ -810,9 +788,9 @@ "MissingPortSuggestPullRequest": "Si votre port n’est pas répertorié, veuillez soumettre le problème et/ou envisagez d’effectuer une demande de tirage (pull request).", "MissingRequiredField": "champ obligatoire « {json_field} » manquant ({json_type})", "MissingRequiredField2": "champ obligatoire « {json_field} » manquant", + "MissingShaVariable": "La variable {{sha}} doit être utilisée dans le modèle si d’autres variables sont utilisées.", "MixingBooleanOperationsNotAllowed": "mélange & | n’est pas autorisé ; utiliser () pour spécifier l’ordre des opérations", "MonoInstructions": "Cela peut être dû à une installation incomplète de mono. La version complète de mono est disponible sur certains systèmes via `sudo apt install mono-complete`. Les utilisateurs d'Ubuntu 18.04 peuvent avoir besoin d'une version plus récente de mono, disponible à l'adresse https://www.mono-project.com/download/stable/.", - "MsiexecFailedToExtract": "échec de msiexec lors de l’extraction des '{path}' avec le code de lancement ou de sortie {exit_code} et le message :", "MultiArch": "Multi-Arch doit être 'same' mais était {option}", "MultipleFeatures": "{package_name} déclare {feature} plusieurs fois ; vérifiez que les fonctionnalités ont des noms distincts", "MutuallyExclusiveOption": "--{value} ne peut pas être utilisé avec --{option}.", @@ -822,10 +800,8 @@ "NewOnlyOneVersionKind": "Seul --version-relaxed, --version-date ou --version-string peut être spécifié.", "NewSpecifyNameVersionOrApplication": "Spécifiez --name et --version pour produire un manifeste destiné aux bibliothèques C++, ou spécifiez --application pour indiquer que le manifeste n’est pas destiné à être utilisé en tant que port.", "NewVersionCannotBeEmpty": "--version ne peut pas être vide.", - "NoArgumentsForOption": "L’option --{option} n’accepte pas d’argument.", "NoError": "aucune erreur", "NoInstalledPackages": "Aucun package n’est installé. Voulez-vous dire `search` ?", - "NoLocalizationForMessages": "Aucun message localisé pour les éléments suivants : ", "NoOutdatedPackages": "Il n’existe aucun package obsolète.", "NoRegistryForPort": "aucun registre configuré pour le port {package_name}", "NoUrlsAndHashSpecified": "Aucune URL spécifiée pour télécharger SHA : {sha}", @@ -866,7 +842,6 @@ "PackageManipulationHeader": "Package Manipulation", "PackageRootDir": "Répertoire packages (expérimental)", "PackagesToInstall": "Les packages suivants seront générés et installés :", - "PackagesToInstallDirectly": "Les packages suivants seront installés directement :", "PackagesToModify": "Les packages supplémentaires (*) seront modifiés pour terminer cette opération.", "PackagesToRebuild": "Les packages suivants seront régénérés :", "PackagesToRebuildSuggestRecurse": "Si vous voulez vraiment régénérer les packages ci-dessus, exécutez la commande avec l’option --recurse.", @@ -882,47 +857,50 @@ "ParseFeatureNameError": "« {package_name} » n’est pas un nom de fonctionnalité valide. Les noms de package doivent être alphanumériques en minuscules+traits d’union et non réservés (voir {url} pour plus d’informations).", "ParseIdentifierError": "« {value} » n’est pas un identificateur valide. Les identificateurs doivent être alphanumériques en minuscules+traits d’union et non réservés (voir {url} pour plus d’informations).", "ParsePackageNameError": "« {package_name} » n’est pas un nom de package valide. Les noms de package doivent être alphanumériques en minuscules+traits d’union et non réservés (voir {url} pour plus d’informations).", + "ParsePackageNameNotEof": "fin d’entrée attendue d’entrée analysant un nom de package. Cela signifie généralement que le caractère indiqué n’est pas autorisé à se trouver dans un nom de port. Les noms de port sont tous alphanumériques en minuscules+traits d’union et non réservés (voir {url} pour obtenir plus d’informations).", "ParsePackagePatternError": "« {package_name} » n’est pas un modèle de package valide. Les modèles de package doivent utiliser un seul caractère générique (*) et il doit s’agir du dernier caractère du modèle (voir {url} pour plus d’informations).", + "ParseQualifiedSpecifierNotEof": "fin attendue d’entrée analysant une spécification de package. Cela signifie généralement que le caractère indiqué n’est pas autorisé à se trouver dans une spécification de package. Le port, le triplet et les noms de fonctionnalité sont des caractères alphanumériques en minuscules+traits d’union.", + "ParseQualifiedSpecifierNotEofSquareBracket": "fin attendue d’entrée analysant une spécification de package. Vouliez-vous dire {version_spec} à la place ?", "PathMustBeAbsolute": "La valeur de la variable d’environnement X_VCPKG_REGISTRIES_CACHE n’est pas absolue : {path}", - "PerformingPostBuildValidation": "-- Exécution de la validation post-build", - "PortBugAllowRestrictedHeaders": "Dans des circonstances exceptionnelles, cette stratégie peut être désactivée via {env_var}.", - "PortBugBinDirExists": "Il ne doit y avoir aucun répertoire bin\\ dans une build statique, mais {path} est présent.", - "PortBugDebugBinDirExists": "Il ne doit y avoir aucun répertoire debug\\bin\\ dans une build statique, mais {path} est présent.", - "PortBugDebugShareDir": "/debug/share ne devrait pas exister. Réorganisez tous les fichiers importants, puis utilisez\nfile(REMOVE_RECURSE \"${{CURRENT_PACKAGES_DIR}}/debug/share\")", - "PortBugDllAppContainerBitNotSet": "Le bit du conteneur d’application doit être défini pour les applications Windows Store. Le bit du conteneur d’application n’est pas défini pour les DLL suivantes :", - "PortBugDllInLibDir": "Les dll suivantes ont été trouvées dans /lib ou /debug/lib. Déplacez-les respectivement dans /bin ou /debug/bin.", - "PortBugDuplicateIncludeFiles": "Les fichiers Include ne doivent pas être dupliqués dans le répertoire /debug/include. Si cette option ne peut pas être désactivée dans le projet cmake, utilisez\nfile(REMOVE_RECURSE \"${{CURRENT_PACKAGES_DIR}}/debug/include\")", - "PortBugFoundCopyrightFiles": "Les fichiers suivants sont des fichiers de copyright potentiels :", - "PortBugFoundDebugBinaries": "{count} fichiers binaires de débogage trouvés :", - "PortBugFoundDllInStaticBuild": "Les DLL ne doivent pas être présentes dans une build statique, mais les DLL suivantes ont été trouvées :", - "PortBugFoundEmptyDirectories": "Il ne doit y avoir aucun répertoire vide dans {path}. Les répertoires vides suivants ont été trouvés :", - "PortBugFoundExeInBinDir": "Les EXE suivants ont été trouvés dans /bin ou /debug/bin. Les EXE ne sont pas des cibles de distribution valides.", - "PortBugFoundReleaseBinaries": "{count} fichiers binaires de mise en production trouvés :", - "PortBugIncludeDirInCMakeHelperPort": "Le dossier /include existe dans un port d’assistance cmake ; ceci est incorrect, car seuls les fichiers cmake doivent être installés", - "PortBugInspectFiles": "Pour inspecter les fichiers {extension}, utilisez :", - "PortBugInvalidCrtLinkage": "Les fichiers binaires suivants doivent utiliser le CRT {expected}.", - "PortBugInvalidCrtLinkageEntry": "Liens {path} avec :", - "PortBugKernel32FromXbox": "Le triplet sélectionné cible Xbox, mais les DLL suivantes sont liées au noyau 32. Ces DLL ne peuvent pas être chargées sur Xbox, où kernel32 n’est pas présent. Cela est généralement dû à la liaison avec kernel32.lib plutôt qu’avec une bibliothèque de parapluies appropriée, comme onecore_apiset.lib ou xgameplatform.lib.", - "PortBugMergeLibCMakeDir": "Le dossier /lib/cmake doit être fusionné avec /debug/lib/cmake et déplacé vers /share/{package_name}/cmake. Utilisez la fonction d’assistance `vcpkg_cmake_config_fixup()` à partir du port vcpkg-cmake-config.`", - "PortBugMismatchedNumberOfBinaries": "Nombre de fichiers binaires de débogage et de mise en production incompatible.", - "PortBugMisplacedCMakeFiles": "Les fichiers cmake suivants ont été trouvés en dehors de /share/{spec}. Placez les fichiers cmake dans /share/{spec}.", - "PortBugMisplacedFiles": "Les fichiers suivants sont placés dans {path} :", - "PortBugMisplacedFilesCont": "Les fichiers ne peuvent pas être présents dans ces répertoires.", - "PortBugMisplacedPkgConfigFiles": "Les répertoires pkgconfig doivent être l’un des suivants : share/pkgconfig (pour les bibliothèques à en-tête uniquement), lib/pkgconfig, ou lib/debug/pkgconfig. Les fichiers pkgconfig suivants, mal placés, ont été trouvés :", + "PerformingPostBuildValidation": "Exécution de la validation post-build", + "PortBugBinDirExists": "${{CURRENT_PACKAGES_DIR}}/{path} existe mais ne doit pas se trouver dans une build statique. Pour supprimer ce message, ajoutez set (VCPKG_POLICY_DLLS_IN_STATIC_LIBRARY activé)", + "PortBugDebugShareDir": "${{CURRENT_PACKAGES_DIR}}/debug/share ne doit pas exister. Réorganisez tous les fichiers importants, puis supprimez les fichiers restants en ajoutant 'file(REMOVE_RECURSE \"${{CURRENT_PACKAGES_DIR}}/debug/share\")`. Pour supprimer ce message, ajoutez set (VCPKG_POLICY_ALLOW_DEBUG_SHARE activé)", + "PortBugDllAppContainerBitNotSet": "Le bit conteneur d’application doit être défini pour toutes les DLL dans les applications du Windows Store, et les demandes triplet ciblant le Windows Store, mais les DLL suivantes n’ont pas été générées avec le jeu de bits. Cela signifie généralement que les indicateurs de l’éditeur de liens de chaîne d’outils ne sont pas correctement propagés ou que l’éditeur de liens en cours d’utilisation ne prend pas en charge le commutateur /APPCONTAINER. Pour supprimer ce message, ajoutez set (VCPKG_POLICY_SKIP_APPCONTAINER_CHECK activé)", + "PortBugDllInLibDir": "Les DLL suivantes ont été trouvées dans ${{CURRENT_PACKAGES_DIR}}/lib ou ${{CURRENT_PACKAGES_DIR}}/debug/lib. Déplacez-les vers ${{CURRENT_PACKAGES_DIR}}/bin ou ${{CURRENT_PACKAGES_DIR}}/debug/bin, respectivement.", + "PortBugDuplicateIncludeFiles": "${{CURRENT_PACKAGES_DIR}}/debug/include ne doit pas exister. Pour supprimer ce message, ajoutez set (VCPKG_POLICY_ALLOW_DEBUG_INCLUDE activé)", + "PortBugDuplicateIncludeFilesFixIt": "Si ce répertoire a été créé par un système de génération qui n’autorise pas la désactivation de l’installation des en-têtes dans le débogage, supprimez le répertoire dupliqué avec le fichier (REMOVE_RECURSE « ${{CURRENT_PACKAGES_DIR}}/debug/include »)", + "PortBugFoundCopyrightFiles": "les fichiers suivants sont des fichiers de copyright potentiels", + "PortBugFoundDebugBinaries": "Les fichiers binaires de débogage sont les suivants :", + "PortBugFoundDllInStaticBuild": "Les DLL ne doivent pas être présentes dans une build statique, mais les DLL suivantes ont été trouvées. Pour supprimer ce message, ajoutez set (VCPKG_POLICY_DLLS_IN_STATIC_LIBRARY activé)", + "PortBugFoundEmptyDirectories": "Il ne doit y avoir aucun répertoire vide installé. Les répertoires vides ne sont pas représentés par plusieurs fournisseurs de cache binaire, référentiels Git et ne sont pas considérés comme des sorties de build sémantique. Vous devez soit créer un fichier standard dans chaque répertoire vide, soit les supprimer avec le CMake suivant. Pour supprimer ce message, ajoutez set (VCPKG_POLICY_ALLOW_EMPTY_FOLDERS activé)", + "PortBugFoundExeInBinDir": "Les exécutables suivants ont été trouvés dans ${{CURRENT_PACKAGES_DIR}}/bin ou ${{CURRENT_PACKAGES_DIR}}/debug/bin. Les exécutables ne sont pas des cibles de distribution valides. Si ces exécutables sont des outils de build, utilisez 'vcpkg_copy_tools'. Pour supprimer ce message, ajoutez set (VCPKG_POLICY_ALLOW_EXES_IN_BIN activé)", + "PortBugFoundReleaseBinaries": "Les fichiers binaires de mise en production sont les suivants :", + "PortBugIncludeDirInCMakeHelperPort": "Le dossier ${{CURRENT_PACKAGES_DIR}}/include existe dans un port d’assistance CMake ; ce qui est incorrect, car seuls les fichiers CMake doivent être installés. Pour supprimer ce message, supprimez set (VCPKG_POLICY_CMAKE_HELPER_PORT activé).", + "PortBugInvalidCrtLinkageCrtGroup": "Les fichiers binaires suivants doivent être liés uniquement à : {expected}", + "PortBugInvalidCrtLinkageEntry": "Liens {path} avec : {actual}", + "PortBugInvalidCrtLinkageHeader": "les fichiers binaires générés par ce lien de port avec des runtimes C (« CRT ») incohérents avec ceux demandés par la structure de déploiement et de triplet. Si le triplet est destiné à utiliser uniquement la version CRT, vous devez ajouter set (VCPKG_POLICY_ONLY_RELEASE_CRT activé) au fichier .cmake triplet. Pour supprimer entièrement cette vérification, ajoutez set (VCPKG_POLICY_SKIP_CRT_LINKAGE_CHECK activé) au fichier .cmake triplet s’il s’agit d’un fichier triplet ou à portfile.cmake s’il est spécifique au port. Vous pouvez inspecter les fichiers binaires avec : dumpbin.exe /directives mylibfile.lib", + "PortBugKernel32FromXbox": "Le triplet sélectionné cible Xbox, mais les DLL suivantes sont liées au noyau32. Ces DLL ne peuvent pas être chargées sur Xbox, où kernel32 n’est pas présent. Cela est généralement dû à la liaison avec kernel32.lib au lieu d’une bibliothèque parapluie appropriée, telle que onecore_apiset.lib ou xgameplatform.lib. Vous pouvez inspecter les dépendances d’une DLL avec « dumpbin.exe /dependents mylibfile.dll ». Pour supprimer ce message, ajoutez set (VCPKG_POLICY_ALLOW_KERNEL32_FROM_XBOX activé)", + "PortBugMergeLibCMakeDir": "Ce port crée ${{CURRENT_PACKAGES_DIR}}/lib/cmake et/ou ${{CURRENT_PACKAGES_DIR}}/debug/lib/cmake, qui doit être fusionné et déplacé vers ${{CURRENT_PACKAGES_DIR}}/share/${{PORT}}/cmake. Utilisez la fonction d’assistance vcpkg_cmake_config_fixup() à partir du port vcpkg-cmake-config. Pour supprimer ce message, ajoutez set (VCPKG_POLICY_SKIP_LIB_CMAKE_MERGE_CHECK activé)", + "PortBugMismatchingNumberOfBinaries": "nombre de fichiers binaires de débogage et de mise en production incompatible. Cela indique souvent une gestion incorrecte du débogage ou de la mise en production dans portfile.cmake ou le système de build. Si l’intention est de produire uniquement des composants de mise en production pour ce triplet, le triplet doit avoir défini (VCPKG_BUILD_TYPE mise en production) ajouté à son fichier .cmake. Pour supprimer ce message, ajoutez set (VCPKG_POLICY_MISMATCHED_NUMBER_OF_BINARIES activé)", + "PortBugMisplacedCMakeFiles": "Ce port installe les fichiers CMake suivants aux emplacements où les fichiers CMake ne sont pas attendus. Les fichiers CMake doivent être installés dans ${{CURRENT_PACKAGES_DIR}}/share/${{PORT}}. Pour supprimer ce message, ajoutez set (VCPKG_POLICY_SKIP_MISPLACED_CMAKE_FILES_CHECK activé)", + "PortBugMisplacedFiles": "Les fichiers standard suivants sont installés à des emplacements où les fichiers standard peuvent ne pas être installés. Ils doivent être installés dans un sous-répertoire. Pour supprimer ce message, ajoutez set (VCPKG_POLICY_SKIP_MISPLACED_REGULAR_FILES_CHECK activé)", + "PortBugMisplacedPkgConfigFiles": "Les répertoires pkgconfig mal placés suivants ont été installés. Les fichiers pkgconfig mal placés ne sont pas trouvés correctement par pkgconf ou pkg-config. Les répertoires pkgconfig doivent être ${{CURRENT_PACKAGES_DIR}}/share/pkgconfig (pour les bibliothèques indépendantes de l’architecture/en-tête uniquement), ${{CURRENT_PACKAGES_DIR}}/lib/pkgconfig (pour les dépendances de mise en production) ou ${{CURRENT_PACKAGES_DIR}}/debug/lib/pkgconfig (pour les dépendances de débogage). Pour supprimer ce message, ajoutez set (VCPKG_POLICY_SKIP_PKGCONFIG_CHECK activé)", + "PortBugMissingCMakeHelperPortFile": "Le fichier ${{CURRENT_PACKAGES_DIR}}/share/${{PORT}}/vcpkg-port-config.cmake n’existe pas. Ce fichier doit exister pour les ports d’assistance CMake. Pour supprimer ce message, supprimez set (VCPKG_POLICY_CMAKE_HELPER_PORT activé)", "PortBugMissingDebugBinaries": "Les fichiers binaires de débogage sont introuvables.", - "PortBugMissingFile": "Le fichier /{path} n’existe pas. Ce fichier doit exister pour les ports d’assistance CMake.", - "PortBugMissingImportedLibs": "Les bibliothèques d’importation n’étaient pas présentes dans {path}.\nSi tel est le cas, ajoutez la ligne suivante dans le fichier de port :\nset(VCPKG_POLICY_DLLS_WITHOUT_LIBS activé)", - "PortBugMissingIncludeDir": "Le dossier /include est vide ou absent. Cela indique que la bibliothèque n’a pas été correctement installée.", - "PortBugMissingLicense": "La licence logicielle doit être disponible à ${{CURRENT_PACKAGES_DIR}}/share/{package_name}/copyright", - "PortBugMissingProvidedUsage": "Le port a fourni « utilisation », mais a oublié de l’installer sur /share/{package_name}/usage, ajoutez la ligne suivante dans le fichier de port :", + "PortBugMissingImportedLibs": "Les bibliothèques d’importation pour les DLL installées semblent manquantes. Si tel est le cas, ajoutez set (VCPKG_POLICY_DLLS_WITHOUT_LIBS activé)", + "PortBugMissingIncludeDir": "Le dossier ${{CURRENT_PACKAGES_DIR}}/include est vide ou n’est pas présent. Cela signifie généralement que les en-têtes ne sont pas correctement installés. S’il s’agit d’un port d’assistance CMake, ajoutez set(VCPKG_POLICY_CMAKE_HELPER_PORT activé). S’il ne s’agit pas d’un port d’assistance CMake mais que cela est intentionnel, ajoutez set (VCPKG_POLICY_EMPTY_INCLUDE_FOLDER activé) pour supprimer ce message.", + "PortBugMissingLicense": "la licence n’est pas installée sur ${{CURRENT_PACKAGES_DIR}}/share/${{PORT}}/copyright. Vous pouvez résoudre ce problème en ajoutant un appel à vcpkg_install_copyright. Pour supprimer ce message, ajoutez set (VCPKG_POLICY_SKIP_COPYRIGHT_CHECK activé)", + "PortBugMissingLicenseFixIt": "Envisagez d’ajouter : {value}", + "PortBugMissingProvidedUsage": "ce port contient un fichier nommé « usage », mais ne l’a pas installé dans ${{CURRENT_PACKAGES_DIR}}/share/${{PORT}}/usage. Si ce fichier n’est pas destiné à être du texte d’utilisation, envisagez de choisir un autre nom . sinon, installez-le. Pour supprimer ce message, ajoutez set (VCPKG_POLICY_SKIP_USAGE_INSTALL_CHECK activé)", "PortBugMissingReleaseBinaries": "Les fichiers binaires de mise en production sont introuvables.", "PortBugMovePkgConfigFiles": "Vous pouvez déplacer les fichiers pkgconfig avec des commandes similaires à :", - "PortBugOutdatedCRT": "Détection de CRT dynamiques obsolètes dans les fichiers suivants :", - "PortBugRemoveBinDir": "Si la création de bin\\ et/ou debug\\bin\\ ne peut être désactivée, utilisez ceci dans le fichier de port pour les supprimer", - "PortBugRemoveEmptyDirectories": "Si un répertoire doit être renseigné mais ne l’est pas, cela peut indiquer une erreur dans le fichier de port.\nSi les répertoires ne sont pas nécessaires et que leur création ne peut pas être désactivée, utilisez un élément comme celui-ci dans le fichier port pour les supprimer :", + "PortBugOutdatedCRT": "Les DLL qui sont liées à des DLL C RunTime (« CRT ») obsolètes ont été installées. Les DLL installées doivent être liées à un CRT pris en charge. Vous pouvez inspecter les dépendances d’une DLL avec « dumpbin.exe /dependents mylibfile.dll ». Si vous utilisez un triplet personnalisé ciblant un ancien CRT, ajoutez set (VCPKG_POLICY_ALLOW_OBSOLETE_MSVCRT activé) au fichier .cmake du triplet. Pour supprimer ce message pour ce port, ajoutez set (VCPKG_POLICY_ALLOW_OBSOLETE_MSVCRT activé)", + "PortBugRemoveBinDir": "si la création de ces répertoires ne peut pas être désactivée, vous pouvez ajouter ce qui suit dans portfile.cmake pour les supprimer", "PortBugRemoveEmptyDirs": "fichier (répertoires REMOVE_RECURSE vides laissés par les renommages ci-dessus)", - "PortBugRestrictedHeaderPaths": "Les en-têtes restreints suivants peuvent empêcher le runtime C++ principal et d’autres packages de se compiler correctement. Dans des circonstances exceptionnelles, cette stratégie peut être désactivée en définissant la variable CMake VCPKG_POLICY_ALLOW_RESTRICTED_HEADERS dans portfile.cmake.", - "PortBugSetDllsWithoutExports": "Les DLL sans aucune exportation sont probablement un bogue dans le script de build. Si tel est le cas, ajoutez la ligne suivante dans le fichier de port :\nset(VCPKG_POLICY_DLLS_WITHOUT_EXPORTS enabled)\nLes DLL suivantes n’ont pas d’exportations :", + "PortBugRestrictedHeaderPaths": "La prise des en-têtes restreints suivants peut empêcher le runtime C++ principal et d’autres packages de se compiler correctement. Ils doivent être renommés ou stockés dans un sous-répertoire à la place. Dans des circonstances exceptionnelles, cet avertissement peut être supprimé en ajoutant set (VCPKG_POLICY_ALLOW_RESTRICTED_HEADERS activé)", + "PortBugRestrictedHeaderPathsNote": "les en-têtes sont relatifs à ${{CURRENT_PACKAGES_DIR}}/include ici", + "PortBugSetDllsWithoutExports": "les DLL suivantes ont été générées sans aucune exportation. Les DLL sans exportation sont probablement des bogues dans le script de build. Si cela est prévu, ajoutez set (VCPKG_POLICY_DLLS_WITHOUT_EXPORTS activé)", + "PortDeclaredHere": "{package_name} est déclaré ici", "PortDependencyConflict": "Le port {package_name} a les dépendances non prises en charge suivantes :", "PortDoesNotExist": "{package_name} n'existe pas.", "PortMissingManifest2": "Manifeste de port {package_name} manquant (aucun fichier vcpkg.json ou CONTROL)", @@ -932,7 +910,6 @@ "PortVersionControlMustBeANonNegativeInteger": "« Port-Version » doit être un entier non négatif.", "PortVersionMultipleSpecification": "« port_version » ne peut pas être combiné avec un « # » incorporé dans la version", "PortsAdded": "Les ports {count} suivants ont été ajoutés :", - "PortsDiffHelp": "L’argument doit être une branche/balise/hachage à extraire.", "PortsNoDiff": "Il n’y a eu aucune modification dans les ports entre les deux validations.", "PortsRemoved": "Les {count} ports suivants ont été supprimés :", "PortsUpdated": "Les {count} ports suivants ont été mis à jour :", @@ -957,7 +934,6 @@ "RestoredPackagesFromNuGet": "{count} package(s) restauré(s) à partir de NuGet dans {elapsed}. Utilisez --debug pour afficher plus de détails.", "ResultsHeader": "Résultats", "ScriptAssetCacheRequiresScript": "arguments attendus : la configuration de ressource 'x-script' requiert exactement le modèle d’exécution en tant qu’argument", - "SearchHelp": "L’argument doit être une substring à rechercher ou aucun argument pour afficher toutes les bibliothèques.", "SecretBanner": "*** SECRET ***", "SeeURL": "Consultez {url} pour plus d'informations.", "SerializedBinParagraphHeader": "\nparagraphe binaire sérialisé", @@ -966,6 +942,7 @@ "ShaPassedWithConflict": "SHA512 réussi, mais --skip-sha512 a également été passé; ne faire que l’un ou l’autre.", "ShallowRepositoryDetected": "vcpkg a été cloné en tant que référentiel peu profond dans : {path}\nRéessayez avec un clone vcpkg complet.", "SkipClearingInvalidDir": "L’effacement du contenu de {path} a été ignoré, car il ne s’agissait pas d’un répertoire.", + "SkippingPostBuildValidationDueTo": "Validation post-build ignorée en raison de {cmake_var}", "SourceFieldPortNameMismatch": "Le champ « Source » dans le fichier CONTROL ou le champ « name » dans le fichier vcpkg.json porte le nom {package_name} et ne correspond pas au répertoire de port {path}.", "SpecifiedFeatureTurnedOff": "La fonctionnalité '{command_name}' a été spécialement désactivée, mais --{option} a été spécifiée.", "SpecifyHostArch": "Triplet de l’hôte. Voir « vcpkg help triplet » (par défaut : {env_var})", @@ -973,10 +950,8 @@ "StartCodeUnitInContinue": "unité de code de démarrage trouvée en position continue", "StoreOptionMissingSha": "L’option --store n’est pas valide sans sha512.", "StoredBinariesToDestinations": "Fichiers binaires stockés dans {count} destinations dans {elapsed}.", - "StoredBinaryCache": "Cache binaire stocké : '{path}'", "SuccessfulyExported": "{package_name} exporté vers {path}", "SuggestGitPull": "Le résultat peut être obsolète. Exécutez « git pull » pour obtenir les derniers résultats.", - "SuggestResolution": "Pour tenter de résoudre toutes les erreurs à la fois, exécutez :\nvcpkg {command_name} --{option}", "SuggestStartingBashShell": "Vérifiez que vous avez démarré un nouvel interpréteur de commandes Bash pour que la modification prenne effet.", "SupportedPort": "Le port {package_name} est pris en charge.", "SwitchUsedMultipleTimes": "le commutateur « {option} » a été spécifié plusieurs fois", @@ -1004,7 +979,6 @@ "UnexpectedByteSize": "{expected} octets étaient censés être écrits, mais {actual} ont été écrits.", "UnexpectedCharExpectedCloseBrace": "Caractère inattendu ; propriété attendue ou accolade fermante", "UnexpectedCharExpectedColon": "Caractère inattendu ; deux-points attendus", - "UnexpectedCharExpectedComma": "Caractère inattendu ; virgule attendue ou accolade fermante", "UnexpectedCharExpectedName": "Caractère inattendu ; nom de propriété attendu", "UnexpectedCharExpectedValue": "Caractère inattendu ; valeur attendue", "UnexpectedCharMidArray": "Caractère inattendu au milieu du tableau", @@ -1023,26 +997,21 @@ "UnexpectedEOFMidKeyword": "EOF inattendu au milieu du mot clé", "UnexpectedEOFMidString": "EOF inattendu au milieu de la chaîne", "UnexpectedEOFMidUnicodeEscape": "Fin de fichier inattendue au milieu de l’échappement Unicode", - "UnexpectedErrorDuringBulkDownload": "une erreur inattendue s’est produite lors du téléchargement en bloc.", "UnexpectedEscapeSequence": "Continuation de séquence d’échappement inattendue", - "UnexpectedExtension": "Extension d’archive inattendue : '{extension}'.", - "UnexpectedFeatureList": "liste inattendue de fonctionnalités", "UnexpectedField": "champ inattendu « {json_field} »", "UnexpectedFieldSuggest": "champ inattendu « {json_field} », vouliez-vous dire « {value} » ?", "UnexpectedFormat": "Le format attendu est [{expected}], mais était [{actual}].", "UnexpectedOption": "option inattendue : {option}", - "UnexpectedPlatformExpression": "expression de plateforme inattendue", "UnexpectedPortName": "le port {expected} est déclaré comme {actual} dans {path}", "UnexpectedPortversion": "« port-version » inattendu sans champ de contrôle de version", "UnexpectedSwitch": "commutateur inattendu : {option}", "UnexpectedToolOutput": "{tool_name} ({path}) a produit une sortie inattendue lors de la tentative de détermination de la version :", "UnexpectedWindowsArchitecture": "architecture d’hôte Windows inattendue : {actual}", "UnknownBaselineFileContent": "entrée de base de référence non reconnaissable ; 'port:triplet=(fail|skip|pass)' attendu", - "UnknownBinaryProviderType": "type de fournisseur binaire inconnu : les fournisseurs valides sont 'clear', 'default', 'nuget', 'nugetconfig', 'nugettimeout', 'interactive', 'x-azblob', 'x-gcs', 'x-aws', 'x-aws-config', 'http' et 'files'.", + "UnknownBinaryProviderType": "type de fournisseur binaire inconnu : les fournisseurs valides sont 'clear', 'default', 'nuget', 'nugetconfig', 'nugettimeout', 'interactive', 'x-azblob', 'x-gcs', 'x-aws', 'x-aws-config', 'http' et 'files'", "UnknownBooleanSetting": "paramètre booléen inconnu pour {option} : \"{value}\". Les valeurs valides sont ' '', '1', '0', 'ON', 'OFF', 'TRUE' et 'FALSE'.", - "UnknownOptions": "Option(s) inconnue(s) pour la commande '{command_name}' :", "UnknownParameterForIntegrate": "Paramètre inconnu '{value}' pour l’intégration.", - "UnknownPolicySetting": "Paramètre inconnu pour la stratégie '{value}' : {option}", + "UnknownPolicySetting": "Paramètre inconnu de {cmake_var} : {value}. Les valeurs de stratégie valides sont «», « désactivé » et « activée ».", "UnknownSettingForBuildType": "Paramètre inconnu pour VCPKG_BUILD_TYPE {option}. Les paramètres valides sont « {0} », « debug » et « release ».", "UnknownTool": "vcpkg n’a pas de définition de cet outil pour cette plateforme.", "UnknownTopic": "rubrique inconnue {value}", @@ -1054,7 +1023,6 @@ "UnsupportedFeatureSupportsExpressionWarning": "{feature_spec} est uniquement pris en charge sur '{supports_expression}', ce qui ne correspond pas à {triplet}. Cela signifie généralement qu’il existe des échecs de build connus ou des problèmes d’exécution lors de la génération d’autres plateformes. Poursuite de l’opération en raison de `--allow-unsupported`.", "UnsupportedPort": "Le port {package_name} n’est pas pris en charge.", "UnsupportedPortDependency": "- la dépendance {value} n’est pas prise en charge.", - "UnsupportedShortOptions": "les options courtes ne sont pas prises en charge : '{value}'", "UnsupportedSyntaxInCDATA": "]]> n’est pas pris en charge dans le bloc CDATA", "UnsupportedSystemName": "Impossible de mapper VCPKG_CMAKE_SYSTEM_NAME '{system_name}' à une plateforme vcvarsall. Les noms de système pris en charge sont ' '', 'Windows' et 'WindowsStore'.", "UnsupportedToolchain": "Dans le {triplet} triplet : chaînes d’outils valide introuvablepour l’architecture cible demandée {arch}\n. L’instance de Visual Studio sélectionnée est à : {path}\n. Les combinaisons de chaînes d’outils disponibles sont : {list}.", @@ -1068,21 +1036,18 @@ "UpdateBaselineUpdatedBaseline": "Registre '{url}' mis à jour : base de référence '{old_value}' -> '{new_value}'", "UpgradeInManifest": "La mise à niveau met à niveau une installation en mode classique et ne prend donc pas en charge le mode manifeste. Envisagez de mettre à jour vos dépendances en mettant à jour votre base de référence avec une valeur actuelle avec vcpkg x-update-baseline et en exécutant l’installation de vcpkg.", "UpgradeRunWithNoDryRun": "Si vous voulez vraiment régénérer les packages ci-dessus, exécutez cette commande avec l’option --no-dry-run.", - "UploadedBinaries": "Fichiers binaires chargés sur {count} {vendor}", - "UploadedPackagesToVendor": "{count} package(s) chargé(s) sur {vendor} dans {elapsed}", "UploadingBinariesToVendor": "Chargement des fichiers binaires de '{spec}' vers '{vendor}' '{path}' source.", - "UploadingBinariesUsingVendor": "Chargement des fichiers binaires pour '{spec}' à l’aide de '{vendor}' '{path}'.", + "UsageInstallInstructions": "vous pouvez installer le fichier d’utilisation avec le fichier CMake suivant", + "UsageTextHere": "le fichier d’utilisation est ici", "UseEnvVar": "-- Utilisation de {env_var} dans les variables d’environnement.", "UserWideIntegrationDeleted": "L’intégration à l’échelle de l’utilisateur n’est pas installée.", "UserWideIntegrationRemoved": "L’intégration à l’échelle de l’utilisateur a été supprimée.", - "UsingCommunityTriplet": "-- Utilisation de la {triplet} triplet de la communauté. La réussite de cette configuration triplet n’est pas garantie.", "UsingManifestAt": "Utilisation du fichier manifeste au {path}.", "Utf8ConversionFailed": "Échec de la conversion en UTF-8", "VSExaminedInstances": "Les instances de Visual Studio suivantes ont été prises en compte :", "VSExaminedPaths": "Les chemins d’accès suivants ont été examinés pour Visual Studio instances :", "VSNoInstances": "Instance de Visual Studio complète introuvable", "VcpkgCeIsExperimental": "vcpkg-artifacts est expérimental et peut changer à tout moment.", - "VcpkgCommitTableHeader": "Validation VCPKG", "VcpkgCompletion": "L’achèvement {value} vcpkg est déjà importé dans votre fichier \"{path}\".\nLes entrées suivantes ont été trouvées :", "VcpkgDisallowedClassicMode": "Impossible de localiser un manifeste (vcpkg.json) au-dessus du répertoire de travail actuel.\nCette distribution vcpkg n’a pas d’instance de mode classique.", "VcpkgHasCrashed": "vcpkg s’est bloqué. Veuillez créer un problème à https://github.com/microsoft/vcpkg contenant un bref résumé de ce que vous tentiez de faire et des informations suivantes.", @@ -1095,17 +1060,22 @@ "VcpkgUsage": "utilisation : vcpkg [--switches] [--options=values] [arguments] @response_file", "VcvarsRunFailed": "impossible d’exécuter vcvarsall.bat pour obtenir un environnement Visual Studio", "VcvarsRunFailedExitCode": "lors de la tentative d’obtention d’un environnement Visual Studio, vcvarsall.bat retourné {exit_code}", - "VersionBaselineMismatch": "La dernière version est {expected}, mais le fichier de base de référence contient {actual}.\nCourir:\nvcpkg x-add-version {package_name}\ngit add versions\ngit commit -m « Mettre à jour la base de données de version »\npour mettre à jour la version de base de référence.", + "VersionBaselineMatch": "{version_spec} correspond à la base de référence actuelle", + "VersionBaselineMismatch": "{package_name} est affecté {actual}, mais le port local est {expected}", "VersionBuiltinPortTreeEntryMissing": "aucune entrée de base de données de version pour {package_name} à {expected} ; à l’aide de la version extraite de l’arborescence des ports ({actual}).", "VersionCommandHeader": "version du programme de gestion de package vcpkg {version}\n\nPour plus d’informations sur la licence, consultez LICENSE.txt.", "VersionConflictXML": "La version {path} devait être : [{expected_version}], mais elle était [{actual_version}]. Veuillez réexécuter bootstrap-vcpkg.", + "VersionConstraintNotInDatabase1": "la contrainte \"version>=\" vers {package_name} nomme la version {version} qui n’existe pas dans la base de données des versions. Toutes les versions doivent exister dans la base de données de versions pour être interprétées par vcpkg.", + "VersionConstraintNotInDatabase2": "supprimez la contrainte de version ou choisissez une valeur déclarée ici", + "VersionConstraintOk": "toutes les contraintes de version sont cohérentes avec la base de données de versions", "VersionConstraintPortVersionMustBePositiveInteger": "port-version (après '#') dans « version>= » doit être un entier non négatif", - "VersionConstraintUnresolvable": "Impossible de résoudre une contrainte minimale pour les {package_name} de dépendance à partir de {spec}.\nLa dépendance est introuvable dans la ligne de base, ce qui indique que le package n’existait pas à ce stade. Pour résoudre ce problème, fournissez une version de remplacement explicite via le champ « overrides » ou mettez à jour la ligne de base.\nPour plus d’informations, voir « vcpkg help versioning ».", "VersionConstraintViolated": "le {spec} de dépendance était censé être au moins {expected_version} version, mais il est actuellement {actual_version}.", "VersionDatabaseEntryMissing": "aucune entrée de version pour {package_name} à {version}.", - "VersionDatabaseFileMissing": "{package_name} n’a pas de fichier de base de données de version au {path}\nCourir:\nvcpkg x-add-version {package_name}\npour créer le fichier de versions.", + "VersionDatabaseFileMissing": "ce port n’est pas dans la base de données de versions", + "VersionDatabaseFileMissing2": "le fichier de base de données de version doit se trouver ici", + "VersionDatabaseFileMissing3": "exécuter « {command_line} » pour créer le fichier de base de données de version", "VersionGitEntryMissing": "aucune entrée de base de données de version pour {package_name} à {version}.\nVersions disponibles :", - "VersionInDeclarationDoesNotMatch": "La version déclarée dans le fichier ne correspond pas à la version extraite : {version}", + "VersionInDeclarationDoesNotMatch": "{git_tree_sha} est déclaré comme contenant des {expected}, mais semble contenir des {actual}", "VersionIncomparable1": "conflit de version sur {spec} : {constraint_origin} requis {expected}, qui ne peut pas être comparé à la version de référence {actual}.", "VersionIncomparable2": "{version_spec} a le schéma {new_scheme}", "VersionIncomparable3": "Cela peut être résolu en ajoutant un remplacement explicite à la version préférée. Par exemple:", @@ -1117,17 +1087,29 @@ "VersionInvalidSemver": "«{version}» n’est pas une version sémantique valide, consultez .", "VersionMissing": "champ de contrôle de version (version, version-date, version-serveur ou version-chaîne) attendu", "VersionMissingRequiredFeature": "{version_spec} n'a pas la fonctionnalité requise {feature} requise par {constraint_origin}", - "VersionNotFound": "{expected} n’est pas disponible, seul {actual} est disponible", - "VersionNotFoundInVersionsFile": "La version {version} n'a pas été trouvée dans le fichier de versions pour {package_name}.\nRun :\nvcpkg x-add-version {package_name}\npour ajouter la nouvelle version du port.", + "VersionNotFoundInVersionsFile2": "{version_spec} est introuvable dans la base de données des versions", + "VersionNotFoundInVersionsFile3": "la version doit se trouver dans ce fichier", + "VersionNotFoundInVersionsFile4": "exécuter « {command_line} » pour ajouter la nouvelle version du port", + "VersionOverrideNotInVersionDatabase": "la version remplacée {package_name} de dépendance n’existe pas dans la base de données de versions; ce port existe-t-il ?", + "VersionOverrideVersionNotInVersionDatabase1": "le remplacement des noms de {package_name} version {version} qui n’existe pas dans la base de données de versions. L’installation de ce port au niveau supérieur échouera, car cette version ne pourra pas être non solvable.", + "VersionOverrideVersionNotInVersionDatabase2": "supprimez la contrainte de version ou choisissez une valeur déclarée ici", + "VersionOverwriteVersion": "vous pouvez remplacer les {version_spec} par des valeurs locales correctes en exécutant :", "VersionRejectedDueToBaselineMissing": "{path} a été rejeté car il utilise \"{json_field}\" et n'a pas de \"builtin-baseline\". Cela peut être corrigé en supprimant les utilisations de \"{json_field}\" ou en ajoutant une \"builtin-baseline\".\nVoir `vcpkg help versioning` pour plus d'informations.", "VersionRejectedDueToFeatureFlagOff": "{path} a été rejeté car il utilise \"{json_field}\" et l'indicateur de fonctionnalité `versions` est désactivé. Cela peut être résolu en supprimant \"{json_field}\" ou en activant l'indicateur de fonctionnalité `versions`.\nVoir `vcpkg help versioning` pour plus d'informations.", - "VersionSchemeMismatch": "La base de données de versions déclare {version} comme {expected}, mais {path} la déclare comme {actual}. Les versions doivent être uniques, même si elles sont déclarées avec des schémas différents.\nCourir:\nvcpkg x-add-version {package_name} --overwrite-version\npour remplacer le schéma déclaré dans la base de données de versions par celui déclaré dans le port.", - "VersionShaMismatch": "{version} est déclaré avec {expected}, mais le port local a un autre {actual} SHA.\nMettez à jour les champs de version du port, puis exécutez :\nvcpkg x-add-version {package_name}\ngit add versions\ngit commit -m « Mettre à jour la base de données de version »\npour ajouter la nouvelle version.", - "VersionShaMissing": "lors de la validation de {package_name}, git SHA manquant.\nCourir:\ngit add \"{path}\"\ngit commit -m « wip »\nvcpkg x-add-version {package_name}\ngit add versions\ngit commit --amend -m « [{package_name}] Ajouter un nouveau port »\npour valider le nouveau port et créer son fichier de version.", + "VersionSchemeMismatch1": "{version} est déclarée {expected}, mais {package_name} est déclaré avec {actual}", + "VersionSchemeMismatch1Old": "{version} est déclarée {expected}, mais {package_name}@{git_tree_sha} est déclaré avec {actual}", + "VersionSchemeMismatch2": "les versions doivent être uniques, même si elles sont déclarées avec des schémas différents", + "VersionShaMismatch1": "{version_spec} {git_tree_sha} d’arborescence Git ne correspond pas au répertoire du port", + "VersionShaMismatch2": "le répertoire du port a une arborescence git {git_tree_sha}", + "VersionShaMismatch3": "si {version_spec} est déjà publié, mettez à jour ce fichier avec une nouvelle version ou une nouvelle version de port, validez-le, puis ajoutez la nouvelle version en exécutant :", + "VersionShaMismatch4": "si {version_spec} n’est pas encore publié, remplacez l’arborescence Git précédente en exécutant :", + "VersionShaMissing1": "l’arborescence git du répertoire de port n’a pas pu être déterminée. Cela est généralement dû à des modifications non validées.", + "VersionShaMissing2": "vous pouvez valider vos modifications et les ajouter à la base de données de versions en exécutant :", + "VersionShaMissing3": "TEC", + "VersionShaMissing4": "[{package_name}] Ajouter un nouveau port", "VersionSharpMustBeFollowedByPortVersion": "« # » dans le texte de la version doit être suivi d’une version de port", "VersionSharpMustBeFollowedByPortVersionNonNegativeInteger": "« # » dans le texte de version doit être suivi d’une version de port (entier non négatif)", "VersionSpecMismatch": "Échec du chargement du port, car les versions sont incohérentes. Le fichier \"{path}\" contient la version {actual_version}, mais la base de données de versions indique qu’il doit être {expected_version}.", - "VersionTableHeader": "Version", "VersionVerifiedOK": "{version_spec} est correctement dans la base de données de versions ({git_tree_sha})", "WaitingForChildrenToExit": "En attente de la fermeture des processus enfants...", "WaitingToTakeFilesystemLock": "en attente du verrouillage du système de fichiers sur {path}...", @@ -1136,8 +1118,7 @@ "WhileCheckingOutBaseline": "lors de l’extraction des {commit_sha} de base de référence", "WhileCheckingOutPortTreeIsh": "lors de la vérification du port {package_name} avec git tree {git_tree_sha}", "WhileGettingLocalTreeIshObjectsForPorts": "lors de l’obtention d’objets arborescences locaux pour les ports", - "WhileLoadingLocalPort": "lors de la tentative de chargement du port local {package_name}", - "WhileLoadingPortFromGitTree": "lors de la tentative de chargement du port à partir de : {commit_sha}", + "WhileLoadingBaselineVersionForPort": "lors du chargement de la version de référence pour {package_name}", "WhileLoadingPortVersion": "pendant le chargement {version_spec}", "WhileLookingForSpec": "lors de la recherche de {spec} :", "WhileParsingVersionsForPort": "lors de l’analyse des versions de {package_name} à partir de {path}", @@ -1165,7 +1146,7 @@ "descriptionShouldBeOfTypestringFound$": "la description doit être de type 'string', '${p0}' trouvé", "optionsShouldBeASequenceFound$": "les options doivent être une séquence, '${p0}' trouvé", "DuplicateKeysDetectedInManifest$": "Clés en double détectées dans le manifeste : « ${p0} »", - "noPostscriptFileRerunWithTheVcpkgShellFunctionRatherThanExecutable": "aucun fichier postscript : réexécutez avec la fonction shell vcpkg au lieu de l’exécutable", + "noPostscriptFileRunVcpkgshellWithTheSameArguments": "aucun fichier PostScript : exécutez vcpkg-shell avec les mêmes arguments", "DuplicateDefine$DuringActivationNewValueWillReplaceOld": "Définissez le double ${p0} pendant l’activation. La nouvelle valeur remplacera l’ancienne.", "DuplicateToolDeclared$DuringActivationNewValueWillReplaceOld": "Outil dupliqué ${p0} déclaré pendant l’activation. La nouvelle valeur remplacera l’ancienne.", "DuplicateAliasDeclared$DuringActivationNewValueWillReplaceOld": "Alias dupliqué ${p0} déclaré pendant l’activation. La nouvelle valeur remplacera l’ancienne.", @@ -1257,7 +1238,7 @@ "MultipleArtifactsSpecifiedButNotAnEqualNumberOf$Switches": "Plusieurs artefacts spécifiés, mais un nombre inégal de commutateurs ${p0}", "TriedToAddAnArtifact$$ButCouldNotDetermineTheRegistryToUse": "Tentative d’ajout d’un artefact [${p0}]:${p1} mais n’a pas pu déterminer le Registre à utiliser.", "TriedToAddRegistry$As$ButItWasAlready$PleaseAdd$ToThisProjectManuallyAndReattempt": "Tentative d’ajout du registre ${p0} en tant que ${p1}, mais il était déjà ${p2}. Ajoutez manuellement ${p3} à ce projet et réessayez.", - "RunvcpkgActivateToApplyToTheCurrentTerminal": "Exécuter \\'vcpkg activate\\' pour l’appliquer au terminal actuel", + "RunvcpkgshellActivateToApplyToTheCurrentTerminal": "Exécutez \\`vcpkg-shell activate\\` pour l’ appliquer au terminal actuel.", "DownloadsFolderCleared$": "Dossier des téléchargements effacé (${p0}) ", "InstalledArtifactFolderCleared$": "Dossier d’artefacts installé effacé (${p0}) ", "CacheFolderCleared$": "Dossier de cache effacé (${p0}) ", diff --git a/locales/messages.it.json b/locales/messages.it.json index 2a226f67b6..64cd775954 100644 --- a/locales/messages.it.json +++ b/locales/messages.it.json @@ -46,7 +46,6 @@ "AVersionOfAnyType": "una versione di qualsiasi tipo", "AddArtifactOnlyOne": "'{command_line}' può aggiungere un solo artefatto alla volta.", "AddCommandFirstArg": "Il primo parametro da aggiungere deve essere 'artifact' o 'port'.", - "AddFirstArgument": "Il primo argomento di '{command_line}' deve essere 'artifact' o 'port'.", "AddPortRequiresManifest": "'{command_line}' richiede un file manifesto attivo.", "AddPortSucceeded": "Aggiunta delle porte al file vcpkg.json completata.", "AddRecurseOption": "Se si è certi di volerli rimuovere, eseguire il comando con l'opzione --recurse.", @@ -54,12 +53,11 @@ "AddVersionAddedVersionToFile": "ha aggiunto la versione {version} a {path}", "AddVersionArtifactsOnly": "--version è solo artefatto e non può essere utilizzato con la porta di aggiunta vcpkg", "AddVersionCommitChangesReminder": "È stato eseguito il commit delle modifiche?", - "AddVersionCommitResultReminder": "Non dimenticarsi di eseguire il commit del risultato.", "AddVersionDetectLocalChangesError": "il rilevamento delle modifiche locali verrà ignorato a causa di un formato imprevisto nell'output dello stato GIT", "AddVersionFileNotFound": "non è stato possibile trovare il file richiesto {path}", "AddVersionFormatPortSuggestion": "Eseguire '{command_line}' per formattare il file", "AddVersionIgnoringOptionAll": "--{option} verrà ignorato perché è stato specificato un argomento per il nome della porta", - "AddVersionLoadPortFailed": "non è possibile caricare la porta {package_name}", + "AddVersionInstructions": "è possibile eseguire i comandi seguenti per aggiungere automaticamente la versione corrente di {package_name}:", "AddVersionNewFile": "(nuovo file)", "AddVersionNewShaIs": "nuovo SHA: {commit_sha}", "AddVersionNoFilesUpdated": "Nessun file aggiornato", @@ -70,8 +68,8 @@ "AddVersionPortFilesShaChanged": "i file archiviati per {package_name} sono stati modificati ma la versione non è stata aggiornata", "AddVersionPortFilesShaUnchanged": "i file archiviati di {package_name} sono invariati rispetto alla versione {version}", "AddVersionPortHasImproperFormat": "Il formato di {package_name} non è corretto", - "AddVersionSuggestNewVersionScheme": "Usare lo schema della versione \"{new_scheme}\" anziché \"{old_scheme}\" nella porta \"{package_name}\".\nUsare --{option} per disabilitare questo controllo.", - "AddVersionUnableToParseVersionsFile": "non è possibile analizzare il file delle versioni {path}", + "AddVersionSuggestVersionDate": "Il formato della versione di \"{package_name}\" utilizza \"version-string\", ma il formato è accettabile come \"version-date\". Se questo formato è effettivamente destinato a essere una data ISO 8601, modificare il formato in \"version-date\" ed eseguire di nuovo questo comando. In caso contrario, disabilitare questo controllo eseguendo di nuovo il comando e aggiungendo --skip-version-format-check.", + "AddVersionSuggestVersionRelaxed": "Il formato della versione di \"{package_name}\" utilizza \"version-string\", ma il formato è accettabile come \"version\". Se le versioni per questa porta sono ordinabili utilizzando regole di versione rilassata, impostare il formato su \"versione\" ed eseguire di nuovo il comando. Le regole di versione rilassata ordinano le versioni in base a ogni componente numerico. Quindi, le versioni con suffissi trattino vengono ordinate lessicalmente in precedenza. I tag di compilazione aggiunti vengono ignorati. Esempi:\n1.0 < 1.1-alpha < 1.1-b < 1.1 < 1.1.1 < 1.2+build = 1.2 < 2.0\nSi noti in particolare che i suffissi tratteggiati ordinano *prima*, non dopo. 1.0-anything < 1.0\nSi noti che questo ordinamento è uguale a quello scelto nel controllo delle versioni semantiche (vedere https://semver.org), anche se le parti effettivamente semantiche non si applicano.\nSe le versioni per questa porta non sono ordinate in base a queste regole, disabilitare questo controllo eseguendo di nuovo il comando e aggiungendo --skip-version-format-check.", "AddVersionUncommittedChanges": "sono presenti modifiche senza commit per {package_name}", "AddVersionUpdateVersionReminder": "La versione o la versione della porta è stata aggiornata?", "AddVersionUseOptionAll": "{command_name} senza argomenti richiede il passaggio --{option} per aggiornare tutte le versioni delle porte contemporaneamente", @@ -82,7 +80,7 @@ "AdditionalPackagesToRemove": "Per completare l'operazione, è necessario rimuovere i pacchetti aggiuntivi (*).", "AllFormatArgsRawArgument": "stringa di formato \"{value}\" contiene un argomento di formato non elaborato", "AllFormatArgsUnbalancedBraces": "parentesi graffa non bilanciata nella stringa di formato \"{value}\"", - "AllPackagesAreUpdated": "Tutti i pacchetti installati sono aggiornati con il portfile locale.", + "AllPackagesAreUpdated": "Tutti i pacchetti installati sono aggiornati.", "AlreadyInstalled": "{spec} è già installato", "AlreadyInstalledNotHead": "{spec} è già installato. Non verrà eseguita la creazione da HEAD", "AmbiguousConfigDeleteConfigFile": "Configurazione vcpkg ambigua fornita sia dal manifesto che dal file di configurazione.\n-- Eliminare il file di configurazione {path}", @@ -110,7 +108,6 @@ "ApplocalProcessing": "distribuzione delle dipendenze", "ArtifactsBootstrapFailed": "Vcpkg-artifacts non è installato e non ne è stato possibile eseguire il bootstrap.", "ArtifactsNotInstalledReadonlyRoot": "vcpkg-artifacts non è installato e non può essere installato perché si presuppone che VCPKG_ROOT sia di sola lettura. La reinstallazione di vcpkg con 'one liner' potrebbe risolvere il problema.", - "ArtifactsNotOfficialWarning": "Uso di vcpkg-artifacts con un elemento non ufficiale ", "ArtifactsOptionIncompatibility": "--{option} non ha alcun effetto sulla ricerca dell'artefatto.", "ArtifactsOptionJson": "Percorso completo del file JSON in cui vengono registrate le variabili di ambiente e altre proprietà", "ArtifactsOptionMSBuildProps": "Percorso completo del file in cui verranno scritte le proprietà di MSBuild", @@ -118,12 +115,10 @@ "ArtifactsOptionVersionMismatch": "Il numero di opzioni --version deve corrispondere al numero di elementi denominati", "ArtifactsSwitchARM": "Forza il rilevamento dell'host su ARM durante l'acquisizione di artefatti", "ArtifactsSwitchARM64": "Forza il rilevamento dell'host su ARM64 durante l'acquisizione di artefatti", - "ArtifactsSwitchAll": "Aggiorna tutti i registri di artefatti noti", "ArtifactsSwitchAllLanguages": "Acquisisce tutti i file di linguaggio durante l'acquisizione degli artefatti", "ArtifactsSwitchForce": "Forza la riacquisizione se un artefatto è già stato acquisito", "ArtifactsSwitchFreebsd": "Forza il rilevamento dell'host in FreeBSD durante l'acquisizione di artefatti", "ArtifactsSwitchLinux": "Forza il rilevamento dell'host su Linux durante l'acquisizione di artefatti", - "ArtifactsSwitchNormalize": "Applica tutte le correzioni deprecate", "ArtifactsSwitchOnlyOneHostPlatform": "È possibile impostare solo una piattaforma host (--x64, --x86, --arm, --arm64).", "ArtifactsSwitchOnlyOneOperatingSystem": "È possibile impostare un solo sistema operativo (--windows, --osx, --linux, --freebsd).", "ArtifactsSwitchOnlyOneTargetPlatform": "È possibile impostare solo una piattaforma di destinazione (--target:x64, --target:x86, --target:arm, --target:arm64).", @@ -135,9 +130,12 @@ "ArtifactsSwitchWindows": "Forza il rilevamento host in Windows durante l'acquisizione di artefatti", "ArtifactsSwitchX64": "Forza il rilevamento dell'host su x64 durante l'acquisizione di artefatti", "ArtifactsSwitchX86": "Forza il rilevamento host su x86 durante l'acquisizione di artefatti", + "AssetCacheHit": "Riscontro nella cache degli asset per {path}; è stato eseguito il download da: {url}", + "AssetCacheMiss": "Mancato riscontro nella cache degli asset; è in corso il download da {url}", + "AssetCacheMissBlockOrigin": "Mancato riscontro nella cache degli asset per {path} e i download sono stati bloccati da x-block-origin.", "AssetCacheProviderAcceptsNoArguments": "argomenti imprevisti: '{value}' non accetta argomenti", + "AssetCacheSuccesfullyStored": "L’archiviazione di {path} in {url} è stata completata.", "AssetSourcesArg": "Origini di memorizzazione nella cache degli asset. Vedere \"memorizzazione nella cache asset guida vcpkg\"", - "AttemptingToFetchPackagesFromVendor": "Tentativo di recupero di {count} pacchetti da {vendor}", "AttemptingToSetBuiltInBaseline": "tentativo di impostare builtin-baseline in vcpkg.json durante l'override del registro di sistema predefinito in vcpkg-configuration.json.\nVerrà usato il registro di sistema predefinito da vcpkg-configuration.json.", "AuthenticationMayRequireManualAction": "Uno o più provider di credenziali {vendor} hanno richiesto un'azione manuale. Aggiungere l'origine binaria 'interactive' per consentire l'interattività.", "AutoSettingEnvVar": "-- Impostazione automatica delle variabili di ambiente \"{env_var}\" su \"{url}\".", @@ -147,12 +145,11 @@ "AzUrlAssetCacheRequiresBaseUrl": "argomenti imprevisti: la configurazione dell'asset 'azurl' richiede un URL di base", "AzUrlAssetCacheRequiresLessThanFour": "argomenti imprevisti: la configurazione dell'asset 'azurl' richiede meno di 4 argomenti", "BaselineConflict": "La specifica di vcpkg-configuration.default-registry in un file manifesto entra in conflitto con la baseline predefinita.\nRimuovere una di queste impostazioni in conflitto.", - "BaselineFileNoDefaultField": "Il file baseline nel commit {commit_sha} non è valido (nessun campo \"default\").", "BaselineGitShowFailed": "durante il checkout della baseline dal commit '{commit_sha}' non è stato possibile eseguire 'git show' versions/baseline.json. È possibile risolvere il problema recuperando i commit con 'git fetch'.", - "BaselineMissing": "Versione baseline non trovata. Eseguire:\nvcpkg x-add-version {package_name}\ngit add versions\ngit commit -m \"Aggiorna database delle versioni\"\nper impostare {version} come versione baseline.", - "BinaryCacheVendorHTTP": "Server HTTP", + "BaselineMissing": "A {package_name} non è assegnata una versione", + "BinariesRelativeToThePackageDirectoryHere": "i file binari sono relativi a ${{CURRENT_PACKAGES_DIR}} qui", "BinarySourcesArg": "Origini binarie di memorizzazione nella cache. Vedere 'memorizzazione nella cache binaria guida vcpkg'", - "BinaryWithInvalidArchitecture": "{path}\n Previsto: {expected}, ma {actual}", + "BinaryWithInvalidArchitecture": "{path} è stato creato per {arch}", "BuildAlreadyInstalled": "{spec} è già installato; rimuovere {spec} prima di provare a crearlo.", "BuildDependenciesMissing": "Il comando di compilazione richiede che tutte le dipendenze siano già installate.\nMancano le dipendenze seguenti:", "BuildResultBuildFailed": "BUILD_FAILED", @@ -170,22 +167,19 @@ "BuildTroubleshootingMessage1": "Assicurarsi di usare i file di porta più recenti con 'git pull' e 'vcpkg update'.\nQuindi verificare la presenza di problemi noti in:", "BuildTroubleshootingMessage2": "È possibile inviare un nuovo problema all'indirizzo:", "BuildTroubleshootingMessage3": "Includere 'Errore di compilazione [{package_name}]' nel titolo del report sui bug, le seguenti informazioni sulla versione nella descrizione del bug, e allegare tutti i log di errore rilevanti di cui sopra.", - "BuildTroubleshootingMessage4": "Usare il modello precompilato di {path} per la creazione del report del problema.", "BuildTroubleshootingMessageGH": "È anche possibile inviare un problema eseguendo (è necessario installare l'interfaccia della riga di comando di GitHub):", "BuildingFromHead": "Creazione di {spec} da HEAD...", "BuildingPackage": "Creazione di {spec}...", "BuildingPackageFailed": "compilazione {spec} non riuscita con: {build_result}", "BuildingPackageFailedDueToMissingDeps": "a causa delle seguenti dipendenze mancanti:", "BuiltInTriplets": "Triplette integrate:", - "BuiltWithIncorrectArchitecture": "I file seguenti sono stati compilati per un'architettura non corretta:", - "CISettingsExclude": "Elenco delimitato da virgole di porte da ignorare", + "BuiltWithIncorrectArchitecture": "Le richieste triple per cui i file binari vengono compilati {arch}, ma i file binari seguenti sono stati compilati per un'architettura diversa. Questo significa in genere che le informazioni della toolchain vengono comunicate erroneamente al sistema di compilazione dei file binari. Per eliminare questo messaggio, aggiungere set (VCPKG_POLICY_SKIP_ARCHITECTURE_CHECK abilitato)", "CISettingsOptCIBase": "Percorso del file ci.baseline.txt. Usato per ignorare le porte e rilevare regressioni.", "CISettingsOptExclude": "Elenco delimitato da virgole delle porte da ignorare", "CISettingsOptFailureLogs": "Directory in cui verranno copiati i log degli errori", "CISettingsOptHostExclude": "Elenco delimitato da virgole di porte da ignorare per la tripletta host", "CISettingsOptOutputHashes": "File per l'output di tutti gli hash dei pacchetti determinati", "CISettingsOptParentHashes": "File per la lettura degli hash dei pacchetti per uno stato CI padre, per ridurre il set di pacchetti modificati", - "CISettingsOptSkippedCascadeCount": "Asserisce che il numero di --exclude e skip di supports corrisponda esattamente a questo numero", "CISettingsOptXUnit": "File per l'output dei risultati in formato XUnit", "CISettingsVerifyGitTree": "Verifica che ogni oggetto albero Git corrisponda alla versione dichiarata (molto lenta)", "CISettingsVerifyVersion": "Stampa il risultato per ogni porta anziché solo gli errori", @@ -200,8 +194,6 @@ "CMakeTargetsUsageHeuristicMessage": "# generato in modo euristico e potrebbe non essere corretto", "CMakeToolChainFile": "I progetti CMake devono usare: \"-DCMAKE_TOOLCHAIN_FILE={path}>", "CMakeUsingExportedLibs": "Per usare le librerie esportate nei progetti CMake, aggiungere {value} alla riga di comando di CMake.", - "CheckedOutGitSha": "Git SHA estratto: {commit_sha}", - "CheckedOutObjectMissingManifest": "L'oggetto estratto non contiene un file CONTROL o vcpkg.json.", "ChecksFailedCheck": "vcpkg si è arrestato in modo anomalo; non sono disponibili altri dettagli.", "ChecksUnreachableCode": "è stato raggiunto il codice non raggiungibile", "ChecksUpdateVcpkg": "l'aggiornamento di vcpkg eseguendo di nuovo bootstrap-vcpkg può risolvere questo errore.", @@ -235,14 +227,11 @@ "CmdBuildExternalExample2": "vcpkg build-external zlib2 C:\\path\\to\\dir\\with\\vcpkg.json", "CmdBuildExternalSynopsis": "Compila la porta da un percorso", "CmdBuildSynopsis": "Compila una porta", - "CmdCacheExample1": "cache vcpkg ", - "CmdCacheSynopsis": "Elenca le specifiche dei pacchetti", "CmdCheckSupportExample1": "vcpkg x-check-support ", "CmdCheckSupportSynopsis": "Verifica se una porta è supportata senza compilarla", "CmdCiCleanSynopsis": "Cancella tutti i file da preparare per un'esecuzione CI", "CmdCiSynopsis": "Prova a compilare tutte le porte per il test CI", "CmdCiVerifyVersionsSynopsis": "Controlla l'integrità del database della versione", - "CmdContactOptSurvey": "Avvia il browser predefinito per il sondaggio vcpkg corrente", "CmdCreateExample1": "creazione vcpkg ", "CmdCreateExample2": "creazione vcpkg my-fancy-port https://example.com/sources.zip", "CmdCreateExample3": "creazione vcpkg ", @@ -265,7 +254,7 @@ "CmdEditOptBuildTrees": "Apre l'editor nella sottocartella dell'albero di compilazione specifico della porta", "CmdEnvOptions": "Aggiunge {path} installato a {env_var}", "CmdExportEmptyPlan": "Rifiuto di creare un'esportazione di zero pacchetti. Installare i pacchetti prima dell'esportazione.", - "CmdExportExample1": "esportazione vcpkg [--nuget] [--directory=out_dir]", + "CmdExportExample1": "vcpkg export [--nuget] [--output-dir=out_dir]", "CmdExportOpt7Zip": "Esporta in un file 7zip (.7z)", "CmdExportOptChocolatey": "Esporta un pacchetto Chocolatey (sperimentale)", "CmdExportOptDebug": "Abilita il debug prefab", @@ -376,8 +365,10 @@ "CmdZExtractExample2": "vcpkg z-extract source.zip source_dir --strip 2", "CmdZExtractOptStrip": "Numero di directory iniziali da rimuovere da tutti i percorsi", "CommandEnvExample2": "vcpkg env \"ninja -C \" --triplet x64-windows", - "CommandFailed": "Comando:\n{command_line}\nnon riuscito con i seguenti risultati:", + "CommandFailed": "comando:\n{command_line}\nnon riuscito con l'output seguente:", + "CommandFailedCode": "comando:\n{command_line}\nnon riuscito con codice di uscita {exit_code} e l'output seguente:", "CommunityTriplets": "Triplette della community:", + "CompilerPath": "Compilatore trovato: {path}", "CompressFolderFailed": "Impossibile comprimere la cartella “{path}”:", "ComputingInstallPlan": "Elaborazione del piano di installazione in corso...", "ConfigurationErrorRegistriesWithoutBaseline": "La configurazione definita in {path} non è valida.\n\nL'uso dei registri richiede che sia impostata una baseline per il Registro di sistema predefinito o che il Registro di sistema predefinito sia Null.\n\nPer altri dettagli, vedere {url}.", @@ -386,11 +377,10 @@ "ConsideredVersions": "I seguenti eseguibili sono stati considerati ma rimossi a causa del requisito di versione di {version}:", "ConstraintViolation": "È stata trovata una violazione di vincolo:", "ContinueCodeUnitInStart": "è stata trovata un'unità di codice continua nella posizione iniziale", - "ControlAndManifestFilesPresent": "Nella directory delle porte sono presenti sia un file manifesto che un file CONTROL: {path}", "ControlCharacterInString": "Carattere di controllo nella stringa", "ControlSupportsMustBeAPlatformExpression": "\"Supporti\" deve essere un'espressione di piattaforma", - "CopyrightIsDir": "'{path}' in quanto directory è deprecato.", - "CorruptedDatabase": "Database danneggiato.", + "CopyrightIsDir": "questa porta imposta ${{CURRENT_PACKAGES_DIR}}/share/${{PORT}}/copyright su una directory, ma deve essere un file. Provare a combinare file di copyright separati in uno utilizzando vcpkg_install_copyright. Per eliminare questo messaggio, aggiungere set (VCPKG_POLICY_SKIP_COPYRIGHT_CHECK abilitato)", + "CorruptedDatabase": "Il database di installazione di vcpkg è danneggiato. Si tratta di un bug in vcpkg o di un altro elemento che ha modificato il contenuto della directory 'installed' in modo imprevisto. È possibile risolvere il problema eliminando la directory \"installata\" e reinstallando ciò che si vuole usare. Se il problema si verifica costantemente, segnalare un bug in https://github.com/microsoft/vcpkg .", "CorruptedInstallTree": "L'albero 'installato' vcpkg è danneggiato.", "CouldNotDeduceNugetIdAndVersion": "Non è stato possibile dedurre l'ID NuGet e la versione dal nome file: {path}", "CouldNotFindBaselineInCommit": "Non è stato possibile trovare la baseline in {url} alle {commit_sha} per {package_name}.", @@ -403,14 +393,12 @@ "CreatingNugetPackage": "Creazione del pacchetto NuGet in corso...", "CreatingZipArchive": "Creazione dell'archivio ZIP in corso...", "CreationFailed": "Non è stato possibile completare la creazione di {path}.", - "CurlFailedToExecute": "Esecuzione di curl non riuscita. Codice di uscita: {exit_code}", "CurlFailedToPut": "curl non è riuscito a inserire il file in {url} con il codice di uscita {exit_code}.", "CurlFailedToPutHttp": "curl non è riuscito a inserire il file in {url} con il codice di uscita {exit_code} e codice HTTP {value}.", - "CurlReportedUnexpectedResults": "curl ha segnalato risultati imprevisti a vcpkg e vcpkg non può continuare.\nEsaminare il testo seguente per informazioni riservate e aprire un problema in Microsoft/vcpkg GitHub per risolvere il problema!\ncmd: {command_line}\n=== curl output ===\n{actual}\n=== end curl output ===", - "CurlReturnedUnexpectedResponseCodes": "Curl ha restituito un numero di codici di risposta diverso da quello previsto per la richiesta ({actual} rispetto a {expected} previsto).", + "CurlResponseTruncatedRetrying": "curl ha restituito una risposta parziale; in attesa di {value} millisecondi e riprovare", + "CurlTimeout": "curl non è riuscito a eseguire tutte le operazioni HTTP richieste, anche dopo timeout e tentativi. Ultima riga di comando: {command_line}", "CurrentCommitBaseline": "È possibile usare il commit corrente come baseline, ovvero:\n\t\"builtin-baseline\": \"{commit_sha}\"", "CycleDetectedDuring": "ciclo rilevato durante {spec}:", - "DateTableHeader": "Data", "DefaultBinaryCachePlatformCacheRequiresAbsolutePath": "La variabile di ambiente VCPKG_DEFAULT_BINARY_CACHE deve essere una directory (è: {path})", "DefaultBinaryCacheRequiresAbsolutePath": "La variabile di ambiente VCPKG_DEFAULT_BINARY_CACHE deve essere assoluta (è: {path})", "DefaultBinaryCacheRequiresDirectory": "La variabile di ambiente VCPKG_DEFAULT_BINARY_CACHE deve essere una directory (è: {path})", @@ -419,15 +407,18 @@ "DefaultFeatureIdentifier": "i nomi delle funzionalità predefinite devono essere identificatori", "DefaultFlag": "Attivazione dell'impostazione predefinita --{option}.", "DefaultRegistryIsArtifact": "Il registro predefinito non può essere un registro artefatti.", - "DefaultTripletChanged": "Nella versione di settembre 2023 la tripletta predefinita per le librerie vcpkg è cambiata da x86-windows a tripletta host rilevata ({triplet}). Per il comportamento precedente, aggiungere --triplet x86-windows. Per eliminare questo messaggio, aggiungere --tripletta {triplet}.", "DeleteVcpkgConfigFromManifest": "-- In alternativa, rimuovere \"vcpkg-configuration\" dal file manifesto {path}.", "DependencyFeatureCore": "la funzionalità \"core\" non può essere presente nell'elenco delle funzionalità di una dipendenza. Per disattivare le funzionalità predefinite, aggiungere \"default-features\": false.", "DependencyFeatureDefault": "la funzionalità \"default\" non può essere presente nell'elenco delle funzionalità di una dipendenza. Per attivare le funzionalità predefinite, aggiungere \"default-features\": true.", "DependencyGraphCalculation": "L'invio del grafico delle dipendenze è stato abilitato.", "DependencyGraphFailure": "L'invio del grafico delle dipendenze non è riuscito.", "DependencyGraphSuccess": "L'invio del grafico delle dipendenze è riuscito.", + "DependencyInFeature": "la dipendenza si trova nella funzionalità denominata {feature}", + "DependencyNotInVersionDatabase": "la dipendenza {package_name} non esiste nel database della versione; la porta esiste?", "DeprecatedPrefabDebugOption": "--prefab-debug è ora deprecato.", "DetectCompilerHash": "Rilevamento dell'hash del compilatore per la tripletta {triplet}...", + "DirectoriesRelativeToThePackageDirectoryHere": "le directory sono relative a ${{CURRENT_PACKAGES_DIR}} qui", + "DllsRelativeToThePackageDirectoryHere": "le DLL sono relative a ${{CURRENT_PACKAGES_DIR}} qui", "DocumentedFieldsSuggestUpdate": "Se si tratta di campi documentati che devono essere riconosciuti, provare ad aggiornare lo strumento vcpkg.", "DownloadAvailable": "Una copia scaricabile di questo strumento è disponibile e può essere usata annullando {env_var}.", "DownloadFailedCurl": "{url}: curl non è riuscito a eseguire il download. Codice di uscita: {exit_code}", @@ -437,8 +428,7 @@ "DownloadRootsDir": "Scarica la directory (impostazione predefinita: {env_var})", "DownloadWinHttpError": "{url}: {system_api} non riuscito con codice di uscita {exit_code}", "DownloadedSources": "Origini scaricate per {spec}", - "DownloadingPortableToolVersionX": "Non è stata trovata una versione appropriata di {tool_name} (versione richiesta v{version}) Download della versione portabile {version} di {tool_name} in corso...", - "DownloadingTool": "Download di {tool_name} in corso...\n{url}->{path}", + "DownloadingPortableToolVersionX": "Non è stata trovata una versione appropriata di {tool_name} (versione richiesta v{version}).", "DownloadingUrl": "Download di {url}", "DownloadingVcpkgStandaloneBundle": "Download del bundle autonomo {version}.", "DownloadingVcpkgStandaloneBundleLatest": "Download del bundle autonomo più recente.", @@ -449,7 +439,6 @@ "DuplicatePackagePatternRegistry": "registro di sistema: {url}", "DuplicatedKeyInObj": "Chiave duplicata \"{value}\" in un oggetto", "ElapsedForPackage": "Tempo trascorso per la gestione di {spec}: {elapsed}", - "ElapsedInstallTime": "Tempo totale trascorso: {count}", "ElapsedTimeForChecks": "Tempo necessario per determinare l'esito positivo/negativo: {elapsed}", "EmailVcpkgTeam": "Invia un messaggio di posta elettronica a {url} con qualsiasi feedback.", "EmbeddingVcpkgConfigInManifest": "La possibilità di incorporare `vcpkg-configuration` in un file manifesto è una funzionalità SPERIMENTALE.", @@ -479,25 +468,23 @@ "ErrorWhileFetchingBaseline": "durante il recupero della baseline '\"{value}\"' dal repository {package_name}:", "ErrorWhileParsing": "Si sono verificati errori durante l'analisi di {path}.", "ErrorWhileWriting": "Si è verificato un errore durante la scrittura di {path}.", - "ErrorsFound": "Sono stati trovati gli errori seguenti:", "ExamplesHeader": "Esempi:", "ExceededRecursionDepth": "Profondità ricorsiva superata.", "ExcludedPackage": "{spec} escluso", "ExcludedPackages": "I pacchetti seguenti sono esclusi:", + "ExecutablesRelativeToThePackageDirectoryHere": "i file eseguibili sono relativi a ${{CURRENT_PACKAGES_DIR}} qui", "ExpectedAnObject": "previsto un oggetto", "ExpectedAtMostOneSetOfTags": "Sono stati trovati {count} set di {old_value}.*{new_value} ma ne era previsto al massimo 1, nel blocco:\n{value}", "ExpectedCharacterHere": "previsto '{expected}' qui", "ExpectedDefaultFeaturesList": "previsto ',' o fine del testo nell'elenco delle funzionalità predefinite", "ExpectedDependenciesList": "previsto ',' o fine del testo nell'elenco delle dipendenze", "ExpectedDigitsAfterDecimal": "Cifre previste dopo il separatore decimale", - "ExpectedEof": "previsto eof", "ExpectedExplicitTriplet": "prevista una tripletta esplicita", "ExpectedFailOrSkip": "previsto 'fail', 'skip' o 'pass' qui", "ExpectedFeatureListTerminal": "previsto ',' o ']' nell'elenco delle funzionalità", "ExpectedFeatureName": "previsto nome di funzionalità (deve essere minuscolo, con cifre, '-')", "ExpectedOneSetOfTags": "Sono stati trovati {count} set di {old_value}.*{new_value} ma ne era previsto esattamente 1, nel blocco:\n{value}", "ExpectedOneVersioningField": "previsto un solo campo di controllo delle versioni", - "ExpectedPackageSpecifier": "previsto un identificatore di pacchetto", "ExpectedPathToExist": "È previsto che {path} esista dopo il recupero", "ExpectedPortName": "previsto un nome di porta (deve essere minuscolo, con cifre, '-')", "ExpectedReadWriteReadWrite": "argomento imprevisto: previsto 'read', readwrite' o 'write'", @@ -505,7 +492,6 @@ "ExpectedTripletName": "previsto un nome di tripletta (deve essere minuscolo, con cifre, '-')", "ExportArchitectureReq": "L'esportazione prefab richiede che sia presente almeno una delle architetture seguenti: arm64-v8a, armeabi-v7a, x86_64, x86.", "ExportPrefabRequiresAndroidTriplet": "l'esportazione di prefab richiede una tripletta Android.", - "ExportUnsupportedInManifest": "l'esportazione vcpkg non supporta la modalità manifesto per consentire considerazioni future sulla progettazione. È possibile usare l'esportazione in modalità classica eseguendo vcpkg all'esterno di un progetto basato su manifesto.", "Exported7zipArchive": "Archivio 7zip esportato in: {path}", "ExportedZipArchive": "Archivio ZIP esportato in: {path}", "ExportingAlreadyBuiltPackages": "I pacchetti seguenti sono già compilati e verranno esportati:", @@ -514,14 +500,12 @@ "ExtendedDocumentationAtUrl": "Documentazione estesa disponibile all'indirizzo '{url}'.", "ExtractHelp": "Estrae un archivio.", "ExtractingTool": "Estrazione di {tool_name} in corso...", - "FailedPostBuildChecks": "Sono stati trovati {count} problemi di controllo post-compilazione. Per inviare queste porte ai cataloghi curati, correggere prima il portfile: {path}", + "FailedPostBuildChecks": "Sono stati trovati {count} problemi di controllo post-compilazione. Questi sono in genere causati da bug in portfile.cmake o nel sistema di compilazione upstream. Correggerli prima di inviare la porta al Registro di sistema curato.", "FailedToAcquireMutant": "non è stato possibile acquisire {path} mutante", "FailedToCheckoutRepo": "non è stato possibile estrarre 'versions' dal repository {package_name}", "FailedToDeleteDueToFile": "non è stato possibile eseguire remove_all({value}) a causa di {path}: ", "FailedToDeleteInsideDueToFile": "non è stato possibile eseguire remove_all_inside({value}) a causa di {path}: ", - "FailedToDetermineArchitecture": "impossibile determinare l'architettura di {path}.\n {command_line}", "FailedToDetermineCurrentCommit": "Non è stato possibile determinare il commit corrente:", - "FailedToDownloadFromMirrorSet": "Non è stato possibile eseguire il download dal set di mirror", "FailedToExtract": "Non è stato possibile estrarre \" {path}”:", "FailedToFetchRepo": "Non è stato possibile recuperare {url}.", "FailedToFindPortFeature": "{package_name} non dispone di funzionalità denominate {feature}.", @@ -530,27 +514,20 @@ "FailedToLoadManifest": "Non è stato possibile caricare il manifesto dalla directory {path}", "FailedToLocateSpec": "Non è stato possibile individuare la specifica nel grafico: {spec}", "FailedToObtainDependencyVersion": "Non è possibile trovare la versione della dipendenza desiderata.", - "FailedToObtainLocalPortGitSha": "Non è stato possibile ottenere i valori SHA GIT per le porte locali.", "FailedToObtainPackageVersion": "Impossibile trovare la versione del pacchetto desiderata.", "FailedToOpenAlgorithm": "non è stato possibile aprire {value}", "FailedToParseBaseline": "Non è stato possibile analizzare la baseline: {path}", "FailedToParseCMakeConsoleOut": "Non è stato possibile analizzare l'output della console CMake per individuare i marcatori di inizio/fine del blocco.", "FailedToParseConfig": "Non è stato possibile analizzare la configurazione: {path}", - "FailedToParseControl": "Non è stato possibile analizzare il file CONTROL: {path}", - "FailedToParseManifest": "Non è stato possibile analizzare il file manifesto: {path}", "FailedToParseNoTopLevelObj": "Non è stato possibile analizzare {path}. È previsto un oggetto di primo livello.", "FailedToParseNoVersionsArray": "Non è stato possibile analizzare {path}, previsto un array 'versions'.", "FailedToParseSerializedBinParagraph": "[controllo integrità] Non è stato possibile analizzare un paragrafo binario serializzato.\nAprire un problema in https://github.com/microsoft/vcpkg con l'output seguente:\n{error_msg}\nParagrafo binario serializzato:", + "FailedToParseVersionFile": "Non è possibile analizzare il file di versione: {path}", "FailedToParseVersionXML": "Non è stato possibile analizzare la versione per lo strumento {tool_name}. Stringa della versione: {version}", - "FailedToParseVersionsFile": "non è possibile analizzare il file delle versioni {path}", - "FailedToProvisionCe": "Non è stato possibile effettuare il provisioning di vcpkg-artifacts.", - "FailedToReadParagraph": "Non è stato possibile leggere i paragrafi da {path}", - "FailedToRemoveControl": "Non è stato possibile rimuovere il file di controllo {path}", "FailedToRunToolToDetermineVersion": "Non è stato possibile eseguire {path} per determinare la versione {tool_name}.", - "FailedToStoreBackToMirror": "non è stato possibile archiviare nuovamente nel mirror:", + "FailedToStoreBackToMirror": "Non è stato possibile archiviare {path} in {url}.", "FailedToStoreBinaryCache": "Non è stato possibile archiviare la cache binaria {path}", "FailedToTakeFileSystemLock": "Non è stato possibile accettare il blocco del file system", - "FailedToWriteManifest": "Non è stato possibile scrivere il file manifesto {path}", "FailedVendorAuthentication": "Impossibile autenticare uno o più provider di credenziali {vendor}. Per altri dettagli su come fornire le credenziali, vedere '{url}'.", "FetchingBaselineInfo": "Recupero delle informazioni di base da {package_name}...", "FetchingRegistryInfo": "Recupero delle informazioni del Registro di sistema da {url} ({value})...", @@ -559,11 +536,13 @@ "FileNotFound": "{path}: file non trovato", "FileReadFailed": "Non è stato possibile leggere {count} byte da {path} all'offset {byte_offset}.", "FileSeekFailed": "Impossibile scorrere alla posizione {byte_offset} in {path}.", - "FileSystemOperationFailed": "Operazione del file system non riuscita:", - "FilesContainAbsolutePath1": "In un pacchetto installato non deve essere presente alcun percorso assoluto, ad esempio il seguente:", - "FilesContainAbsolutePath2": "Sono stati trovati percorsi assoluti nei file seguenti:", + "FilesContainAbsolutePath1": "In un pacchetto installato non deve essere presente alcun percorso assoluto, ad esempio il seguente. Per eliminare questo messaggio, aggiungere set (VCPKG_POLICY_SKIP_ABSOLUTE_PATHS_CHECK abilitato)", + "FilesContainAbsolutePath2": "qui trovi i percorsi assoluti", + "FilesContainAbsolutePathPkgconfigNote": "L'aggiunta di una chiamata a 'vcpkg_fixup_pkgconfig()' può correggere i percorsi assoluti nei file con estensione pc", "FilesExported": "File esportati in: {path}", - "FindHelp": "Cerca l'artefatto o la porta indicati. Senza parametri dopo 'artifact' o 'port', visualizza tutto.", + "FilesRelativeToTheBuildDirectoryHere": "i file sono relativi alla directory di compilazione qui", + "FilesRelativeToThePackageDirectoryHere": "i file sono relativi a ${{CURRENT_PACKAGES_DIR}} qui", + "FindCommandFirstArg": "Il primo argomento di 'find' deve essere 'artifact' o 'port' .", "FindVersionArtifactsOnly": "--version non può essere utilizzato con la ricerca vcpkg o la porta di ricerca vcpkg", "FishCompletion": "Il completamento del pesce vcpkg è già stato aggiunto in \"{path}”.", "FloatingPointConstTooBig": "Costante a virgola mobile troppo grande: {count}", @@ -581,6 +560,7 @@ "GeneratingRepo": "Generazione repository {path} in corso...", "GetParseFailureInfo": "Usare '--debug' per ottenere altre informazioni sugli errori di analisi.", "GitCommandFailed": "non è stato possibile eseguire: {command_line}", + "GitCommitUpdateVersionDatabase": "git commit -m \"Aggiorna database della versione\"", "GitFailedToFetch": "non è stato possibile recuperare il valore {value} di riferimento dal repository {url}", "GitFailedToInitializeLocalRepository": "non è stato possibile inizializzare il repository locale {path}", "GitRegistryMustHaveBaseline": "Il registro Git \"{url}\" deve avere un campo \"baseline\" che sia un SHA con commit Git valido (40 caratteri esadecimali).\nPer usare le versioni più recenti correnti, impostare la baseline su HEAD del repository, \"{commit_sha}\".", @@ -623,10 +603,7 @@ "HelpEnvCommand": "Crea un ambiente shell pulito per lo sviluppo o la compilazione", "HelpExampleCommand": "Per altre informazioni (inclusi esempi), vedere https://learn.microsoft.com/vcpkg", "HelpExampleManifest": "Manifesto di esempio:", - "HelpExportCommand": "Esporta un pacchetto.", - "HelpHashCommand": "Esegue l'hash di un file in base a un algoritmo specifico. Valore predefinito: Sha512.", "HelpInstallCommand": "Installa un pacchetto", - "HelpListCommand": "Elenca i pacchetti installati", "HelpManifestConstraints": "I manifesti possono applicare tre tipi di vincoli alle versioni usate", "HelpMinVersion": "Vcpkg selezionerà la versione minima trovata che corrisponde a tutti i vincoli applicabili, inclusa la versione della baseline specificata al livello più alto, nonché qualsiasi vincolo \"version>=\" nel grafico.", "HelpOverrides": "Quando vengono usati come manifesto di livello più alto, ad esempio quando si esegue `vcpkg install` nella directory, gli override consentono a un manifesto di mandare in corto circuito la risoluzione delle dipendenze e specificano esattamente la versione da usare. Possono essere usati per gestire conflitti di versione, ad esempio con le dipendenze `version-string`. Non verranno considerati quando usati come dipendenze in modo transitivo.", @@ -674,7 +651,6 @@ "IllegalPlatformSpec": "Qualificatore di piattaforma non consentito in questo contesto", "ImproperShaLength": "I caratteri SHA512 devono essere composti da 128 caratteri esadecimali: {value}", "IncorrectArchiveFileSignature": "Firma del file di archivio non corretta", - "IncorrectPESignature": "Firma PE non corretta", "InfoSetEnvVar": "Puoi anche impostare {env_var} sul tuo editor preferito.", "InitRegistryFailedNoRepo": "Non è stato possibile creare un Registro di sistema in {path} perché non si tratta di un repository Git root.\nUsa 'git init {command_line}' per creare un repository git in questa cartella.", "InstallCopiedFile": "{path_source} -> {path_destination} completato", @@ -688,8 +664,8 @@ "InstalledBy": "Installato da {path}", "InstalledPackages": "I pacchetti seguenti sono già installati:", "InstalledRequestedPackages": "Tutti i pacchetti richiesti sono attualmente installati.", - "InstallingFromLocation": "-- Installazione della porta dal percorso: {path}", "InstallingMavenFile": "{path} installazione del file Maven", + "InstallingOverlayPort": "installazione della porta di sovrimpressione da qui", "InstallingPackage": "Installing {action_index}/{count} {spec}...", "IntegrateBashHelp": "Abilitare il completamento tramite tabulazione bash. Solo non Windows", "IntegrateFishHelp": "Abilitare il completamento tramite tabulazione fish. Solo non Windows", @@ -725,7 +701,7 @@ "InvalidBundleDefinition": "Definizione di pacchetto non valida.", "InvalidCharacterInFeatureList": "carattere non valido nel nome della funzionalità (deve essere minuscolo, con cifre, '-' o '*')", "InvalidCharacterInFeatureName": "carattere non valido nel nome della funzionalità (deve essere minuscolo, con cifre, '-')", - "InvalidCharacterInPackageName": "carattere non valido nel nome del pacchetto (deve essere minuscolo, con cifre, '-')", + "InvalidCharacterInPortName": "carattere non valido nel nome della porta (deve essere minuscolo, con cifre, '-')", "InvalidCodePoint": "Punto di codice non valido passato a utf8_encoded_code_point_count", "InvalidCodeUnit": "unità di codice non valida", "InvalidCommandArgSort": "Il valore di --sort deve essere 'lessicografico', 'topologico', 'invertito'.", @@ -743,7 +719,6 @@ "InvalidLinkage": "Tipo di collegamento {system_name} non valido: [{value}]", "InvalidLogicExpressionUnexpectedCharacter": "espressione logica non valida, carattere imprevisto", "InvalidLogicExpressionUsePipe": "espressione logica non valida. Usare '|' anziché 'or'", - "InvalidNoVersions": "Il file non contiene versioni.", "InvalidOptionForRemove": "'remove' accetta librerie o '--outdated'", "InvalidPortVersonName": "Trovato nome file della versione della porta non valido: '{path}'.", "InvalidSharpInVersion": "carattere '#' non valido nel testo della versione", @@ -751,6 +726,8 @@ "InvalidString": "Passato utf8 non valido a Value::string(std::string)", "InvalidTriplet": "Triplet non valido: {triplet}", "InvalidUri": "impossibile analizzare l'URI: {value}", + "InvalidValueHashAdditionalFiles": "La variabile VCPKG_HASH_ADDITIONAL_FILES contiene un percorso di file non valido: '{path}'. Il valore deve essere un percorso assoluto di un file esistente.", + "InvalidValuePostPortfileIncludes": "La variabile VCPKG_POST_PORTFILE_INCLUDES contiene un percorso file non valido: '{path}'. Il valore deve essere un percorso assoluto di un file cmake esistente.", "IrregularFile": "il percorso non era un file normale: {path}", "JsonErrorMustBeAnObject": "È previsto che “{path}” sia un oggetto.", "JsonFieldNotObject": "il valore di [\"{json_field}\"] deve essere un oggetto", @@ -786,11 +763,11 @@ "LinkageStaticDebug": "Debug statico (/MTd)", "LinkageStaticRelease": "Rilascio statico (/MT)", "ListHelp": "Elenca le librerie installate", - "LoadingCommunityTriplet": "-- [COMMUNITY] Caricamento della configurazione della tripletta da: {path}", + "LoadedCommunityTriplet": "ha caricato una tripletta della community da qui. Le triplette della community non vengono compilate nel registro curato e hanno quindi meno probabilità di riuscire.", + "LoadedOverlayTriplet": "ha caricato una tripletta di sovrimpressione della community da qui.", "LoadingDependencyInformation": "Caricamento delle informazioni sulle dipendenze per {count} pacchetti in corso...", - "LoadingOverlayTriplet": "-- [OVERLAY] Caricamento della configurazione della tripletta da: {path}", - "LocalPortfileVersion": "Uso delle versioni del file di porta locale. Per aggiornare i file di porta locali, usare `git pull`.", - "ManifestConflict": "Sono stati trovati sia file manifesto che un file CONTROL nella porta \"{path}\"; rinominare l’uno o l'altro", + "LocalPortfileVersion": "Uso delle versioni delle porte locali. Per aggiornare le porte locali, usare 'git pull'.", + "ManifestConflict2": "Sono stati trovati sia file manifesto che un file CONTROL; rinominare l’uno o l'altro", "ManifestFormatCompleted": "Formattazione dei file manifesto completata.", "MismatchedBinParagraphs": "[controllo integrità] Il paragrafo binario serializzato è diverso dal paragrafo binario originale. Aprire un problema in https://github.com/microsoft/vcpkg con l'output seguente:", "MismatchedFiles": "il file da archiviare non corrisponde all'hash", @@ -802,6 +779,7 @@ "MissingAndroidEnv": "variabile di ambiente ANDROID_NDK_HOME mancante", "MissingAndroidHomeDir": "La directory ANDROID_NDK_HOME non esiste: {path}", "MissingArgFormatManifest": "format-manifest è stato passato in --convert-control senza '--all'.\nNon viene eseguita alcuna operazione: i file di controllo passati in modo esplicito vengono convertiti automaticamente.", + "MissingAssetBlockOrigin": "{path} e i download mancanti sono stati bloccati da x-block-origin.", "MissingClosingParen": ") di chiusura mancante", "MissingDependency": "Il pacchetto {spec} è installato, ma la dipendenza {package_name} non lo è.", "MissingExtension": "Estensione '{extension}' mancante.", @@ -810,9 +788,9 @@ "MissingPortSuggestPullRequest": "Se la porta non è elencata, aprire un problema e/o provare a effettuare una richiesta pull.", "MissingRequiredField": "campo obbligatorio mancante '{json_field}' ({json_type})", "MissingRequiredField2": "campo obbligatorio mancante '{json_field}'", + "MissingShaVariable": "Se si usano altre variabili, è necessario utilizzare la variabile {{sha}} nel modello.", "MixingBooleanOperationsNotAllowed": "non è consentito usare insieme & e |; usare () per specificare l'ordine delle operazioni", "MonoInstructions": "Il problema potrebbe essere causato da un'installazione di Mono incompleta. Il framework Mono completo è disponibile in alcuni sistemi tramite `sudo apt install mono-complete`. Gli utenti di Ubuntu 18.04 potrebbero aver bisogno di una versione più recente di Mono, disponibile all’indirizzo https://www.mono-project.com/download/stable/", - "MsiexecFailedToExtract": "msiexec non riuscito durante l'estrazione di \"{path}\" con codice di avvio o uscita {exit_code} e messaggio:", "MultiArch": "Multi-Arch deve essere 'same' mentre è {option}", "MultipleFeatures": "{package_name} dichiara {feature} più volte; assicurarsi che le funzionalità abbiano nomi distinti", "MutuallyExclusiveOption": "--{value} non può essere usato con --{option}.", @@ -822,10 +800,8 @@ "NewOnlyOneVersionKind": "È possibile specificare solo una delle stringhe --version-relaxed, --version-date o --version-string.", "NewSpecifyNameVersionOrApplication": "Specificare --name e --version per produrre un manifesto destinato alle librerie C++ oppure specificare --application per indicare che il manifesto non deve essere usato come porta.", "NewVersionCannotBeEmpty": "--version non può essere vuoto.", - "NoArgumentsForOption": "L'opzione --{option} non accetta un argomento.", "NoError": "nessun errore", "NoInstalledPackages": "Nessun pacchetto installato. Si intendeva \"cerca\"?", - "NoLocalizationForMessages": "Nessun messaggio localizzato per gli elementi seguenti: ", "NoOutdatedPackages": "Non sono presenti pacchetti obsoleti.", "NoRegistryForPort": "nessun Registro di sistema configurato per la porta {package_name}", "NoUrlsAndHashSpecified": "Nessun URL specificato per scaricare SHA: {sha}", @@ -866,7 +842,6 @@ "PackageManipulationHeader": "Manipolazione del pacchetto", "PackageRootDir": "Directory dei pacchetti (sperimentale)", "PackagesToInstall": "Verranno compilati e installati i pacchetti seguenti:", - "PackagesToInstallDirectly": "I pacchetti seguenti verranno installati direttamente:", "PackagesToModify": "I pacchetti aggiuntivi (*) verranno modificati per completare l'operazione.", "PackagesToRebuild": "I pacchetti seguenti verranno ricompilati:", "PackagesToRebuildSuggestRecurse": "Se si è certi di voler ricompilare i pacchetti precedenti, eseguire il comando con l'opzione --recurse.", @@ -882,47 +857,50 @@ "ParseFeatureNameError": "\"{package_name}\" non è un nome di funzionalità valido. I nomi delle funzionalità devono essere alfanumerici minuscoli+hypen e non riservati (per altre informazioni, vedere {url}).", "ParseIdentifierError": "\"{valore}\" non è un identificatore valido. Gli identificatori devono essere alfanumerici minuscoli + trattini e devono essere non prenotati (vedere {url} per altre informazioni)", "ParsePackageNameError": "\"{package_name}\" non è un nome di pacchetto valido. I nomi dei pacchetti devono essere alfanumerici minuscoli + trattini e non devono essere prenotati (per altre informazioni, vedere {url})", + "ParsePackageNameNotEof": "è prevista la fine dell'analisi dell'input del nome di un pacchetto; questo significa in genere che il carattere indicato non può trovarsi in un nome di porta. I nomi delle porte devono essere alfanumerici minuscoli+trattino e non riservati (per altre informazioni, vedere {url}).", "ParsePackagePatternError": "\"{package_name}\" non è un modello di pacchetto valido. I modelli di pacchetto devono usare un solo carattere jolly (*) che deve essere l'ultimo carattere del criterio (per altre informazioni, vedere {url})", + "ParseQualifiedSpecifierNotEof": "è prevista la fine dell'analisi dell'input di un pacchetto specifico; questo significa in genere che il carattere indicato non può trovarsi in un pacchetto specifico. I nomi di porta, tripletta e funzionalità sono tutti alfanumerici minuscoli+trattino.", + "ParseQualifiedSpecifierNotEofSquareBracket": "è prevista la fine dell'analisi dell'input di una specifica del pacchetto; si intendeva invece {version_spec}?", "PathMustBeAbsolute": "Il valore della variabile di ambiente X_VCPKG_REGISTRIES_CACHE non è assoluto: {path}", - "PerformingPostBuildValidation": "-- Esecuzione della convalida post-compilazione", - "PortBugAllowRestrictedHeaders": "In circostanze eccezionali, questo criterio può essere disabilitato tramite {env_var}", - "PortBugBinDirExists": "In una compilazione statica non dovrebbe essere presente alcuna directory bin\\, ma è presente {path}.", - "PortBugDebugBinDirExists": "In una compilazione statica non dovrebbe essere presente alcuna directory debug\\bin\\, ma è presente {path}.", - "PortBugDebugShareDir": "/debug/share non deve esistere. Riorganizzare tutti i file importanti, quindi usare\nil file(REMOVE_RECURSE \"${{CURRENT_PACKAGES_DIR}}/debug/share\")", - "PortBugDllAppContainerBitNotSet": "Il bit del contenitore di app deve essere impostato per le applicazioni di Windows Store. Le DLL seguenti non hanno il bit del contenitore di app impostato:", - "PortBugDllInLibDir": "Le seguenti dll sono state trovate in /lib o /debug/lib. Spostarle rispettivamente in /bin o /debug/bin.", - "PortBugDuplicateIncludeFiles": "I file di inclusione non devono essere duplicati nella directory /debug/include. Se non è possibile disabilitare questa opzione nel progetto cmake, usare\nil file (REMOVE_RECURSE \"${{CURRENT_PACKAGES_DIR}}/debug/include\")", - "PortBugFoundCopyrightFiles": "I file seguenti sono potenziali file di copyright:", - "PortBugFoundDebugBinaries": "Trovati {count} file binari di debug:", - "PortBugFoundDllInStaticBuild": "Le DLL non dovrebbero essere presenti in una compilazione statica, ma sono state trovate le DLL seguenti:", - "PortBugFoundEmptyDirectories": "Non dovrebbero essere presenti directory vuote in {path}. Sono state trovate le seguenti directory vuote:", - "PortBugFoundExeInBinDir": "I seguenti EXE sono stati trovati in /bin o /debug/bin. Gli EXE non sono destinazioni di distribuzione valide.", - "PortBugFoundReleaseBinaries": "Trovati {count} file binari di versione:", - "PortBugIncludeDirInCMakeHelperPort": "La cartella /include esiste in una porta helper di cmake. Ciò non è corretto, perché dovrebbero essere installati solo i file cmake", - "PortBugInspectFiles": "Per ispezionare i file {extension}, usare:", - "PortBugInvalidCrtLinkage": "I file binari seguenti devono usare il CRT {expected}.", - "PortBugInvalidCrtLinkageEntry": "{path} si collega con:", - "PortBugKernel32FromXbox": "La tripla selezionata è destinata a Xbox, ma le DLL seguenti si collegano a kernel32. Queste DLL non possono essere caricate su Xbox, dove kernel32 non è presente. Questo problema è in genere causato dal collegamento a kernel32.lib anziché a una libreria generica appropriata, ad esempio onecore_apiset.lib o xgameplatform.lib.", - "PortBugMergeLibCMakeDir": "La cartella /lib/cmake deve essere unita a /debug/lib/cmake e spostata in /share/{package_name}/cmake. Usare la funzione helper `vcpkg_cmake_config_fixup()` dalla porta vcpkg-cmake-config.`", - "PortBugMismatchedNumberOfBinaries": "Numero di file binari di debug e di versione non corrispondente.", - "PortBugMisplacedCMakeFiles": "I file cmake seguenti sono stati trovati all'esterno di /share/{spec}. Inserire i file cmake in /share/{spec}.", - "PortBugMisplacedFiles": "I file seguenti sono inseriti in {path}:", - "PortBugMisplacedFilesCont": "I file non possono essere presenti in queste directory.", - "PortBugMisplacedPkgConfigFiles": "Le directory pkgconfig devono essere di tipo share/pkgconfig (solo per le librerie di intestazione), lib/pkgconfig o lib/debug/pkgconfig. Sono stati trovati i seguenti file pkgconfig fuori posto:", + "PerformingPostBuildValidation": "Esecuzione della convalida post-compilazione", + "PortBugBinDirExists": "${{CURRENT_PACKAGES_DIR}}/{path} esiste ma non deve essere presente in una compilazione statica. Per eliminare questo messaggio, aggiungere set (VCPKG_POLICY_DLLS_IN_STATIC_LIBRARY abilitato)", + "PortBugDebugShareDir": "${{CURRENT_PACKAGES_DIR}}/debug/share non deve esistere. Riorganizzare tutti i file importanti, quindi eliminare gli eventuali file rimanenti aggiungendo 'file(REMOVE_RECURSE \"${{CURRENT_PACKAGES_DIR}}/debug/share\")'. Per eliminare questo messaggio, aggiungere set (VCPKG_POLICY_ALLOW_DEBUG_SHARE abilitato)", + "PortBugDllAppContainerBitNotSet": "Il bit del contenitore di app deve essere impostato per tutte le DLL nelle app di Windows Store e le richieste triple destinate a Windows Store, ma le DLL seguenti non sono state compilate con il set di bit. Questo indica in genere che i flag del linker della toolchain non vengono propagati correttamente o che il linker in uso non supporta l'opzione /APPCONTAINER. Per eliminare questo messaggio, aggiungere set (VCPKG_POLICY_SKIP_APPCONTAINER_CHECK abilitato)", + "PortBugDllInLibDir": "Le seguenti dll sono state trovate in ${{CURRENT_PACKAGES_DIR}}/lib o ${{CURRENT_PACKAGES_DIR}} /debug/lib. Spostarle rispettivamente in ${{CURRENT_PACKAGES_DIR}}/bin o ${{CURRENT_PACKAGES_DIR}}/debug/bin.", + "PortBugDuplicateIncludeFiles": "${{CURRENT_PACKAGES_DIR}}/debug/include non deve esistere. Per eliminare questo messaggio, aggiungere set (VCPKG_POLICY_ALLOW_DEBUG_INCLUDE abilitato)", + "PortBugDuplicateIncludeFilesFixIt": "Se questa directory è stata creata da un sistema di compilazione che non consente la disabilitazione dell'installazione delle intestazioni nel debug, eliminare la directory duplicata con il file (REMOVE_RECURSE \"${{CURRENT_PACKAGES_DIR}}/debug/include\")", + "PortBugFoundCopyrightFiles": "I file seguenti sono potenziali file di copyright", + "PortBugFoundDebugBinaries": "Di seguito sono riportati i file binari di debug:", + "PortBugFoundDllInStaticBuild": "Le DLL non dovrebbero essere presenti in una compilazione statica, ma sono state trovate le DLL seguenti. Per eliminare questo messaggio, aggiungere set (VCPKG_POLICY_DLLS_IN_STATIC_LIBRARY abilitato)", + "PortBugFoundEmptyDirectories": "Non devono essere installate directory vuote. Le directory vuote non sono rappresentabili per diversi provider di cache binari, repository GIT e non sono considerati output di compilazione semantica. È consigliabile creare un file normale all'interno di ogni directory vuota oppure eliminarlo con il seguente CMake. Per eliminare questo messaggio, aggiungere set (VCPKG_POLICY_ALLOW_EMPTY_FOLDERS abilitato)", + "PortBugFoundExeInBinDir": "I file eseguibili seguenti sono stati trovati in ${{CURRENT_PACKAGES_DIR}}/bin o ${{CURRENT_PACKAGES_DIR}}/debug/bin. Gli eseguibili non sono destinazioni di distribuzione valide. Se questi eseguibili sono strumenti di compilazione, provare a usare 'vcpkg_copy_tools'. Per eliminare questo messaggio, aggiungere set (VCPKG_POLICY_ALLOW_EXES_IN_BIN abilitato)", + "PortBugFoundReleaseBinaries": "Di seguito sono riportati i file binari di versione:", + "PortBugIncludeDirInCMakeHelperPort": "La cartella ${{CURRENT_PACKAGES_DIR}}/include esiste in una porta helper di CMake. Ciò non è corretto, perché dovrebbero essere installati solo i file CMake. Per eliminare questo messaggio, rimuovere set(VCPKG_POLICY_CMAKE_HELPER_PORT abilitato).", + "PortBugInvalidCrtLinkageCrtGroup": "I file binari seguenti devono essere collegati solo con: {expected}", + "PortBugInvalidCrtLinkageEntry": "{path} collegamenti con: {actual}", + "PortBugInvalidCrtLinkageHeader": "I file binari compilati da questa porta collegano runtime C (\"CCT\") incoerenti con quelli richiesti dalla tripletta e dalla struttura di distribuzione. Se la tripletta ha lo scopo di usare solo la versione CRT, è necessario aggiungere set (VCPKG_POLICY_ONLY_RELEASE_CRT abilitato) al file tripletta con estensione cmake. Per eliminare completamente questo controllo, aggiungere set(VCPKG_POLICY_SKIP_CRT_LINKAGE_CHECK abilitato) al file tripletta con estensione cmake se è a livello di tripletta o a portfile.cmake se è specifico della porta. È possibile esaminare i file binari con: dumpbin.exe /directives mylibfile.lib", + "PortBugKernel32FromXbox": "La tripletta selezionata è destinata a Xbox, ma le DLL seguenti si collegano a kernel32. Queste DLL non possono essere caricate su Xbox, dove kernel32 non è presente. Questo problema è in genere causato dal collegamento a kernel32.lib anziché a una libreria ombrello adatta, ad esempio onecore_apiset.lib o xgameplatform.lib. È possibile esaminare le dipendenze di una DLL con 'dumpbin.exe /dependents mylibfile.dll'. Per eliminare questo messaggio, aggiungere set (VCPKG_POLICY_ALLOW_KERNEL32_FROM_XBOX abilitato)", + "PortBugMergeLibCMakeDir": "Questa porta crea ${{CURRENT_PACKAGES_DIR}}/lib/cmake e/o ${{CURRENT_PACKAGES_DIR}}/debug/lib/cmake, che devono essere uniti e spostati in ${{CURRENT_PACKAGES_DIR}}/share/${{PORT}}/cmake. Usare la funzione helper vcpkg_cmake_config_fixup() dalla porta vcpkg-cmake-config. Per eliminare questo messaggio, aggiungere set (VCPKG_POLICY_SKIP_LIB_CMAKE_MERGE_CHECK abilitato)", + "PortBugMismatchingNumberOfBinaries": "numero di file binari di debug e di versione non corrispondente. Questo indica spesso una gestione non corretta del debug o della versione in portfile.cmake o nel sistema di compilazione. Se si intende produrre solo componenti di versione per questa tripletta, è necessario aggiungere set(VCPKG_BUILD_TYPE release) al relativo file con estensione cmake. Per eliminare questo messaggio, aggiungere set (VCPKG_POLICY_MISMATCHED_NUMBER_OF_BINARIES abilitato)", + "PortBugMisplacedCMakeFiles": "Questa porta installa i file CMake seguenti in posizioni in cui i file di CMake non sono previsti. I file CMake devono essere installati in ${{CURRENT_PACKAGES_DIR}}/share/${{PORT}}. Per eliminare questo messaggio, aggiungere set (VCPKG_POLICY_SKIP_MISPLACED_CMAKE_FILES_CHECK abilitato)", + "PortBugMisplacedFiles": "I seguenti file normali vengono installati nei percorsi in cui i file normali potrebbero non essere installati. Devono essere installati in una sottodirectory. Per eliminare questo messaggio, aggiungere set (VCPKG_POLICY_SKIP_MISPLACED_REGULAR_FILES_CHECK abilitato)", + "PortBugMisplacedPkgConfigFiles": "Sono state installate le directory pkgconfig spostate seguenti. I file pkgconfig spostati non verranno trovati correttamente da pkgconf o pkg-config. Le directory pkgconfig devono essere ${{CURRENT_PACKAGES_DIR}}/share/pkgconfig (solo per librerie indipendenti dall'architettura/solo intestazioni), ${{CURRENT_PACKAGES_DIR}}/lib/pkgconfig (per le dipendenze di versione) o ${{CURRENT_PACKAGES_DIR}}/debug/lib/pkgconfig (per le dipendenze di debug). Per eliminare questo messaggio, aggiungere set (VCPKG_POLICY_SKIP_PKGCONFIG_CHECK abilitato)", + "PortBugMissingCMakeHelperPortFile": "Il file ${{CURRENT_PACKAGES_DIR}}/share/${{PORT}}/vcpkg-port-config.cmake non esiste. Questo file deve esistere per le porte helper di CMake. Per eliminare questo messaggio, rimuovere set(VCPKG_POLICY_CMAKE_HELPER_PORT abilitato)", "PortBugMissingDebugBinaries": "File binari di debug non trovati.", - "PortBugMissingFile": "Il file /{path} non esiste. Questo file deve esistere per le porte helper di CMake.", - "PortBugMissingImportedLibs": "Librerie di importazione non presenti in {path}.\nSe necessario, aggiungere la riga seguente nel portfile:\nimpostare(VCPKG_POLICY_DLLS_WITHOUT_LIBS abilitato)", - "PortBugMissingIncludeDir": "La cartella /include è vuota o non è presente. Ciò indica che la libreria non è stata installata correttamente.", - "PortBugMissingLicense": "La licenza software deve essere disponibile all'indirizzo ${{CURRENT_PACKAGES_DIR}}/share/{package_name}/copyright", - "PortBugMissingProvidedUsage": "La porta ha fornito \"usage\" ma non è stata installata in /share/{package_name}/usage. Aggiungere la riga seguente nel portfile:", + "PortBugMissingImportedLibs": "Le librerie di importazione per le DLL installate sembrano mancanti. Se necessario, aggiungere set (VCPKG_POLICY_DLLS_WITHOUT_LIBS abilitato)", + "PortBugMissingIncludeDir": "La cartella ${{CURRENT_PACKAGES_DIR}}/include è vuota o non è presente. Questo in genere indica che le intestazioni non sono installate correttamente. Se si tratta di una porta helper di CMake, aggiungere set (VCPKG_POLICY_CMAKE_HELPER_PORT abilitato). Se non si tratta di una porta helper di CMake, ma questa operazione è intenzionale, aggiungere set (VCPKG_POLICY_EMPTY_INCLUDE_FOLDER abilitato) per eliminare questo messaggio.", + "PortBugMissingLicense": "la licenza non è installata in ${{CURRENT_PACKAGES_DIR}}/share/${{PORT}}/copyright. Per risolvere il problema, aggiungere una chiamata a vcpkg_install_copyright. Per eliminare questo messaggio, aggiungere set (VCPKG_POLICY_SKIP_COPYRIGHT_CHECK abilitato)", + "PortBugMissingLicenseFixIt": "Provare ad aggiungere: {value}", + "PortBugMissingProvidedUsage": "questa porta contiene un file denominato \"usage\" ma non è stato installato in ${{CURRENT_PACKAGES_DIR}}/share/${{PORT}}/usage. Se questo file non deve essere un testo di utilizzo, valutare la possibilità di scegliere un altro nome. in caso contrario, installarlo. Per eliminare questo messaggio, aggiungere set (VCPKG_POLICY_SKIP_USAGE_INSTALL_CHECK abilitato)", "PortBugMissingReleaseBinaries": "File binari della versione non trovati.", "PortBugMovePkgConfigFiles": "È possibile spostare i file pkgconfig con comandi simili a:", - "PortBugOutdatedCRT": "Rilevato CRT dinamico obsoleto nei file seguenti:", - "PortBugRemoveBinDir": "Se non è possibile disabilitare la creazione di bin e/o di debug bin, usare questo comando nel portfile per rimuoverli", - "PortBugRemoveEmptyDirectories": "Se una directory dovrebbe essere popolata ma non lo è, ciò può indicare un errore nel portfile.\nSe le directory non sono necessarie e la loro creazione non può essere disabilitata, usare una procedura simile a questa nel portfile per rimuoverle:", + "PortBugOutdatedCRT": "Sono state installate DLL che si collegano a DLL C RunTime (\"CRT\") obsolete. Le DLL installate devono essere collegate a un CRT in-support. È possibile esaminare le dipendenze di una DLL con ‘dumpbin.exe /dependents mylibfile.dll’. Se si usa una tripla personalizzata destinata a una CRT precedente, aggiungere set (VCPKG_POLICY_ALLOW_OBSOLETE_MSVCRT abilitato) al file con estensione cmake della tripla. Per eliminare questo messaggio per questa porta, aggiungere set (VCPKG_POLICY_ALLOW_OBSOLETE_MSVCRT abilitato)", + "PortBugRemoveBinDir": "se non è possibile disabilitare la creazione di queste directory, è possibile aggiungere quanto segue in portfile.cmake per rimuoverle", "PortBugRemoveEmptyDirs": "file (REMOVE_RECURSE directory vuote lasciate dalle ridenominazioni precedenti)", - "PortBugRestrictedHeaderPaths": "Le intestazioni con restrizioni seguenti possono impedire la corretta compilazione del runtime C++ di base e di altri pacchetti. In circostanze eccezionali, questo criterio può essere disabilitato impostando la variabile CMake VCPKG_POLICY_ALLOW_RESTRICTED_HEADERS in portfile.cmake.", - "PortBugSetDllsWithoutExports": "Le DLL senza esportazioni sono probabilmente un bug dello script di compilazione. Se necessario, aggiungere la riga seguente nel portfile:\nimpostare(VCPKG_POLICY_DLLS_WITHOUT_EXPORTS abilitato)\nLe DLL seguenti non hanno esportazioni:", + "PortBugRestrictedHeaderPaths": "L'uso delle intestazioni con restrizioni seguenti può impedire la corretta compilazione del runtime C++ di base e di altri pacchetti. Questi elementi devono essere rinominati o archiviati in una sottodirectory. In circostanze eccezionali, questo avviso può essere eliminato aggiungendo set (VCPKG_POLICY_ALLOW_RESTRICTED_HEADERS abilitato)", + "PortBugRestrictedHeaderPathsNote": "le intestazioni sono relative a ${{CURRENT_PACKAGES_DIR}}/include qui", + "PortBugSetDllsWithoutExports": "le DLL seguenti sono state compilate senza esportazioni. Le DLL senza esportazioni sono probabilmente bug nello script di compilazione. Se lo scopo è questo, aggiungere set (VCPKG_POLICY_DLLS_WITHOUT_EXPORTS abilitato)", + "PortDeclaredHere": "{package_name} è dichiarato qui", "PortDependencyConflict": "La porta {package_name} ha le seguenti dipendenze non supportate:", "PortDoesNotExist": "{package_name} non esiste", "PortMissingManifest2": "Manifesto della porta {package_name} mancante (nessun file vcpkg.json o CONTROL)", @@ -932,7 +910,6 @@ "PortVersionControlMustBeANonNegativeInteger": "\"Port-Version\" deve essere un numero intero non negativo", "PortVersionMultipleSpecification": "Non è possibile combinare \"port_version\" con un carattere '#' incorporato nella versione", "PortsAdded": "Sono state aggiunte le porte {count} seguenti:", - "PortsDiffHelp": "L'argomento deve essere un ramo/tag/hash da estrarre.", "PortsNoDiff": "Non sono state apportate modifiche alle porte tra i due commit.", "PortsRemoved": "Sono state rimosse le porte {count} seguenti:", "PortsUpdated": "Le porte {count} seguenti sono state aggiornate:", @@ -957,7 +934,6 @@ "RestoredPackagesFromNuGet": "Sono stati ripristinati {count} pacchetti da NuGet in {elapsed}. Usare --debug per visualizzare altri dettagli.", "ResultsHeader": "RISULTATI", "ScriptAssetCacheRequiresScript": "argomenti previsti: la configurazione dell'asset 'x-script' richiede esattamente il modello exec come argomento", - "SearchHelp": "L'argomento deve essere una sottostringa da cercare oppure nessun argomento per visualizzare tutte le librerie.", "SecretBanner": "***SEGRETO***", "SeeURL": "Per altre informazioni, vedere {url}.", "SerializedBinParagraphHeader": "\nParagrafo binario serializzato", @@ -966,6 +942,7 @@ "ShaPassedWithConflict": "SHA512 è superato, ma anche --skip-sha512 è superato; eseguire solo l’uno o l'altro.", "ShallowRepositoryDetected": "vcpkg è stato clonato come repository superficiale in: {path}\nRiprovare con un clone vcpkg completo.", "SkipClearingInvalidDir": "La cancellazione del contenuto di {path} verrà ignorata perché non era una directory.", + "SkippingPostBuildValidationDueTo": "La convalida post-compilazione verrà ignorata a causa di {cmake_var}", "SourceFieldPortNameMismatch": "Il campo 'Source' all'interno del file CONTROL o il campo \"name\" all'interno del file vcpkg.json ha il nome {package_name} e non corrisponde alla directory delle porte {path}.", "SpecifiedFeatureTurnedOff": "La funzionalità '{command_name}' è stata disattivata in modo specifico, ma è stato specificato --{option}.", "SpecifyHostArch": "Tripletta host. Vedere 'tripletta host vcpkg' (impostazione predefinita: {env_var})", @@ -973,10 +950,8 @@ "StartCodeUnitInContinue": "è stata trovata un'unità di codice iniziale in posizione continua", "StoreOptionMissingSha": "L'opzione --store non è valida senza sha512", "StoredBinariesToDestinations": "File binari archiviati in {count} destinazioni in {elapsed}.", - "StoredBinaryCache": "Cache binaria archiviata: \"{path}\"", "SuccessfulyExported": "{package_name} esportato in {path}", "SuggestGitPull": "Il risultato potrebbe essere obsoleto. Eseguire 'git pull' per ottenere i risultati più recenti.", - "SuggestResolution": "Per tentare di risolvere tutti gli errori contemporaneamente, eseguire:\nvcpkg {command_name} --{option}", "SuggestStartingBashShell": "Assicurarsi di aver avviato una nuova shell Bash per rendere effettiva la modifica.", "SupportedPort": "La porta {package_name} è supportata.", "SwitchUsedMultipleTimes": "l'opzione '{option}' è stata specificata più volte", @@ -1004,7 +979,6 @@ "UnexpectedByteSize": "Previsti {expected} byte da scrivere, ma {actual} sono stati scritti.", "UnexpectedCharExpectedCloseBrace": "Carattere imprevisto; prevista proprietà o parentesi graffa chiusa", "UnexpectedCharExpectedColon": "Carattere imprevisto; previsti due punti", - "UnexpectedCharExpectedComma": "Carattere imprevisto; prevista virgola o parentesi graffa chiusa", "UnexpectedCharExpectedName": "Carattere imprevisto; previsto nome proprietà", "UnexpectedCharExpectedValue": "Carattere imprevisto; valore previsto", "UnexpectedCharMidArray": "Carattere imprevisto nella matrice", @@ -1023,15 +997,11 @@ "UnexpectedEOFMidKeyword": "EOF imprevisto nella parola chiave", "UnexpectedEOFMidString": "EOF imprevisto nella stringa", "UnexpectedEOFMidUnicodeEscape": "Fine del file imprevista nella sequenza di escape Unicode", - "UnexpectedErrorDuringBulkDownload": "si è verificato un errore imprevisto durante il download in blocco.", "UnexpectedEscapeSequence": "Continuazione sequenza escape imprevista", - "UnexpectedExtension": "Estensione archivio imprevista: '{extension}'.", - "UnexpectedFeatureList": "elenco di funzionalità imprevisto", "UnexpectedField": "campo non previsto '{json_field}'", "UnexpectedFieldSuggest": "campo imprevisto '{json_field}', si intendeva '{value}'?", "UnexpectedFormat": "Il formato previsto è [{expected}], ma è [{actual}].", "UnexpectedOption": "opzione imprevista: {option}", - "UnexpectedPlatformExpression": "espressione di piattaforma imprevista", "UnexpectedPortName": "la porta {expected} è dichiarata come {actual} in {path}", "UnexpectedPortversion": "\"port-version\" imprevisto senza un campo di controllo delle versioni", "UnexpectedSwitch": "opzione imprevista: {option}", @@ -1040,9 +1010,8 @@ "UnknownBaselineFileContent": "voce baseline non riconoscibile; previsto 'port:triplet=(fail|skip)'", "UnknownBinaryProviderType": "tipo di provider binario sconosciuto: i provider validi sono 'clear', 'default', 'nuget', 'nugetconfig', 'nugettimeout', 'interactive', 'x-azblob', 'x-gcs', 'x-aws', 'x-aws-config', 'http' e 'files'", "UnknownBooleanSetting": "impostazione booleana sconosciuta per {option}: \"{value}\". I valori validi sono '', '1', '0', 'ON', 'OFF', 'TRUE' e 'FALSE'.", - "UnknownOptions": "Opzioni sconosciute per il comando '{command_name}':", "UnknownParameterForIntegrate": "Parametro '{value}' sconosciuto per l'integrazione.", - "UnknownPolicySetting": "Impostazione sconosciuta per il criterio '{value}': {option}", + "UnknownPolicySetting": "Impostazione sconosciuta di {cmake_var}: {value}. I valori validi per i criteri sono '', 'disabled' e 'enabled'.", "UnknownSettingForBuildType": "Impostazione sconosciuta per VCPKG_BUILD_TYPE {option}. Le impostazioni valide sono '', 'debug' e 'release'.", "UnknownTool": "vcpkg non ha una definizione di questo strumento per questa piattaforma.", "UnknownTopic": "argomento sconosciuto {value}", @@ -1054,7 +1023,6 @@ "UnsupportedFeatureSupportsExpressionWarning": "{feature_name} è supportato solo in '{supports_expression}', che non corrisponde a {triplet}. Questo in genere indica che si sono verificati errori di compilazione noti o problemi di runtime durante la compilazione di altre piattaforme. Continuare comunque a causa di `--allow-unsupported`.", "UnsupportedPort": "La porta {package_name} non è supportata.", "UnsupportedPortDependency": "- la dipendenza {value} non è supportata.", - "UnsupportedShortOptions": "le opzioni brevi non sono supportate: '{value}'", "UnsupportedSyntaxInCDATA": "]]> non è supportata nel blocco CDATA", "UnsupportedSystemName": "Impossibile eseguire il mapping di VCPKG_CMAKE_SYSTEM_NAME '{system_name}' a una piattaforma vcvarsall. I nomi di sistema supportati sono '', 'Windows' e 'WindowsStore'.", "UnsupportedToolchain": "nella tripla {triplet}: non è possibile trovare una toolchain valida per l'architettura di destinazione richiesta {arch}.\nL'istanza di Visual Studio selezionata si trova in: {path}\nLe combinazioni di toolchain disponibili sono: {list}", @@ -1068,21 +1036,18 @@ "UpdateBaselineUpdatedBaseline": "registro aggiornato '{url}': baseline '{old_value}' -> '{new_value}'", "UpgradeInManifest": "L'aggiornamento aggiorna un'installazione in modalità classica e pertanto non supporta la modalità manifesto. È consigliabile aggiornare le dipendenze aggiornando la baseline a un valore corrente con vcpkg x-update-baseline ed eseguendo l'installazione di vcpkg.", "UpgradeRunWithNoDryRun": "Se si è certi di voler ricompilare i pacchetti precedenti, eseguire il comando con l'opzione --nessun test-controllato.", - "UploadedBinaries": "File binari caricati in {count}.{vendor}.", - "UploadedPackagesToVendor": "Sono stati caricati {count} pacchetti a {vendor} in {elapsed}", "UploadingBinariesToVendor": "Caricamento dei file binari per '{spec}' nell'origine '{vendor}' \"{path}\".", - "UploadingBinariesUsingVendor": "Caricamento dei file binari per '{spec}' con '{vendor}' \"{path}\".", + "UsageInstallInstructions": "è possibile installare il file di utilizzo con il seguente CMake", + "UsageTextHere": "il file di utilizzo è qui", "UseEnvVar": "-- Utilizzo di {env_var} nelle variabili di ambiente.", "UserWideIntegrationDeleted": "L'integrazione a livello di utente non è installata.", "UserWideIntegrationRemoved": "L'integrazione a livello di utente è stata rimossa.", - "UsingCommunityTriplet": "-- Uso della tripletta della community {triplet}. Non è garantito il completamento di questa configurazione della tripletta.", "UsingManifestAt": "Utilizzo del file manifesto in {path}.", "Utf8ConversionFailed": "Non è stato possibile eseguire la conversione in UTF-8", "VSExaminedInstances": "Sono state considerate le istanze di Visual Studio seguenti:", "VSExaminedPaths": "Per le istanze di Visual sono stati esaminati i percorsi seguenti:", "VSNoInstances": "Non è stato possibile individuare un'istanza di Visual Studio completa", "VcpkgCeIsExperimental": "vcpkg-artifacts è sperimentale e potrebbe cambiare in qualsiasi momento.", - "VcpkgCommitTableHeader": "VCPKG Commit", "VcpkgCompletion": "Il completamento di vcpkg {value} è già stato importato in \"{path}” file.\nLe voci seguenti sono state trovate:", "VcpkgDisallowedClassicMode": "Impossibile individuare un manifesto (vcpkg.json) sopra la directory di lavoro corrente.\nQuesta distribuzione vcpkg non dispone di un'istanza in modalità classica.", "VcpkgHasCrashed": "vcpkg si è arrestato in modo anomalo. Creare un problema in https://github.com/microsoft/vcpkg contenente un breve riepilogo delle operazioni che si stava tentando di eseguire e le informazioni seguenti.", @@ -1095,17 +1060,22 @@ "VcpkgUsage": "utilizzo: vcpkg [--switches] [--options=values] [arguments] @response_file", "VcvarsRunFailed": "non è stato possibile eseguire vcvarsall.bat per ottenere un ambiente di Visual Studio", "VcvarsRunFailedExitCode": "durante il tentativo di ottenere un ambiente di Visual Studio, vcvarsall.bat ha restituito {exit_code}", - "VersionBaselineMismatch": "La versione più recente è {expected}, ma il file baseline contiene {actual}.\nEseguire:\nvcpkg x-add-version {package_name}\ngit add versions\ngit commit -m \"Aggiorna database delle versioni\"\nper aggiornare la versione baseline.", + "VersionBaselineMatch": "{version_spec} corrisponde alla baseline corrente", + "VersionBaselineMismatch": "A {package_name} è assegnata {actual}, ma la porta locale è {expected}", "VersionBuiltinPortTreeEntryMissing": "nessuna voce del database delle versioni per {package_name} in {expected}; usare la versione dell'albero delle porte estratta ({actual}).", "VersionCommandHeader": "vcpkg versione del programma di gestione pacchetti {version}\n\nPer informazioni sulla licenza, vedere LICENSE.txt.", "VersionConflictXML": "Previsto {path} versione: [{expected_version}], attuale [{actual_version}]. Eseguire di nuovo bootstrap-vcpkg.", + "VersionConstraintNotInDatabase1": "il vincolo \"version>=\" a {package_name} nomi versione {version} che non esiste nel database delle versioni. Tutte le versioni devono essere presenti nel database delle versioni per essere interpretate da vcpkg.", + "VersionConstraintNotInDatabase2": "provare a rimuovere il vincolo di versione o a scegliere un valore dichiarato qui", + "VersionConstraintOk": "tutti i vincoli di versione sono coerenti con il database della versione", "VersionConstraintPortVersionMustBePositiveInteger": "port-version (dopo '#') in \"version>=\" deve essere un numero intero non negativo", - "VersionConstraintUnresolvable": "Non è possibile risolvere un vincolo minimo per la dipendenza {package_name} da {spec}.\nLa dipendenza non è stata trovata nella baseline a indicare che il pacchetto non esisteva in quel momento. Questo problema può essere risolto fornendo una versione di override esplicita tramite il campo \"overrides\" o aggiornando la baseline.\nPer altre informazioni, vedere 'vcpkg help versioning'.", "VersionConstraintViolated": "la dipendenza {spec} deve essere almeno la versione {expected_version}, ma è attualmente {actual_version}.", "VersionDatabaseEntryMissing": "nessuna voce di versione per {package_name} in {version}.", - "VersionDatabaseFileMissing": "In {package_name} manca un file di database delle versioni in {path}\nEseguire:\nvcpkg x-add-version {package_name}\nper creare il file delle versioni.", + "VersionDatabaseFileMissing": "questa porta non è presente nel database di versione", + "VersionDatabaseFileMissing2": "il file di database della versione deve essere qui", + "VersionDatabaseFileMissing3": "eseguire '{command_line}' per creare il file di database della versione", "VersionGitEntryMissing": "nessuna voce del database delle versioni per {package_name} in {version}.\nVersioni disponibili:", - "VersionInDeclarationDoesNotMatch": "La versione dichiarata nel file non corrisponde alla versione estratta: {version}", + "VersionInDeclarationDoesNotMatch": "{git_tree_sha} è dichiarato come {expected}, ma sembra contenere {actual}", "VersionIncomparable1": "conflitto di versione in {spec}: {constraint_origin} obbligatorio {expected}, che non può essere confrontato con la versione di base {actual}.", "VersionIncomparable2": "{version_spec} ha lo schema {new_scheme}", "VersionIncomparable3": "Per risolvere il problema, aggiungere un override esplicito alla versione preferita, ad esempio:", @@ -1117,17 +1087,29 @@ "VersionInvalidSemver": "'{version}' non è una versione semantica valida. Consultare .", "VersionMissing": "previsto un campo di controllo delle versioni (uno tra version, version-date, version-semver o version-string)", "VersionMissingRequiredFeature": "{version_spec} non dispone della funzionalità necessaria {feature} richieste da {constraint_origin}", - "VersionNotFound": "{expected} non disponibile, è disponibile solo {actual}", - "VersionNotFoundInVersionsFile": "La versione {version} non trovata nel file delle versioni per {package_name}.\nEseguire:\nvcpkg x-add-version {package_name}\nper aggiungere la nuova versione della porta.", + "VersionNotFoundInVersionsFile2": "{version_spec} non è stato trovato nel database delle versioni", + "VersionNotFoundInVersionsFile3": "la versione deve essere in questo file", + "VersionNotFoundInVersionsFile4": "eseguire '{command_line}' per aggiungere la nuova versione della porta", + "VersionOverrideNotInVersionDatabase": "l'override della versione {package_name} non esiste nel database della versione; la porta esiste?", + "VersionOverrideVersionNotInVersionDatabase1": "l'override della versione dei nomi {package_name} {version} che non esiste nel database delle versioni. L'installazione di questa porta al livello superiore avrà esito negativo perché tale versione non sarà risolvibile.", + "VersionOverrideVersionNotInVersionDatabase2": "provare a rimuovere l'override della versione o a scegliere un valore dichiarato qui", + "VersionOverwriteVersion": "è possibile sovrascrivere {version_spec} con i valori locali corretti eseguendo:", "VersionRejectedDueToBaselineMissing": "{path} è stato rifiutato perché usa \"{json_field}\" e non include una \"baseline predefinita\". Per risolvere questo problema, rimuovere gli usi di \"{json_field}\" o aggiungere una \"baseline predefinita\".\nPer altre informazioni, vedere 'vcpkg help versioning'.", "VersionRejectedDueToFeatureFlagOff": "{path} è stato rifiutato perché usa \"{json_field}\" e il flag della funzionalità 'versions' è disabilitato. Per risolvere questo problema, rimuovere \"{json_field}\" o abilitare il flag della funzionalità 'versions'.\nPer altre informazioni, vedere 'vcpkg help versioning'.", - "VersionSchemeMismatch": "Il database delle versioni dichiara {version} come {expected}, ma {path} la dichiara come {actual}. Le versioni devono essere univoche, anche se dichiarate con schemi diversi.\nEseguire:\nvcpkg x-add-version {package_name} --overwrite-version\nper sovrascrivere lo schema dichiarato nel database delle versioni con quello dichiarato nella porta.", - "VersionShaMismatch": "{version} è dichiarato con {expected}, ma la porta locale ha un SHA diverso {actual}.\nAggiornare i campi della versione della porta e quindi eseguire:\nvcpkg x-add-version {package_name}\ngit add versions\ngit commit -m \"Aggiorna database delle versioni\"\nper aggiungere la nuova versione.", - "VersionShaMissing": "durante la convalida di {package_name}, Git SHA mancante.\nEseguire:\ngit add \"{path}\"\ngit commit -m \"wip\"\nvcpkg x-add-version {package_name}\ngit add versions\ngit commit --amend -m \"[{package_name}] Aggiungi nuova porta\"\nper eseguire il commit della nuova porta e crearne il file di versione.", + "VersionSchemeMismatch1": "{version} è dichiarato {expected}, ma {package_name} è dichiarato con {actual}", + "VersionSchemeMismatch1Old": "{version} è dichiarato {expected}, ma {package_name}@{git_tree_sha} è dichiarato con {actual}", + "VersionSchemeMismatch2": "le versioni devono essere univoche, anche se dichiarate con schemi diversi", + "VersionShaMismatch1": "L'albero GIT {version_spec} {git_tree_sha} non corrisponde alla directory delle porte", + "VersionShaMismatch2": "la directory delle porte ha l'albero GIT {git_tree_sha}", + "VersionShaMismatch3": "se {version_spec} è già pubblicato, aggiornare il file con una nuova versione o una nuova versione della porta, eseguirne il commit, quindi aggiungere la nuova versione eseguendo:", + "VersionShaMismatch4": "se {version_spec} non è ancora pubblicato, sovrascrivere l'albero GIT precedente eseguendo:", + "VersionShaMissing1": "impossibile determinare l'albero GIT della directory delle porte. Questo problema è in genere causato da modifiche di cui non è stato eseguito il commit.", + "VersionShaMissing2": "è possibile eseguire il commit delle modifiche e aggiungerle al database delle versioni eseguendo:", + "VersionShaMissing3": "WIP", + "VersionShaMissing4": "[{package_name}] Aggiungi nuova porta", "VersionSharpMustBeFollowedByPortVersion": "'#' nel testo della versione deve essere seguito dalla versione della porta", "VersionSharpMustBeFollowedByPortVersionNonNegativeInteger": "'#' nel testo della versione deve essere seguito dalla versione della porta (un numero intero non negativo)", "VersionSpecMismatch": "Non è stato possibile caricare la porta perché le versioni sono incoerenti. Il file \"{path}\" contiene la versione {actual_version}, ma il database della versione indica che deve essere {expected_version}.", - "VersionTableHeader": "Versione", "VersionVerifiedOK": "{version_spec} è correttamente nel database della versione ({git_tree_sha})", "WaitingForChildrenToExit": "In attesa della chiusura dei processi figlio...", "WaitingToTakeFilesystemLock": "in attesa del blocco del file system su {path}...", @@ -1136,8 +1118,7 @@ "WhileCheckingOutBaseline": "durante il checkout della baseline {commit_sha}", "WhileCheckingOutPortTreeIsh": "durante l'estrazione della porta {package_name} con l'albero GIT {git_tree_sha}", "WhileGettingLocalTreeIshObjectsForPorts": "durante il recupero degli oggetti ad albero locali per le porte", - "WhileLoadingLocalPort": "durante il tentativo di caricare la porta locale {package_name}", - "WhileLoadingPortFromGitTree": "durante il tentativo di caricare la porta da: {commit_sha}", + "WhileLoadingBaselineVersionForPort": "durante il caricamento della versione baseline per {package_name}", "WhileLoadingPortVersion": "durante il caricamento di {version_spec}", "WhileLookingForSpec": "durante la ricerca di {spec}:", "WhileParsingVersionsForPort": "durante l'analisi delle versioni per {package_name} da {path}", @@ -1165,7 +1146,7 @@ "descriptionShouldBeOfTypestringFound$": "la descrizione deve essere di tipo 'string'. Trovato '${p0}'", "optionsShouldBeASequenceFound$": "le opzioni devono essere una sequenza. Trovato '${p0}'", "DuplicateKeysDetectedInManifest$": "Chiavi duplicate rilevate nel manifesto: '${p0}'", - "noPostscriptFileRerunWithTheVcpkgShellFunctionRatherThanExecutable": "Nessun file PostScript: eseguire di nuovo con la funzione shell vcpkg anziché con l'eseguibile", + "noPostscriptFileRunVcpkgshellWithTheSameArguments": "nessun file postscript: eseguire vcpkg-shell con gli stessi argomenti", "DuplicateDefine$DuringActivationNewValueWillReplaceOld": "Definizione duplicata ${p0} durante l'attivazione. Il nuovo valore sostituirà quello precedente.", "DuplicateToolDeclared$DuringActivationNewValueWillReplaceOld": "Strumento duplicato dichiarato ${p0} durante l'attivazione. Il nuovo valore sostituirà quello precedente.", "DuplicateAliasDeclared$DuringActivationNewValueWillReplaceOld": "Alias duplicato dichiarato ${p0} durante l'attivazione. Il nuovo valore sostituirà quello precedente.", @@ -1257,7 +1238,7 @@ "MultipleArtifactsSpecifiedButNotAnEqualNumberOf$Switches": "Sono stati specificati più artefatti, ma non un numero uguale di opzioni ${p0}", "TriedToAddAnArtifact$$ButCouldNotDetermineTheRegistryToUse": "È stato tentato di aggiungere un artefatto [${p0}]:${p1}, ma non è stato possibile determinare il Registro di sistema da usare.", "TriedToAddRegistry$As$ButItWasAlready$PleaseAdd$ToThisProjectManuallyAndReattempt": "Ho provato ad aggiungere il Registro di sistema ${p0} come ${p1}, ma era già ${p2}. Aggiungi ${p3} a questo progetto manualmente e riprova.", - "RunvcpkgActivateToApplyToTheCurrentTerminal": "Esegui \\'vcpkg activate\\' per applicarlo al terminale corrente", + "RunvcpkgshellActivateToApplyToTheCurrentTerminal": "Eseguire \\'vcpkg-shell activate\\' per applicarlo al terminale corrente", "DownloadsFolderCleared$": "Cartella download cancellata (${p0}) ", "InstalledArtifactFolderCleared$": "Cartella artefatto installata cancellata (${p0}) ", "CacheFolderCleared$": "Cartella cache cancellata (${p0}) ", diff --git a/locales/messages.ja.json b/locales/messages.ja.json index 4ca0e0f48d..b7d1c02bd4 100644 --- a/locales/messages.ja.json +++ b/locales/messages.ja.json @@ -46,7 +46,6 @@ "AVersionOfAnyType": "任意の種類のバージョン", "AddArtifactOnlyOne": "'{command_line}' は一度に 1 つの成果物のみを追加できます。", "AddCommandFirstArg": "追加する最初のパラメーターは 'artifact' または 'port' である必要があります。", - "AddFirstArgument": "「{command_line}」の最初の引数は「artifact」または「port」である必要があります。", "AddPortRequiresManifest": "'{command_line}' にはアクティブなマニフェスト ファイルが必要です。", "AddPortSucceeded": "vcpkg.json ファイルへのポートの追加に成功しました。", "AddRecurseOption": "削除する場合は、--recurse オプションを使用してコマンドを実行します。", @@ -54,12 +53,11 @@ "AddVersionAddedVersionToFile": "バージョン {version} を {path} に追加しました", "AddVersionArtifactsOnly": "--version は成果物のみであり、vcpkg 追加ポートでは使用できません", "AddVersionCommitChangesReminder": "変更をコミットしたことを覚えていますか?", - "AddVersionCommitResultReminder": "結果をコミットすることを忘れないでください。", "AddVersionDetectLocalChangesError": "Git 状態出力で予期しない形式が存在するため、ローカルの変更の検出をスキップしています", "AddVersionFileNotFound": "必要なファイル {path} が見つかりませんでした", "AddVersionFormatPortSuggestion": "'{command_line}' を実行してファイルをフォーマットします", "AddVersionIgnoringOptionAll": "ポート名引数が指定されたため、--{option} を無視しています", - "AddVersionLoadPortFailed": "ポート {package_name} を読み込めません", + "AddVersionInstructions": "次のコマンドを実行して、{package_name} の現在のバージョンを自動的に追加できます。", "AddVersionNewFile": "(新しいファイル)", "AddVersionNewShaIs": "新しい SHA: {commit_sha}", "AddVersionNoFilesUpdated": "更新されたファイルはありません", @@ -70,8 +68,8 @@ "AddVersionPortFilesShaChanged": "{package_name} のチェックイン ファイルが変更されましたが、バージョンは更新されませんでした", "AddVersionPortFilesShaUnchanged": "{package_name} のチェックイン ファイルはバージョン {version} から変更されていません", "AddVersionPortHasImproperFormat": "{package_name} が正しく書式設定されていません", - "AddVersionSuggestNewVersionScheme": "ポート \"{package_name}\" で \"{old_scheme}\" ではなくバージョン スキーム \"{new_scheme}\" を\n使用します。このチェックを無効にするには、--{option} を使用します。", - "AddVersionUnableToParseVersionsFile": "バージョン ファイル {path} を解析できません", + "AddVersionSuggestVersionDate": "\"{package_name}\" のバージョン形式では \"version-string\" が使用されますが、その形式は \"version-date\" として使用できます。この形式が実際に ISO 8601 の日付を意図している場合は、形式を \"version-date\" に変更して、このコマンドを再実行します。それ以外の場合は、このコマンドを再実行し、--skip-version-format-check を追加して、このチェックを無効にします。", + "AddVersionSuggestVersionRelaxed": "\"{package_name}\" のバージョン形式では \"version-string\" が使用されますが、形式は \"version\" として許容されます。このポートのバージョンが、穏やかなバージョンの規則を使用して並べ替え可能な場合は、形式を \"version\" に変更して、このコマンドを再実行します。緩やかなバージョンの規則では、各数値コンポーネントによってバージョンが並べ替えられます。その後、ダッシュ サフィックスを持つバージョンは、以前に辞書式で並べ替えられます。プラス記号のビルド タグは無視されます。例:\n1.0 < 1.1-alpha < 1.1-b < 1.1 < 1.1.1 < 1.2+build = 1.2 < 2.0\n特に、ダッシュ付きのサフィックスは、後ではなく *前に* 並べ替えられます。1.0-anything < 1.0\nこの並べ替え順序は、セマンティック バージョニング (http://semver.org を参照) で選択した順序と同じであることに注意してください。\nこのポートのバージョンがこれらの規則によって順序付けされていない場合は、このコマンドを再実行し、--skip-version-format-check を追加して、このチェックを無効にします。", "AddVersionUncommittedChanges": "{package_name} にコミットされていない変更があります", "AddVersionUpdateVersionReminder": "バージョンまたはポートのバージョンを更新したことを覚えていますか?", "AddVersionUseOptionAll": "引数のない {command_name} では、すべてのポート バージョンを一度に更新するために --{option} を渡す必要があります", @@ -82,7 +80,7 @@ "AdditionalPackagesToRemove": "この操作を完了するには、追加のパッケージ (*) を削除する必要があります。", "AllFormatArgsRawArgument": "書式指定文字列 \"{value}\" に未加工の書式引数が含まれています", "AllFormatArgsUnbalancedBraces": "書式指定文字列 \"{value}\" の大かっこが対応していません", - "AllPackagesAreUpdated": "インストールされているすべてのパッケージは、ローカル ポート ファイルで最新の状態です。", + "AllPackagesAreUpdated": "インストールされているすべてのパッケージは最新です。", "AlreadyInstalled": "{spec} は既にインストールされています", "AlreadyInstalledNotHead": "{spec} は既にインストールされています -- HEAD からビルドしていません", "AmbiguousConfigDeleteConfigFile": "マニフェストと構成ファイルの両方によって提供される vcpkg 構成があいまいです。\n-- 構成ファイル {path} の削除", @@ -110,7 +108,6 @@ "ApplocalProcessing": "依存関係を配置しています", "ArtifactsBootstrapFailed": "vckpg-artifacts がインストールされておらず、ブートストラップできませんでした。", "ArtifactsNotInstalledReadonlyRoot": "vcpkg-artifacts がインストールされておらず、VCPKG_ROOT が読み取り専用と見なされているためインストールできません。'one liner' を使用して vcpkg を再インストールすればこの問題を解決できる可能性があります。", - "ArtifactsNotOfficialWarning": "非公式の vcpkg-artifacts を使用しています ", "ArtifactsOptionIncompatibility": "--{option} は成果物の検索には影響しません。", "ArtifactsOptionJson": "環境変数とその他のプロパティが記録される JSON ファイルへの完全パス", "ArtifactsOptionMSBuildProps": "MSBuild プロパティが書き込まれるファイルへの完全なパス", @@ -118,12 +115,10 @@ "ArtifactsOptionVersionMismatch": "--version スイッチの数は、名前付き成果物の数と一致する必要があります", "ArtifactsSwitchARM": "成果物を取得するときにホストの検出を ARM に強制します", "ArtifactsSwitchARM64": "成果物を取得するときにホストの検出を ARM64 に強制します", - "ArtifactsSwitchAll": "すべての既知の成果物レジストリを更新します", "ArtifactsSwitchAllLanguages": "成果物を取得するときにすべての言語ファイルを取得します", "ArtifactsSwitchForce": "成果物が既に取得されている場合は、強制的に再取得します", "ArtifactsSwitchFreebsd": "成果物を取得するときにホストの検出を FreeBSD に強制します", "ArtifactsSwitchLinux": "成果物を取得するときにホストを Linux に強制的に検出します", - "ArtifactsSwitchNormalize": "非推奨の修正プログラムを適用します", "ArtifactsSwitchOnlyOneHostPlatform": "1 つのホスト プラットフォーム (--x64、--x86、--arm、--arm64) のみを設定できます。", "ArtifactsSwitchOnlyOneOperatingSystem": "1 つのオペレーティング システム (--windows、--osx、--linux、--freebsd) のみを設定できます。", "ArtifactsSwitchOnlyOneTargetPlatform": "1 つのターゲット プラットフォーム (--target:x64、--target:x86、--target:arm、--target:arm64) のみを設定できます。", @@ -135,9 +130,12 @@ "ArtifactsSwitchWindows": "成果物を取得するときにホストの検出を Windows に強制します", "ArtifactsSwitchX64": "成果物を取得するときにホストの検出を x64 に強制します", "ArtifactsSwitchX86": "成果物を取得するときにホストの検出を x86 に強制します", + "AssetCacheHit": "{path} のアセット キャッシュ ヒット; {url} からダウンロードしました", + "AssetCacheMiss": "アセット キャッシュ ミス; {url} からダウンロードしています", + "AssetCacheMissBlockOrigin": "{path} のアセット キャッシュ ミスです。ダウンロードは、x-block-origin によってブロックされています。", "AssetCacheProviderAcceptsNoArguments": "予期しない引数: '{value}' は引数を受け付けませんでした", + "AssetCacheSuccesfullyStored": "{url} への {path} を正常に保存しました。", "AssetSourcesArg": "資産キャッシュ ソース。'vcpkg help assetcaching' を参照してください", - "AttemptingToFetchPackagesFromVendor": "{vendor} から {count} 個のパッケージをフェッチしようとしています", "AttemptingToSetBuiltInBaseline": "vcpkg-configuration.json で default-registry をオーバーライドしながら、vcpkg.json で builtin-baseline を設定しようとしています。\nvcpkg-configuration.json の default-registry が使用されます。", "AuthenticationMayRequireManualAction": "1 つ以上の {vendor} 資格情報プロバイダーが手動操作を要求しました。対話機能を許可するには、バイナリ ソース 'interactive' を追加します。", "AutoSettingEnvVar": "-- \"{env_var}\"環境変数を自動的に \"{url}\"に設定しています。", @@ -147,12 +145,11 @@ "AzUrlAssetCacheRequiresBaseUrl": "予期しない引数: アセット構成 'azurl' にはベース URL が必要です", "AzUrlAssetCacheRequiresLessThanFour": "予期しない引数: アセット構成 'azurl' には 4 個未満の引数が必要です", "BaselineConflict": "マニフェスト ファイルで vcpkg-configuration.default-registry を指定すると、組み込みのベースラインと競合します。\nこれらの競合する設定のいずれかを削除してください。", - "BaselineFileNoDefaultField": "コミット {commit_sha} のベースライン ファイルが無効でした (\"default\" フィールドがありません)。", "BaselineGitShowFailed": "コミット '{commit_sha}' からベースラインをチェックアウトしているときに、`git show` versions/baseline.json に失敗しました。これは、'git fetch' を使用してコミットをフェッチすることで修正できる可能性があります。", - "BaselineMissing": "ベースライン バージョンが見つかりません。以下を実行してください:\nvcpkg x-add-version {package_name}\ngit add versions\ngit commit -m \"Update version database\"\n{version} をベースライン バージョンとして設定します。", - "BinaryCacheVendorHTTP": "HTTP サーバー", + "BaselineMissing": "{package_name} にはバージョンが割り当てられていません", + "BinariesRelativeToThePackageDirectoryHere": "バイナリは ${{CURRENT_PACKAGES_DIR}} に対して相対的です", "BinarySourcesArg": "バイナリ キャッシュ ソース。'vcpkg help binarycaching' を参照してください", - "BinaryWithInvalidArchitecture": "{path}\n 予期された値: {expected} が {actual} でした", + "BinaryWithInvalidArchitecture": "{path} は {arch} 用に構築されています", "BuildAlreadyInstalled": "{spec} は既にインストールされています。ビルドする前に {spec} を削除してください。", "BuildDependenciesMissing": "ビルド コマンドには、すべての依存関係が既にインストールされている必要があります。\n次の依存関係がありません:", "BuildResultBuildFailed": "BUILD_FAILED", @@ -170,22 +167,19 @@ "BuildTroubleshootingMessage1": "'git pull' と 'vcpkg update' で最新のポート ファイルを使用していることを確認してください。\nその後、次の場所で既知の問題を確認します:", "BuildTroubleshootingMessage2": "次の場所で新しい問題を送信できます:", "BuildTroubleshootingMessage3": "バグ報告のタイトルに「[{package_name}] ビルド エラー」を含め、バグの説明に次のバージョン情報を含め、関連する失敗ログを上記から添付します。", - "BuildTroubleshootingMessage4": "問題を報告するときは、{path} の事前に入力されたテンプレートを使用してください。", "BuildTroubleshootingMessageGH": "実行して問題を提出することもできます (GitHub CLI をインストールする必要があります)。", "BuildingFromHead": "HEAD から {spec} をビルドしています...", "BuildingPackage": "{spec} をビルドしています...", "BuildingPackageFailed": "{spec} のビルドに失敗しました: {build_result}", "BuildingPackageFailedDueToMissingDeps": "次の依存関係がないためです。", "BuiltInTriplets": "組み込みのトリプレット:", - "BuiltWithIncorrectArchitecture": "次のファイルは、正しくないアーキテクチャ用にビルドされました:", - "CISettingsExclude": "スキップするポートのコンマ区切りの一覧", + "BuiltWithIncorrectArchitecture": "トリプレットはバイナリが {arch} 用にビルドされることを要求していますが、次のバイナリは別のアーキテクチャ用にビルドされました。これは通常、ツールチェーン情報がバイナリのビルド システムに誤って伝達されていることを意味します。このメッセージを非表示にするには、set(VCPKG_POLICY_SKIP_ARCHITECTURE_CHECK enabled) を追加します", "CISettingsOptCIBase": "ci.baseline.txt ファイルへのパス。ポートをスキップし、回帰を検出するために使用されます。", "CISettingsOptExclude": "スキップするポートのコンマ区切りの一覧", "CISettingsOptFailureLogs": "エラー ログのコピー先のディレクトリ", "CISettingsOptHostExclude": "ホスト トリプレットのスキップするポートのコンマ区切りの一覧", "CISettingsOptOutputHashes": "決定されたすべてのパッケージ ハッシュを出力するファイル", "CISettingsOptParentHashes": "変更されたパッケージのセットを減らすために、親 CI 状態のパッケージ ハッシュを読み取るファイル", - "CISettingsOptSkippedCascadeCount": "--exclude とサポートの数が、この数値と完全に等しい数スキップすることをアサートします", "CISettingsOptXUnit": "結果を XUnit 形式で出力するファイル", "CISettingsVerifyGitTree": "各 Git ツリー オブジェクトが宣言されたバージョンと一致することを確認します (これは非常に低速です)", "CISettingsVerifyVersion": "エラーだけでなく、各ポートの結果を出力します", @@ -200,8 +194,6 @@ "CMakeTargetsUsageHeuristicMessage": "# これはヒューリスティックに生成され、正しくない可能性があります", "CMakeToolChainFile": "CMake プロジェクトでは次を使用する必要があります: \"-DCMAKE_TOOLCHAIN_FILE={path}\"", "CMakeUsingExportedLibs": "CMake プロジェクトでエクスポートされたライブラリを使用するには、CMake コマンド ラインに {value} を追加します。", - "CheckedOutGitSha": "チェックアウトされた Git SHA: {commit_sha}", - "CheckedOutObjectMissingManifest": "チェックアウトされたオブジェクトにコントロール ファイルまたは vcpkg.json ファイルが含まれていません。", "ChecksFailedCheck": "vcpkg がクラッシュしました。その他の詳細はありません。", "ChecksUnreachableCode": "到達できないコードに達しました", "ChecksUpdateVcpkg": "bootstrap-vcpkg を再実行して vcpkg を更新すると、このエラーが解決される可能性があります。", @@ -235,14 +227,11 @@ "CmdBuildExternalExample2": "vcpkg build-external zlib2 C:\\path\\to\\dir\\with\\vcpkg.json", "CmdBuildExternalSynopsis": "パスからポートをビルドする", "CmdBuildSynopsis": "ポートをビルドします", - "CmdCacheExample1": "vcpkg cache ", - "CmdCacheSynopsis": "パッケージの仕様の一覧表示", "CmdCheckSupportExample1": "vcpkg x-check-support ", "CmdCheckSupportSynopsis": "ポートをビルドせずにサポートされているかどうかをテストします", "CmdCiCleanSynopsis": "CI の実行を準備するためにすべてのファイルをクリアします", "CmdCiSynopsis": "CI テストのすべてのポートのビルドを試行します", "CmdCiVerifyVersionsSynopsis": "バージョン データベースの整合性を確認します", - "CmdContactOptSurvey": "現在の vcpkg アンケートに対して既定のブラウザーを起動する", "CmdCreateExample1": "vcpkg create ", "CmdCreateExample2": "vcpkg create my-fancy-port https://example.com/sources.zip", "CmdCreateExample3": "vcpkg create ", @@ -265,7 +254,7 @@ "CmdEditOptBuildTrees": "ポート固有の buildtree サブフォルダーにエディターを開きます", "CmdEnvOptions": "インストールされている {path} を {env_var} に追加します", "CmdExportEmptyPlan": "0 個のパッケージのエクスポートの作成を拒否しています。エクスポートする前にパッケージをインストールしてください。", - "CmdExportExample1": "vcpkg export [--nuget] [--directory=out_dir]", + "CmdExportExample1": "vcpkg export [--nuget] [--output-dir=out_dir]", "CmdExportOpt7Zip": "7zip (.7z) ファイルにエクスポートします", "CmdExportOptChocolatey": "Chocolatey パッケージをエクスポートする (試験段階)", "CmdExportOptDebug": "プレハブデバッグを有効にする", @@ -376,8 +365,10 @@ "CmdZExtractExample2": "vcpkg z-extract source.zip source_dir --strip 2", "CmdZExtractOptStrip": "すべてのパスから削除する先頭ディレクトリの数", "CommandEnvExample2": "vcpkg env \"ninja -C \" --triplet x64-windows", - "CommandFailed": "コマンド: \n{command_line}\nに失敗しました。次の結果が返されました:", + "CommandFailed": "コマンド:\n{command_line}\n次の出力で失敗しました:", + "CommandFailedCode": "コマンド:\n{command_line}\n終了コード {exit_code} と次の出力で失敗しました:", "CommunityTriplets": "コミュニティ トリプレット:", + "CompilerPath": "コンパイラが見つかりました: {path}", "CompressFolderFailed": "フォルダー \"{path}\":を圧縮できませんでした:", "ComputingInstallPlan": "インストール プランを計算しています...", "ConfigurationErrorRegistriesWithoutBaseline": "{path} で定義されている構成が無効です。\n\nレジストリを使用するには、既定のレジストリにベースラインが設定されているか、既定のレジストリが null である必要があります。\n\n詳細については、{url} を参照してください。", @@ -386,11 +377,10 @@ "ConsideredVersions": "次の実行可能ファイルが検討されましたが、{version} のバージョン要件により破棄されました。", "ConstraintViolation": "以下の制約違反が見つかりました。", "ContinueCodeUnitInStart": "開始位置で continue コード単位が見つかりました", - "ControlAndManifestFilesPresent": "マニフェスト ファイルとコントロール ファイルの両方がポート ディレクトリに存在します: {path}", "ControlCharacterInString": "文字列内の制御文字", "ControlSupportsMustBeAPlatformExpression": "\"Supports\" はプラットフォーム式である必要があります", - "CopyrightIsDir": "`{path}` はディレクトリとして使用されなくなりました。", - "CorruptedDatabase": "データベースが破損しています。", + "CopyrightIsDir": "このポートは ${{CURRENT_PACKAGES_DIR}}/share/${{PORT}}/copyright をディレクトリに設定しますが、ファイルにする必要があります。vcpkg_install_copyright を使用して、個別の著作権ファイルを 1 つに結合することを検討してください。このメッセージを非表示にするには、set(VCPKG_POLICY_SKIP_COPYRIGHT_CHECK enabled) を追加します", + "CorruptedDatabase": "vcpkg のインストール データベースが壊れています。これは vcpkg のバグか、'インストール済み' ディレクトリの内容が予期しない方法で変更されたかのいずれかです。'インストール済み' ディレクトリを削除し、使用するものを再インストールすることで、この問題を解決できる場合があります。この問題が継続的に発生する場合は、https://github.com/microsoft/vcpkg にバグを報告してください。", "CorruptedInstallTree": "vcpkg の 'installed' ツリーが破損しています。", "CouldNotDeduceNugetIdAndVersion": "ファイル名 {path} から nuget ID とバージョンを推測できませんでした", "CouldNotFindBaselineInCommit": "{package_name} の {commit_sha} で {url} にベースラインが見つかりませんでした。", @@ -403,14 +393,12 @@ "CreatingNugetPackage": "NuGet パッケージを作成しています...", "CreatingZipArchive": "zip アーカイブを作成しています...", "CreationFailed": "{path} を作成できませんでした。", - "CurlFailedToExecute": "curl を実行できませんでした。終了コード{exit_code}。", "CurlFailedToPut": "curl は終了コード {exit_code} でファイルを {url} に配置できませんでした。", "CurlFailedToPutHttp": "curl は終了コード {exit_code} と http コード {value} でファイルを {url} に配置できませんでした。", - "CurlReportedUnexpectedResults": "curl から vcpkg に対して予期しない結果が報告されました。vcpkg を続行できません。\n次のテキストに機密情報がないか確認して、Microsoft/vcpkg GitHub で問題を作成し解決に役立ててください。\ncmd: {command_line}\n=== curl の出力 ===\n{actual}\n=== curl の出力の終わり ===", - "CurlReturnedUnexpectedResponseCodes": "curl が要求に対して予期された数と異なる数の応答コードを返しました。予期された {expected}) に対して ({actual}。", + "CurlResponseTruncatedRetrying": "curl が部分的な応答を返しました。{value} ミリ秒待ってから、もう一度お試しください", + "CurlTimeout": "curl は、タイムアウトおよび再試行後であっても、要求されたすべての HTTP 操作を実行できませんでした。最後のコマンド ライン: {command_line}", "CurrentCommitBaseline": "現在のコミットをベースラインとして使用できます。これは次のとおりです。\n\t\"builtin-baseline\": \"{commit_sha}\"", "CycleDetectedDuring": "サイクルが {spec} 中に検出されました:", - "DateTableHeader": "日付", "DefaultBinaryCachePlatformCacheRequiresAbsolutePath": "環境変数 VCPKG_DEFAULT_BINARY_CACHE はディレクトリである必要があります (旧: {path})", "DefaultBinaryCacheRequiresAbsolutePath": "環境変数 VCPKG_DEFAULT_BINARY_CACHE は絶対変数である必要があります (旧: {path})", "DefaultBinaryCacheRequiresDirectory": "環境変数 VCPKG_DEFAULT_BINARY_CACHE はディレクトリである必要があります (旧: {path})", @@ -419,15 +407,18 @@ "DefaultFeatureIdentifier": "既定の機能の名前は識別子である必要があります", "DefaultFlag": "既定で --{option} をオンにしています。", "DefaultRegistryIsArtifact": "既定のレジストリを成果物レジストリにすることはできません。", - "DefaultTripletChanged": "2023 年 9 月のリリースでは、vcpkg ライブラリのデフォルトのトリプレットは、x86-windows から検出されたホストのトリプレット ({triplet}) に変更されます。以前の動作の場合は、--triplet x86-windows を追加します。このメッセージを非表示にするには、--triplet {triplet} を追加します。", "DeleteVcpkgConfigFromManifest": "-- または、マニフェスト ファイル {path} から \"vcpkg-configuration\" を削除します。", "DependencyFeatureCore": "\"コア\" 機能を依存関係の機能一覧に含めることはできません。既定の機能を無効にするには、代わりに \"default-features\": false を追加してください。", "DependencyFeatureDefault": "\"既定\" 機能を依存関係の機能一覧に含めることはできません。既定の機能を有効にするには、代わりに \"default-features\": true を追加してください。", "DependencyGraphCalculation": "依存関係グラフの送信が有効になっています。", "DependencyGraphFailure": "依存関係グラフの送信に失敗しました。", "DependencyGraphSuccess": "依存関係グラフの送信に成功しました。", + "DependencyInFeature": "依存関係は {feature} という名前の機能に含まれています", + "DependencyNotInVersionDatabase": "依存関係 {package_name} がバージョン データベースに存在しません。そのポートは存在しますか?", "DeprecatedPrefabDebugOption": "--prefab-debug は現在非推奨です。", "DetectCompilerHash": "トリプレット「{triplet}」のコンパイラ ハッシュを検出しています...", + "DirectoriesRelativeToThePackageDirectoryHere": "ディレクトリは ${{CURRENT_PACKAGES_DIR}} に対して相対的です", + "DllsRelativeToThePackageDirectoryHere": "DLL は ${{CURRENT_PACKAGES_DIR}} に対して相対的です", "DocumentedFieldsSuggestUpdate": "これらのフィールドを認識する必要がある場合は、vcpkg ツールの更新をお試しください。", "DownloadAvailable": "このツールのダウンロード可能なコピーを使用でき、{env_var} の設定を解除すると使用できます。", "DownloadFailedCurl": "{url}: curl は終了コード {exit_code} でダウンロードできませんでした", @@ -437,8 +428,7 @@ "DownloadRootsDir": "ディレクトリをダウンロードします (既定値: {env_var})", "DownloadWinHttpError": "{url}: {system_api} が終了コード {exit_code} で失敗しました", "DownloadedSources": "{spec} 用にダウンロードされたソース", - "DownloadingPortableToolVersionX": "{tool_name} の適切なバージョンが見つかりませんでした (v{version} が必要です) ポータブル {tool_name} {version} をダウンロードしています...", - "DownloadingTool": "{tool_name} をダウンロードしています...\n{url}->{path}", + "DownloadingPortableToolVersionX": "適切なバージョンの {tool_name} が見つかりませんでした (v{version} が必須)。", "DownloadingUrl": "{url} をダウンロードしています", "DownloadingVcpkgStandaloneBundle": "スタンドアロン バンドル {version} をダウンロードしています。", "DownloadingVcpkgStandaloneBundleLatest": "最新のスタンドアロン バンドルをダウンロードしています。", @@ -449,7 +439,6 @@ "DuplicatePackagePatternRegistry": "レジストリ: {url}", "DuplicatedKeyInObj": "オブジェクト内の重複するキー \"{value}\"", "ElapsedForPackage": "{spec} の処理の経過時間: {elapsed}", - "ElapsedInstallTime": "経過した総時間: {count}", "ElapsedTimeForChecks": "成功/失敗を判断する時間: {elapsed}", "EmailVcpkgTeam": "フィードバックは {url} にメールでお送りください。", "EmbeddingVcpkgConfigInManifest": "マニフェスト ファイルへの `vcpkg-configuration` の埋め込みは実験的な機能です。", @@ -479,25 +468,23 @@ "ErrorWhileFetchingBaseline": "リポジトリ {package_name} からベースライン `\"{value}\"` をフェッチ中:", "ErrorWhileParsing": "{path} の解析中にエラーが発生しました。", "ErrorWhileWriting": "{path} の書き込み中にエラーが発生しました。", - "ErrorsFound": "次のエラーが見つかりました:", "ExamplesHeader": "例:", "ExceededRecursionDepth": "再帰深度を超過しました。", "ExcludedPackage": "{spec} を除外しました", "ExcludedPackages": "次のパッケージは除外されています。", + "ExecutablesRelativeToThePackageDirectoryHere": "実行可能ファイルは ${{CURRENT_PACKAGES_DIR}} に対して相対的です", "ExpectedAnObject": "オブジェクトが必要です", "ExpectedAtMostOneSetOfTags": "{old_value} の {count} セットが見つかりました。*{new_value} ですが、block:\n{value} でほぼ 1 が予測されます", "ExpectedCharacterHere": "ここには '{expected}' が必要です", "ExpectedDefaultFeaturesList": "既定の機能の一覧に ',' またはテキストの終わりが必要です", "ExpectedDependenciesList": "依存関係リストに ',' またはテキストの終わりが必要です", "ExpectedDigitsAfterDecimal": "小数点以下の桁数が必要です", - "ExpectedEof": "eof が必要です", "ExpectedExplicitTriplet": "明示的なトリプレットが必要です", "ExpectedFailOrSkip": "'fail'、'skip'、または 'pass' が必要です", "ExpectedFeatureListTerminal": "機能リストには ',' または ']' が必要です", "ExpectedFeatureName": "機能名が必要です (使用可能: 小文字、数字、'-')", "ExpectedOneSetOfTags": "{old_value} の {count} セットが見つかりました。*{new_value} ですが、block:\n{value} で正確には 1 が予測されます", "ExpectedOneVersioningField": "バージョン管理フィールドが 1 つだけ必要でした", - "ExpectedPackageSpecifier": "パッケージ指定子が必要です", "ExpectedPathToExist": "フェッチ後に {path} が存在する必要があります", "ExpectedPortName": "ここにはポート名が必要です (使用可能: 小文字、数字、'-')", "ExpectedReadWriteReadWrite": "予期しない引数: 'read'、'readwrite'、または 'write' が必要です", @@ -505,7 +492,6 @@ "ExpectedTripletName": "ここにはトリプレット名が必要です (使用可能: 小文字、数字、'-')", "ExportArchitectureReq": "エクスポートの prefab を使用するには、arm64-v8a、armeabi-v7a、x86_64、x86 のいずれかのアーキテクチャが存在する必要があります。", "ExportPrefabRequiresAndroidTriplet": "エクスポートの prefab には Android トリプレットが必要です。", - "ExportUnsupportedInManifest": "vcpkg のエクスポートは、将来の設計上の考慮事項を考慮するためにマニフェスト モードをサポートしていません。マニフェスト ベースのプロジェクトの外部で vcpkg を実行すると、クラシック モードでエクスポートを使用できます。", "Exported7zipArchive": "7zip アーカイブのエクスポートされた場所: {path}", "ExportedZipArchive": "zip アーカイブのエクスポートされた場所: {path}", "ExportingAlreadyBuiltPackages": "次のパッケージは既にビルドされており、エクスポートされます:", @@ -514,14 +500,12 @@ "ExtendedDocumentationAtUrl": "'{url}' で利用できる拡張ドキュメント。", "ExtractHelp": "アーカイブを抽出します。", "ExtractingTool": "{tool_name} を抽出しています...", - "FailedPostBuildChecks": "{count} 個のビルド後チェックの問題が見つかりました。これらのポートをキュレーションされたカタログに送信するには、まず portfile を修正してください: {path}", + "FailedPostBuildChecks": "ビルド後チェックの問題が {count} 個見つかりました。これらは通常、portfile.cmake またはアップストリーム ビルド システムのバグによって発生します。キュレーションされたレジストリにこのポートを送信する前に、これらを修正してください。", "FailedToAcquireMutant": "ミュータント {path} を取得できませんでした", "FailedToCheckoutRepo": "リポジトリ {package_name} から `versions` をチェックアウトできませんでした", "FailedToDeleteDueToFile": "{path} が原因で、remove_all({value}) できませんでした: ", "FailedToDeleteInsideDueToFile": "{path} が原因で、 remove_all_inside({value}) できませんでした: ", - "FailedToDetermineArchitecture": "{path} のアーキテクチャを特定できません。\n{command_line}", "FailedToDetermineCurrentCommit": "現在のコミットを特定できませんでした:", - "FailedToDownloadFromMirrorSet": "ミラー セットからダウンロードできませんでした", "FailedToExtract": "\"{path}\" を抽出できませんでした:", "FailedToFetchRepo": "{url} をフェッチできませんでした。", "FailedToFindPortFeature": "{package_name} には {feature} という名前の機能がありません。", @@ -530,27 +514,20 @@ "FailedToLoadManifest": "ディレクトリ {path} からマニフェストを読み込めませんでした", "FailedToLocateSpec": "グラフで以下の仕様の検索に失敗しました: {spec}", "FailedToObtainDependencyVersion": "目的の依存関係のバージョンが見つかりません。", - "FailedToObtainLocalPortGitSha": "ローカル ポートの Git SAS を取得できませんでした。", "FailedToObtainPackageVersion": "目的のパッケージ バージョンが見つかりません。", "FailedToOpenAlgorithm": "{value} を開けませんでした", "FailedToParseBaseline": "ベースラインを解析できませんでした: {path}", "FailedToParseCMakeConsoleOut": "CMake コンソール出力を解析してブロックの開始/終了マーカーを見つけることができませんでした。", "FailedToParseConfig": "構成を解析できませんでした: {path}", - "FailedToParseControl": "コントロール ファイルを解析できませんでした: {path}", - "FailedToParseManifest": "マニフェスト ファイルを解析できませんでした: {path}", "FailedToParseNoTopLevelObj": "{path} を解析できませんでした。最上位のオブジェクトが必要です。", "FailedToParseNoVersionsArray": "{path} を解析できませんでした。'versions' 配列が必要です。", "FailedToParseSerializedBinParagraph": "[サニティ チェック] シリアル化されたバイナリ段落を解析できませんでした。\nhttps://github.com/microsoft/vcpkg でイシューを開き、次の出力を含めてください。\n{error_msg}\nシリアル化されたバイナリ段落:", + "FailedToParseVersionFile": "バージョン ファイル {path} を解析できませんでした", "FailedToParseVersionXML": "ツール {tool_name} のバージョンを解析できませんでした。バージョン文字列: {version}", - "FailedToParseVersionsFile": "バージョン ファイル {path} を解析できませんでした", - "FailedToProvisionCe": "vcpkg 成果物をプロビジョニングできませんでした。", - "FailedToReadParagraph": "{path} から段落を読み取ることができませんでした", - "FailedToRemoveControl": "コントロール ファイル {path} を削除できませんでした", "FailedToRunToolToDetermineVersion": "\"{path}\" を実行して {tool_name} バージョンを特定できませんでした。", - "FailedToStoreBackToMirror": "ミラーに保存できませんでした:", + "FailedToStoreBackToMirror": "{url} への {path} を保存できませんでした。", "FailedToStoreBinaryCache": "バイナリ キャッシュ {path} を格納できませんでした", "FailedToTakeFileSystemLock": "ファイル システム ロックを取得できませんでした", - "FailedToWriteManifest": "マニフェスト ファイル {path} を書き込めませんでした", "FailedVendorAuthentication": "1 つ以上の {vendor} 資格情報プロバイダーを認証できませんでした。資格情報を提供する方法の詳細については、'{url}' を参照してください。", "FetchingBaselineInfo": "{package_name} からベースライン情報をフェッチしています...", "FetchingRegistryInfo": "{url} ({value}) からレジストリ情報をフェッチしています...", @@ -559,11 +536,13 @@ "FileNotFound": "{path}: ファイルが見つかりません", "FileReadFailed": "オフセット {byte_offset} の {path} から {count} バイトを読み取れませんでした。", "FileSeekFailed": "{path}内の位置{byte_offset}を検索できませんでした。", - "FileSystemOperationFailed": "ファイル システム操作に失敗しました:", - "FilesContainAbsolutePath1": "インストールされているパッケージには、次のような絶対パスを指定しないでください:", - "FilesContainAbsolutePath2": "次のファイルに絶対パスが見つかりました:", + "FilesContainAbsolutePath1": "インストールされているパッケージには、次のような絶対パスを指定しないでください。このメッセージを非表示にするには、set(VCPKG_POLICY_SKIP_ABSOLUTE_PATHS_CHECK enabled) を追加します", + "FilesContainAbsolutePath2": "絶対パスがここに見つかりました", + "FilesContainAbsolutePathPkgconfigNote": "`vcpkg_fixup_pkgconfig()` への呼び出しを追加すると、.pc ファイルの絶対パスが修正される場合があります", "FilesExported": "エクスポートされたファイルの場所: {path}", - "FindHelp": "指定された成果物またはポートを検索します。'artifact' または 'port' の後にパラメーターがない場合は、すべてを表示します。", + "FilesRelativeToTheBuildDirectoryHere": "ファイルはビルド ディレクトリに対して相対的です", + "FilesRelativeToThePackageDirectoryHere": "ファイルは ${{CURRENT_PACKAGES_DIR}} に対して相対的です", + "FindCommandFirstArg": "'find' の最初の引数は 'artifact' または 'port' である必要があります。", "FindVersionArtifactsOnly": "--version は vcpkg 検索または vcpkg 検索ポートでは使用できません", "FishCompletion": "vcpkg fish 補完は既に \"{path}\" に追加されています。", "FloatingPointConstTooBig": "浮動小数点定数が大きすぎます: {count}", @@ -581,6 +560,7 @@ "GeneratingRepo": "リポジトリ {path} を生成しています...", "GetParseFailureInfo": "'--debug' を使用して、解析エラーに関する詳細情報を取得します。", "GitCommandFailed": "{command_line} を実行できませんでした", + "GitCommitUpdateVersionDatabase": "git commit -m \"Update version database\"", "GitFailedToFetch": "リポジトリ {url} から参照 {value} をフェッチできませんでした", "GitFailedToInitializeLocalRepository": "ローカル リポジトリ {path} を初期化できませんでした", "GitRegistryMustHaveBaseline": "Git レジストリ \"{url}\" には、有効な Git コミット SHA (40 文字の 16 進数) である \"ベースライン\" フィールドが必要です。\n現在の最新バージョンを使用するには、ベースラインをそのリポジトリの HEAD、\"{commit_sha}\" に設定します。", @@ -623,10 +603,7 @@ "HelpEnvCommand": "開発またはコンパイル用のクリーンなシェル環境を作成します", "HelpExampleCommand": "その他のヘルプ (例を含む) については、https://learn.microsoft.com/vcpkg を参照してください", "HelpExampleManifest": "マニフェストの例:", - "HelpExportCommand": "パッケージをエクスポートします。", - "HelpHashCommand": "特定のアルゴリズム (既定の SHA512) でファイルをハッシュします。", "HelpInstallCommand": "パッケージをインストールします", - "HelpListCommand": "インストールされているパッケージを一覧表示します", "HelpManifestConstraints": "マニフェストでは、使用中のバージョンに 3 種類の制約を配置できます", "HelpMinVersion": "Vcpkg は、最上位レベルで指定されたベースラインのバージョンやグラフ内の \"version>=\" 制約など、適用可能なすべての制約との一致を検出する最小バージョンを選択します。", "HelpOverrides": "最上位レベルのマニフェストとして使用する場合 (ディレクトリで 'vcpkg install' を実行している場合など)、オーバーライドを使用すると、マニフェストは依存関係の解決をショートし、使用するバージョンを正確に指定できます。これらは、'version-string' 依存関係など、バージョンの競合の処理に使用できます。推移的に依存している場合は考慮されません。", @@ -674,7 +651,6 @@ "IllegalPlatformSpec": "プラットフォーム修飾子はこのコンテキストでは許可されていません", "ImproperShaLength": "SHA512 は 128 文字の 16 進文字である必要があります: {value}", "IncorrectArchiveFileSignature": "アーカイブ ファイルの署名が正しくありません", - "IncorrectPESignature": "PE 署名が正しくありません", "InfoSetEnvVar": "{env_var} を任意のエディターに設定することもできます。", "InitRegistryFailedNoRepo": "これは Git リポジトリのルートではないため、{path} にレジストリを作成できませんでした。\n'git init {command_line}' を使用して、このフォルダーに Git リポジトリを作成します。", "InstallCopiedFile": "{path_source} -> {path_destination} 完了", @@ -688,8 +664,8 @@ "InstalledBy": "{path} でインストール済み", "InstalledPackages": "次のパッケージは既にインストールされています。", "InstalledRequestedPackages": "要求されたすべてのパッケージが現時点でインストール済みです。", - "InstallingFromLocation": "-- 次の場所からポートをインストールしています: {path}", "InstallingMavenFile": "Maven ファイルをインストールしています {path}", + "InstallingOverlayPort": "ここからオーバーレイ ポートをインストールしています", "InstallingPackage": "{action_index}/{count} {spec} をインストールしています...", "IntegrateBashHelp": "bash タブ補完を有効にします。Windows 以外のみ", "IntegrateFishHelp": "fish タブ補完を有効にします。Windows 以外のみ", @@ -725,7 +701,7 @@ "InvalidBundleDefinition": "バンドル定義が無効です。", "InvalidCharacterInFeatureList": "機能名に無効な文字があります (小文字、数字、'-'、または '*' にする必要があります)", "InvalidCharacterInFeatureName": "機能名に無効な文字があります (小文字、数字、'-' にする必要があります)", - "InvalidCharacterInPackageName": "パッケージ名に無効な文字があります (小文字、数字、'-' にする必要があります)", + "InvalidCharacterInPortName": "ポート名に無効な文字があります (小文字、数字、'-' にする必要があります)", "InvalidCodePoint": "無効なコード ポイントが utf8_encoded_code_point_count に渡されました", "InvalidCodeUnit": "無効なコード単位", "InvalidCommandArgSort": "--sort の値は、'lexicographical'、'topological'、'reverse' のいずれかである必要があります。", @@ -743,7 +719,6 @@ "InvalidLinkage": "リンケージの種類 {system_name} が無効です: [{value}]", "InvalidLogicExpressionUnexpectedCharacter": "論理式が無効です。予期しない文字です", "InvalidLogicExpressionUsePipe": "論理式が無効です。'or' の代わりに '|' を使用してください", - "InvalidNoVersions": "ファイルにバージョンが含まれていません。", "InvalidOptionForRemove": "'remove' はライブラリまたは '--outdated' のいずれかを受け入れます", "InvalidPortVersonName": "無効なポート バージョン ファイル名が見つかりました: '{path}'。", "InvalidSharpInVersion": "バージョン テキストに無効な文字 '#' があります", @@ -751,6 +726,8 @@ "InvalidString": "無効な utf8 が Value::string(std::string) に渡されました", "InvalidTriplet": "無効なトリプレット: {triplet}", "InvalidUri": "URI を解析できません: {value}", + "InvalidValueHashAdditionalFiles": "変数VCPKG_HASH_ADDITIONAL_FILESに無効なファイル パスが含まれています: '{path}'。値は、存在するファイルへの絶対パスである必要があります。", + "InvalidValuePostPortfileIncludes": "変数 VCPKG_POST_PORTFILE_INCLUDES に無効なファイル パスが含まれています: '{path}'。値は、存在する CMake ファイルへの絶対パスである必要があります。", "IrregularFile": "パスが通常のファイルではありませんでした: {path}", "JsonErrorMustBeAnObject": "\"{path}\" はオブジェクトである必要があります。", "JsonFieldNotObject": "[\"{json_field}\"] の値はオブジェクトである必要があります", @@ -786,11 +763,11 @@ "LinkageStaticDebug": "静的デバッグ (/MTd)", "LinkageStaticRelease": "静的リリース (/MT)", "ListHelp": "インストールされているライブラリを一覧表示します", - "LoadingCommunityTriplet": "-- [COMMUNITY] 以下からトリプレット構成を読み込んでいます: {path}", + "LoadedCommunityTriplet": "ここからコミュニティ トリプレットが読み込まれました。コミュニティ トリプレットは選別されたレジストリに組み込まれていないため、成功する可能性は低くなります。", + "LoadedOverlayTriplet": "ここからオーバーレイ トリプレットが読み込まれました", "LoadingDependencyInformation": "{count} 個のパッケージの依存関係情報を読み込んでいます...", - "LoadingOverlayTriplet": "-- [OVERLAY] 以下からトリプレット構成を読み込んでいます: {path}", - "LocalPortfileVersion": "ローカル portfile バージョンの使用。 ローカルの portfile を更新するには、`git pull` を使用します。", - "ManifestConflict": "ポート \"{path}\" にマニフェストと CONTROL ファイルの両方が見つかりました。いずれかの名前を変更してください", + "LocalPortfileVersion": "ローカル ポート バージョンを使用します。ローカル ポート を更新するには、`git pull` を使用します。", + "ManifestConflict2": "マニフェストと CONTROL ファイルの両方が見つかりました。いずれかの名前を変更してください", "ManifestFormatCompleted": "マニフェスト ファイルの書式設定に成功しました。", "MismatchedBinParagraphs": "シリアル化されたバイナリ段落が、元のバイナリ段落と異なっていました。https://github.com/microsoft/vcpkg でイシューを開き、次の出力を含めてください。", "MismatchedFiles": "格納するファイルがハッシュと一致しません", @@ -802,6 +779,7 @@ "MissingAndroidEnv": "ANDROID_NDK_HOME 環境変数がありません", "MissingAndroidHomeDir": "ANDROID_NDK_HOME ディレクトリが存在しません: {path}", "MissingArgFormatManifest": "format-manifest に '--all' を指定せずに --convert-control が渡されました。\nこれでは何も実行されません。明示的に渡されたコントロール ファイルは自動的に変換されます。", + "MissingAssetBlockOrigin": "{path} が見つかりません。ダウンロードは x-block-origin によってブロックされています。", "MissingClosingParen": "右かっこ ) がありません。", "MissingDependency": "パッケージ {spec} はインストールされていますが、依存関係 {package_name} はインストールされていません。", "MissingExtension": "'{extension}' 拡張子がありません。", @@ -810,9 +788,9 @@ "MissingPortSuggestPullRequest": "ポートが一覧にない場合は、問題を開くか、pull request を作成することを検討してください。", "MissingRequiredField": "必須フィールド '{json_field}' ({json_type}) がありません", "MissingRequiredField2": "必須フィールド '{json_field}' がありません", + "MissingShaVariable": "他の変数を使用する場合は、{{sha}} 変数をテンプレートで使用する必要があります。", "MixingBooleanOperationsNotAllowed": "& と | を混合しています許可されていません。() を使用して操作の順序を指定してください", "MonoInstructions": "Mono のインストールが不完全であることが原因である可能性があります。'sudo apt install mono-complete' を使用して、一部のシステムで Mono をフルで使用できます。Ubuntu 18.04 ユーザーについては、https://www.mono-project.com/download/stable/ で利用可能な新しいバージョンの Mono が必要な場合があります", - "MsiexecFailedToExtract": "起動または終了コード {exit_code} とメッセージで \"{path}\" を抽出中に msiexec が失敗しました:", "MultiArch": "Multi-Arch は 'same' である必要がありますが、{option} でした", "MultipleFeatures": "{package_name} が {feature} を複数回宣言しています; 機能に一意の名前があることを確認してください", "MutuallyExclusiveOption": "--{value} を --{option} と共に使用することはできません。", @@ -822,10 +800,8 @@ "NewOnlyOneVersionKind": "--version-relaxed、--version-date、--version-string のうちの 1 つだけを指定できます。", "NewSpecifyNameVersionOrApplication": "C++ ライブラリ用のマニフェストを作成するために --name と --version を指定するか、マニフェストをポートとして使用しないことを示すために --application を指定します。", "NewVersionCannotBeEmpty": "--version を空にすることはできません。", - "NoArgumentsForOption": "オプション --{option} は引数を取りません。", "NoError": "エラーはありません", "NoInstalledPackages": "パッケージがインストールされていません。'検索' ということですか?", - "NoLocalizationForMessages": "次のローカライズされたメッセージはありません: ", "NoOutdatedPackages": "期限切れのパッケージはありません。", "NoRegistryForPort": "ポート {package_name} に対してレジストリが構成されていません", "NoUrlsAndHashSpecified": "SHA をダウンロードするための URL が指定されていません: {sha}", @@ -866,7 +842,6 @@ "PackageManipulationHeader": "パッケージ操作", "PackageRootDir": "Packages ディレクトリ (試験段階)", "PackagesToInstall": "次のパッケージが作成され、インストールされます。", - "PackagesToInstallDirectly": "次のパッケージが直接インストールされます。", "PackagesToModify": "この操作を完了するために、追加のパッケージ (*) が変更されます。", "PackagesToRebuild": "次のパッケージが再構築されます。", "PackagesToRebuildSuggestRecurse": "上記のパッケージを再構築する場合は、--recurse オプションを使用してコマンドを実行します。", @@ -882,47 +857,50 @@ "ParseFeatureNameError": "\"{package_name}\" は有効な機能名ではありません。機能名は小文字の英数字とハイフンにする必要があり、また、予約されていないことが必須になります (詳細については、{url} を参照してください)。", "ParseIdentifierError": "\"{値}\" は有効な識別子ではありません。識別子は小文字の英数字とハイフンにする必要があり、また、予約されていないことが必須になります (詳細については、{url} を参照してください)。", "ParsePackageNameError": "\"{package_name}\" は有効なパッケージ名ではありません。パッケージ名は小文字の英数字とハイフンにする必要があり、また、予約されていないことが必須になります (詳細については、{url} を参照してください)。", + "ParsePackageNameNotEof": "パッケージ名の入力解析の終了が必要です。 これは通常、指定された文字がポート名に使用できないことを意味します。ポート名はすべて小文字の英数字 + ハイペンであり、予約されていません (詳細については、{url} を参照してください)。", "ParsePackagePatternError": "\"{package_name}\" は有効なパッケージ パターンではありません。パッケージ パターンではワイルドカード文字 (*) を 1 つだけ使用し、それをそのパターンの最後の文字にする必要があります (詳細については、{url} を参照してください)。", + "ParseQualifiedSpecifierNotEof": "パッケージ仕様の入力解析の終了が必要です。 これは通常、指定された文字がパッケージ仕様で使用できないことを意味します。ポート名、トリプレット名、機能名はすべて小文字の英数字 + ハイフンです。", + "ParseQualifiedSpecifierNotEofSquareBracket": "パッケージ仕様の入力解析の終了が必要です。代わりに {version_spec} ですか?", "PathMustBeAbsolute": "環境変数 X_VCPKG_REGISTRIES_CACHE の値が絶対ではありません: {path}", - "PerformingPostBuildValidation": "-- ビルド後の検証の実行", - "PortBugAllowRestrictedHeaders": "例外的な状況では、このポリシーは {env_var} 経由で無効にすることができます", - "PortBugBinDirExists": "静的ビルドには bin\\ ディレクトリを含めてはなりませんが、{path} は存在します。", - "PortBugDebugBinDirExists": "静的ビルドには debug\\bin\\ ディレクトリは存在しませんが、{path} は存在します。", - "PortBugDebugShareDir": "/debug/share は存在しません。重要なファイルを再構成してから、\nファイル (REMOVE_RECURSE \"${{CURRENT_PACKAGES_DIR}}/debug/share\") を使用してください", - "PortBugDllAppContainerBitNotSet": "Windows Store アプリには、App Container ビットを設定する必要があります。次の DLL には、App Container ビットが設定されていません。", - "PortBugDllInLibDir": "/lib または /debug/lib に次の dll が見つかりました。それぞれ /bin または /debug/bin に移動してください。", - "PortBugDuplicateIncludeFiles": "インクルード ファイルを /debug/include ディレクトリに複製しないでください。プロジェクト cmake でこれを無効にできない場合は、\nfile(REMOVE_RECURSE \"${{CURRENT_PACKAGES_DIR}}/debug/include\") を使用します", - "PortBugFoundCopyrightFiles": "次のファイルは著作権ファイルの可能性があります:", - "PortBugFoundDebugBinaries": "{count} 個のデバッグ バイナリが見つかりました:", - "PortBugFoundDllInStaticBuild": "DLL は静的ビルドに存在してはなりませんが、次の DLL が見つかりました。", - "PortBugFoundEmptyDirectories": "{path} には空のディレクトリを含めてはなりません。次の空のディレクトリが見つかりました:", - "PortBugFoundExeInBinDir": "/bin または /debug/bin に次の EXE が見つかりました。EXE は有効な配布ターゲットではありません。", - "PortBugFoundReleaseBinaries": "{count} 個のリリース バイナリが見つかりました:", - "PortBugIncludeDirInCMakeHelperPort": "フォルダー /include は cmake ヘルパー ポートに存在します。cmake ファイルのみをインストールする必要があるため、これは正しくありません", - "PortBugInspectFiles": "{extension} ファイルを調べるには、次を使用します:", - "PortBugInvalidCrtLinkage": "次のバイナリは {expected} CRT を使用する必要があります。", - "PortBugInvalidCrtLinkageEntry": "{path} のリンク先:", - "PortBugKernel32FromXbox": "選択したトリプレットは Xbox をターゲットにしていますが、次の DLL は kernel32 とリンクしています。kernel32 が存在しない Xbox では、これらの DLL を読み込むことができません。これは通常、onecore_apiset.lib や xgameplatform.lib などの適切な包括ライブラリではなく kernel32.lib とリンクすることによって発生します。", - "PortBugMergeLibCMakeDir": "/lib/cmake フォルダーを /debug/lib/cmake とマージし、/share/{package_name}/cmake に移動する必要があります。ポート vcpkg-cmake-config からヘルパー関数 'vcpkg_cmake_config_fixup()' を使用してください。", - "PortBugMismatchedNumberOfBinaries": "デバッグ バイナリとリリース バイナリの数が一致しません。", - "PortBugMisplacedCMakeFiles": "次の cmake ファイルが /share/{spec} の外部で見つかりました。/share/{spec} に cmake ファイルを配置してください。", - "PortBugMisplacedFiles": "次のファイルが {path} に配置されます:", - "PortBugMisplacedFilesCont": "これらのディレクトリにファイルを存在することはできません。", - "PortBugMisplacedPkgConfigFiles": "pkgconfig ディレクトリは、share/pkgconfig (ヘッダーのみのライブラリのみ)、lib/pkgconfig、または lib/debug/pkgconfig のいずれかである必要があります。次の正しく配置されなかった pkgconfig ファイルが見つかりました:", + "PerformingPostBuildValidation": "ビルド後の検証の実行", + "PortBugBinDirExists": "${{CURRENT_PACKAGES_DIR}}/{path} が存在しますが、静的ビルドには含めてはなりません。このメッセージを非表示にするには、set(VCPKG_POLICY_DLLS_IN_STATIC_LIBRARY enabled) を追加します", + "PortBugDebugShareDir": "${{CURRENT_PACKAGES_DIR}}/debug/share は存在してはなりません。重要なファイルを再構成してから、`file(REMOVE_RECURSE \"${{CURRENT_PACKAGES_DIR}}/debug/share\")` を追加して残りを削除してください。このメッセージを非表示にするには、set(VCPKG_POLICY_ALLOW_DEBUG_SHARE enabled) を追加します", + "PortBugDllAppContainerBitNotSet": "アプリ コンテナー ビットは、Windows ストア アプリ内のすべての DLL と、Windows ストアを対象とするトリプレット要求に対して設定する必要がありますが、次の DLL はビットセットを使用してビルドされませんでした。これは通常、ツールチェーン リンカー フラグが正しく伝達されていないか、使用中のリンカーが /APPCONTAINER スイッチをサポートしていないことを意味します。このメッセージを非表示にするには、set(VCPKG_POLICY_SKIP_APPCONTAINER_CHECK enabled) を追加します", + "PortBugDllInLibDir": "${{CURRENT_PACKAGES_DIR}}/lib または ${{CURRENT_PACKAGES_DIR}}/debug/lib に次の dll が見つかりました。それぞれ ${{CURRENT_PACKAGES_DIR}}/bin または ${{CURRENT_PACKAGES_DIR}}/debug/bin に移動してください。", + "PortBugDuplicateIncludeFiles": "${{CURRENT_PACKAGES_DIR}}/debug/include は存在してはいけません。このメッセージを非表示にするには、set(VCPKG_POLICY_ALLOW_DEBUG_INCLUDE enabled) を追加します", + "PortBugDuplicateIncludeFilesFixIt": "デバッグでのヘッダーのインストールを無効にできないビルド システムによってこのディレクトリが作成された場合は、重複するディレクトリを file(REMOVE_RECURSE \"${{CURRENT_PACKAGES_DIR}}/debug/include\") で削除します。", + "PortBugFoundCopyrightFiles": "次のファイルは著作権ファイルの可能性があります", + "PortBugFoundDebugBinaries": "デバッグ バイナリを次に示します:", + "PortBugFoundDllInStaticBuild": "DLL は静的ビルドに存在してはなりませんが、次の DLL が見つかりました。このメッセージを非表示にするには、set(VCPKG_POLICY_DLLS_IN_STATIC_LIBRARY enabled) を追加します", + "PortBugFoundEmptyDirectories": "空のディレクトリはインストールしないでください。空のディレクトリは、複数のバイナリ キャッシュ プロバイダー、Git リポジトリでは表現できず、セマンティック ビルド出力とは見なされません。空の各ディレクトリ内に通常のファイルを作成するか、次の CMake を使用して削除する必要があります。このメッセージを非表示にするには、set(VCPKG_POLICY_ALLOW_EMPTY_FOLDERS enabled) を追加します", + "PortBugFoundExeInBinDir": "次の実行可能ファイルが ${{CURRENT_PACKAGES_DIR}}/bin または ${{CURRENT_PACKAGES_DIR}}/debug/bin で見つかりました。実行可能ファイルは有効な配布ターゲットではありません。これらの実行可能ファイルがビルド ツールの場合は、`vcpkg_copy_tools` の使用を検討してください。このメッセージを非表示にするには、set(VCPKG_POLICY_ALLOW_EXES_IN_BIN enabled) を追加します", + "PortBugFoundReleaseBinaries": "リリース バイナリを次に示します:", + "PortBugIncludeDirInCMakeHelperPort": "フォルダー ${{CURRENT_PACKAGES_DIR}}/include が CMake ヘルパー ポートに存在しています。CMake ファイルのみをインストールする必要があるため、これは正しくありません。このメッセージを非表示にするには、set(VCPKG_POLICY_CMAKE_HELPER_PORT enabled) を削除します。", + "PortBugInvalidCrtLinkageCrtGroup": "次のバイナリは {expected} のみとリンクする必要があります", + "PortBugInvalidCrtLinkageEntry": "{path} 件のリンク先: {actual}", + "PortBugInvalidCrtLinkageHeader": "C RunTimes (\"CRT\") を使用してこのポート リンクによってビルドされたバイナリは、トリプレットおよびデプロイ構造によって要求されたものと矛盾します。トリプレットがリリース CRT のみを使用することを意図している場合は、set(VCPKG_POLICY_ONLY_RELEASE_CRT enabled) をトリプレットの .cmake ファイルに追加する必要があります。このチェックを完全に抑制するには、set(VCPKG_POLICY_SKIP_CRT_LINKAGE_CHECK enabled) をトリプレット全体の場合はトリプリレットの .cmake に、ポートに固有の場合は portfile.cmake に追加します。dumpbin.exe /directives mylibfile.lib を使用してバイナリを検査できます。", + "PortBugKernel32FromXbox": "選択したトリプレットは Xbox をターゲットにしていますが、次の DLL は kernel32 にリンクされています。kernel32 が存在しない Xbox では、これらの DLL を読み込むことができません。これは通常、onecore_apiset.lib や xgameplatform.lib などの適切なアンブレラ ライブラリではなく、kernel32.lib とのリンクによって発生します。`dumpbin.exe /dependents mylibfile.dll` を使用して DLL の依存関係を調べることができます。このメッセージを非表示にするには、set(VCPKG_POLICY_ALLOW_KERNEL32_FROM_XBOX enabled) を追加します", + "PortBugMergeLibCMakeDir": "このポートでは、${{CURRENT_PACKAGES_DIR}}/lib/cmake および/または ${{CURRENT_PACKAGES_DIR}}/debug/lib/cmake が作成されます。このポートをマージして、${{CURRENT_PACKAGES_DIR}}/share/${{PORT}}/cmake に移動する必要があります。vcpkg-cmake-config ポートのヘルパー関数 vcpkg_cmake_config_fixup() を使用してください。このメッセージを非表示にするには、set(VCPKG_POLICY_SKIP_LIB_CMAKE_MERGE_CHECK enabled) を追加します", + "PortBugMismatchingNumberOfBinaries": "デバッグ バイナリとリリース バイナリの数が一致しません。これは、多くの場合、portfile.cmake またはビルド システムでのデバッグまたはリリースの不適切な処理を示します。このトリプレットのリリース コンポーネントのみを生成することを意図する場合、set(VCPKG_BUILD_TYPE release) をトリプレットの .cmake ファイルに追加する必要があります。このメッセージを非表示にするには、set(VCPKG_POLICY_MISMATCHED_NUMBER_OF_BINARIES enabled) を追加します", + "PortBugMisplacedCMakeFiles": "このポートは、CMake ファイルが予期されていない場所に次の CMake ファイルをインストールします。CMake ファイルは ${{CURRENT_PACKAGES_DIR}}/share/${{PORT}} にインストールする必要があります。このメッセージを非表示にするには、set(VCPKG_POLICY_SKIP_MISPLACED_CMAKE_FILES_CHECK enabled) を追加します", + "PortBugMisplacedFiles": "次の通常のファイルは、通常のファイルをインストールできない場所にインストールされています。これらはサブディレクトリにインストールする必要があります。このメッセージを非表示にするには、set(VCPKG_POLICY_SKIP_MISPLACED_REGULAR_FILES_CHECK enabled) を追加します", + "PortBugMisplacedPkgConfigFiles": "次の正しく配置されなかった pkgconfig ディレクトリがインストールされました。正しく配置されなかった pkgconfig ファイルは、pkgconf または pkg-config によって正しく見つかりません。pkgconfig ディレクトリは、${{CURRENT_PACKAGES_DIR}}/share/pkgconfig (アーキテクチャに依存しない/ヘッダーのみのライブラリのみ)、${{CURRENT_PACKAGES_DIR}}/lib/pkgconfig (リリースの依存関係の場合)、または ${{CURRENT_PACKAGES_DIR}}/debug/lib/pkgconfig (デバッグ依存関係の場合) である必要があります。このメッセージを非表示にするには、set(VCPKG_POLICY_SKIP_PKGCONFIG_CHECK enabled) を追加します", + "PortBugMissingCMakeHelperPortFile": "${{CURRENT_PACKAGES_DIR}}/share/${{PORT}}/vcpkg-port-config.cmake ファイルが存在しません。このファイルは、CMake ヘルパー ポート用に存在する必要があります。このメッセージを非表示にするには、set(VCPKG_POLICY_CMAKE_HELPER_PORT enabled) を削除します", "PortBugMissingDebugBinaries": "デバッグ バイナリが見つかりませんでした。", - "PortBugMissingFile": "/{path} ファイルが存在しません。このファイルは、CMake ヘルパー ポート用に存在する必要があります。", - "PortBugMissingImportedLibs": "インポート ライブラリが {path} にありませんでした。\nこれが意図されている場合は、profile に次の行を追加します:\nset(VCPKG_POLICY_DLLS_WITHOUT_LIBS enabled)", - "PortBugMissingIncludeDir": "フォルダー /include が空であるか、存在しません。これは、ライブラリが正しくインストールされなかった場合を示しています。", - "PortBugMissingLicense": "ソフトウェア ライセンスは ${{CURRENT_PACKAGES_DIR}}/share/{package_name}/copyright で入手できる必要があります", - "PortBugMissingProvidedUsage": "port に「usage」を指定しましたが、/share/{package_name}/usage にインストールするのを忘れていました。portfile に次の行を追加してください。", + "PortBugMissingImportedLibs": "インストールされている DLL のインポート ライブラリが見つからないようです。これが意図されている場合は、set(VCPKG_POLICY_DLLS_WITHOUT_LIBS enabled) を追加します", + "PortBugMissingIncludeDir": "フォルダー ${{CURRENT_PACKAGES_DIR}}/include が空であるか、存在しません。これは通常、ヘッダーが正しくインストールされていないことを意味します。これが CMake ヘルパー ポートの場合は、set(VCPKG_POLICY_CMAKE_HELPER_PORT enabled) を追加します。これが CMake ヘルパー ポートではなく、意図的な場合は、set(VCPKG_POLICY_EMPTY_INCLUDE_FOLDER enabled) を追加してこのメッセージを抑制します。", + "PortBugMissingLicense": "ライセンスが ${{CURRENT_PACKAGES_DIR}}/share/${{PORT}}/copyright にインストールされていません。これは、vcpkg_install_copyright への呼び出しを追加することで修正できます。このメッセージを非表示にするには、set(VCPKG_POLICY_SKIP_COPYRIGHT_CHECK enabled) を追加します", + "PortBugMissingLicenseFixIt": "追加を検討してください: {value}", + "PortBugMissingProvidedUsage": "このポートには \"usage\" という名前のファイルが含まれていますが、${{CURRENT_PACKAGES_DIR}}/share/${{PORT}}/usage にはインストールされませんでした。このファイルが使用テキストを意図していない場合は、別の名前を選択することを検討してください。それ以外の場合は、インストールします。このメッセージを非表示にするには、set(VCPKG_POLICY_SKIP_USAGE_INSTALL_CHECK enabled) を追加します", "PortBugMissingReleaseBinaries": "リリース バイナリが見つかりませんでした。", "PortBugMovePkgConfigFiles": "次のようなコマンドを使用して、pkgconfig ファイルを移動できます:", - "PortBugOutdatedCRT": "次のファイルで古い動的 CRT が検出されました:", - "PortBugRemoveBinDir": "bin\\ または debug\\bin\\ の作成を無効にできない場合は、ポートファイルでこれを使用して削除します", - "PortBugRemoveEmptyDirectories": "ディレクトリを設定する必要があるが設定されていない場合は、portfile でエラーが発生する可能性があります。\nディレクトリが不要で、その作成を無効にできない場合は、portfile で次のように使用して削除します。", + "PortBugOutdatedCRT": "古い C RunTime (\"CRT\") DLL にリンクする DLL がインストールされました。インストールされている DLL は、サポートされている CRT とリンクする必要があります。`dumpbin.exe /dependents mylibfile.dll` を使用して DLL の依存関係を調べることができます。古い CRT をターゲットとするカスタム トリプレットを使用している場合は、トリプレットの .cmake ファイルに set(VCPKG_POLICY_ALLOW_OBSOLETE_MSVCRT enabled) を追加します。このポートに対してこのメッセージを抑制するには、set(VCPKG_POLICY_ALLOW_OBSOLETE_MSVCRT enabled) を追加します", + "PortBugRemoveBinDir": "これらのディレクトリの作成を無効にできない場合は、portfile.cmake に次を追加して削除できます", "PortBugRemoveEmptyDirs": "file(REMOVE_RECURSE 上記の名前変更によって残された空のディレクトリ)", - "PortBugRestrictedHeaderPaths": "次の制限付きヘッダーを使用すると、コア C++ ランタイムおよびその他のパッケージが正しくコンパイルされないようにすることができます。例外的な状況では、portfile.cmake で CMake 変数VCPKG_POLICY_ALLOW_RESTRICTED_HEADERSを設定することで、このポリシーを無効にすることができます。", - "PortBugSetDllsWithoutExports": "エクスポートを行わない DLL は、ビルド スクリプトのバグである可能性があります。これが意図されている場合は、以下の行を portfile を追加します:\nset(VCPKG_POLICY_DLLS_WITHOUT_EXPORTS enabled)\n次の DLL にはエクスポートがありません:", + "PortBugRestrictedHeaderPaths": "次の制限付きヘッダーを取得すると、コア C++ ランタイムおよびその他のパッケージが正しくコンパイルされない可能性があります。これらの名前を変更するか、サブディレクトリに格納する必要があります。例外的な状況では、set(VCPKG_POLICY_ALLOW_RESTRICTED_HEADERS enabled) を追加することで、この警告を抑制できます", + "PortBugRestrictedHeaderPathsNote": "ヘッダーは ${{CURRENT_PACKAGES_DIR}}/include を基準しています", + "PortBugSetDllsWithoutExports": "次の DLL はエクスポートなしでビルドされました。エクスポートのない DLL は、ビルド スクリプトのバグである可能性があります。これが意図されている場合は、set(VCPKG_POLICY_DLLS_WITHOUT_EXPORTS enabled) を追加します", + "PortDeclaredHere": "{package_name} がここで宣言されています", "PortDependencyConflict": "ポート {package_name} には、次のサポートされていない依存関係があります。", "PortDoesNotExist": "{package_name} は存在しません", "PortMissingManifest2": "{package_name} ポート マニフェストがありません (vcpkg.json または CONTROL ファイルがありません)", @@ -932,7 +910,6 @@ "PortVersionControlMustBeANonNegativeInteger": "\"Port-Version\" は負ではない整数である必要があります", "PortVersionMultipleSpecification": "\"port_version\" をバージョン内の埋め込み '#' と組み合わせることはできません", "PortsAdded": "次の {count} 個のポートが追加されました。", - "PortsDiffHelp": "引数は、チェックアウトするブランチ/タグ/ハッシュである必要があります。", "PortsNoDiff": "2 つのコミットの間にポートの変更点はありませんでした。", "PortsRemoved": "次の {count} 個のポートが削除されました。", "PortsUpdated": "次の {count} 個のポートが更新されました。", @@ -957,7 +934,6 @@ "RestoredPackagesFromNuGet": "{elapsed} の NuGet から {count} パッケージを復元しました。--debug を使用して詳細を表示します。", "ResultsHeader": "結果", "ScriptAssetCacheRequiresScript": "必要な引数: アセット構成 'x-script' には引数として exec テンプレートが厳密に必要です", - "SearchHelp": "引数は、検索対象のサブ文字列であるか、またはすべてのライブラリを表示する no 引数である必要があります。", "SecretBanner": "*** 秘密 ***", "SeeURL": "詳細については、{url} を参照してください。", "SerializedBinParagraphHeader": "\nシリアル化されたバイナリ段落", @@ -966,6 +942,7 @@ "ShaPassedWithConflict": "SHA512 は渡されましたが、--skip-sha512 も渡されました。どちらか一方のみを実行してください。", "ShallowRepositoryDetected": "vcpkg は、{path}\n で浅いリポジトリとして複製されました。完全な vcpkg クローンを使用して、もう一度お試しください。", "SkipClearingInvalidDir": "ディレクトリでなかったため、{path} のコンテンツのクリアをスキップしています。", + "SkippingPostBuildValidationDueTo": "{cmake_var} が原因でビルド後の検証をスキップしています", "SourceFieldPortNameMismatch": "CONTROL ファイル内の 'Source' フィールド、または vcpkg.json ファイル内の \"name\" フィールドに名前 {package_name} があり、ポート ディレクトリ \"{path}\" と一致しません。", "SpecifiedFeatureTurnedOff": "'{command_name}'機能は明確に無効になっていますが、--{option} が指定されました。", "SpecifyHostArch": "ホスト トリプレット。'vcpkg help triplet' を参照してください (既定値: {env_var})", @@ -973,10 +950,8 @@ "StartCodeUnitInContinue": "続行位置で開始コード単位が見つかりました", "StoreOptionMissingSha": "--store オプションは sha512 なしでは無効です", "StoredBinariesToDestinations": "{elapsed} の {count} 件の宛先にバイナリを格納しました。", - "StoredBinaryCache": "格納されたバイナリ キャッシュ: \"{path}\"", "SuccessfulyExported": "{package_name} を {path} にエクスポートしました", "SuggestGitPull": "結果は古い可能性があります。'git pull' を実行して最新の結果を取得してください。", - "SuggestResolution": "すべてのエラーを一度に解決するには、次を実行します: \nvcpkg {command_name} --{option}", "SuggestStartingBashShell": "変更を有効にするには、新しい bash シェルを開始したことをご確認ください。", "SupportedPort": "ポート {package_name} がサポートされています。", "SwitchUsedMultipleTimes": "切り替え '{option}' が複数回指定されました", @@ -1004,7 +979,6 @@ "UnexpectedByteSize": "{expected} バイトが書き込まれる必要がありましたが、{actual} 書き込まれました。", "UnexpectedCharExpectedCloseBrace": "予期しない文字です; プロパティまたは閉じかっこが必要です", "UnexpectedCharExpectedColon": "予期しない文字です; コロンが必要です", - "UnexpectedCharExpectedComma": "予期しない文字です; コンマまたは閉じかっこが必要です", "UnexpectedCharExpectedName": "予期しない文字です; プロパティ名必要です", "UnexpectedCharExpectedValue": "予期しない文字です; 値が必要です", "UnexpectedCharMidArray": "配列の中央に予期しない文字があります", @@ -1023,15 +997,11 @@ "UnexpectedEOFMidKeyword": "キーワードの途中に予期しない EOF があります", "UnexpectedEOFMidString": "文字列の途中に予期しない EOF があります", "UnexpectedEOFMidUnicodeEscape": "Unicode エスケープの途中で予期しないファイルの終わりが見つかりました", - "UnexpectedErrorDuringBulkDownload": "一括ダウンロード中に予期しないエラーが発生しました。", "UnexpectedEscapeSequence": "予期しないエスケープ シーケンスの継続", - "UnexpectedExtension": "予期しないアーカイブ拡張子: '{extension}'。", - "UnexpectedFeatureList": "予期しない機能の一覧", "UnexpectedField": "予期しないフィールド '{json_field}'", "UnexpectedFieldSuggest": "予期しないフィールド '{json_field}' です。'{value}' のことですか?", "UnexpectedFormat": "必要な形式は [{expected}] ですが、[{actual}] でした。", "UnexpectedOption": "予期しないオプション: {option}", - "UnexpectedPlatformExpression": "予期しないプラットフォーム式です", "UnexpectedPortName": "ポート {expected} が {path} で {actual} として宣言されています", "UnexpectedPortversion": "バージョン管理フィールドのない予期しない \"port-version\" です", "UnexpectedSwitch": "予期しない切り替え: {option}", @@ -1040,9 +1010,8 @@ "UnknownBaselineFileContent": "認識できないベースライン エントリ;'port:triplet=(fail|skip|pass)' が必要です", "UnknownBinaryProviderType": "不明なバイナリ プロバイダー タイプ: 有効なプロバイダーは 'clear'、'default'、'nuget'、'nugetconfig'、'nugettimeout'、'interactive'、'x-azblob'、'x-gcs'、'x-aws'、'x-aws-config'、'http'、'files' です", "UnknownBooleanSetting": "{option} の不明なブール値の設定: \"{value}\"。有効な値は ''、'1'、'0'、'ON'、'OFF'、'TRUE'、および 'FALSE' です。", - "UnknownOptions": "コマンド '{command_name}' の不明なオプション:", "UnknownParameterForIntegrate": "統合のためのパラメーター '{value}' が不明です。", - "UnknownPolicySetting": "ポリシー '{value}' の不明な設定: {option}", + "UnknownPolicySetting": "{cmake_var}: {value} の設定が不明です。有効なポリシー値は、''、'disabled'、'enabled' です。", "UnknownSettingForBuildType": "VCPKG_BUILD_TYPE {option} の設定が不明です。有効な設定は、'debug'、および 'release' です。", "UnknownTool": "vcpkg に、このプラットフォーム用のこのツールの定義がありません。", "UnknownTopic": "不明なトピック {value}", @@ -1054,7 +1023,6 @@ "UnsupportedFeatureSupportsExpressionWarning": "{feature_spec} は '{supports_expression}' でのみサポートされていますが、これは {triplet} と一致しません。これは通常、他のプラットフォームをビルドする際に既知のビルド エラーまたは実行時の問題があることを意味します。`--allow-unsupported` であるため、とにかく続行します。", "UnsupportedPort": "ポート {package_name} はサポートされていません。", "UnsupportedPortDependency": "- 依存関係 {value} はサポートされていません。", - "UnsupportedShortOptions": "短いオプションはサポートされていません: '{value}'", "UnsupportedSyntaxInCDATA": "]]> は CDATA ブロックでサポートされていません", "UnsupportedSystemName": "VCPKG_CMAKE_SYSTEM_NAME「{system_name}」を vcvarsall プラットフォームにマップできませんでした。サポートされているシステム名は、「」、「Windows」、および「WindowsStore」です。", "UnsupportedToolchain": "トリプレット内 {triplet}: 要求されたターゲットアーキテクチャ {arch} に対して有効なツールチェーンが見つかりません。\n選択された Visual Studio インスタンスは {path} にあり、\n利用可能なツールチェインの組み合わせは以下の通りです: {list}", @@ -1068,21 +1036,18 @@ "UpdateBaselineUpdatedBaseline": "レジストリ '{url}' を更新しました。ベースライン '{old_value}' -> '{new_value}'", "UpgradeInManifest": "アップグレードでは、クラシック モードのインストールがアップグレードされるため、マニフェスト モードはサポートされていません。vcpkg x-update-baseline を使用してベースラインを現在の値に更新し、vcpkg インストールを実行して、依存関係を更新することを検討してください。", "UpgradeRunWithNoDryRun": "上記のパッケージを再構築する場合は、--no-dry-run オプションを使用してこのコマンドを実行します。", - "UploadedBinaries": "{count} {vendor} にバイナリをアップロードしました。", - "UploadedPackagesToVendor": "{count} 個のパッケージを {elapsed} の {vendor} にアップロードしました", "UploadingBinariesToVendor": "'{spec}' のバイナリを '{vendor}' ソース \"{path}\" にアップロードしています。", - "UploadingBinariesUsingVendor": "'{vendor}' \"{path}\" を使用して '{spec}' のバイナリをアップロードしています。", + "UsageInstallInstructions": "次の CMake を使用して使用状況ファイルをインストールできます。", + "UsageTextHere": "使用状況ファイルはここにあります", "UseEnvVar": "-- 環境変数で {env_var} を使用しています。", "UserWideIntegrationDeleted": "ユーザー全体の統合がインストールされていません。", "UserWideIntegrationRemoved": "ユーザー全体の統合が削除されました。", - "UsingCommunityTriplet": "-- コミュニティ トリプレット {triplet} を使用しています。このトリプレット構成の成功は保証されていません。", "UsingManifestAt": "{path} でマニフェスト ファイルを使用しています。", "Utf8ConversionFailed": "UTF-8 への変換に失敗しました", "VSExaminedInstances": "次の Visual Studio インスタンスが考慮されました。", "VSExaminedPaths": "Visual Studio インスタンスについて、次のパスが調べられました。", "VSNoInstances": "完全な Visual Studio インスタンスが見つかりませんでした", "VcpkgCeIsExperimental": "vcpkg-artifacts は試験段階であり、いつでも変更される可能性があります。", - "VcpkgCommitTableHeader": "VCPKG コミット", "VcpkgCompletion": "vcpkg {value} 補完は既に \"{path}\" ファイルにインポートされています。\n次のエントリが見つかりました:", "VcpkgDisallowedClassicMode": "現在の作業ディレクトリの上にマニフェスト (vcpkg.json) が見つかりませんでした。\nこの vcpkg ディストリビューションにはクラシック モード インスタンスがありません。", "VcpkgHasCrashed": "vcpkg がクラッシュしました。https://github.com/microsoft/vcpkg で問題を作成してください。問題には、実行しようとした作業の簡単な概要と次の情報を記載してください。", @@ -1095,17 +1060,22 @@ "VcpkgUsage": "usage: vcpkg [--switches] [--options=values] [arguments] @response_file", "VcvarsRunFailed": "Visual Studio 環境を取得するために vcvarsall.bat を実行できませんでした", "VcvarsRunFailedExitCode": "Visual Studio 環境を取得しようとしたときに、vcvarsall.bat が {exit_code} を返しました", - "VersionBaselineMismatch": "最新バージョンは {expected} ですが、ベースライン ファイルには {actual} が含まれています。\n以下を実行してください:\nvcpkg x-add-version {package_name}\ngit add versions\ngit commit -m \"Update version database\"\nベースライン バージョンを更新します。", + "VersionBaselineMatch": "{version_spec} が現在のベースラインと一致します", + "VersionBaselineMismatch": "{package_name} には {actual} が割り当てられていますが、ローカル ポートは {expected} です", "VersionBuiltinPortTreeEntryMissing": "{expected} で {package_name} のバージョン データベース エントリがありません。チェックアウトされたポートのツリー バージョン ({actual}) を使用しています。", "VersionCommandHeader": "vcpkg パッケージ管理プログラムのバージョン {version}\n\nライセンス情報については、LICENSE.txt を参照してください。", "VersionConflictXML": "{path} バージョン: [{expected_version}] が必要でしたが、[{actual_version}] でした。 bootstrap-vcpkg を再実行してください。", + "VersionConstraintNotInDatabase1": "{package_name} への \"version>=\" 制約により、バージョン データベースに存在しないバージョン {version} が指定されます。vcpkg で解釈するには、すべてのバージョンがバージョン データベースに存在する必要があります。", + "VersionConstraintNotInDatabase2": "バージョン制約を削除するか、ここで宣言されている値を選択することを検討してください", + "VersionConstraintOk": "すべてのバージョン制約がバージョン データベースと一致しています", "VersionConstraintPortVersionMustBePositiveInteger": "\"version>=\" 内の port-version ('#' の後) は負ではない整数である必要があります", - "VersionConstraintUnresolvable": "{spec} から依存関係 {package_name} の最小制約を解決できません。\n依存関係がベースラインに見つかりませんでした。これは、その時点でパッケージが存在しなかったことを示しています。これは、明示的なオーバーライド バージョンを \"overrides\" フィールドで指定するか、ベースラインを更新することで修正できます。\n詳細については、`vcpkg help versioning` を参照してください。", "VersionConstraintViolated": "依存関係 {spec} が少なくともバージョン {expected_version} であることが必要でしたが、現在は {actual_version} です。", "VersionDatabaseEntryMissing": "{version} に {package_name} のバージョン エントリがありません。", - "VersionDatabaseFileMissing": "{package_name} にバージョン データベース ファイルが {path}にありません\nvcpkg x-add-version {package_name}\nを実行して、\nバージョン ファイルを作成します。", + "VersionDatabaseFileMissing": "このポートはバージョン データベースにありません", + "VersionDatabaseFileMissing2": "バージョン データベース ファイルがここにある必要があります", + "VersionDatabaseFileMissing3": "'{command_line}' を実行してバージョン データベース ファイルを作成します", "VersionGitEntryMissing": "{version} に {package_name} のバージョン データベース エントリがありません。\n利用可能なバージョン:", - "VersionInDeclarationDoesNotMatch": "ファイルで宣言されたバージョンがチェックアウトされたバージョンと一致しません: {version}", + "VersionInDeclarationDoesNotMatch": "{git_tree_sha} は {expected} を含むと宣言されていますが、{actual} を含むようです", "VersionIncomparable1": "{spec} でのバージョンの競合: {constraint_origin} には {expected} が必要です。ベースライン バージョン {actual} と比較することはできません。", "VersionIncomparable2": "{version_spec} にはスキーム {new_scheme} があります", "VersionIncomparable3": "これは、優先するバージョンに明示的なオーバーライドを追加することで解決できます。例:", @@ -1117,17 +1087,29 @@ "VersionInvalidSemver": "'{version}' は有効なセマンティック バージョンではありません。 を参照してください。", "VersionMissing": "バージョン管理フィールドが必要です (version、version-date、version-semver、version-string のいずれか)", "VersionMissingRequiredFeature": "{version_spec} には、{constraint_origin} が必要とする機能 {feature} が必要ありません", - "VersionNotFound": "{expected} は利用できません。使用できるのは {actual} のみです", - "VersionNotFoundInVersionsFile": "{package_name} のバージョン ファイルにバージョン {version} が見つかりませんでした。\nvcpkg x-add-version {package_name}\nを実行して、\n新しいポート バージョンを追加します。", + "VersionNotFoundInVersionsFile2": "{version_spec} がバージョン データベースに見つかりませんでした", + "VersionNotFoundInVersionsFile3": "バージョンはこのファイルに含まれている必要があります", + "VersionNotFoundInVersionsFile4": "'{command_line}' を実行して新しいポート バージョンを追加します", + "VersionOverrideNotInVersionDatabase": "バージョン オーバーライド {package_name} がバージョン データベースに存在しません。そのポートは存在しますか?", + "VersionOverrideVersionNotInVersionDatabase1": "{package_name} のオーバーライドにより、バージョン データベースに存在しないバージョン {version} という名前が付けられます。最上位レベルでこのポートをインストールすると、そのバージョンが解決できなくなるため失敗します。", + "VersionOverrideVersionNotInVersionDatabase2": "バージョン オーバーライドを削除するか、ここで宣言されている値を選択することを検討してください", + "VersionOverwriteVersion": "次を実行して、{version_spec} を正しいローカル値で上書きできます。", "VersionRejectedDueToBaselineMissing": "{path} は 「{json_field}」を使用し、「builtin-baseline」がないため拒否されました。これは、「{json_field}」の使用を削除するか、「builtin-baseline」を追加することで修正できます。\n詳細については、「vcpkg ヘルプのバージョン管理」を参照してください。", "VersionRejectedDueToFeatureFlagOff": "「{json_field}」を使用し、'versions' 機能フラグが無効になっているため、{path} は拒否されました。これは、「{json_field}」を削除するか、'versions' 機能フラグを有効にすることで修正できます。\n詳細については、「vcpkg ヘルプのバージョン管理」を参照してください。", - "VersionSchemeMismatch": "バージョン データベースは {version} を {expected} として宣言していますが、{path} はそれを {actual} として宣言します。異なるスキームで宣言されている場合でも、バージョンは一意である必要があります。\nvcpkg x-add-version {package_name} --overwrite-version\nを実行して、\nバージョン データベースで宣言されているスキームをポートで宣言されたスキームで上書きします。", - "VersionShaMismatch": "{version} は {expected} で宣言されていますが、ローカル ポートの SHA {actual}が異なります。\nポートのバージョン フィールドを更新してから、次を実行してください:\nvcpkg x-add-version {package_name}\nGit のバージョンの追加\ngit commit -m \"Update version database\"\nで新しいバージョンを追加します。", - "VersionShaMissing": "{package_name} の検証中に Git SHA が見つかりません。\n以下を実行してください:\ngit add \"{path}\"\ngit commit -m \"wip\"\nvcpkg x-add-version {package_name}\ngit add versions\ngit commit --amend -m \"[{package_name}] Add new port\"\n新しいポートをコミットし、そのバージョン ファイルを作成します。", + "VersionSchemeMismatch1": "{version} は {expected} と宣言されていますが、{package_name} は {actual} で宣言されています", + "VersionSchemeMismatch1Old": "{version} は {expected} と宣言されていますが、{package_name}@{git_tree_sha} は {actual} で宣言されています", + "VersionSchemeMismatch2": "異なるスキームで宣言されている場合でも、バージョンは一意である必要があります", + "VersionShaMismatch1": "{version_spec} Git ツリー {git_tree_sha} がポート ディレクトリと一致しません", + "VersionShaMismatch2": "ポート ディレクトリに Git ツリー {git_tree_sha} があります", + "VersionShaMismatch3": "{version_spec} が既に公開されている場合は、このファイルを新しいバージョンまたはポート バージョンで更新し、コミットしてから、次を実行して新しいバージョンを追加します。", + "VersionShaMismatch4": "{version_spec} がまだ発行されていない場合は、次を実行して前の Git ツリーを上書きします。", + "VersionShaMissing1": "ポート ディレクトリの Git ツリーを特定できませんでした。これは通常、コミットされていない変更が原因で発生します。", + "VersionShaMissing2": "次を実行して、変更をコミットしてバージョン データベースに追加できます。", + "VersionShaMissing3": "WIP", + "VersionShaMissing4": "[{package_name}] 新しいポートの追加", "VersionSharpMustBeFollowedByPortVersion": "バージョン テキスト内の '#' の後にはポート バージョンが必要です", "VersionSharpMustBeFollowedByPortVersionNonNegativeInteger": "バージョン テキスト内の '#' の後にはポート バージョン (負でない整数) を指定する必要があります", "VersionSpecMismatch": "バージョンに一貫性がないため、ポートを読み込めませんでした。ファイル「{path}」にはバージョン {actual_version} が含まれていますが、バージョン データベースは {expected_version} であることを示しています。", - "VersionTableHeader": "バージョン", "VersionVerifiedOK": "{version_spec} がバージョン データベースに正しく存在します ({git_tree_sha})", "WaitingForChildrenToExit": "子プロセスの終了を待機しています...", "WaitingToTakeFilesystemLock": "{path} でファイルシステムのロックを取得するのを待機しています...", @@ -1136,8 +1118,7 @@ "WhileCheckingOutBaseline": "ベースライン {commit_sha} のチェックアウト中", "WhileCheckingOutPortTreeIsh": "Git ツリー {git_tree_sha} でポート {package_name} のチェックアウト中", "WhileGettingLocalTreeIshObjectsForPorts": "ポートのローカル ツリー設定オブジェクトの取得中", - "WhileLoadingLocalPort": "ローカル ポート {package_name} の読み込み中に", - "WhileLoadingPortFromGitTree": "ポートの読み込み中: {commit_sha}", + "WhileLoadingBaselineVersionForPort": "{package_name} のベースライン バージョンの読み込み中", "WhileLoadingPortVersion": "{version_spec} の読み込み中", "WhileLookingForSpec": "{spec} の検索中:", "WhileParsingVersionsForPort": "{path} からの {package_name} のバージョンの解析中", @@ -1165,7 +1146,7 @@ "descriptionShouldBeOfTypestringFound$": "description は 'string' 型である必要がありますが、'${p0}' が見つかりました", "optionsShouldBeASequenceFound$": "options はシーケンスである必要があります。'${p0}' が見つかりました", "DuplicateKeysDetectedInManifest$": "マニフェストで検出された重複キー: '${p0}'", - "noPostscriptFileRerunWithTheVcpkgShellFunctionRatherThanExecutable": "postscript ファイルがありません: 実行可能ファイルではなく vcpkg シェル関数を使用して再度実行してください", + "noPostscriptFileRunVcpkgshellWithTheSameArguments": "postscript ファイルがありません: 同じ引数で vcpkg-shell を実行します", "DuplicateDefine$DuringActivationNewValueWillReplaceOld": "アクティブ化中に ${p0} の定義が重複しています。古い値は新しい値に置き換わります。", "DuplicateToolDeclared$DuringActivationNewValueWillReplaceOld": "アクティブ化中に重複したツールが ${p0} を宣言しました。 古い値は新しい値に置き換わります。", "DuplicateAliasDeclared$DuringActivationNewValueWillReplaceOld": "アクティブ化中に重複したエイリアスが ${p0} を宣言しました。 古い値は新しい値に置き換わります。", @@ -1257,7 +1238,7 @@ "MultipleArtifactsSpecifiedButNotAnEqualNumberOf$Switches": "複数の成果物が指定されましたが、${p0} スイッチの数が等しくありません", "TriedToAddAnArtifact$$ButCouldNotDetermineTheRegistryToUse": "成果物 [${p0}]:${p1} を追加しようとしましたが、使用するレジストリを特定できませんでした。", "TriedToAddRegistry$As$ButItWasAlready$PleaseAdd$ToThisProjectManuallyAndReattempt": "レジストリ ${p0} を ${p1} として追加しようとしましたが、既に ${p2} でした。${p3} をこのプロジェクトに手動で追加して、再試行してください。", - "RunvcpkgActivateToApplyToTheCurrentTerminal": "\\`vcpkg activate\\` を実行して現在のターミナルに適用する", + "RunvcpkgshellActivateToApplyToTheCurrentTerminal": "\\`vcpkg-shell activate\\` を実行して現在のターミナルに適用する", "DownloadsFolderCleared$": "ダウンロード フォルダーがクリアされました (${p0})", "InstalledArtifactFolderCleared$": "インストールされた成果物フォルダーがクリアされました (${p0})", "CacheFolderCleared$": "キャッシュ フォルダーがクリアされました (${p0})", diff --git a/locales/messages.json b/locales/messages.json index f64a7d844b..3ce795ad03 100644 --- a/locales/messages.json +++ b/locales/messages.json @@ -48,8 +48,6 @@ "AddArtifactOnlyOne": "'{command_line}' can only add one artifact at a time.", "_AddArtifactOnlyOne.comment": "An example of {command_line} is vcpkg install zlib.", "AddCommandFirstArg": "The first parameter to add must be 'artifact' or 'port'.", - "AddFirstArgument": "The first argument to '{command_line}' must be 'artifact' or 'port'.", - "_AddFirstArgument.comment": "An example of {command_line} is vcpkg install zlib.", "AddPortRequiresManifest": "'{command_line}' requires an active manifest file.", "_AddPortRequiresManifest.comment": "An example of {command_line} is vcpkg install zlib.", "AddPortSucceeded": "Succeeded in adding ports to vcpkg.json file.", @@ -61,7 +59,6 @@ "AddVersionArtifactsOnly": "--version is artifacts only and can't be used with vcpkg add port", "_AddVersionArtifactsOnly.comment": "'--version', and 'vcpkg add port' are command lines that must not be localized", "AddVersionCommitChangesReminder": "Did you remember to commit your changes?", - "AddVersionCommitResultReminder": "Don't forget to commit the result!", "AddVersionDetectLocalChangesError": "skipping detection of local changes due to unexpected format in git status output", "AddVersionFileNotFound": "couldn't find required file {path}", "_AddVersionFileNotFound.comment": "An example of {path} is /foo/bar.", @@ -69,8 +66,8 @@ "_AddVersionFormatPortSuggestion.comment": "An example of {command_line} is vcpkg install zlib.", "AddVersionIgnoringOptionAll": "ignoring --{option} since a port name argument was provided", "_AddVersionIgnoringOptionAll.comment": "The -- before {option} must be preserved as they're part of the help message for the user. An example of {option} is editable.", - "AddVersionLoadPortFailed": "can't load port {package_name}", - "_AddVersionLoadPortFailed.comment": "An example of {package_name} is zlib.", + "AddVersionInstructions": "you can run the following commands to add the current version of {package_name} automatically:", + "_AddVersionInstructions.comment": "An example of {package_name} is zlib.", "AddVersionNewFile": "(new file)", "AddVersionNewShaIs": "new SHA: {commit_sha}", "_AddVersionNewShaIs.comment": "An example of {commit_sha} is 7cfad47ae9f68b183983090afd6337cd60fd4949.", @@ -89,10 +86,10 @@ "_AddVersionPortFilesShaUnchanged.comment": "An example of {package_name} is zlib. An example of {version} is 1.3.8.", "AddVersionPortHasImproperFormat": "{package_name} is not properly formatted", "_AddVersionPortHasImproperFormat.comment": "An example of {package_name} is zlib.", - "AddVersionSuggestNewVersionScheme": "Use the version scheme \"{new_scheme}\" rather than \"{old_scheme}\" in port \"{package_name}\".\nUse --{option} to disable this check.", - "_AddVersionSuggestNewVersionScheme.comment": "The -- before {option} must be preserved as they're part of the help message for the user. An example of {new_scheme} is version. An example of {old_scheme} is version-string. An example of {package_name} is zlib. An example of {option} is editable.", - "AddVersionUnableToParseVersionsFile": "unable to parse versions file {path}", - "_AddVersionUnableToParseVersionsFile.comment": "An example of {path} is /foo/bar.", + "AddVersionSuggestVersionDate": "The version format of \"{package_name}\" uses \"version-string\", but the format is acceptable as a \"version-date\". If this format is actually intended to be an ISO 8601 date, change the format to \"version-date\", and rerun this command. Otherwise, disable this check by rerunning this command and adding --skip-version-format-check .", + "_AddVersionSuggestVersionDate.comment": "\"version-string\" and \"version-date\" are JSON keys, and --skip-version-format-check is a command line switch. They should not be translated An example of {package_name} is zlib.", + "AddVersionSuggestVersionRelaxed": "The version format of \"{package_name}\" uses \"version-string\", but the format is acceptable as a \"version\". If the versions for this port are orderable using relaxed-version rules, change the format to \"version\", and rerun this command. Relaxed-version rules order versions by each numeric component. Then, versions with dash suffixes are sorted lexcographically before. Plus'd build tags are ignored. Examples:\n1.0 < 1.1-alpha < 1.1-b < 1.1 < 1.1.1 < 1.2+build = 1.2 < 2.0\nNote in particular that dashed suffixes sort *before*, not after. 1.0-anything < 1.0\nNote that this sort order is the same as chosen in Semantic Versioning (see https://semver.org), even though the actually semantic parts do not apply.\nIf versions for this port are not ordered by these rules, disable this check by rerunning this command and adding --skip-version-format-check .", + "_AddVersionSuggestVersionRelaxed.comment": "\"version-string\" and \"version\" are JSON keys, and --skip-version-format-check is a command line switch. They should not be translated An example of {package_name} is zlib.", "AddVersionUncommittedChanges": "there are uncommitted changes for {package_name}", "_AddVersionUncommittedChanges.comment": "An example of {package_name} is zlib.", "AddVersionUpdateVersionReminder": "Did you remember to update the version or port version?", @@ -110,7 +107,7 @@ "_AllFormatArgsRawArgument.comment": "example of {value} is 'foo {} bar'", "AllFormatArgsUnbalancedBraces": "unbalanced brace in format string \"{value}\"", "_AllFormatArgsUnbalancedBraces.comment": "example of {value} is 'foo bar {'", - "AllPackagesAreUpdated": "All installed packages are up-to-date with the local portfile.", + "AllPackagesAreUpdated": "All installed packages are up-to-date.", "AlreadyInstalled": "{spec} is already installed", "_AlreadyInstalled.comment": "An example of {spec} is zlib:x64-windows.", "AlreadyInstalledNotHead": "{spec} is already installed -- not building from HEAD", @@ -143,7 +140,6 @@ "ApplocalProcessing": "deploying dependencies", "ArtifactsBootstrapFailed": "vcpkg-artifacts is not installed and could not be bootstrapped.", "ArtifactsNotInstalledReadonlyRoot": "vcpkg-artifacts is not installed, and it can't be installed because VCPKG_ROOT is assumed to be readonly. Reinstalling vcpkg using the 'one liner' may fix this problem.", - "ArtifactsNotOfficialWarning": "Using vcpkg-artifacts with an unofficial ", "ArtifactsOptionIncompatibility": "--{option} has no effect on find artifact.", "_ArtifactsOptionIncompatibility.comment": "An example of {option} is editable.", "ArtifactsOptionJson": "Full path to JSON file where environment variables and other properties are recorded", @@ -153,12 +149,10 @@ "_ArtifactsOptionVersionMismatch.comment": "--version is a command line switch and must not be localized", "ArtifactsSwitchARM": "Forces host detection to ARM when acquiring artifacts", "ArtifactsSwitchARM64": "Forces host detection to ARM64 when acquiring artifacts", - "ArtifactsSwitchAll": "Updates all known artifact registries", "ArtifactsSwitchAllLanguages": "Acquires all language files when acquiring artifacts", "ArtifactsSwitchForce": "Forces reacquire if an artifact is already acquired", "ArtifactsSwitchFreebsd": "Forces host detection to FreeBSD when acquiring artifacts", "ArtifactsSwitchLinux": "Forces host detection to Linux when acquiring artifacts", - "ArtifactsSwitchNormalize": "Applies any deprecation fixups", "ArtifactsSwitchOnlyOneHostPlatform": "Only one host platform (--x64, --x86, --arm, --arm64) may be set.", "_ArtifactsSwitchOnlyOneHostPlatform.comment": "The words after -- are command line switches and must not be localized.", "ArtifactsSwitchOnlyOneOperatingSystem": "Only one operating system (--windows, --osx, --linux, --freebsd) may be set.", @@ -173,11 +167,17 @@ "ArtifactsSwitchWindows": "Forces host detection to Windows when acquiring artifacts", "ArtifactsSwitchX64": "Forces host detection to x64 when acquiring artifacts", "ArtifactsSwitchX86": "Forces host detection to x86 when acquiring artifacts", + "AssetCacheHit": "Asset cache hit for {path}; downloaded from: {url}", + "_AssetCacheHit.comment": "An example of {path} is /foo/bar. An example of {url} is https://github.com/microsoft/vcpkg.", + "AssetCacheMiss": "Asset cache miss; downloading from {url}", + "_AssetCacheMiss.comment": "An example of {url} is https://github.com/microsoft/vcpkg.", + "AssetCacheMissBlockOrigin": "Asset cache miss for {path} and downloads are blocked by x-block-origin.", + "_AssetCacheMissBlockOrigin.comment": "x-block-origin is a vcpkg term. Do not translate An example of {path} is /foo/bar.", "AssetCacheProviderAcceptsNoArguments": "unexpected arguments: '{value}' does not accept arguments", "_AssetCacheProviderAcceptsNoArguments.comment": "{value} is a asset caching provider name such as azurl, clear, or x-block-origin", + "AssetCacheSuccesfullyStored": "Successfully stored {path} to {url}.", + "_AssetCacheSuccesfullyStored.comment": "An example of {path} is /foo/bar. An example of {url} is https://github.com/microsoft/vcpkg.", "AssetSourcesArg": "Asset caching sources. See 'vcpkg help assetcaching'", - "AttemptingToFetchPackagesFromVendor": "Attempting to fetch {count} package(s) from {vendor}", - "_AttemptingToFetchPackagesFromVendor.comment": "An example of {count} is 42. An example of {vendor} is Azure.", "AttemptingToSetBuiltInBaseline": "attempting to set builtin-baseline in vcpkg.json while overriding the default-registry in vcpkg-configuration.json.\nthe default-registry from vcpkg-configuration.json will be used.", "AuthenticationMayRequireManualAction": "One or more {vendor} credential providers requested manual action. Add the binary source 'interactive' to allow interactivity.", "_AuthenticationMayRequireManualAction.comment": "An example of {vendor} is Azure.", @@ -189,17 +189,15 @@ "AzUrlAssetCacheRequiresBaseUrl": "unexpected arguments: asset config 'azurl' requires a base url", "AzUrlAssetCacheRequiresLessThanFour": "unexpected arguments: asset config 'azurl' requires fewer than 4 arguments", "BaselineConflict": "Specifying vcpkg-configuration.default-registry in a manifest file conflicts with built-in baseline.\nPlease remove one of these conflicting settings.", - "BaselineFileNoDefaultField": "The baseline file at commit {commit_sha} was invalid (no \"default\" field).", - "_BaselineFileNoDefaultField.comment": "An example of {commit_sha} is 7cfad47ae9f68b183983090afd6337cd60fd4949.", "BaselineGitShowFailed": "while checking out baseline from commit '{commit_sha}', failed to `git show` versions/baseline.json. This may be fixed by fetching commits with `git fetch`.", "_BaselineGitShowFailed.comment": "An example of {commit_sha} is 7cfad47ae9f68b183983090afd6337cd60fd4949.", - "BaselineMissing": "Baseline version not found. Run:\nvcpkg x-add-version {package_name}\ngit add versions\ngit commit -m \"Update version database\"\nto set {version} as the baseline version.", - "_BaselineMissing.comment": "An example of {package_name} is zlib. An example of {version} is 1.3.8.", - "BinaryCacheVendorHTTP": "HTTP servers", + "BaselineMissing": "{package_name} is not assigned a version", + "_BaselineMissing.comment": "An example of {package_name} is zlib.", + "BinariesRelativeToThePackageDirectoryHere": "the binaries are relative to ${{CURRENT_PACKAGES_DIR}} here", "BinarySourcesArg": "Binary caching sources. See 'vcpkg help binarycaching'", "_BinarySourcesArg.comment": "'vcpkg help binarycaching' is a command line and should not be localized", - "BinaryWithInvalidArchitecture": "{path}\n Expected: {expected}, but was {actual}", - "_BinaryWithInvalidArchitecture.comment": "{expected} and {actual} are architectures An example of {path} is /foo/bar.", + "BinaryWithInvalidArchitecture": "{path} is built for {arch}", + "_BinaryWithInvalidArchitecture.comment": "An example of {path} is /foo/bar. An example of {arch} is x64.", "BuildAlreadyInstalled": "{spec} is already installed; please remove {spec} before attempting to build it.", "_BuildAlreadyInstalled.comment": "An example of {spec} is zlib:x64-windows.", "BuildDependenciesMissing": "The build command requires all dependencies to be already installed.\nThe following dependencies are missing:", @@ -232,8 +230,6 @@ "_BuildTroubleshootingMessage2.comment": "Second part of build troubleshooting message, printed after the URI to look for existing bugs but before the URI to file one.", "BuildTroubleshootingMessage3": "Include '[{package_name}] Build error' in your bug report title, the following version information in your bug description, and attach any relevant failure logs from above.", "_BuildTroubleshootingMessage3.comment": "Third part of build troubleshooting message, printed after the URI to file a bug but before version information about vcpkg itself. An example of {package_name} is zlib.", - "BuildTroubleshootingMessage4": "Please use the prefilled template from {path} when reporting your issue.", - "_BuildTroubleshootingMessage4.comment": "Fourth optional part of build troubleshooting message, printed after the versioninformation about vcpkg itself. An example of {path} is /foo/bar.", "BuildTroubleshootingMessageGH": "You can also submit an issue by running (GitHub CLI must be installed):", "_BuildTroubleshootingMessageGH.comment": "Another part of build troubleshooting message, printed after the URI. An alternative version to create an issue in some cases.", "BuildingFromHead": "Building {spec} from HEAD...", @@ -245,15 +241,14 @@ "BuildingPackageFailedDueToMissingDeps": "due to the following missing dependencies:", "_BuildingPackageFailedDueToMissingDeps.comment": "Printed after BuildingPackageFailed, and followed by a list of dependencies that were missing.", "BuiltInTriplets": "Built-in Triplets:", - "BuiltWithIncorrectArchitecture": "The following files were built for an incorrect architecture:", - "CISettingsExclude": "Comma-separated list of ports to skip", + "BuiltWithIncorrectArchitecture": "The triplet requests that binaries are built for {arch}, but the following binaries were built for a different architecture. This usually means toolchain information is incorrectly conveyed to the binaries' build system. To suppress this message, add set(VCPKG_POLICY_SKIP_ARCHITECTURE_CHECK enabled)", + "_BuiltWithIncorrectArchitecture.comment": "An example of {arch} is x64.", "CISettingsOptCIBase": "Path to the ci.baseline.txt file. Used to skip ports and detect regressions.", "CISettingsOptExclude": "Comma separated list of ports to skip", "CISettingsOptFailureLogs": "Directory to which failure logs will be copied", "CISettingsOptHostExclude": "Comma separated list of ports to skip for the host triplet", "CISettingsOptOutputHashes": "File to output all determined package hashes", "CISettingsOptParentHashes": "File to read package hashes for a parent CI state, to reduce the set of changed packages", - "CISettingsOptSkippedCascadeCount": "Asserts that the number of --exclude and supports skips exactly equal this number", "CISettingsOptXUnit": "File to output results in XUnit format", "CISettingsVerifyGitTree": "Verifies that each git tree object matches its declared version (this is very slow)", "CISettingsVerifyVersion": "Prints result for each port rather than only just errors", @@ -274,9 +269,6 @@ "_CMakeToolChainFile.comment": "An example of {path} is /foo/bar.", "CMakeUsingExportedLibs": "To use exported libraries in CMake projects, add {value} to your CMake command line.", "_CMakeUsingExportedLibs.comment": "{value} is a CMake command line switch of the form -DFOO=BAR", - "CheckedOutGitSha": "Checked out Git SHA: {commit_sha}", - "_CheckedOutGitSha.comment": "An example of {commit_sha} is 7cfad47ae9f68b183983090afd6337cd60fd4949.", - "CheckedOutObjectMissingManifest": "The checked-out object does not contain a CONTROL file or vcpkg.json file.", "ChecksFailedCheck": "vcpkg has crashed; no additional details are available.", "ChecksUnreachableCode": "unreachable code was reached", "ChecksUpdateVcpkg": "updating vcpkg by rerunning bootstrap-vcpkg may resolve this failure.", @@ -324,9 +316,6 @@ "_CmdBuildExternalExample2.comment": "This is a command line, only the path part should be changed to a path conveying the same idea", "CmdBuildExternalSynopsis": "Builds port from a path", "CmdBuildSynopsis": "Builds a port", - "CmdCacheExample1": "vcpkg cache ", - "_CmdCacheExample1.comment": "This is a command line, only the <>s part should be localized", - "CmdCacheSynopsis": "List specs of packages", "CmdCheckSupportExample1": "vcpkg x-check-support ", "_CmdCheckSupportExample1.comment": "This is a command line, only the <>s part should be localized", "CmdCheckSupportSynopsis": "Tests whether a port is supported without building it", @@ -335,7 +324,6 @@ "CmdCiSynopsis": "Tries building all ports for CI testing", "_CmdCiSynopsis.comment": "CI is continuous integration (building everything together)", "CmdCiVerifyVersionsSynopsis": "Checks integrity of the version database", - "CmdContactOptSurvey": "Launch default browser to the current vcpkg survey", "CmdCreateExample1": "vcpkg create ", "_CmdCreateExample1.comment": "This is a command line, only the <>s part should be localized", "CmdCreateExample2": "vcpkg create my-fancy-port https://example.com/sources.zip", @@ -370,7 +358,7 @@ "CmdEnvOptions": "Adds installed {path} to {env_var}", "_CmdEnvOptions.comment": "An example of {path} is /foo/bar. An example of {env_var} is VCPKG_DEFAULT_TRIPLET.", "CmdExportEmptyPlan": "Refusing to create an export of zero packages. Install packages before exporting.", - "CmdExportExample1": "vcpkg export [--nuget] [--directory=out_dir]", + "CmdExportExample1": "vcpkg export [--nuget] [--output-dir=out_dir]", "_CmdExportExample1.comment": "This is a command line, only and the out_dir part should be localized", "CmdExportOpt7Zip": "Exports to a 7zip (.7z) file", "CmdExportOptChocolatey": "Exports a Chocolatey package (experimental)", @@ -508,8 +496,10 @@ "CmdZExtractOptStrip": "The number of leading directories to strip from all paths", "CommandEnvExample2": "vcpkg env \"ninja -C \" --triplet x64-windows", "_CommandEnvExample2.comment": "This is a command line, only the part should be localized", - "CommandFailed": "command:\n{command_line}\nfailed with the following results:", + "CommandFailed": "command:\n{command_line}\nfailed with the following output:", "_CommandFailed.comment": "An example of {command_line} is vcpkg install zlib.", + "CommandFailedCode": "command:\n{command_line}\nfailed with exit code {exit_code} and the following output:", + "_CommandFailedCode.comment": "An example of {command_line} is vcpkg install zlib. An example of {exit_code} is 127.", "CommunityTriplets": "Community Triplets:", "CompilerPath": "Compiler found: {path}", "_CompilerPath.comment": "An example of {path} is /foo/bar.", @@ -526,12 +516,9 @@ "_ConsideredVersions.comment": "An example of {version} is 1.3.8.", "ConstraintViolation": "Found a constraint violation:", "ContinueCodeUnitInStart": "found continue code unit in start position", - "ControlAndManifestFilesPresent": "Both a manifest file and a CONTROL file exist in port directory: {path}", - "_ControlAndManifestFilesPresent.comment": "An example of {path} is /foo/bar.", "ControlCharacterInString": "Control character in string", "ControlSupportsMustBeAPlatformExpression": "\"Supports\" must be a platform expression", - "CopyrightIsDir": "`{path}` being a directory is deprecated.", - "_CopyrightIsDir.comment": "An example of {path} is /foo/bar.", + "CopyrightIsDir": "this port sets ${{CURRENT_PACKAGES_DIR}}/share/${{PORT}}/copyright to a directory, but it should be a file. Consider combining separate copyright files into one using vcpkg_install_copyright. To suppress this message, add set(VCPKG_POLICY_SKIP_COPYRIGHT_CHECK enabled)", "CorruptedDatabase": "vcpkg's installation database corrupted. This is either a bug in vcpkg or something else has modified the contents of the 'installed' directory in an unexpected way. You may be able to fix this by deleting the 'installed' directory and reinstalling what you want to use. If this problem happens consistently, please file a bug at https://github.com/microsoft/vcpkg .", "CorruptedInstallTree": "Your vcpkg 'installed' tree is corrupted.", "CouldNotDeduceNugetIdAndVersion": "Could not deduce nuget id and version from filename: {path}", @@ -553,21 +540,18 @@ "CreatingZipArchive": "Creating zip archive...", "CreationFailed": "Creating {path} failed.", "_CreationFailed.comment": "An example of {path} is /foo/bar.", - "CurlFailedToExecute": "curl failed to execute with exit code {exit_code}.", - "_CurlFailedToExecute.comment": "curl is the name of a program, see curl.se An example of {exit_code} is 127.", "CurlFailedToPut": "curl failed to put file to {url} with exit code {exit_code}.", "_CurlFailedToPut.comment": "curl is the name of a program, see curl.se An example of {exit_code} is 127. An example of {url} is https://github.com/microsoft/vcpkg.", "CurlFailedToPutHttp": "curl failed to put file to {url} with exit code {exit_code} and http code {value}.", "_CurlFailedToPutHttp.comment": "curl is the name of a program, see curl.se. {value} is an HTTP status code An example of {exit_code} is 127. An example of {url} is https://github.com/microsoft/vcpkg.", - "CurlReportedUnexpectedResults": "curl has reported unexpected results to vcpkg and vcpkg cannot continue.\nPlease review the following text for sensitive information and open an issue on the Microsoft/vcpkg GitHub to help fix this problem!\ncmd: {command_line}\n=== curl output ===\n{actual}\n=== end curl output ===", - "_CurlReportedUnexpectedResults.comment": "{command_line} is the command line to call curl.exe, {actual} is the console output of curl.exe locale-invariant download results. An example of {command_line} is vcpkg install zlib.", - "CurlReturnedUnexpectedResponseCodes": "curl returned a different number of response codes than were expected for the request ({actual} vs expected {expected}).", - "_CurlReturnedUnexpectedResponseCodes.comment": "{actual} and {expected} are integers, curl is the name of a program, see curl.se", + "CurlResponseTruncatedRetrying": "curl returned a partial response; waiting {value} milliseconds and trying again", + "_CurlResponseTruncatedRetrying.comment": "{value} is the number of milliseconds for which we are waiting this time", + "CurlTimeout": "curl was unable to perform all requested HTTP operations, even after timeout and retries. The last command line was: {command_line}", + "_CurlTimeout.comment": "An example of {command_line} is vcpkg install zlib.", "CurrentCommitBaseline": "You can use the current commit as a baseline, which is:\n\t\"builtin-baseline\": \"{commit_sha}\"", "_CurrentCommitBaseline.comment": "An example of {commit_sha} is 7cfad47ae9f68b183983090afd6337cd60fd4949.", "CycleDetectedDuring": "cycle detected during {spec}:", "_CycleDetectedDuring.comment": "An example of {spec} is zlib:x64-windows.", - "DateTableHeader": "Date", "DefaultBinaryCachePlatformCacheRequiresAbsolutePath": "Environment variable VCPKG_DEFAULT_BINARY_CACHE must be a directory (was: {path})", "_DefaultBinaryCachePlatformCacheRequiresAbsolutePath.comment": "An example of {path} is /foo/bar.", "DefaultBinaryCacheRequiresAbsolutePath": "Environment variable VCPKG_DEFAULT_BINARY_CACHE must be absolute (was: {path})", @@ -591,9 +575,15 @@ "DependencyGraphCalculation": "Dependency graph submission enabled.", "DependencyGraphFailure": "Dependency graph submission failed.", "DependencyGraphSuccess": "Dependency graph submission successful.", + "DependencyInFeature": "the dependency is in the feature named {feature}", + "_DependencyInFeature.comment": "An example of {feature} is avisynthplus.", + "DependencyNotInVersionDatabase": "the dependency {package_name} does not exist in the version database; does that port exist?", + "_DependencyNotInVersionDatabase.comment": "An example of {package_name} is zlib.", "DeprecatedPrefabDebugOption": "--prefab-debug is now deprecated.", "DetectCompilerHash": "Detecting compiler hash for triplet {triplet}...", "_DetectCompilerHash.comment": "An example of {triplet} is x64-windows.", + "DirectoriesRelativeToThePackageDirectoryHere": "the directories are relative to ${{CURRENT_PACKAGES_DIR}} here", + "DllsRelativeToThePackageDirectoryHere": "the DLLs are relative to ${{CURRENT_PACKAGES_DIR}} here", "DocumentedFieldsSuggestUpdate": "If these are documented fields that should be recognized try updating the vcpkg tool.", "DownloadAvailable": "A downloadable copy of this tool is available and can be used by unsetting {env_var}.", "_DownloadAvailable.comment": "An example of {env_var} is VCPKG_DEFAULT_TRIPLET.", @@ -611,10 +601,8 @@ "_DownloadWinHttpError.comment": "An example of {system_api} is CreateProcessW. An example of {exit_code} is 127. An example of {url} is https://github.com/microsoft/vcpkg.", "DownloadedSources": "Downloaded sources for {spec}", "_DownloadedSources.comment": "An example of {spec} is zlib:x64-windows.", - "DownloadingPortableToolVersionX": "A suitable version of {tool_name} was not found (required v{version}) Downloading portable {tool_name} {version}...", + "DownloadingPortableToolVersionX": "A suitable version of {tool_name} was not found (required v{version}).", "_DownloadingPortableToolVersionX.comment": "An example of {tool_name} is aria2. An example of {version} is 1.3.8.", - "DownloadingTool": "Downloading {tool_name}...\n{url}->{path}", - "_DownloadingTool.comment": "An example of {tool_name} is aria2. An example of {url} is https://github.com/microsoft/vcpkg. An example of {path} is /foo/bar.", "DownloadingUrl": "Downloading {url}", "_DownloadingUrl.comment": "An example of {url} is https://github.com/microsoft/vcpkg.", "DownloadingVcpkgStandaloneBundle": "Downloading standalone bundle {version}.", @@ -632,8 +620,6 @@ "_DuplicatedKeyInObj.comment": "{value} is a json property/object", "ElapsedForPackage": "Elapsed time to handle {spec}: {elapsed}", "_ElapsedForPackage.comment": "An example of {spec} is zlib:x64-windows. An example of {elapsed} is 3.532 min.", - "ElapsedInstallTime": "Total elapsed time: {count}", - "_ElapsedInstallTime.comment": "An example of {count} is 42.", "ElapsedTimeForChecks": "Time to determine pass/fail: {elapsed}", "_ElapsedTimeForChecks.comment": "An example of {elapsed} is 3.532 min.", "EmailVcpkgTeam": "Send an email to {url} with any feedback.", @@ -682,13 +668,13 @@ "_ErrorWhileParsing.comment": "An example of {path} is /foo/bar.", "ErrorWhileWriting": "Error occurred while writing {path}.", "_ErrorWhileWriting.comment": "An example of {path} is /foo/bar.", - "ErrorsFound": "Found the following errors:", "ExamplesHeader": "Examples:", "_ExamplesHeader.comment": "Printed before a list of example command lines", "ExceededRecursionDepth": "Recursion depth exceeded.", "ExcludedPackage": "Excluded {spec}", "_ExcludedPackage.comment": "An example of {spec} is zlib:x64-windows.", "ExcludedPackages": "The following packages are excluded:", + "ExecutablesRelativeToThePackageDirectoryHere": "the executables are relative to ${{CURRENT_PACKAGES_DIR}} here", "ExpectedAnObject": "expected an object", "ExpectedAtMostOneSetOfTags": "Found {count} sets of {old_value}.*{new_value} but expected at most 1, in block:\n{value}", "_ExpectedAtMostOneSetOfTags.comment": "{old_value} is a left tag and {new_value} is the right tag. {value} is the input. An example of {count} is 42.", @@ -712,7 +698,6 @@ "ExpectedTripletName": "expected a triplet name here (must be lowercase, digits, '-')", "ExportArchitectureReq": "Export prefab requires targeting at least one of the following architectures arm64-v8a, armeabi-v7a, x86_64, x86 to be present.", "ExportPrefabRequiresAndroidTriplet": "export prefab requires an Android triplet.", - "ExportUnsupportedInManifest": "vcpkg export does not support manifest mode, in order to allow for future design considerations. You may use export in classic mode by running vcpkg outside of a manifest-based project.", "Exported7zipArchive": "7zip archive exported at: {path}", "_Exported7zipArchive.comment": "An example of {path} is /foo/bar.", "ExportedZipArchive": "Zip archive exported at: {path}", @@ -726,8 +711,8 @@ "ExtractHelp": "Extracts an archive.", "ExtractingTool": "Extracting {tool_name}...", "_ExtractingTool.comment": "An example of {tool_name} is aria2.", - "FailedPostBuildChecks": "Found {count} post-build check problem(s). To submit these ports to curated catalogs, please first correct the portfile: {path}", - "_FailedPostBuildChecks.comment": "An example of {count} is 42. An example of {path} is /foo/bar.", + "FailedPostBuildChecks": "Found {count} post-build check problem(s). These are usually caused by bugs in portfile.cmake or the upstream build system. Please correct these before submitting this port to the curated registry.", + "_FailedPostBuildChecks.comment": "An example of {count} is 42.", "FailedToAcquireMutant": "failed to acquire mutant {path}", "_FailedToAcquireMutant.comment": "'mutant' is the Windows kernel object returned by CreateMutexW An example of {path} is /foo/bar.", "FailedToCheckoutRepo": "failed to check out `versions` from repo {package_name}", @@ -736,10 +721,7 @@ "_FailedToDeleteDueToFile.comment": "{value} is the parent path of {path} we tried to delete; the underlying Windows error message is printed after this An example of {path} is /foo/bar.", "FailedToDeleteInsideDueToFile": "failed to remove_all_inside({value}) due to {path}: ", "_FailedToDeleteInsideDueToFile.comment": "{value} is the parent path of {path} we tried to delete; the underlying Windows error message is printed after this An example of {path} is /foo/bar.", - "FailedToDetermineArchitecture": "unable to determine the architecture of {path}.\n{command_line}", - "_FailedToDetermineArchitecture.comment": "An example of {path} is /foo/bar. An example of {command_line} is vcpkg install zlib.", "FailedToDetermineCurrentCommit": "Failed to determine the current commit:", - "FailedToDownloadFromMirrorSet": "Failed to download from mirror set", "FailedToExtract": "Failed to extract \"{path}\":", "_FailedToExtract.comment": "An example of {path} is /foo/bar.", "FailedToFetchRepo": "Failed to fetch {url}.", @@ -754,7 +736,6 @@ "FailedToLocateSpec": "Failed to locate spec in graph: {spec}", "_FailedToLocateSpec.comment": "An example of {spec} is zlib:x64-windows.", "FailedToObtainDependencyVersion": "Cannot find desired dependency version.", - "FailedToObtainLocalPortGitSha": "Failed to obtain git SHAs for local ports.", "FailedToObtainPackageVersion": "Cannot find desired package version.", "FailedToOpenAlgorithm": "failed to open {value}", "_FailedToOpenAlgorithm.comment": "{value} is a crypto algorithm like SHA-1 or SHA-512", @@ -763,33 +744,23 @@ "FailedToParseCMakeConsoleOut": "Failed to parse CMake console output to locate block start/end markers.", "FailedToParseConfig": "Failed to parse configuration: {path}", "_FailedToParseConfig.comment": "An example of {path} is /foo/bar.", - "FailedToParseControl": "Failed to parse CONTROL file: {path}", - "_FailedToParseControl.comment": "An example of {path} is /foo/bar.", - "FailedToParseManifest": "Failed to parse manifest file: {path}", - "_FailedToParseManifest.comment": "An example of {path} is /foo/bar.", "FailedToParseNoTopLevelObj": "Failed to parse {path}, expected a top-level object.", "_FailedToParseNoTopLevelObj.comment": "An example of {path} is /foo/bar.", "FailedToParseNoVersionsArray": "Failed to parse {path}, expected a 'versions' array.", "_FailedToParseNoVersionsArray.comment": "An example of {path} is /foo/bar.", "FailedToParseSerializedBinParagraph": "[sanity check] Failed to parse a serialized binary paragraph.\nPlease open an issue at https://github.com/microsoft/vcpkg, with the following output:\n{error_msg}\nSerialized Binary Paragraph:", "_FailedToParseSerializedBinParagraph.comment": "'{error_msg}' is the error message for failing to parse the Binary Paragraph. An example of {error_msg} is File Not Found.", + "FailedToParseVersionFile": "Failed to parse version file: {path}", + "_FailedToParseVersionFile.comment": "An example of {path} is /foo/bar.", "FailedToParseVersionXML": "Could not parse version for tool {tool_name}. Version string was: {version}", "_FailedToParseVersionXML.comment": "An example of {tool_name} is aria2. An example of {version} is 1.3.8.", - "FailedToParseVersionsFile": "failed to parse versions file {path}", - "_FailedToParseVersionsFile.comment": "An example of {path} is /foo/bar.", - "FailedToProvisionCe": "Failed to provision vcpkg-artifacts.", - "FailedToReadParagraph": "Failed to read paragraphs from {path}", - "_FailedToReadParagraph.comment": "An example of {path} is /foo/bar.", - "FailedToRemoveControl": "Failed to remove control file {path}", - "_FailedToRemoveControl.comment": "An example of {path} is /foo/bar.", "FailedToRunToolToDetermineVersion": "Failed to run \"{path}\" to determine the {tool_name} version.", "_FailedToRunToolToDetermineVersion.comment": "Additional information, such as the command line output, if any, will be appended on the line after this message An example of {tool_name} is aria2. An example of {path} is /foo/bar.", - "FailedToStoreBackToMirror": "failed to store back to mirror:", + "FailedToStoreBackToMirror": "Failed to store {path} to {url}.", + "_FailedToStoreBackToMirror.comment": "An example of {path} is /foo/bar. An example of {url} is https://github.com/microsoft/vcpkg.", "FailedToStoreBinaryCache": "Failed to store binary cache {path}", "_FailedToStoreBinaryCache.comment": "An example of {path} is /foo/bar.", "FailedToTakeFileSystemLock": "Failed to take the filesystem lock", - "FailedToWriteManifest": "Failed to write manifest file {path}", - "_FailedToWriteManifest.comment": "An example of {path} is /foo/bar.", "FailedVendorAuthentication": "One or more {vendor} credential providers failed to authenticate. See '{url}' for more details on how to provide credentials.", "_FailedVendorAuthentication.comment": "An example of {vendor} is Azure. An example of {url} is https://github.com/microsoft/vcpkg.", "FetchingBaselineInfo": "Fetching baseline information from {package_name}...", @@ -805,14 +776,16 @@ "_FileReadFailed.comment": "An example of {path} is /foo/bar. An example of {byte_offset} is 42. An example of {count} is 42.", "FileSeekFailed": "Failed to seek to position {byte_offset} in {path}.", "_FileSeekFailed.comment": "An example of {path} is /foo/bar. An example of {byte_offset} is 42.", - "FileSystemOperationFailed": "Filesystem operation failed:", - "FilesContainAbsolutePath1": "There should be no absolute paths, such as the following, in an installed package:", + "FilesContainAbsolutePath1": "There should be no absolute paths, such as the following, in an installed package. To suppress this message, add set(VCPKG_POLICY_SKIP_ABSOLUTE_PATHS_CHECK enabled)", "_FilesContainAbsolutePath1.comment": "This message is printed before a list of found absolute paths, followed by FilesContainAbsolutePath2, followed by a list of found files.", - "FilesContainAbsolutePath2": "Absolute paths were found in the following files:", + "FilesContainAbsolutePath2": "absolute paths found here", + "FilesContainAbsolutePathPkgconfigNote": "Adding a call to `vcpkg_fixup_pkgconfig()` may fix absolute paths in .pc files", "FilesExported": "Files exported at: {path}", "_FilesExported.comment": "An example of {path} is /foo/bar.", - "FindHelp": "Searches for the indicated artifact or port. With no parameter after 'artifact' or 'port', displays everything.", - "_FindHelp.comment": "'artifact' and 'port' are what the user must literally type.", + "FilesRelativeToTheBuildDirectoryHere": "the files are relative to the build directory here", + "FilesRelativeToThePackageDirectoryHere": "the files are relative to ${{CURRENT_PACKAGES_DIR}} here", + "FindCommandFirstArg": "The first argument to 'find' must be 'artifact' or 'port' .", + "_FindCommandFirstArg.comment": "'find', 'artifact', and 'port' are vcpkg specific terms and should not be translated.", "FindVersionArtifactsOnly": "--version can't be used with vcpkg search or vcpkg find port", "_FindVersionArtifactsOnly.comment": "'--version', 'vcpkg search', and 'vcpkg find port' are command lines that must not be localized", "FishCompletion": "vcpkg fish completion is already added at \"{path}\".", @@ -841,6 +814,8 @@ "GetParseFailureInfo": "Use '--debug' to get more information about the parse failures.", "GitCommandFailed": "failed to execute: {command_line}", "_GitCommandFailed.comment": "An example of {command_line} is vcpkg install zlib.", + "GitCommitUpdateVersionDatabase": "git commit -m \"Update version database\"", + "_GitCommitUpdateVersionDatabase.comment": "This is a command line; only the 'update version database' part should be localized", "GitFailedToFetch": "failed to fetch ref {value} from repository {url}", "_GitFailedToFetch.comment": "{value} is a git ref like 'origin/main' An example of {url} is https://github.com/microsoft/vcpkg.", "GitFailedToInitializeLocalRepository": "failed to initialize local repository {path}", @@ -858,7 +833,7 @@ "_GraphCycleDetected.comment": "A list of package names comprising the cycle will be printed after this message. An example of {package_name} is zlib.", "HashFileFailureToRead": "failed to read file \"{path}\" for hashing: ", "_HashFileFailureToRead.comment": "Printed after ErrorMessage and before the specific failing filesystem operation (like file not found) An example of {path} is /foo/bar.", - "HashPortManyFiles": "The {package_name} contains {count} files. Hashing these contents may take a long time when determining the ABI hash for binary caching. Consider reducing the number of files. Common causes of this are accidentally checking out source or build files into a port's directory.", + "HashPortManyFiles": "{package_name} contains {count} files. Hashing these contents may take a long time when determining the ABI hash for binary caching. Consider reducing the number of files. Common causes of this are accidentally checking out source or build files into a port's directory.", "_HashPortManyFiles.comment": "An example of {package_name} is zlib. An example of {count} is 42.", "HeaderOnlyUsage": "{package_name} is header-only and can be used from CMake via:", "_HeaderOnlyUsage.comment": "'header' refers to C/C++ .h files An example of {package_name} is zlib.", @@ -912,10 +887,7 @@ "HelpEnvCommand": "Creates a clean shell environment for development or compiling", "HelpExampleCommand": "For more help (including examples) see https://learn.microsoft.com/vcpkg", "HelpExampleManifest": "Example manifest:", - "HelpExportCommand": "Exports a package.", - "HelpHashCommand": "Hash a file by specific algorithm, default SHA512.", "HelpInstallCommand": "Installs a package", - "HelpListCommand": "Lists installed packages", "HelpManifestConstraints": "Manifests can place three kinds of constraints upon the versions used", "HelpMinVersion": "Vcpkg will select the minimum version found that matches all applicable constraints, including the version from the baseline specified at top-level as well as any \"version>=\" constraints in the graph.", "HelpOverrides": "When used as the top-level manifest (such as when running `vcpkg install` in the directory), overrides allow a manifest to short-circuit dependency resolution and specify exactly the version to use. These can be used to handle version conflicts, such as with `version-string` dependencies. They will not be considered when transitively depended upon.", @@ -964,11 +936,9 @@ "_IgnoringVcpkgRootEnvironment.comment": "{actual} is the path we actually used, {value} is the path to vcpkg's binary An example of {path} is /foo/bar.", "IllegalFeatures": "List of features is not allowed in this context", "IllegalPlatformSpec": "Platform qualifier is not allowed in this context", - "IllegalTriplet": "Triplet is not allowed in this context", "ImproperShaLength": "SHA512's must be 128 hex characters: {value}", "_ImproperShaLength.comment": "{value} is a sha.", "IncorrectArchiveFileSignature": "Incorrect archive file signature", - "IncorrectPESignature": "Incorrect PE signature", "InfoSetEnvVar": "You can also set {env_var} to your editor of choice.", "_InfoSetEnvVar.comment": "In this context 'editor' means IDE An example of {env_var} is VCPKG_DEFAULT_TRIPLET.", "InitRegistryFailedNoRepo": "Could not create a registry at {path} because this is not a git repository root.\nUse `git init {command_line}` to create a git repository in this folder.", @@ -1077,7 +1047,6 @@ "_InvalidLinkage.comment": "'{value}' is the linkage type vcpkg would did not understand. (Correct values would be static ofr dynamic) An example of {system_name} is Darwin.", "InvalidLogicExpressionUnexpectedCharacter": "invalid logic expression, unexpected character", "InvalidLogicExpressionUsePipe": "invalid logic expression, use '|' rather than 'or'", - "InvalidNoVersions": "File contains no versions.", "InvalidOptionForRemove": "'remove' accepts either libraries or '--outdated'", "_InvalidOptionForRemove.comment": "'remove' is a command that should not be changed.", "InvalidPortVersonName": "Found invalid port version file name: `{path}`.", @@ -1092,6 +1061,8 @@ "_InvalidUri.comment": "{value} is the URI we attempted to parse.", "InvalidValueHashAdditionalFiles": "Variable VCPKG_HASH_ADDITIONAL_FILES contains invalid file path: '{path}'. The value must be an absolute path to an existent file.", "_InvalidValueHashAdditionalFiles.comment": "An example of {path} is /foo/bar.", + "InvalidValuePostPortfileIncludes": "Variable VCPKG_POST_PORTFILE_INCLUDES contains invalid file path: '{path}'. The value must be an absolute path to an existent cmake file.", + "_InvalidValuePostPortfileIncludes.comment": "An example of {path} is /foo/bar.", "IrregularFile": "path was not a regular file: {path}", "_IrregularFile.comment": "An example of {path} is /foo/bar.", "JsonErrorMustBeAnObject": "Expected \"{path}\" to be an object.", @@ -1146,9 +1117,8 @@ "LoadedOverlayTriplet": "loaded overlay triplet from here", "LoadingDependencyInformation": "Loading dependency information for {count} packages...", "_LoadingDependencyInformation.comment": "An example of {count} is 42.", - "LocalPortfileVersion": "Using local portfile versions. To update the local portfiles, use `git pull`.", - "ManifestConflict": "Found both a manifest and CONTROL files in port \"{path}\"; please rename one or the other", - "_ManifestConflict.comment": "An example of {path} is /foo/bar.", + "LocalPortfileVersion": "Using local port versions. To update the local ports, use `git pull`.", + "ManifestConflict2": "Found both a manifest and CONTROL files; please rename one or the other", "ManifestFormatCompleted": "Succeeded in formatting the manifest files.", "MismatchedBinParagraphs": "The serialized binary paragraph was different from the original binary paragraph. Please open an issue at https://github.com/microsoft/vcpkg with the following output:", "MismatchedFiles": "file to store does not match hash", @@ -1165,6 +1135,8 @@ "MissingAndroidHomeDir": "ANDROID_NDK_HOME directory does not exist: {path}", "_MissingAndroidHomeDir.comment": "An example of {path} is /foo/bar.", "MissingArgFormatManifest": "format-manifest was passed --convert-control without '--all'.\nThis doesn't do anything: control files passed explicitly are converted automatically.", + "MissingAssetBlockOrigin": "Missing {path} and downloads are blocked by x-block-origin.", + "_MissingAssetBlockOrigin.comment": "x-block-origin is a vcpkg term. Do not translate An example of {path} is /foo/bar.", "MissingClosingParen": "missing closing )", "MissingDependency": "Package {spec} is installed, but dependency {package_name} is not.", "_MissingDependency.comment": "An example of {spec} is zlib:x64-windows. An example of {package_name} is zlib.", @@ -1178,10 +1150,10 @@ "_MissingRequiredField.comment": "Example completely formatted message:\nerror: missing required field 'dependencies' (an array of dependencies) An example of {json_field} is identifer. An example of {json_type} is an array of identifiers.", "MissingRequiredField2": "missing required field '{json_field}'", "_MissingRequiredField2.comment": "An example of {json_field} is identifer.", + "MissingShaVariable": "The {{sha}} variable must be used in the template if other variables are used.", + "_MissingShaVariable.comment": "{{sha}} should not be translated", "MixingBooleanOperationsNotAllowed": "mixing & and | is not allowed; use () to specify order of operations", "MonoInstructions": "This may be caused by an incomplete mono installation. Full mono is available on some systems via `sudo apt install mono-complete`. Ubuntu 18.04 users may need a newer version of mono, available at https://www.mono-project.com/download/stable/", - "MsiexecFailedToExtract": "msiexec failed while extracting \"{path}\" with launch or exit code {exit_code} and message:", - "_MsiexecFailedToExtract.comment": "An example of {path} is /foo/bar. An example of {exit_code} is 127.", "MultiArch": "Multi-Arch must be 'same' but was {option}", "_MultiArch.comment": "An example of {option} is editable.", "MultipleFeatures": "{package_name} declares {feature} multiple times; please ensure that features have distinct names", @@ -1196,12 +1168,9 @@ "NewOnlyOneVersionKind": "Only one of --version-relaxed, --version-date, or --version-string may be specified.", "NewSpecifyNameVersionOrApplication": "Either specify --name and --version to produce a manifest intended for C++ libraries, or specify --application to indicate that the manifest is not intended to be used as a port.", "NewVersionCannotBeEmpty": "--version cannot be empty.", - "NoArgumentsForOption": "The option --{option} does not accept an argument.", - "_NoArgumentsForOption.comment": "An example of {option} is editable.", "NoError": "no error", "NoInstalledPackages": "No packages are installed. Did you mean `search`?", "_NoInstalledPackages.comment": "The name 'search' is the name of a command that is not localized.", - "NoLocalizationForMessages": "No localized messages for the following: ", "NoOutdatedPackages": "There are no outdated packages.", "NoRegistryForPort": "no registry configured for port {package_name}", "_NoRegistryForPort.comment": "An example of {package_name} is zlib.", @@ -1270,7 +1239,6 @@ "PackageManipulationHeader": "Package Manipulation", "PackageRootDir": "Packages directory (experimental)", "PackagesToInstall": "The following packages will be built and installed:", - "PackagesToInstallDirectly": "The following packages will be directly installed:", "PackagesToModify": "Additional packages (*) will be modified to complete this operation.", "PackagesToRebuild": "The following packages will be rebuilt:", "PackagesToRebuildSuggestRecurse": "If you are sure you want to rebuild the above packages, run the command with the --recurse option.", @@ -1299,64 +1267,52 @@ "_ParseQualifiedSpecifierNotEofSquareBracket.comment": "An example of {version_spec} is zlib:x64-windows@1.0.0.", "PathMustBeAbsolute": "Value of environment variable X_VCPKG_REGISTRIES_CACHE is not absolute: {path}", "_PathMustBeAbsolute.comment": "An example of {path} is /foo/bar.", - "PerformingPostBuildValidation": "-- Performing post-build validation", - "PortBugAllowRestrictedHeaders": "In exceptional circumstances, this policy can be disabled via {env_var}", - "_PortBugAllowRestrictedHeaders.comment": "An example of {env_var} is VCPKG_DEFAULT_TRIPLET.", - "PortBugBinDirExists": "There should be no bin\\ directory in a static build, but {path} is present.", + "PerformingPostBuildValidation": "Performing post-build validation", + "PortBugBinDirExists": "${{CURRENT_PACKAGES_DIR}}/{path} exists but should not in a static build. To suppress this message, add set(VCPKG_POLICY_DLLS_IN_STATIC_LIBRARY enabled)", "_PortBugBinDirExists.comment": "An example of {path} is /foo/bar.", - "PortBugDebugBinDirExists": "There should be no debug\\bin\\ directory in a static build, but {path} is present.", - "_PortBugDebugBinDirExists.comment": "An example of {path} is /foo/bar.", - "PortBugDebugShareDir": "/debug/share should not exist. Please reorganize any important files, then use\nfile(REMOVE_RECURSE \"${{CURRENT_PACKAGES_DIR}}/debug/share\")", - "PortBugDllAppContainerBitNotSet": "The App Container bit must be set for Windows Store apps. The following DLLs do not have the App Container bit set:", - "PortBugDllInLibDir": "The following dlls were found in /lib or /debug/lib. Please move them to /bin or /debug/bin, respectively.", - "PortBugDuplicateIncludeFiles": "Include files should not be duplicated into the /debug/include directory. If this cannot be disabled in the project cmake, use\nfile(REMOVE_RECURSE \"${{CURRENT_PACKAGES_DIR}}/debug/include\")", - "PortBugFoundCopyrightFiles": "The following files are potential copyright files:", - "PortBugFoundDebugBinaries": "Found {count} debug binaries:", - "_PortBugFoundDebugBinaries.comment": "An example of {count} is 42.", - "PortBugFoundDllInStaticBuild": "DLLs should not be present in a static build, but the following DLLs were found:", - "PortBugFoundEmptyDirectories": "There should be no empty directories in {path}. The following empty directories were found:", - "_PortBugFoundEmptyDirectories.comment": "An example of {path} is /foo/bar.", - "PortBugFoundExeInBinDir": "The following EXEs were found in /bin or /debug/bin. EXEs are not valid distribution targets.", - "PortBugFoundReleaseBinaries": "Found {count} release binaries:", - "_PortBugFoundReleaseBinaries.comment": "An example of {count} is 42.", - "PortBugIncludeDirInCMakeHelperPort": "The folder /include exists in a cmake helper port; this is incorrect, since only cmake files should be installed", - "PortBugInspectFiles": "To inspect the {extension} files, use:", - "_PortBugInspectFiles.comment": "An example of {extension} is .exe.", - "PortBugInvalidCrtLinkage": "The following binaries should use the {expected} CRT.", - "_PortBugInvalidCrtLinkage.comment": "{expected} is one of LinkageDynamicDebug/LinkageDynamicRelease/LinkageStaticDebug/LinkageStaticRelease. Immediately after this message is a file by file list with what linkages they contain. 'CRT' is an acronym meaning C Runtime. See also: https://learn.microsoft.com/cpp/build/reference/md-mt-ld-use-run-time-library?view=msvc-170. This is complicated because a binary can link with more than one CRT.\nExample fully formatted message:\nThe following binaries should use the Dynamic Debug (/MDd) CRT.\n C:\\some\\path\\to\\sane\\lib links with: Dynamic Release (/MD)\n C:\\some\\path\\to\\lib links with:\n Static Debug (/MTd)\n Dynamic Release (/MD)\n C:\\some\\different\\path\\to\\a\\dll links with:\n Static Debug (/MTd)\n Dynamic Debug (/MDd)\n", - "PortBugInvalidCrtLinkageEntry": "{path} links with:", - "_PortBugInvalidCrtLinkageEntry.comment": "See explanation in PortBugInvalidCrtLinkage An example of {path} is /foo/bar.", - "PortBugKernel32FromXbox": "The selected triplet targets Xbox, but the following DLLs link with kernel32. These DLLs cannot be loaded on Xbox, where kernel32 is not present. This is typically caused by linking with kernel32.lib rather than a suitable umbrella library, such as onecore_apiset.lib or xgameplatform.lib.", - "PortBugMergeLibCMakeDir": "The /lib/cmake folder should be merged with /debug/lib/cmake and moved to /share/{package_name}/cmake. Please use the helper function `vcpkg_cmake_config_fixup()` from the port vcpkg-cmake-config.`", - "_PortBugMergeLibCMakeDir.comment": "An example of {package_name} is zlib.", - "PortBugMismatchedNumberOfBinaries": "Mismatching number of debug and release binaries.", - "PortBugMisplacedCMakeFiles": "The following cmake files were found outside /share/{spec}. Please place cmake files in /share/{spec}.", - "_PortBugMisplacedCMakeFiles.comment": "An example of {spec} is zlib:x64-windows.", - "PortBugMisplacedFiles": "The following files are placed in {path}:", - "_PortBugMisplacedFiles.comment": "An example of {path} is /foo/bar.", - "PortBugMisplacedFilesCont": "Files cannot be present in those directories.", - "PortBugMisplacedPkgConfigFiles": "pkgconfig directories should be one of share/pkgconfig (for header only libraries only), lib/pkgconfig, or lib/debug/pkgconfig. The following misplaced pkgconfig files were found:", + "PortBugDebugShareDir": "${{CURRENT_PACKAGES_DIR}}/debug/share should not exist. Please reorganize any important files, then delete any remaining by adding `file(REMOVE_RECURSE \"${{CURRENT_PACKAGES_DIR}}/debug/share\")`. To suppress this message, add set(VCPKG_POLICY_ALLOW_DEBUG_SHARE enabled)", + "PortBugDllAppContainerBitNotSet": "The App Container bit must be set for all DLLs in Windows Store apps, and the triplet requests targeting the Windows Store, but the following DLLs were not built with the bit set. This usually means that toolchain linker flags are not being properly propagated, or the linker in use does not support the /APPCONTAINER switch. To suppress this message, add set(VCPKG_POLICY_SKIP_APPCONTAINER_CHECK enabled)", + "PortBugDllInLibDir": "The following dlls were found in ${{CURRENT_PACKAGES_DIR}}/lib or ${{CURRENT_PACKAGES_DIR}}/debug/lib. Please move them to ${{CURRENT_PACKAGES_DIR}}/bin or ${{CURRENT_PACKAGES_DIR}}/debug/bin, respectively.", + "PortBugDuplicateIncludeFiles": "${{CURRENT_PACKAGES_DIR}}/debug/include should not exist. To suppress this message, add set(VCPKG_POLICY_ALLOW_DEBUG_INCLUDE enabled)", + "PortBugDuplicateIncludeFilesFixIt": "If this directory was created by a build system that does not allow installing headers in debug to be disabled, delete the duplicate directory with file(REMOVE_RECURSE \"${{CURRENT_PACKAGES_DIR}}/debug/include\")", + "PortBugFoundCopyrightFiles": "the following files are potential copyright files", + "PortBugFoundDebugBinaries": "The following are debug binaries:", + "PortBugFoundDllInStaticBuild": "DLLs should not be present in a static build, but the following DLLs were found. To suppress this message, add set(VCPKG_POLICY_DLLS_IN_STATIC_LIBRARY enabled)", + "PortBugFoundEmptyDirectories": "There should be no installed empty directories. Empty directories are not representable to several binary cache providers, git repositories, and are not considered semantic build outputs. You should either create a regular file inside each empty directory, or delete them with the following CMake. To suppress this message, add set(VCPKG_POLICY_ALLOW_EMPTY_FOLDERS enabled)", + "PortBugFoundExeInBinDir": "The following executables were found in ${{CURRENT_PACKAGES_DIR}}/bin or ${{CURRENT_PACKAGES_DIR}}/debug/bin. Executables are not valid distribution targets. If these executables are build tools, consider using `vcpkg_copy_tools`. To suppress this message, add set(VCPKG_POLICY_ALLOW_EXES_IN_BIN enabled)", + "PortBugFoundReleaseBinaries": "The following are release binaries:", + "PortBugIncludeDirInCMakeHelperPort": "The folder ${{CURRENT_PACKAGES_DIR}}/include exists in a CMake helper port; this is incorrect, since only CMake files should be installed. To suppress this message, remove set(VCPKG_POLICY_CMAKE_HELPER_PORT enabled).", + "PortBugInvalidCrtLinkageCrtGroup": "The following binaries should link with only: {expected}", + "_PortBugInvalidCrtLinkageCrtGroup.comment": "See PortBugInvalidCrtLinkageHeader. {expected} is one of LinkageDynamicDebug/LinkageDynamicRelease/LinkageStaticDebug/LinkageStaticRelease.", + "PortBugInvalidCrtLinkageEntry": "{path} links with: {actual}", + "_PortBugInvalidCrtLinkageEntry.comment": "See explanation in PortBugInvalidCrtLinkageHeader. {actual} is one or more of LinkageDynamicDebug/LinkageDynamicRelease/LinkageStaticDebug/LinkageStaticRelease , separated by commas. (The vast vast vast majority of the time there will only be one and we're accepting that the localized result may look a bit strange if there is more than one) An example of {path} is /foo/bar.", + "PortBugInvalidCrtLinkageHeader": "binaries built by this port link with C RunTimes (\"CRTs\") inconsistent with those requested by the triplet and deployment structure. If the triplet is intended to only use the release CRT, you should add set(VCPKG_POLICY_ONLY_RELEASE_CRT enabled) to the triplet .cmake file. To suppress this check entirely, add set(VCPKG_POLICY_SKIP_CRT_LINKAGE_CHECK enabled) to the triplet .cmake if this is triplet-wide, or to portfile.cmake if this is specific to the port. You can inspect the binaries with: dumpbin.exe /directives mylibfile.lib", + "_PortBugInvalidCrtLinkageHeader.comment": "This is combined with PortBugInvalidCrtLinkageCrtGroup and PortBugInvalidCrtLinkageEntry. 'CRT' is an acronym meaning C Runtime. See also: https://learn.microsoft.com/cpp/build/reference/md-mt-ld-use-run-time-library?view=msvc-170. This is complicated because a binary can link with more than one CRT.\nExample fully formatted message:\nD:\\vcpkg\\ports\\wrong-crt\\portfile.cmake: warning: binaries built by this port link with C RunTimes (\"CRTs\") inconsistent with those requested by the triplet and deployment structure. If the triplet is intended to only use the release CRT, you should add set(VCPKG_POLICY_ONLY_RELEASE_CRT enabled) to the triplet .cmake file. To suppress this check entirely, add set(VCPKG_POLICY_SKIP_CRT_LINKAGE_CHECK enabled) to the triplet .cmake if this is triplet-wide, or to portfile.cmake if this is specific to the port. You can inspect the binaries with: dumpbin.exe /directives mylibfile.lib\nD:\\vcpkg\\packages\\wrong-crt_x86-windows-static: note: the binaries are relative to ${{CURRENT_PACKAGES_DIR}} here\nnote: The following binaries should link with only: Static Debug (/MTd)\nnote: debug/lib/both_lib.lib links with: Dynamic Debug (/MDd)\nnote: debug/lib/both_lib.lib links with: Dynamic Release (/MD)\nnote: debug/lib/test_lib.lib links with: Dynamic Debug (/MDd)\nnote: The following binaries should link with only: Static Release (/MT)\nnote: lib/both_lib.lib links with: Dynamic Debug (/MDd)\nnote: lib/both_lib.lib links with: Dynamic Debug (/MDd)\nnote: test_lib.lib links with: Dynamic Release (/MD)", + "PortBugKernel32FromXbox": "The selected triplet targets Xbox, but the following DLLs link with kernel32. These DLLs cannot be loaded on Xbox, where kernel32 is not present. This is typically caused by linking with kernel32.lib rather than a suitable umbrella library, such as onecore_apiset.lib or xgameplatform.lib. You can inspect a DLL's dependencies with `dumpbin.exe /dependents mylibfile.dll`. To suppress this message, add set(VCPKG_POLICY_ALLOW_KERNEL32_FROM_XBOX enabled)", + "PortBugMergeLibCMakeDir": "This port creates ${{CURRENT_PACKAGES_DIR}}/lib/cmake and/or ${{CURRENT_PACKAGES_DIR}}/debug/lib/cmake, which should be merged and moved to ${{CURRENT_PACKAGES_DIR}}/share/${{PORT}}/cmake. Please use the helper function vcpkg_cmake_config_fixup() from the port vcpkg-cmake-config. To suppress this message, add set(VCPKG_POLICY_SKIP_LIB_CMAKE_MERGE_CHECK enabled)", + "PortBugMismatchingNumberOfBinaries": "mismatching number of debug and release binaries. This often indicates incorrect handling of debug or release in portfile.cmake or the build system. If the intent is to only ever produce release components for this triplet, the triplet should have set(VCPKG_BUILD_TYPE release) added to its .cmake file. To suppress this message, add set(VCPKG_POLICY_MISMATCHED_NUMBER_OF_BINARIES enabled)", + "PortBugMisplacedCMakeFiles": "This port installs the following CMake files in places CMake files are not expected. CMake files should be installed in ${{CURRENT_PACKAGES_DIR}}/share/${{PORT}}. To suppress this message, add set(VCPKG_POLICY_SKIP_MISPLACED_CMAKE_FILES_CHECK enabled)", + "PortBugMisplacedFiles": "The following regular files are installed to location(s) where regular files may not be installed. These should be installed in a subdirectory. To suppress this message, add set(VCPKG_POLICY_SKIP_MISPLACED_REGULAR_FILES_CHECK enabled)", + "PortBugMisplacedPkgConfigFiles": "The following misplaced pkgconfig directories were installed. Misplaced pkgconfig files will not be found correctly by pkgconf or pkg-config. pkgconfig directories should be ${{CURRENT_PACKAGES_DIR}}/share/pkgconfig (for architecture agnostic / header only libraries only), ${{CURRENT_PACKAGES_DIR}}/lib/pkgconfig (for release dependencies), or ${{CURRENT_PACKAGES_DIR}}/debug/lib/pkgconfig (for debug dependencies). To suppress this message, add set(VCPKG_POLICY_SKIP_PKGCONFIG_CHECK enabled)", + "PortBugMissingCMakeHelperPortFile": "The ${{CURRENT_PACKAGES_DIR}}/share/${{PORT}}/vcpkg-port-config.cmake file does not exist. This file must exist for CMake helper ports. To suppress this message, remove set(VCPKG_POLICY_CMAKE_HELPER_PORT enabled)", "PortBugMissingDebugBinaries": "Debug binaries were not found.", - "PortBugMissingFile": "The /{path} file does not exist. This file must exist for CMake helper ports.", - "_PortBugMissingFile.comment": "An example of {path} is /foo/bar.", - "PortBugMissingImportedLibs": "Import libraries were not present in {path}.\nIf this is intended, add the following line in the portfile:\nset(VCPKG_POLICY_DLLS_WITHOUT_LIBS enabled)", - "_PortBugMissingImportedLibs.comment": "An example of {path} is /foo/bar.", - "PortBugMissingIncludeDir": "The folder /include is empty or not present. This indicates the library was not correctly installed.", - "PortBugMissingLicense": "The software license must be available at ${{CURRENT_PACKAGES_DIR}}/share/{package_name}/copyright", - "_PortBugMissingLicense.comment": "An example of {package_name} is zlib.", - "PortBugMissingProvidedUsage": "The port provided \"usage\" but forgot to install to /share/{package_name}/usage, add the following linein the portfile:", - "_PortBugMissingProvidedUsage.comment": "An example of {package_name} is zlib.", + "PortBugMissingImportedLibs": "Import libraries for installed DLLs appear to be missing. If this is intended, add set(VCPKG_POLICY_DLLS_WITHOUT_LIBS enabled)", + "PortBugMissingIncludeDir": "The folder ${{CURRENT_PACKAGES_DIR}}/include is empty or not present. This usually means that headers are not correctly installed. If this is a CMake helper port, add set(VCPKG_POLICY_CMAKE_HELPER_PORT enabled). If this is not a CMake helper port but this is otherwise intentional, add set(VCPKG_POLICY_EMPTY_INCLUDE_FOLDER enabled) to suppress this message.", + "PortBugMissingLicense": "the license is not installed to ${{CURRENT_PACKAGES_DIR}}/share/${{PORT}}/copyright . This can be fixed by adding a call to vcpkg_install_copyright. To suppress this message, add set(VCPKG_POLICY_SKIP_COPYRIGHT_CHECK enabled)", + "PortBugMissingLicenseFixIt": "Consider adding: {value}", + "_PortBugMissingLicenseFixIt.comment": "{value} is a CMake function call for the user to paste into their file, for example: vcpkg_install_copyright(FILE_LIST ${{SOURCE_PATH}}/COPYING ${{SOURCE_PATH}}/LICENSE.txt)", + "PortBugMissingProvidedUsage": "this port contains a file named \"usage\" but didn't install it to ${{CURRENT_PACKAGES_DIR}}/share/${{PORT}}/usage . If this file is not intended to be usage text, consider choosing another name; otherwise, install it. To suppress this message, add set(VCPKG_POLICY_SKIP_USAGE_INSTALL_CHECK enabled)", "PortBugMissingReleaseBinaries": "Release binaries were not found.", "PortBugMovePkgConfigFiles": "You can move the pkgconfig files with commands similar to:", - "PortBugOutdatedCRT": "Detected outdated dynamic CRT in the following files:", - "PortBugRemoveBinDir": "If the creation of bin\\ and/or debug\\bin\\ cannot be disabled, use this in the portfile to remove them", - "PortBugRemoveEmptyDirectories": "If a directory should be populated but is not, this might indicate an error in the portfile.\nIf the directories are not needed and their creation cannot be disabled, use something like this in the portfile to remove them:", + "PortBugOutdatedCRT": "DLLs that link with obsolete C RunTime (\"CRT\") DLLs were installed. Installed DLLs should link with an in-support CRT. You can inspect the dependencies of a DLL with `dumpbin.exe /dependents mylibfile.dll`. If you're using a custom triplet targeting an old CRT, add set(VCPKG_POLICY_ALLOW_OBSOLETE_MSVCRT enabled) to the triplet's .cmake file. To suppress this message for this port, add set(VCPKG_POLICY_ALLOW_OBSOLETE_MSVCRT enabled)", + "PortBugRemoveBinDir": "if creation of these directories cannot be disabled, you can add the following in portfile.cmake to remove them", "PortBugRemoveEmptyDirs": "file(REMOVE_RECURSE empty directories left by the above renames)", "_PortBugRemoveEmptyDirs.comment": "Only the 'empty directories left by the above renames' part should be translated", - "PortBugRestrictedHeaderPaths": "The following restricted headers can prevent the core C++ runtime and other packages from compiling correctly. In exceptional circumstances, this policy can be disabled by setting CMake variable VCPKG_POLICY_ALLOW_RESTRICTED_HEADERS in portfile.cmake.", - "_PortBugRestrictedHeaderPaths.comment": "A list of restricted headers is printed after this message, one per line. ", - "PortBugSetDllsWithoutExports": "DLLs without any exports are likely a bug in the build script. If this is intended, add the following line in the portfile:\nset(VCPKG_POLICY_DLLS_WITHOUT_EXPORTS enabled)\nThe following DLLs have no exports:", - "_PortBugSetDllsWithoutExports.comment": "'exports' means an entry in a DLL's export table. After this message, one file path per line is printed listing each DLL with an empty export table.", + "PortBugRestrictedHeaderPaths": "Taking the following restricted headers can prevent the core C++ runtime and other packages from compiling correctly. These should be renamed or stored in a subdirectory instead. In exceptional circumstances, this warning can be suppressed by adding set(VCPKG_POLICY_ALLOW_RESTRICTED_HEADERS enabled)", + "PortBugRestrictedHeaderPathsNote": "the headers are relative to ${{CURRENT_PACKAGES_DIR}}/include here", + "PortBugSetDllsWithoutExports": "the following DLLs were built without any exports. DLLs without exports are likely bugs in the build script. If this is intended, add set(VCPKG_POLICY_DLLS_WITHOUT_EXPORTS enabled)", + "PortDeclaredHere": "{package_name} is declared here", + "_PortDeclaredHere.comment": "This is printed after NoteMessage to tell the user the path on disk of a related port An example of {package_name} is zlib.", "PortDependencyConflict": "Port {package_name} has the following unsupported dependencies:", "_PortDependencyConflict.comment": "An example of {package_name} is zlib.", "PortDoesNotExist": "{package_name} does not exist", @@ -1372,7 +1328,6 @@ "PortVersionMultipleSpecification": "\"port_version\" cannot be combined with an embedded '#' in the version", "PortsAdded": "The following {count} ports were added:", "_PortsAdded.comment": "An example of {count} is 42.", - "PortsDiffHelp": "The argument should be a branch/tag/hash to checkout.", "PortsNoDiff": "There were no changes in the ports between the two commits.", "PortsRemoved": "The following {count} ports were removed:", "_PortsRemoved.comment": "An example of {count} is 42.", @@ -1414,7 +1369,6 @@ "ResultsHeader": "RESULTS", "_ResultsHeader.comment": "Displayed before a list of installation results.", "ScriptAssetCacheRequiresScript": "expected arguments: asset config 'x-script' requires exactly the exec template as an argument", - "SearchHelp": "The argument should be a substring to search for, or no argument to display all libraries.", "SecretBanner": "*** SECRET ***", "SeeURL": "See {url} for more information.", "_SeeURL.comment": "An example of {url} is https://github.com/microsoft/vcpkg.", @@ -1427,6 +1381,8 @@ "_ShallowRepositoryDetected.comment": "An example of {path} is /foo/bar.", "SkipClearingInvalidDir": "Skipping clearing contents of {path} because it was not a directory.", "_SkipClearingInvalidDir.comment": "An example of {path} is /foo/bar.", + "SkippingPostBuildValidationDueTo": "Skipping post-build validation due to {cmake_var}", + "_SkippingPostBuildValidationDueTo.comment": "An example of {cmake_var} is VCPKG_POLICY_EMPTY_PACKAGE.", "SourceFieldPortNameMismatch": "The 'Source' field inside the CONTROL file, or \"name\" field inside the vcpkg.json file has the name {package_name} and does not match the port directory \"{path}\".", "_SourceFieldPortNameMismatch.comment": "{package_name} and \"{path}\" are both names of installable ports/packages. 'Source', 'CONTROL', 'vcpkg.json', and 'name' references are locale-invariant. An example of {package_name} is zlib. An example of {path} is /foo/bar.", "SpecifiedFeatureTurnedOff": "'{command_name}' feature specifically turned off, but --{option} was specified.", @@ -1439,13 +1395,9 @@ "StoreOptionMissingSha": "--store option is invalid without a sha512", "StoredBinariesToDestinations": "Stored binaries in {count} destinations in {elapsed}.", "_StoredBinariesToDestinations.comment": "An example of {count} is 42. An example of {elapsed} is 3.532 min.", - "StoredBinaryCache": "Stored binary cache: \"{path}\"", - "_StoredBinaryCache.comment": "An example of {path} is /foo/bar.", "SuccessfulyExported": "Exported {package_name} to {path}", "_SuccessfulyExported.comment": "An example of {package_name} is zlib. An example of {path} is /foo/bar.", "SuggestGitPull": "The result may be outdated. Run `git pull` to get the latest results.", - "SuggestResolution": "To attempt to resolve all errors at once, run:\nvcpkg {command_name} --{option}", - "_SuggestResolution.comment": "An example of {command_name} is install. An example of {option} is editable.", "SuggestStartingBashShell": "Please make sure you have started a new bash shell for the change to take effect.", "SupportedPort": "Port {package_name} is supported.", "_SupportedPort.comment": "An example of {package_name} is zlib.", @@ -1486,11 +1438,11 @@ "UnexpectedArgument": "unexpected argument: {option}", "_UnexpectedArgument.comment": "Argument is literally what the user passed on the command line. An example of {option} is editable.", "UnexpectedAssetCacheProvider": "unknown asset provider type: valid source types are 'x-azurl', 'x-script', 'x-block-origin', and 'clear'", + "_UnexpectedAssetCacheProvider.comment": "'x-azurl', 'x-script', 'clear' are valid source types. Do not translate", "UnexpectedByteSize": "Expected {expected} bytes to be written, but {actual} were written.", "_UnexpectedByteSize.comment": "{expected} is the expected byte size and {actual} is the actual byte size.", "UnexpectedCharExpectedCloseBrace": "Unexpected character; expected property or close brace", "UnexpectedCharExpectedColon": "Unexpected character; expected colon", - "UnexpectedCharExpectedComma": "Unexpected character; expected comma or close brace", "UnexpectedCharExpectedName": "Unexpected character; expected property name", "UnexpectedCharExpectedValue": "Unexpected character; expected value", "UnexpectedCharMidArray": "Unexpected character in middle of array", @@ -1509,10 +1461,7 @@ "UnexpectedEOFMidKeyword": "Unexpected EOF in middle of keyword", "UnexpectedEOFMidString": "Unexpected EOF in middle of string", "UnexpectedEOFMidUnicodeEscape": "Unexpected end of file in middle of unicode escape", - "UnexpectedErrorDuringBulkDownload": "an unexpected error occurred during bulk download.", "UnexpectedEscapeSequence": "Unexpected escape sequence continuation", - "UnexpectedExtension": "Unexpected archive extension: '{extension}'.", - "_UnexpectedExtension.comment": "An example of {extension} is .exe.", "UnexpectedField": "unexpected field '{json_field}'", "_UnexpectedField.comment": "An example of {json_field} is identifer.", "UnexpectedFieldSuggest": "unexpected field '{json_field}', did you mean '{value}'?", @@ -1535,12 +1484,10 @@ "UnknownBinaryProviderType": "unknown binary provider type: valid providers are 'clear', 'default', 'nuget', 'nugetconfig', 'nugettimeout', 'interactive', 'x-azblob', 'x-gcs', 'x-aws', 'x-aws-config', 'http', and 'files'", "UnknownBooleanSetting": "unknown boolean setting for {option}: \"{value}\". Valid values are '', '1', '0', 'ON', 'OFF', 'TRUE', and 'FALSE'.", "_UnknownBooleanSetting.comment": "{value} is what {option} is set to An example of {option} is editable.", - "UnknownOptions": "Unknown option(s) for command '{command_name}':", - "_UnknownOptions.comment": "An example of {command_name} is install.", "UnknownParameterForIntegrate": "Unknown parameter '{value}' for integrate.", "_UnknownParameterForIntegrate.comment": "'{value}' is a user-supplied command line option. For example, given vcpkg integrate frobinate, {value} would be frobinate.", - "UnknownPolicySetting": "Unknown setting for policy '{value}': {option}", - "_UnknownPolicySetting.comment": "'{value}' is the policy in question. These are unlocalized names that ports use to control post build checks. Some examples are VCPKG_POLICY_DLLS_WITHOUT_EXPORTS, VCPKG_POLICY_MISMATCHED_NUMBER_OF_BINARIES, or VCPKG_POLICY_ALLOW_OBSOLETE_MSVCRT An example of {option} is editable.", + "UnknownPolicySetting": "Unknown setting of {cmake_var}: {value}. Valid policy values are '', 'disabled', and 'enabled'.", + "_UnknownPolicySetting.comment": "{value} is to what the user set the variable we don't understand. The names 'enabled' and 'disabled' must not be localized. An example of {cmake_var} is VCPKG_POLICY_EMPTY_PACKAGE.", "UnknownSettingForBuildType": "Unknown setting for VCPKG_BUILD_TYPE {option}. Valid settings are '', 'debug', and 'release'.", "_UnknownSettingForBuildType.comment": "An example of {option} is editable.", "UnknownTool": "vcpkg does not have a definition of this tool for this platform.", @@ -1561,8 +1508,6 @@ "_UnsupportedPort.comment": "An example of {package_name} is zlib.", "UnsupportedPortDependency": "- dependency {value} is not supported.", "_UnsupportedPortDependency.comment": "'{value}' is the name of a port dependency.", - "UnsupportedShortOptions": "short options are not supported: '{value}'", - "_UnsupportedShortOptions.comment": "'{value}' is the short option given", "UnsupportedSyntaxInCDATA": "]]> is not supported in CDATA block", "UnsupportedSystemName": "Could not map VCPKG_CMAKE_SYSTEM_NAME '{system_name}' to a vcvarsall platform. Supported system names are '', 'Windows' and 'WindowsStore'.", "_UnsupportedSystemName.comment": "An example of {system_name} is Darwin.", @@ -1585,14 +1530,10 @@ "UpgradeInManifest": "Upgrade upgrades a classic mode installation and thus does not support manifest mode. Consider updating your dependencies by updating your baseline to a current value with vcpkg x-update-baseline and running vcpkg install.", "_UpgradeInManifest.comment": "'vcpkg x-update-baseline' and 'vcpkg install' are command lines and should not be localized.", "UpgradeRunWithNoDryRun": "If you are sure you want to rebuild the above packages, run this command with the --no-dry-run option.", - "UploadedBinaries": "Uploaded binaries to {count} {vendor}.", - "_UploadedBinaries.comment": "An example of {count} is 42. An example of {vendor} is Azure.", - "UploadedPackagesToVendor": "Uploaded {count} package(s) to {vendor} in {elapsed}", - "_UploadedPackagesToVendor.comment": "An example of {count} is 42. An example of {elapsed} is 3.532 min. An example of {vendor} is Azure.", "UploadingBinariesToVendor": "Uploading binaries for '{spec}' to '{vendor}' source \"{path}\".", "_UploadingBinariesToVendor.comment": "An example of {spec} is zlib:x64-windows. An example of {vendor} is Azure. An example of {path} is /foo/bar.", - "UploadingBinariesUsingVendor": "Uploading binaries for '{spec}' using '{vendor}' \"{path}\".", - "_UploadingBinariesUsingVendor.comment": "An example of {spec} is zlib:x64-windows. An example of {vendor} is Azure. An example of {path} is /foo/bar.", + "UsageInstallInstructions": "you can install the usage file with the following CMake", + "UsageTextHere": "the usage file is here", "UseEnvVar": "-- Using {env_var} in environment variables.", "_UseEnvVar.comment": "An example of env_var is \"HTTP(S)_PROXY\"'--' at the beginning must be preserved An example of {env_var} is VCPKG_DEFAULT_TRIPLET.", "UserWideIntegrationDeleted": "User-wide integration is not installed.", @@ -1605,7 +1546,6 @@ "VSNoInstances": "Could not locate a complete Visual Studio instance", "VcpkgCeIsExperimental": "vcpkg-artifacts is experimental and may change at any time.", "_VcpkgCeIsExperimental.comment": "The name of the feature is 'vcpkg-artifacts' and should be singular despite ending in s", - "VcpkgCommitTableHeader": "VCPKG Commit", "VcpkgCompletion": "vcpkg {value} completion is already imported to your \"{path}\" file.\nThe following entries were found:", "_VcpkgCompletion.comment": "'{value}' is the subject for completion. i.e. bash, zsh, etc. An example of {path} is /foo/bar.", "VcpkgDisallowedClassicMode": "Could not locate a manifest (vcpkg.json) above the current working directory.\nThis vcpkg distribution does not have a classic mode instance.", @@ -1626,27 +1566,33 @@ "VcvarsRunFailed": "failed to run vcvarsall.bat to get a Visual Studio environment", "VcvarsRunFailedExitCode": "while trying to get a Visual Studio environment, vcvarsall.bat returned {exit_code}", "_VcvarsRunFailedExitCode.comment": "An example of {exit_code} is 127.", - "VersionBaselineMismatch": "The latest version is {expected}, but the baseline file contains {actual}.\nRun:\nvcpkg x-add-version {package_name}\ngit add versions\ngit commit -m \"Update version database\"\nto update the baseline version.", - "_VersionBaselineMismatch.comment": "{expected} and {actual} are versions An example of {package_name} is zlib.", + "VersionBaselineMatch": "{version_spec} matches the current baseline", + "_VersionBaselineMatch.comment": "An example of {version_spec} is zlib:x64-windows@1.0.0.", + "VersionBaselineMismatch": "{package_name} is assigned {actual}, but the local port is {expected}", + "_VersionBaselineMismatch.comment": "{actual} and {expected} are versions An example of {package_name} is zlib.", "VersionBuiltinPortTreeEntryMissing": "no version database entry for {package_name} at {expected}; using the checked out ports tree version ({actual}).", "_VersionBuiltinPortTreeEntryMissing.comment": "{expected} and {actual} are versions like 1.0. An example of {package_name} is zlib.", "VersionCommandHeader": "vcpkg package management program version {version}\n\nSee LICENSE.txt for license information.", "_VersionCommandHeader.comment": "An example of {version} is 1.3.8.", "VersionConflictXML": "Expected {path} version: [{expected_version}], but was [{actual_version}]. Please re-run bootstrap-vcpkg.", "_VersionConflictXML.comment": "An example of {path} is /foo/bar. An example of {expected_version} is 1.3.8. An example of {actual_version} is 1.3.8.", + "VersionConstraintNotInDatabase1": "the \"version>=\" constraint to {package_name} names version {version} which does not exist in the version database. All versions must exist in the version database to be interpreted by vcpkg.", + "_VersionConstraintNotInDatabase1.comment": "An example of {package_name} is zlib. An example of {version} is 1.3.8.", + "VersionConstraintNotInDatabase2": "consider removing the version constraint or choosing a value declared here", + "VersionConstraintOk": "all version constraints are consistent with the version database", "VersionConstraintPortVersionMustBePositiveInteger": "port-version (after the '#') in \"version>=\" must be a non-negative integer", - "VersionConstraintUnresolvable": "Cannot resolve a minimum constraint for dependency {package_name} from {spec}.\nThe dependency was not found in the baseline, indicating that the package did not exist at that time. This may be fixed by providing an explicit override version via the \"overrides\" field or by updating the baseline.\nSee `vcpkg help versioning` for more information.", - "_VersionConstraintUnresolvable.comment": "An example of {package_name} is zlib. An example of {spec} is zlib:x64-windows.", "VersionConstraintViolated": "dependency {spec} was expected to be at least version {expected_version}, but is currently {actual_version}.", "_VersionConstraintViolated.comment": "An example of {spec} is zlib:x64-windows. An example of {expected_version} is 1.3.8. An example of {actual_version} is 1.3.8.", "VersionDatabaseEntryMissing": "no version entry for {package_name} at {version}.", "_VersionDatabaseEntryMissing.comment": "An example of {package_name} is zlib. An example of {version} is 1.3.8.", - "VersionDatabaseFileMissing": "{package_name} is missing a version database file at {path}\nRun:\nvcpkg x-add-version {package_name}\nto create the versions file.", - "_VersionDatabaseFileMissing.comment": "An example of {package_name} is zlib. An example of {path} is /foo/bar.", + "VersionDatabaseFileMissing": "this port is not in the version database", + "VersionDatabaseFileMissing2": "the version database file should be here", + "VersionDatabaseFileMissing3": "run '{command_line}' to create the version database file", + "_VersionDatabaseFileMissing3.comment": "An example of {command_line} is vcpkg install zlib.", "VersionGitEntryMissing": "no version database entry for {package_name} at {version}.\nAvailable versions:", "_VersionGitEntryMissing.comment": "A list of versions, 1 per line, are printed after this message. An example of {package_name} is zlib. An example of {version} is 1.3.8.", - "VersionInDeclarationDoesNotMatch": "The version declared in file does not match checked-out version: {version}", - "_VersionInDeclarationDoesNotMatch.comment": "An example of {version} is 1.3.8.", + "VersionInDeclarationDoesNotMatch": "{git_tree_sha} is declared to contain {expected}, but appears to contain {actual}", + "_VersionInDeclarationDoesNotMatch.comment": "{expected} and {actual} are version specs An example of {git_tree_sha} is 7cfad47ae9f68b183983090afd6337cd60fd4949.", "VersionIncomparable1": "version conflict on {spec}: {constraint_origin} required {expected}, which cannot be compared with the baseline version {actual}.", "_VersionIncomparable1.comment": "{expected} and {actual} are versions like 1.0 An example of {spec} is zlib:x64-windows. An example of {constraint_origin} is zlib:x64-windows@1.0.0.", "VersionIncomparable2": "{version_spec} has scheme {new_scheme}", @@ -1667,25 +1613,45 @@ "_VersionMissing.comment": "The names version, version-date, version-semver, and version-string are code and must not be localized", "VersionMissingRequiredFeature": "{version_spec} does not have required feature {feature} needed by {constraint_origin}", "_VersionMissingRequiredFeature.comment": "An example of {version_spec} is zlib:x64-windows@1.0.0. An example of {feature} is avisynthplus. An example of {constraint_origin} is zlib:x64-windows@1.0.0.", - "VersionNotFound": "{expected} not available, only {actual} is available", - "_VersionNotFound.comment": "{expected} and {actual} are versions", - "VersionNotFoundInVersionsFile": "Version {version} was not found in versions file for {package_name}.\nRun:\nvcpkg x-add-version {package_name}\nto add the new port version.", - "_VersionNotFoundInVersionsFile.comment": "An example of {version} is 1.3.8. An example of {package_name} is zlib.", + "VersionNotFoundInVersionsFile2": "{version_spec} was not found in versions database", + "_VersionNotFoundInVersionsFile2.comment": "An example of {version_spec} is zlib:x64-windows@1.0.0.", + "VersionNotFoundInVersionsFile3": "the version should be in this file", + "VersionNotFoundInVersionsFile4": "run '{command_line}' to add the new port version", + "_VersionNotFoundInVersionsFile4.comment": "An example of {command_line} is vcpkg install zlib.", + "VersionOverrideNotInVersionDatabase": "the version override {package_name} does not exist in the version database; does that port exist?", + "_VersionOverrideNotInVersionDatabase.comment": "An example of {package_name} is zlib.", + "VersionOverrideVersionNotInVersionDatabase1": "the override of {package_name} names version {version} which does not exist in the version database. Installing this port at the top level will fail as that version will be unresolvable.", + "_VersionOverrideVersionNotInVersionDatabase1.comment": "An example of {package_name} is zlib. An example of {version} is 1.3.8.", + "VersionOverrideVersionNotInVersionDatabase2": "consider removing the version override or choosing a value declared here", + "VersionOverwriteVersion": "you can overwrite {version_spec} with correct local values by running:", + "_VersionOverwriteVersion.comment": "An example of {version_spec} is zlib:x64-windows@1.0.0.", "VersionRejectedDueToBaselineMissing": "{path} was rejected because it uses \"{json_field}\" and does not have a \"builtin-baseline\". This can be fixed by removing the uses of \"{json_field}\" or adding a \"builtin-baseline\".\nSee `vcpkg help versioning` for more information.", "_VersionRejectedDueToBaselineMissing.comment": "An example of {path} is /foo/bar. An example of {json_field} is identifer.", "VersionRejectedDueToFeatureFlagOff": "{path} was rejected because it uses \"{json_field}\" and the `versions` feature flag is disabled. This can be fixed by removing \"{json_field}\" or enabling the `versions` feature flag.\nSee `vcpkg help versioning` for more information.", "_VersionRejectedDueToFeatureFlagOff.comment": "An example of {path} is /foo/bar. An example of {json_field} is identifer.", - "VersionSchemeMismatch": "The version database declares {version} as {expected}, but {path} declares it as {actual}. Versions must be unique, even if they are declared with different schemes.\nRun:\nvcpkg x-add-version {package_name} --overwrite-version\nto overwrite the scheme declared in the version database with that declared in the port.", - "_VersionSchemeMismatch.comment": "{expected} and {actual} are version schemes; it here refers to the {version} An example of {version} is 1.3.8. An example of {path} is /foo/bar. An example of {package_name} is zlib.", - "VersionShaMismatch": "{version} is declared with {expected}, but the local port has a different SHA {actual}.\nPlease update the port's version fields and then run:\nvcpkg x-add-version {package_name}\ngit add versions\ngit commit -m \"Update version database\"\nto add the new version.", - "_VersionShaMismatch.comment": "{expected} and {actual} are git commit SHAs An example of {version} is 1.3.8. An example of {package_name} is zlib.", - "VersionShaMissing": "while validating {package_name}, missing Git SHA.\nRun:\ngit add \"{path}\"\ngit commit -m \"wip\"\nvcpkg x-add-version {package_name}\ngit add versions\ngit commit --amend -m \"[{package_name}] Add new port\"\nto commit the new port and create its version file.", - "_VersionShaMissing.comment": "An example of {package_name} is zlib. An example of {path} is /foo/bar.", + "VersionSchemeMismatch1": "{version} is declared {expected}, but {package_name} is declared with {actual}", + "_VersionSchemeMismatch1.comment": "{expected} and {actual} are version schemes; it here refers to the {version} An example of {version} is 1.3.8. An example of {package_name} is zlib.", + "VersionSchemeMismatch1Old": "{version} is declared {expected}, but {package_name}@{git_tree_sha} is declared with {actual}", + "_VersionSchemeMismatch1Old.comment": "{expected} and {actual} are version schemes; it here refers to the {version} An example of {version} is 1.3.8. An example of {package_name} is zlib. An example of {git_tree_sha} is 7cfad47ae9f68b183983090afd6337cd60fd4949.", + "VersionSchemeMismatch2": "versions must be unique, even if they are declared with different schemes", + "VersionShaMismatch1": "{version_spec} git tree {git_tree_sha} does not match the port directory", + "_VersionShaMismatch1.comment": "'git tree' is An example of {version_spec} is zlib:x64-windows@1.0.0. An example of {git_tree_sha} is 7cfad47ae9f68b183983090afd6337cd60fd4949.", + "VersionShaMismatch2": "the port directory has git tree {git_tree_sha}", + "_VersionShaMismatch2.comment": "An example of {git_tree_sha} is 7cfad47ae9f68b183983090afd6337cd60fd4949.", + "VersionShaMismatch3": "if {version_spec} is already published, update this file with a new version or port-version, commit it, then add the new version by running:", + "_VersionShaMismatch3.comment": "An example of {version_spec} is zlib:x64-windows@1.0.0.", + "VersionShaMismatch4": "if {version_spec} is not yet published, overwrite the previous git tree by running:", + "_VersionShaMismatch4.comment": "An example of {version_spec} is zlib:x64-windows@1.0.0.", + "VersionShaMissing1": "the git tree of the port directory could not be determined. This is usually caused by uncommitted changes.", + "VersionShaMissing2": "you can commit your changes and add them to the version database by running:", + "VersionShaMissing3": "wip", + "_VersionShaMissing3.comment": "This is short for 'work in progress' and must be enclosed in \" quotes if it is more than 1 word", + "VersionShaMissing4": "[{package_name}] Add new port", + "_VersionShaMissing4.comment": "An example of {package_name} is zlib.", "VersionSharpMustBeFollowedByPortVersion": "'#' in version text must be followed by a port version", "VersionSharpMustBeFollowedByPortVersionNonNegativeInteger": "'#' in version text must be followed by a port version (a non-negative integer)", "VersionSpecMismatch": "Failed to load port because versions are inconsistent. The file \"{path}\" contains the version {actual_version}, but the version database indicates that it should be {expected_version}.", "_VersionSpecMismatch.comment": "An example of {path} is /foo/bar. An example of {expected_version} is 1.3.8. An example of {actual_version} is 1.3.8.", - "VersionTableHeader": "Version", "VersionVerifiedOK": "{version_spec} is correctly in the version database ({git_tree_sha})", "_VersionVerifiedOK.comment": "An example of {version_spec} is zlib:x64-windows@1.0.0. An example of {git_tree_sha} is 7cfad47ae9f68b183983090afd6337cd60fd4949.", "WaitingForChildrenToExit": "Waiting for child processes to exit...", @@ -1699,10 +1665,8 @@ "WhileCheckingOutPortTreeIsh": "while checking out port {package_name} with git tree {git_tree_sha}", "_WhileCheckingOutPortTreeIsh.comment": "An example of {package_name} is zlib. An example of {git_tree_sha} is 7cfad47ae9f68b183983090afd6337cd60fd4949.", "WhileGettingLocalTreeIshObjectsForPorts": "while getting local treeish objects for ports", - "WhileLoadingLocalPort": "while attempting to load local port {package_name}", - "_WhileLoadingLocalPort.comment": "An example of {package_name} is zlib.", - "WhileLoadingPortFromGitTree": "while trying to load port from: {commit_sha}", - "_WhileLoadingPortFromGitTree.comment": "An example of {commit_sha} is 7cfad47ae9f68b183983090afd6337cd60fd4949.", + "WhileLoadingBaselineVersionForPort": "while loading baseline version for {package_name}", + "_WhileLoadingBaselineVersionForPort.comment": "An example of {package_name} is zlib.", "WhileLoadingPortVersion": "while loading {version_spec}", "_WhileLoadingPortVersion.comment": "An example of {version_spec} is zlib:x64-windows@1.0.0.", "WhileLookingForSpec": "while looking for {spec}:", @@ -1754,7 +1718,7 @@ "_optionsShouldBeASequenceFound$.comment": "\n'${p0}' is a parameter of type 'string'\n", "DuplicateKeysDetectedInManifest$": "Duplicate keys detected in manifest: '${p0}'", "_DuplicateKeysDetectedInManifest$.comment": "\n'${p0}' is a parameter of type 'string'\n", - "noPostscriptFileRerunWithTheVcpkgShellFunctionRatherThanExecutable": "no postscript file: rerun with the vcpkg shell function rather than executable", + "noPostscriptFileRunVcpkgshellWithTheSameArguments": "no postscript file: run vcpkg-shell with the same arguments", "DuplicateDefine$DuringActivationNewValueWillReplaceOld": "Duplicate define ${p0} during activation. New value will replace old.", "_DuplicateDefine$DuringActivationNewValueWillReplaceOld.comment": "\n'${p0}' is a parameter of type 'string'\n", "DuplicateToolDeclared$DuringActivationNewValueWillReplaceOld": "Duplicate tool declared ${p0} during activation. New value will replace old.", @@ -1910,7 +1874,7 @@ "_TriedToAddAnArtifact$$ButCouldNotDetermineTheRegistryToUse.comment": "\n'${p0}' is a parameter of type 'string'\n\n'${p1}' (aka 'artifact.id') is a parameter of type 'string'\n", "TriedToAddRegistry$As$ButItWasAlready$PleaseAdd$ToThisProjectManuallyAndReattempt": "Tried to add registry ${p0} as ${p1}, but it was already ${p2}. Please add ${p3} to this project manually and reattempt.", "_TriedToAddRegistry$As$ButItWasAlready$PleaseAdd$ToThisProjectManuallyAndReattempt.comment": "\n'${p0}' is a parameter of type 'string | undefined'\n\n'${p1}' is a parameter of type 'string'\n\n'${p2}' is a parameter of type 'string'\n\n'${p3}' is a parameter of type 'string'\n", - "RunvcpkgActivateToApplyToTheCurrentTerminal": "Run \\`vcpkg activate\\` to apply to the current terminal", + "RunvcpkgshellActivateToApplyToTheCurrentTerminal": "Run \\`vcpkg-shell activate\\` to apply to the current terminal", "DownloadsFolderCleared$": "Downloads folder cleared (${p0}) ", "_DownloadsFolderCleared$.comment": "\n'${p0}' (aka 'session.downloads.fsPath') is a parameter of type 'string'\n", "InstalledArtifactFolderCleared$": "Installed Artifact folder cleared (${p0}) ", diff --git a/locales/messages.ko.json b/locales/messages.ko.json index 8fdbc08a17..70b45687c0 100644 --- a/locales/messages.ko.json +++ b/locales/messages.ko.json @@ -46,7 +46,6 @@ "AVersionOfAnyType": "모든 유형의 버전", "AddArtifactOnlyOne": "'{command_line}'은(는) 한 번에 하나의 아티팩트만 추가할 수 있습니다.", "AddCommandFirstArg": "추가할 첫 번째 매개 변수는 'artifact' 또는 'port'여야 합니다.", - "AddFirstArgument": "'{command_line}'에 대한 첫 번째 인수는 'artifact' 또는 'port'여야 합니다.", "AddPortRequiresManifest": "'{command_line}'에는 활성 매니페스트 파일이 필요합니다.", "AddPortSucceeded": "vcpkg.json 파일에 포트 추가에 성공했습니다.", "AddRecurseOption": "제거하려는 경우 --recurse 옵션을 사용하여 명령을 실행합니다.", @@ -54,12 +53,11 @@ "AddVersionAddedVersionToFile": "버전{version}을(를) {path}에 추가했습니다.", "AddVersionArtifactsOnly": "--version은 아티팩트 전용이며 vcpkg add port와 함께 사용할 수 없습니다.", "AddVersionCommitChangesReminder": "변경 내용을 커밋하기로 하셨나요?", - "AddVersionCommitResultReminder": "잊지 말고 결과를 커밋하세요.", "AddVersionDetectLocalChangesError": "git 상태 출력에서 예기치 않은 형식으로 인해 로컬 변경 탐지를 건너뜁니다.", "AddVersionFileNotFound": "필요한 파일 {path}을(를) 찾을 수 없음", "AddVersionFormatPortSuggestion": "'{command_line}'을(를) 실행하여 파일 서식 지정", "AddVersionIgnoringOptionAll": "포트 이름 인수가 제공되었으므로 --{option}을(를) 무시합니다.", - "AddVersionLoadPortFailed": "{package_name} 포트를 로드할 수 없습니다.", + "AddVersionInstructions": "다음 명령을 실행하여 현재 버전의 {package_name}을(를) 자동으로 추가할 수 있습니다.", "AddVersionNewFile": "(새 파일)", "AddVersionNewShaIs": "새 SHA: {commit_sha}", "AddVersionNoFilesUpdated": "업데이트된 파일이 없습니다.", @@ -70,8 +68,8 @@ "AddVersionPortFilesShaChanged": "{package_name}에 대해 체크 인된 파일이 변경되었지만 버전이 업데이트되지 않았습니다.", "AddVersionPortFilesShaUnchanged": "{package_name}에 대한 체크 인 파일이 버전 {version}에서 변경되지 않았습니다.", "AddVersionPortHasImproperFormat": "{package_name}의 형식이 잘못되었음", - "AddVersionSuggestNewVersionScheme": "포트 \"{package_name}\"에서 \"{old_scheme}\" 대신 \"{new_scheme}\" 버전 체계를 사용합니다.\n--{option}을(를) 사용하여 이 검사를 사용하지 않도록 설정합니다.", - "AddVersionUnableToParseVersionsFile": "버전 파일 {path}을(를) 구문 분석할 수 없음", + "AddVersionSuggestVersionDate": "\"{package_name}\"의 버전 형식은 \"version-string\"을 사용하지만 형식은 \"version-date\"로 허용됩니다. 이 형식이 실제로 ISO 8601 날짜인 경우 형식을 \"version-date\"로 변경하고 이 명령을 다시 실행합니다. 그렇지 않으면 이 명령을 다시 실행하고 --skip-version-format-check를 추가하여 이 검사를 사용하지 않도록 설정합니다.", + "AddVersionSuggestVersionRelaxed": "\"{package_name}\"의 버전 형식은 \"version-string\"을 사용하지만 형식은 \"version\"으로 허용됩니다. 이 포트의 버전이 완화 버전 규칙을 사용하여 정렬 가능한 경우 형식을 \"version\"으로 변경하고 이 명령을 다시 실행합니다. 완화된 버전 규칙은 각 숫자 구성 요소별로 버전을 정렬합니다. 그런 다음 대시 접미사가 있는 버전은 먼저 어휘순으로 정렬됩니다. 더하기 빌드 태그는 무시됩니다. 예:\n1.0 < 1.1-alpha < 1.1-b < 1.1 < 1.1.1 < 1.2+build = 1.2 < 2.0\n특히 대시 접미사는 이후가 아니라 *먼저* 정렬됩니다. 1.0-anything < 1.0\n실제로 의미 체계 부분이 적용되지 않더라도 이 정렬 순서는 의미 체계 버전 관리에서 선택한 순서와 동일합니다(https://semver.org 참조).\n이 포트의 버전이 이러한 규칙에 따라 정렬되지 않은 경우 이 명령을 다시 실행하고 --skip-version-format-check를 추가하여 이 검사를 사용하지 않도록 설정합니다.", "AddVersionUncommittedChanges": "{package_name}에 대해 커밋되지 않은 변경 내용이 있습니다.", "AddVersionUpdateVersionReminder": "버전이나 포트 버전을 업데이트 하셨나요?", "AddVersionUseOptionAll": "인수가 없는 {command_name}에서 모든 포트 버전을 한 번에 업데이트하려면 --{option}을(를) 전달해야 합니다.", @@ -82,7 +80,7 @@ "AdditionalPackagesToRemove": "이 작업을 완료하려면 추가 패키지(*)를 제거해야 합니다.", "AllFormatArgsRawArgument": "형식 문자열 \"{value}\"에는 원시 형식 인수가 포함되어 있습니다.", "AllFormatArgsUnbalancedBraces": "형식 문자열 \"{value}\"의 불균형 중괄호", - "AllPackagesAreUpdated": "설치된 모든 패키지는 로컬 포트 파일을 사용하여 최신 상태입니다.", + "AllPackagesAreUpdated": "설치된 모든 패키지가 최신 상태입니다.", "AlreadyInstalled": "{spec}이(가) 이미 설치되어 있습니다.", "AlreadyInstalledNotHead": "{spec}은(는) 이미 설치되어 있습니다 -- HEAD에서 빌드하지 않음", "AmbiguousConfigDeleteConfigFile": "매니페스트 및 구성 파일 모두에서 제공하는 모호한 vcpkg 구성입니다.\n-- 구성 파일 {path} 삭제", @@ -110,7 +108,6 @@ "ApplocalProcessing": "종속성을 배포하는 중", "ArtifactsBootstrapFailed": "vcpkg-artifacts가 설치되어 있지 않으며 부트스트랩할 수 없습니다.", "ArtifactsNotInstalledReadonlyRoot": "vcpkg-artifacts가 설치되어 있지 않으며, VCPKG_ROOT가 읽기 전용으로 간주되어 vcpkg-artifacts를 설치할 수 없습니다. 'one liner'를 사용하여 vcpkg를 다시 설치하여 이 문제를 해결할 수 있습니다.", - "ArtifactsNotOfficialWarning": "비공식적으로 vcpkg-artifacts 사용 ", "ArtifactsOptionIncompatibility": "--{option}은(는) 아티팩트 찾기에 영향을 주지 않습니다.", "ArtifactsOptionJson": "환경 변수 및 기타 속성이 기록되는 JSON 파일의 전체 경로", "ArtifactsOptionMSBuildProps": "MSBuild 속성이 기록될 파일의 전체 경로", @@ -118,12 +115,10 @@ "ArtifactsOptionVersionMismatch": "--version 스위치의 수는 명명된 아티팩트의 수와 일치해야 합니다.", "ArtifactsSwitchARM": "아티팩트 획득 시 ARM에 호스트 감지 강제 적용", "ArtifactsSwitchARM64": "아티팩트 획득 시 ARM64에 호스트 감지 강제 적용", - "ArtifactsSwitchAll": "알려진 모든 아티팩트 레지스트리 업데이트", "ArtifactsSwitchAllLanguages": "아티팩트 획득 시 모든 언어 파일 획득", "ArtifactsSwitchForce": "아티팩트가 이미 획득된 경우 다시 획득 강제 적용", "ArtifactsSwitchFreebsd": "아티팩트 획득 시 FreeBSD에 호스트 감지 강제 적용", "ArtifactsSwitchLinux": "아티팩트 획득 시 Linux에 호스트 감지 강제 적용", - "ArtifactsSwitchNormalize": "사용 중단 수정 적용", "ArtifactsSwitchOnlyOneHostPlatform": "하나의 호스트 플랫폼(--x64, --x86, --arm, --arm64)만 설정할 수 있습니다.", "ArtifactsSwitchOnlyOneOperatingSystem": "하나의 운영 체제(--windows, --osx, --linux, --freebsd)만 설정할 수 있습니다.", "ArtifactsSwitchOnlyOneTargetPlatform": "하나의 대상 플랫폼(--target:x64, --target:x86, --target:arm, --target:arm64)만 설정할 수 있습니다.", @@ -135,9 +130,12 @@ "ArtifactsSwitchWindows": "아티팩트 획득 시 Windows에 호스트 감지 강제 적용", "ArtifactsSwitchX64": "아티팩트 획득 시 x64에 호스트 감지 강제 적용", "ArtifactsSwitchX86": "아티팩트 획득 시 x86에 호스트 감지 강제 적용", + "AssetCacheHit": "{path}에 대한 자산 캐시; 다음으로 부터 다운로드함: {url}", + "AssetCacheMiss": "자산 캐시 누락; {url}에서 다운로드하는 중", + "AssetCacheMissBlockOrigin": "{path} 및 다운로드에 대한 자산 캐시 누락이 x-block-origin에 의해 차단됩니다.", "AssetCacheProviderAcceptsNoArguments": "예기치 않은 인수: '{value}'에는 인수가 허용되지 않음", + "AssetCacheSuccesfullyStored": "{path}을(를) {url}에 저장했습니다.", "AssetSourcesArg": "자산 캐싱 원본. 'vcpkg help assetcaching' 참조", - "AttemptingToFetchPackagesFromVendor": "{vendor}에서 {count}개의 패키지를 가져오는 중", "AttemptingToSetBuiltInBaseline": "vcpkg-configuration.json.에서 기본 레지스트리를 재정의하는 동안 vcpkg.json에서 기본 제공 기준을 설정하려고 합니다.\nvcpkg-configuration.json의 기본 레지스트리가 사용됩니다.", "AuthenticationMayRequireManualAction": "하나 이상의 {vendor} 자격 증명 제공자가 직접 조치를 요청했습니다. 상호 작용을 허용하려면 이진 파일 원본 'interactive'를 추가하세요.", "AutoSettingEnvVar": "-- 자동으로 {env_var} 환경 변수를 \"{url}\"로 설정합니다.", @@ -147,12 +145,11 @@ "AzUrlAssetCacheRequiresBaseUrl": "예기치 않은 인수: 자산 구성 'azurl'에는 기본 URL이 필요", "AzUrlAssetCacheRequiresLessThanFour": "예기치 않은 인수: 자산 구성 'azurl'에는 4개 미만의 인수가 필요", "BaselineConflict": "매니페스트 파일에서 vcpkg-configuration.default-registry를 지정하면 기본 제공 기준과 충돌합니다.\n충돌하는 설정 중 하나를 제거하세요.", - "BaselineFileNoDefaultField": "{commit_sha} 커밋의 기준 파일이 잘못되었습니다(\"기본값\" 필드 없음).", "BaselineGitShowFailed": "'{commit_sha}' 커밋에서 기준을 체크 아웃하는 동안 `git show` versions/baseline.json에 실패했습니다. 이 문제는 'git fetch'로 커밋을 페치하여 해결할 수 있습니다.", - "BaselineMissing": "기준 버전을 찾을 수 없습니다. 실행:\nvcpkg x-add-version {package_name}\ngit add versions\ngit commit -m \"Update version database\"\n{version}을(를) 기본 버전으로 설정합니다.", - "BinaryCacheVendorHTTP": "HTTP 서버", + "BaselineMissing": "{package_name}에 버전이 할당되지 않았습니다.", + "BinariesRelativeToThePackageDirectoryHere": "이진 파일은 여기서 ${{CURRENT_PACKAGES_DIR}}에 상대적입니다.", "BinarySourcesArg": "이진 캐싱 소스. 'vcpkg help binarycaching' 참조", - "BinaryWithInvalidArchitecture": "{path}\n 필요한 항목: {expected}, 실제 항목: {actual}", + "BinaryWithInvalidArchitecture": "{path}이(가) {arch}용으로 빌드되었습니다.", "BuildAlreadyInstalled": "{spec}이(가) 이미 설치되어 있습니다. 빌드를 시도하기 전에 {spec}을(를) 제거하세요.", "BuildDependenciesMissing": "빌드 명령어를 사용하려면 모든 종속 항목이 이미 설치되어 있어야 합니다.\n다음 종속 항목이 누락되었습니다.", "BuildResultBuildFailed": "BUILD_FAILED", @@ -170,22 +167,19 @@ "BuildTroubleshootingMessage1": "'git pull' 및 'vcpkg update'와 함께 최신 포트 파일을 사용하고 있는지 확인하세요.\n그런 후 다음에서 알려진 문제를 확인합니다.", "BuildTroubleshootingMessage2": "다음 위치에서 새 문제를 제출할 수 있습니다.", "BuildTroubleshootingMessage3": "버그 보고서 제목에 '[{package_name}] 빌드 오류'를 포함하고, 버그 설명에 다음 버전 정보를 포함하고, 위의 관련 오류 로그를 첨부합니다.", - "BuildTroubleshootingMessage4": "문제를 보고할 때 {path}에서 미리 채워진 템플릿을 사용하세요.", "BuildTroubleshootingMessageGH": "실행하여 문제를 제출할 수도 있습니다(GitHub CLI를 설치해야 합니다):", "BuildingFromHead": "HEAD에서 {spec} 빌드 중...", "BuildingPackage": "{spec} 구축 중...", "BuildingPackageFailed": "{build_result}(으)로 {spec}을(를) 빌드하지 못했습니다.", "BuildingPackageFailedDueToMissingDeps": "다음과 같은 누락된 종속성 때문에", "BuiltInTriplets": "vcpkg 기본 제공 Triplets:", - "BuiltWithIncorrectArchitecture": "다음 파일은 잘못된 아키텍처로 빌드되었습니다.", - "CISettingsExclude": "건너뛸 포트를 쉼표로 구분한 목록", + "BuiltWithIncorrectArchitecture": "트리플렛은 이진 파일이 {arch}에 대해 빌드되도록 요청하지만 다음 이진 파일은 다른 아키텍처용으로 빌드되었습니다. 이는 일반적으로 도구 체인 정보가 이진 파일의 빌드 시스템에 잘못 전달됨을 의미합니다. 이 메시지를 표시하지 않도록 설정하려면 set(VCPKG_POLICY_SKIP_ARCHITECTURE_CHECK enabled)을 추가합니다.", "CISettingsOptCIBase": "ci.baseline.txt 파일의 경로입니다. 포트를 건너뛰고 회귀를 검색하는 데 사용됩니다.", "CISettingsOptExclude": "건너뛸 포트를 쉼표로 구분한 목록", "CISettingsOptFailureLogs": "오류 로그를 복사할 디렉터리", "CISettingsOptHostExclude": "호스트 3자리 ID에 대해 건너뛸 포트를 쉼표로 구분한 목록", "CISettingsOptOutputHashes": "결정된 모든 패키지 해시를 출력할 파일", "CISettingsOptParentHashes": "변경된 패키지 집합을 줄이기 위해 부모 CI 상태에 대한 패키지 해시를 읽는 파일", - "CISettingsOptSkippedCascadeCount": "--exclude의 수와 지원 건너 뛰기가 이 숫자와 정확하게 같도록 어설션합니다.", "CISettingsOptXUnit": "XUnit 형식으로 결과를 출력하는 파일", "CISettingsVerifyGitTree": "각 Git 트리 개체가 선언된 버전과 일치하는지 확인합니다(매우 느림).", "CISettingsVerifyVersion": "오류만 아니라 각 포트의 결과를 인쇄합니다.", @@ -200,8 +194,6 @@ "CMakeTargetsUsageHeuristicMessage": "# 이 값은 추론적으로 생성되며 올바르지 않을 수 있습니다.", "CMakeToolChainFile": "CMake 프로젝트는 \"-DCMAKE_TOOLCHAIN_FILE={path}\"를 사용해야 합니다.", "CMakeUsingExportedLibs": "CMake 프로젝트에서 내보낸 라이브러리를 사용하려면 CMake 명령줄에 {value}을(를) 추가하세요.", - "CheckedOutGitSha": "Git SHA: {commit_sha} 체크 아웃됨", - "CheckedOutObjectMissingManifest": "체크 아웃된 개체에 CONTROL 파일 또는 vcpkg.json 파일이 없습니다.", "ChecksFailedCheck": "vcpkg가 충돌했습니다. 추가 정보가 없습니다.", "ChecksUnreachableCode": "연결할 수 없는 코드에 도달했습니다", "ChecksUpdateVcpkg": "bootstrap-vcpkg를 다시 실행하여 vcpkg를 업데이트하면 이 오류가 해결될 수 있습니다.", @@ -235,14 +227,11 @@ "CmdBuildExternalExample2": "vcpkg build-external zlib2 C:\\path\\to\\dir\\with\\vcpkg.json", "CmdBuildExternalSynopsis": "경로에서 포트를 빌드합니다.", "CmdBuildSynopsis": "포트 빌드", - "CmdCacheExample1": "vcpkg cache <검색 하위문자열>", - "CmdCacheSynopsis": "패키지 사양 나열", "CmdCheckSupportExample1": "vcpkg x-check-support <포트 이름>", "CmdCheckSupportSynopsis": "포트를 빌드하지 않고도 지원되는지 테스트", "CmdCiCleanSynopsis": "CI 실행을 준비하기 위해 모든 파일 지우기", "CmdCiSynopsis": "CI 테스트를 위해 모든 포트 빌드 시도", "CmdCiVerifyVersionsSynopsis": "버전 데이터베이스의 무결성 확인", - "CmdContactOptSurvey": "현재 vcpkg 설문 조사에 대한 기본 브라우저 시작", "CmdCreateExample1": "vcpkg create <포트 이름> ", "CmdCreateExample2": "vcpkg create my-fancy-port https://example.com/sources.zip", "CmdCreateExample3": "vcpkg create <포트 이름> <다운로드된 파일이름>", @@ -265,7 +254,7 @@ "CmdEditOptBuildTrees": "포트별 빌드 트리 하위 폴더로 편집기 열기", "CmdEnvOptions": "설치된 {path}을(를) {env_var}에 추가합니다.", "CmdExportEmptyPlan": "제로 패키지 내보내기 생성을 거부합니다. 내보내기 전에 패키지를 설치하세요.", - "CmdExportExample1": "vcpkg export [--nuget] [--directory=out_dir]", + "CmdExportExample1": "vcpkg export [--nuget] [--output-dir=out_dir]", "CmdExportOpt7Zip": "7zip(.7z) 파일로 내보냅니다.", "CmdExportOptChocolatey": "Chocolatey 패키지를 내보냅니다(실험적).", "CmdExportOptDebug": "프리팹 디버그 사용", @@ -376,8 +365,10 @@ "CmdZExtractExample2": "vcpkg z-extract source.zip source_dir --strip 2", "CmdZExtractOptStrip": "모든 경로에서 제거할 선행 디렉터리 수", "CommandEnvExample2": "vcpkg env \"ninja -C <경로>\" --triplet x64-windows", - "CommandFailed": "명령:\n{command_line}\n다음 결과와 함께 실패했습니다.", + "CommandFailed": "명령:\n{command_line}\n다음 출력으로 실패했습니다.", + "CommandFailedCode": "명령:\n{command_line}\n종료 코드 {exit_code} 및 다음 출력으로 실패했습니다.", "CommunityTriplets": "커뮤니티 Triplets:", + "CompilerPath": "컴파일러 찾음: {path}", "CompressFolderFailed": "폴더 \"{path}\"을(를) 압축하지 못했습니다.", "ComputingInstallPlan": "설치 계획을 계산하는 중...", "ConfigurationErrorRegistriesWithoutBaseline": "{path}에 정의된 구성이 잘못되었습니다.\n\n레지스트리를 사용하려면 기본 레지스트리에 대한 기준이 설정되어 있거나 기본 레지스트리가 null여야 합니다.\n\n자세한 내용은 {url}을(를) 참조하세요.", @@ -386,11 +377,10 @@ "ConsideredVersions": "{version}의 버전 요구 사항으로 인해 다음 실행 파일이 고려되었지만 삭제되었습니다.", "ConstraintViolation": "제약 조건 위반 발견:", "ContinueCodeUnitInStart": "시작 위치에서 계속 코드 단위를 찾음", - "ControlAndManifestFilesPresent": "매니페스트 파일과 CONTROL 파일이 모두 포트 디렉터리에 있습니다. {path}", "ControlCharacterInString": "문자열의 제어 문자", "ControlSupportsMustBeAPlatformExpression": "\"Supports\"는 반드시 플랫폼 식이어야 합니다.", - "CopyrightIsDir": "디렉터리인 `{path}`은(는) 더 이상 사용되지 않습니다.", - "CorruptedDatabase": "데이터베이스가 손상되었습니다.", + "CopyrightIsDir": "이 포트는 ${{CURRENT_PACKAGES_DIR}}/share/${{PORT}}/copyright를 디렉터리로 설정하지만 파일이어야 합니다. vcpkg_install_copyright을 사용하여 별도의 저작권 파일을 하나로 결합하는 것이 좋습니다. 이 메시지를 표시하지 않도록 설정하려면 set(VCPKG_POLICY_SKIP_COPYRIGHT_CHECK enabled)을 추가합니다.", + "CorruptedDatabase": "vcpkg의 설치 데이터베이스가 손상되었습니다. 이는 vcpkg의 버그이거나 예기치 않은 방식으로 '설치된' 디렉터리의 콘텐츠를 수정한 것입니다. '설치된' 디렉터리를 삭제하고 사용하려는 디렉터리를 다시 설치하여 이 문제를 해결할 수 있습니다. 이 문제가 지속적으로 발생하면 https://github.com/microsoft/vcpkg에서 버그를 제출하세요.", "CorruptedInstallTree": "vcpkg '설치된' 트리가 손상되었습니다.", "CouldNotDeduceNugetIdAndVersion": "파일 이름에서 nuget ID 및 버전을 추론할 수 없음: {path}", "CouldNotFindBaselineInCommit": "{package_name} 관련 {commit_sha}의 {url}에서 기준을 찾을 수 없습니다.", @@ -403,14 +393,12 @@ "CreatingNugetPackage": "NuGet 패키지 생성 중...", "CreatingZipArchive": "zip 보관함 생성 중...", "CreationFailed": "{path} 생성에 실패했습니다.", - "CurlFailedToExecute": "종료 코드 {exit_code}(으)로 curl을 실행하지 못했습니다.", "CurlFailedToPut": "curl이 종료 코드 {exit_code}(으)로 파일을 {url}에 넣지 못했습니다.", "CurlFailedToPutHttp": "curl이 종료 코드 {exit_code} 및 http 코드 {value}(으)로 파일을 {url}에 넣지 못했습니다.", - "CurlReportedUnexpectedResults": "curl에서 vcpkg에 대한 예기치 않은 결과를 보고했으며 vcpkg를 계속할 수 없습니다.\n다음 텍스트에서 민감한 정보를 검토하고 Microsoft/vcpkg GitHub에서 문제를 열어 이 문제를 해결하세요!\ncmd: {command_line}\n === 컬 출력 ===\n{actual}\n=== 컬 출력 종료 ===", - "CurlReturnedUnexpectedResponseCodes": "curl이 요청에 대해 예상한 것과 다른 수의 응답 코드를 반환했습니다({actual} vs 예상 {expected}).", + "CurlResponseTruncatedRetrying": "curl이 부분 응답을 반환했습니다. {value}밀리초를 기다린 후 다시 시도", + "CurlTimeout": "시간 제한 및 다시 시도 후에도 curl에서 요청된 모든 HTTP 작업을 수행할 수 없습니다. 마지막 명령줄은 {command_line}입니다.", "CurrentCommitBaseline": "현재 커밋을 기준으로 사용할 수 있음:\n\t\"builtin-baseline\": \"{commit_sha}\"", "CycleDetectedDuring": "{spec} 동안 검색된 주기:", - "DateTableHeader": "날짜", "DefaultBinaryCachePlatformCacheRequiresAbsolutePath": "환경 변수 VCPKG_DEFAULT_BINARY_CACHE는 디렉터리여야 함(이전: {path})", "DefaultBinaryCacheRequiresAbsolutePath": "환경 변수 VCPKG_DEFAULT_BINARY_CACHE는 절대 변수여야 함(이전: {path})", "DefaultBinaryCacheRequiresDirectory": "환경 변수 VCPKG_DEFAULT_BINARY_CACHE는 디렉터리여야 함(이전: {path})", @@ -419,15 +407,18 @@ "DefaultFeatureIdentifier": "기본 기능의 이름은 반드시 식별자여야 합니다.", "DefaultFlag": "기본적으로 --{option}이 켜져 있습니다.", "DefaultRegistryIsArtifact": "기본 레지스트리는 아티팩트 레지스트리일 수 없습니다.", - "DefaultTripletChanged": "2023년 9월 릴리스에서는 vcpkg 라이브러리의 기본 triplet이 x86-windows에서 감지된 호스트 triplet({triplet})으로 변경되었습니다. 이전 동작의 경우 --triplet x86-windows를 추가하세요. 이 메시지를 표시하지 않으려면 --triplet {triplet} 을 추가하세요.", "DeleteVcpkgConfigFromManifest": "-- 또는 매니페스트 파일 {path}에서 \"vcpkg-configuration\"을 제거합니다.", "DependencyFeatureCore": "\"core\" 기능은 종속성의 기능 목록에 있을 수 없습니다. 기본 기능을 해제하려면 대신 \"default-features\": false를 추가합니다.", "DependencyFeatureDefault": "\"default\" 기능은 종속성의 기능 목록에 있을 수 없습니다. 기본 기능을 켜려면 대신 \"default-features\": true를 추가합니다.", "DependencyGraphCalculation": "종속성 그래프 제출을 활성화했습니다.", "DependencyGraphFailure": "종속성 그래프 제출에 실패했습니다.", "DependencyGraphSuccess": "종속성 그래프 제출에 성공했습니다.", + "DependencyInFeature": "종속성이 {feature}(이)라는 기능에 있습니다.", + "DependencyNotInVersionDatabase": "종속성 {package_name}이(가) 버전 데이터베이스에 없습니다. 해당 포트가 있나요?", "DeprecatedPrefabDebugOption": "--prefab-debug는 이제 더 이상 사용되지 않습니다.", "DetectCompilerHash": "삼중항 {triplet}에 대한 컴파일러 해시 감지 중...", + "DirectoriesRelativeToThePackageDirectoryHere": "디렉터리는 ${{CURRENT_PACKAGES_DIR}}에 상대적입니다.", + "DllsRelativeToThePackageDirectoryHere": "DLL은 여기서 ${{CURRENT_PACKAGES_DIR}}에 상대적입니다.", "DocumentedFieldsSuggestUpdate": "인식되어야 하는 문서화된 필드인 경우 vcpkg 도구를 업데이트해 보세요.", "DownloadAvailable": "이 도구의 다운로드 가능한 사본을 사용할 수 있으며 {env_var} 설정을 해제하여 사용할 수 있습니다.", "DownloadFailedCurl": "{url}: curl이 종료 코드 {exit_code}(으)로 다운로드하지 못함", @@ -437,8 +428,7 @@ "DownloadRootsDir": "디렉터리 다운로드(기본값: {env_var})", "DownloadWinHttpError": "{url}: 종료 코드 {exit_code}(으)로 {system_api}이(가) 실패했습니다.", "DownloadedSources": "{spec}에 대한 다운로드 소스", - "DownloadingPortableToolVersionX": "적합한 버전의 {tool_name}을(를) 찾을 수 없습니다(v{version} 필요). 이식 가능한 {tool_name} {version}을(를) 다운로드하는 중...", - "DownloadingTool": "{tool_name}을(를) 다운로드하는 중... \n{url}->{path}", + "DownloadingPortableToolVersionX": "적합한 버전의 {tool_name}을(를) 찾을 수 없습니다(v{version} 필요).", "DownloadingUrl": "{url} 다운로드 중", "DownloadingVcpkgStandaloneBundle": "독립 실행형 번들 {version}을(를) 다운로드하는 중입니다.", "DownloadingVcpkgStandaloneBundleLatest": "최신 독립 실행형 번들을 다운로드하는 중입니다.", @@ -449,7 +439,6 @@ "DuplicatePackagePatternRegistry": "레지스트리: {url}", "DuplicatedKeyInObj": "개체에 중복 키 \"{value}\"이(가) 있습니다.", "ElapsedForPackage": "{spec} 처리 경과 시간: {elapsed}", - "ElapsedInstallTime": "총 경과 시간: {count}.", "ElapsedTimeForChecks": "통과/실패를 확인할 시간: {elapsed}", "EmailVcpkgTeam": "의견이 있으면 {url}(으)로 이메일을 보내주세요.", "EmbeddingVcpkgConfigInManifest": "매니페스트 파일에 'vcpkg-configuration'을 포함하는 것은 실험적 기능입니다.", @@ -479,25 +468,23 @@ "ErrorWhileFetchingBaseline": "리포지토리 {package_name}에서 기준 '{value}\"'을(를) 가져오는 동안:", "ErrorWhileParsing": "{path}을(를) 구문 분석하는 동안 오류가 발생했습니다.", "ErrorWhileWriting": "{path}을(를) 쓰는 동안 오류가 발생했습니다.", - "ErrorsFound": "다음 오류를 발견했습니다.", "ExamplesHeader": "예:", "ExceededRecursionDepth": "재귀 수준이 초과되었습니다.", "ExcludedPackage": "제외된 {spec}", "ExcludedPackages": "제외되는 패키지:", + "ExecutablesRelativeToThePackageDirectoryHere": "실행 파일은 여기서 ${{CURRENT_PACKAGES_DIR}}에 상대적입니다.", "ExpectedAnObject": "개체가 필요합니다.", "ExpectedAtMostOneSetOfTags": "{old_value}.*{new_value}의 {count} 세트를 찾았지만 블록에서 최대 1이 필요함:\n{value}", "ExpectedCharacterHere": "여기에 '{expected}'이(가) 필요합니다.", "ExpectedDefaultFeaturesList": "기본 기능 목록에 ',' 또는 텍스트의 끝이 필요합니다.", "ExpectedDependenciesList": "종속성 목록에 ',' 또는 텍스트의 끝이 필요합니다.", "ExpectedDigitsAfterDecimal": "소수점 뒤에 숫자가 필요합니다.", - "ExpectedEof": "eof가 필요합니다.", "ExpectedExplicitTriplet": "명시적 트리플렛이 필요합니다.", "ExpectedFailOrSkip": "여기에는 'fail', 'skip' 또는 'pass'가 필요합니다.", "ExpectedFeatureListTerminal": "기능 목록에 ',' 또는 ']'가 필요합니다.", "ExpectedFeatureName": "기능 이름이 필요합니다(소문자, 숫자, '-'여야 함).", "ExpectedOneSetOfTags": "{old_value}.*{new_value}의 {count} 세트를 찾았지만 블록에서 정확히 1이 필요함:\n{value}", "ExpectedOneVersioningField": "버전 관리 필드가 하나만 필요합니다.", - "ExpectedPackageSpecifier": "패키지 지정자가 필요합니다.", "ExpectedPathToExist": "페치 후 {path}이(가) 있어야 합니다.", "ExpectedPortName": "여기에 포트 이름이 필요합니다(소문자, 숫자, '-'여야 함).", "ExpectedReadWriteReadWrite": "예기치 않은 인수: 'read', readwrite' 또는 'write' 필요", @@ -505,7 +492,6 @@ "ExpectedTripletName": "여기에 트리플렛 이름이 필요합니다(소문자, 숫자, '-'여야 함).", "ExportArchitectureReq": "내보내기 프리팹은 다음 아키텍처 arm64-v8a, armeabi-v7a, x86_64, x86 중 하나 이상을 대상으로 지정해야 합니다.", "ExportPrefabRequiresAndroidTriplet": "내보내기 프리팹에는 Android 삼중항이 필요합니다.", - "ExportUnsupportedInManifest": "vcpkg 내보내기는 향후 설계 고려 사항을 고려하여 매니페스트 모드를 지원하지 않습니다. 매니페스트 기반 프로젝트 외부에서 vcpkg를 실행하여 클래식 모드에서 내보내기를 사용할 수 있습니다.", "Exported7zipArchive": "7zip 보관함을 내보낸 위치: {path}", "ExportedZipArchive": "{path}에서 내보낸 Zip 아카이브", "ExportingAlreadyBuiltPackages": "다음 패키지는 이미 빌드되었으며 내보낼 예정입니다.", @@ -514,14 +500,12 @@ "ExtendedDocumentationAtUrl": "확장 문서는 '{url}'에서 사용할 수 있습니다.", "ExtractHelp": "보관 파일을 추출합니다.", "ExtractingTool": "{tool_name}을(를) 추출하는 중...", - "FailedPostBuildChecks": "빌드 후 검사 문제를 {count}개 발견했습니다. 큐레이팅된 카탈로그에 포트를 제출하려면 먼저 포트 파일을 수정하세요. {path}", + "FailedPostBuildChecks": "빌드 후 검사 문제 {count}개를 찾았습니다. 이러한 오류는 일반적으로 portfile.cmake 또는 업스트림 빌드 시스템의 버그로 인해 발생합니다. 이 포트를 큐레이팅된 레지스트리에 제출하기 전에 수정하세요.", "FailedToAcquireMutant": "변이 {path}을(를) 가져오지 못했습니다.", "FailedToCheckoutRepo": "{package_name} 리포지토리에서 '버전'을 체크 아웃하지 못했습니다.", "FailedToDeleteDueToFile": "다음 {path}(으)로 인해 remove_all({value}) 실패: ", "FailedToDeleteInsideDueToFile": "다음 {path}(으)로 인해 remove_all_inside({value}) 실패: ", - "FailedToDetermineArchitecture": "{path} 아키텍처를 확인할 수 없습니다.\n{command_line}", "FailedToDetermineCurrentCommit": "현재 커밋을 확인하지 못했습니다.", - "FailedToDownloadFromMirrorSet": "미러 세트에서 다운로드하지 못함", "FailedToExtract": "\"{path}\"을(를) 추출하지 못했습니다.", "FailedToFetchRepo": "{url}을(를) 가져오지 못했습니다.", "FailedToFindPortFeature": "{package_name}에는 {feature}라는 기능이 없습니다.", @@ -530,27 +514,20 @@ "FailedToLoadManifest": "{path} 디렉터리에서 매니페스트를 로드하지 못했습니다.", "FailedToLocateSpec": "그래프에서 사양을 찾지 못했습니다({spec}).", "FailedToObtainDependencyVersion": "원하는 종속성 버전을 찾을 수 없습니다.", - "FailedToObtainLocalPortGitSha": "로컬 포트에 대한 git SHA를 가져오지 못했습니다.", "FailedToObtainPackageVersion": "원하는 패키지 버전을 찾을 수 없습니다.", "FailedToOpenAlgorithm": "{value}을(를) 열지 못했습니다.", "FailedToParseBaseline": "기준을 구문 분석하지 못했습니다. {path}", "FailedToParseCMakeConsoleOut": "CMake 콘솔 출력을 구문 분석하여 블록 시작/끝 마커를 찾지 못했습니다.", "FailedToParseConfig": "구성 {path}을(를) 구문 분석하지 못했습니다.", - "FailedToParseControl": "제어 파일 {path}을(를) 구문 분석하지 못했습니다.", - "FailedToParseManifest": "매니페스트 파일을 구문 분석하지 못했습니다. {path}", "FailedToParseNoTopLevelObj": "{path}을(를) 구문 분석하지 못했습니다. 최상위 개체가 필요합니다.", "FailedToParseNoVersionsArray": "{path}을(를) 구문 분석하지 못했습니다. 'version' 배열이 필요합니다.", "FailedToParseSerializedBinParagraph": "[정상 검사] 직렬화된 이진 단락을 구문 분석하지 못했습니다.\nhttps://github.com/microsoft/vcpkg에서 다음 출력과 함께 문제를 여세요.\n{error_msg}\n직렬화된 이진 단락:", + "FailedToParseVersionFile": "버전 파일을 구문 분석하지 못했습니다. {path}", "FailedToParseVersionXML": "{tool_name} 도구의 버전을 구문 분석할 수 없습니다. 버전 문자열: {version}", - "FailedToParseVersionsFile": "버전 파일 {path}을(를) 구문 분석하지 못했습니다.", - "FailedToProvisionCe": "vcpkg-artifacts를 프로비전하지 못했습니다.", - "FailedToReadParagraph": "{path}에서 단락을 읽지 못했습니다.", - "FailedToRemoveControl": "제어 파일 {path}을(를) 제거하지 못했습니다.", "FailedToRunToolToDetermineVersion": "{tool_name} 버전을 확인하기 위해 “{path}:을(를) 실행하지 못했습니다.", - "FailedToStoreBackToMirror": "미러에 다시 저장하지 못했습니다:", + "FailedToStoreBackToMirror": "{url}을(를) {path}에 저장하지 못했습니다.", "FailedToStoreBinaryCache": "이진 캐시 {path}을(를) 저장하지 못함", "FailedToTakeFileSystemLock": "파일 시스템 잠금을 가져오지 못함", - "FailedToWriteManifest": "매니페스트 파일 {path}을(를) 쓰지 못함", "FailedVendorAuthentication": "하나 이상의 {vendor} 자격 증명 공급자가 인증에 실패했습니다. 자격 증명을 제공하는 방법에 대한 자세한 내용은 '{url}'을(를) 참조하세요.", "FetchingBaselineInfo": "{package_name}에서 기준 정보를 가져오는 중...", "FetchingRegistryInfo": "{url}({value})에서 레지스트리 정보를 가져오는 중...", @@ -559,11 +536,13 @@ "FileNotFound": "{path}: 파일을 찾을 수 없습니다.", "FileReadFailed": "오프셋 {byte_offset}의 {path}에서 {count}바이트를 읽지 못했습니다.", "FileSeekFailed": "{path}에서 {byte_offset} 위치를 찾지 못했습니다.", - "FileSystemOperationFailed": "파일 시스템 작업이 실패했습니다.", - "FilesContainAbsolutePath1": "설치된 패키지에는 다음과 같은 절대 경로가 없어야 합니다.", - "FilesContainAbsolutePath2": "다음 파일에서 절대 경로를 찾았습니다.", + "FilesContainAbsolutePath1": "설치된 패키지에는 다음과 같은 절대 경로가 없어야 합니다. 이 메시지를 표시하지 않도록 설정하려면 set(VCPKG_POLICY_SKIP_ABSOLUTE_PATHS_CHECK enabled)을 추가합니다.", + "FilesContainAbsolutePath2": "여기에서 찾은 절대 경로", + "FilesContainAbsolutePathPkgconfigNote": "'vcpkg_fixup_pkgconfig()'에 대한 호출을 추가하면 .pc 파일의 절대 경로가 수정될 수 있습니다.", "FilesExported": "내보낸 파일: {path}", - "FindHelp": "표시된 아티팩트 또는 포트를 검색합니다. '아티팩트' 또는 '포트' 뒤에 매개 변수가 없으면 모든 항목이 표시됩니다.", + "FilesRelativeToTheBuildDirectoryHere": "파일은 여기서 빌드 디렉터리를 기준으로 합니다.", + "FilesRelativeToThePackageDirectoryHere": "파일은 여기서 ${{CURRENT_PACKAGES_DIR}}에 상대적입니다.", + "FindCommandFirstArg": "'find'의 첫 번째 인수는 'artifact' 또는 'port'여야 합니다.", "FindVersionArtifactsOnly": "--version은 vcpkg 검색 또는 vcpkg 찾기 포트와 함께 사용할 수 없습니다.", "FishCompletion": "vcpkg 물고기 완성은 이미 \"{path}\"에 추가되었습니다.", "FloatingPointConstTooBig": "부동 소수점 상수가 너무 큼: {count}", @@ -581,6 +560,7 @@ "GeneratingRepo": "{path} 리포지토리 생성 중...", "GetParseFailureInfo": "'--debug'를 사용하여 구문 분석 실패에 대한 자세한 정보를 가져옵니다.", "GitCommandFailed": "명령을 실행하지 못했습니다: {command_line}", + "GitCommitUpdateVersionDatabase": "git commit -m \"Update version database\"", "GitFailedToFetch": "리포지토리 {url}에서 참조 {value}을(를) 가져오지 못함", "GitFailedToInitializeLocalRepository": "로컬 리포지토리 {path}을(를) 초기화하지 못함", "GitRegistryMustHaveBaseline": "Git 레지스트리 \"{url}\"에는 유효한 Git 커밋 SHA(16진수 문자 40개)인 \"기준\" 필드가 있어야 합니다.\n현재 최신 버전을 사용하려면 해당 리포지토리의 HEAD인 \"{commit_sha}\"로 기준을 설정합니다.", @@ -623,10 +603,7 @@ "HelpEnvCommand": "개발 또는 컴파일을 위한 깨끗한 셸 환경을 만듭니다.", "HelpExampleCommand": "자세한 도움말(예 포함)은 https://learn.microsoft.com/vcpkg 참조", "HelpExampleManifest": "매니페스트 예시:", - "HelpExportCommand": "패키지를 내보냅니다.", - "HelpHashCommand": "특정 알고리즘(기본값 SHA512)으로 파일을 해시합니다.", "HelpInstallCommand": "패키지를 설치합니다.", - "HelpListCommand": "설치된 패키지를 나열합니다.", "HelpManifestConstraints": "매니페스트는 사용된 버전에 세 가지 종류의 제약을 가할 수 있습니다.", "HelpMinVersion": "Vcpkg는 최상위 수준에 지정된 기준의 버전과 그래프의 \"version>=\" 제약 조건을 포함하여 적용 가능한 모든 제약 조건과 일치하는 발견된 최소 버전을 선택합니다.", "HelpOverrides": "최상위 매니페스트로 사용되는 경우(예: 디렉터리에서 `vcpkg install`을 실행할 때) 재정의를 사용하면 매니페스트가 종속성 해결을 단축하고 사용할 버전을 정확히 지정할 수 있습니다. 이는 `version-string` 종속성과 같은 버전 충돌을 처리하는 데 사용할 수 있습니다. 전이적으로 의존하는 경우에는 고려되지 않습니다.", @@ -674,7 +651,6 @@ "IllegalPlatformSpec": "이 컨텍스트에서는 플랫폼 한정자가 허용되지 않습니다.", "ImproperShaLength": "SHA512는 128진수 문자여야 합니다. {value}", "IncorrectArchiveFileSignature": "잘못된 보관 파일 서명", - "IncorrectPESignature": "잘못된 PE 서명", "InfoSetEnvVar": "{env_var}을(를) 선택한 편집기로 설정할 수도 있습니다.", "InitRegistryFailedNoRepo": "git 리포지토리 루트가 아니므로 {path}에 레지스트리를 만들 수 없습니다.\n`git init {command_line}`을(를) 사용하여 이 폴더에 git 리포지토리를 만듭니다.", "InstallCopiedFile": "{path_source} -> {path_destination} 완료", @@ -688,8 +664,8 @@ "InstalledBy": "{path}에 의해 설치됨", "InstalledPackages": "이미 설치되어 있는 패키지:", "InstalledRequestedPackages": "요청된 모든 패키지가 현재 설치되어 있습니다.", - "InstallingFromLocation": "-- 위치에서 포트를 설치하는 중: {path}", "InstallingMavenFile": "Maven 파일을 설치하는 {path}", + "InstallingOverlayPort": "여기에서 오버레이 포트 설치", "InstallingPackage": "{action_index}/{count} {spec}을(를) 설치하는 중...", "IntegrateBashHelp": "bash 탭 완성을 사용합니다. 비 Windows 전용입니다.", "IntegrateFishHelp": "fish 탭 완성을 사용합니다. 비 Windows 전용입니다.", @@ -725,7 +701,7 @@ "InvalidBundleDefinition": "번들 정의가 잘못되었습니다.", "InvalidCharacterInFeatureList": "기능 이름에 잘못된 문자가 있습니다(소문자, 숫자, '-' 또는 '*'여야 함).", "InvalidCharacterInFeatureName": "기능 이름에 잘못된 문자가 있습니다(소문자, 숫자, '-'여야 함).", - "InvalidCharacterInPackageName": "패키지 이름에 잘못된 문자가 있습니다(소문자, 숫자, '-'여야 함).", + "InvalidCharacterInPortName": "포트 이름에 잘못된 문자(소문자, 숫자, '-'여야 함)", "InvalidCodePoint": "utf8_encoded_code_point_count에 잘못된 코드 포인트가 전달되었습니다.", "InvalidCodeUnit": "잘못된 코드 단위", "InvalidCommandArgSort": "--sort 값은 'lexicographical', 'topological', 'reverse' 중 하나여야 합니다.", @@ -743,7 +719,6 @@ "InvalidLinkage": "잘못된 {system_name} 연결 유형: [{value}]", "InvalidLogicExpressionUnexpectedCharacter": "논리식이 잘못되었습니다. 예기치 않은 문자입니다.", "InvalidLogicExpressionUsePipe": "논리 식이 잘못되었습니다. 'or' 대신 '|'를 사용하세요.", - "InvalidNoVersions": "파일에 버전이 없습니다.", "InvalidOptionForRemove": "'remove'는 라이브러리 또는 '--outdated'를 수락합니다.", "InvalidPortVersonName": "잘못된 포트 버전 파일 이름 '{path}'을(를) 찾았습니다.", "InvalidSharpInVersion": "버전 텍스트에 잘못된 문자 '#'", @@ -751,6 +726,8 @@ "InvalidString": "Value::string(std::string)에 잘못된 utf8이 전달되었습니다.", "InvalidTriplet": "유효하지 않은 삼중자: {triplet}", "InvalidUri": "URI를 구문 분석할 수 없음: {value}", + "InvalidValueHashAdditionalFiles": "변수 VCPKG_HASH_ADDITIONAL_FILES는 잘못된 파일 경로 '{path}'을(를) 포함합니다. 값은 기존 파일의 절대 경로여야 합니다.", + "InvalidValuePostPortfileIncludes": "변수 VCPKG_POST_PORTFILE_INCLUDES는 잘못된 파일 경로 '{path}'을(를) 포함합니다. 값은 기존 cmake 파일의 절대 경로여야 합니다.", "IrregularFile": "경로가 일반 파일이 아닙니다. {path}", "JsonErrorMustBeAnObject": "“{path}”은(는) 개체로 예상됩니다.", "JsonFieldNotObject": "[\"{json_field}\"] 값은 개체여야 합니다.", @@ -786,11 +763,11 @@ "LinkageStaticDebug": "정적 디버그(/MTd)", "LinkageStaticRelease": "정적 릴리스(/MT)", "ListHelp": "설치된 라이브러리 나열", - "LoadingCommunityTriplet": "-- [COMMUNITY] {path}에서 삼중항 구성 로드 중", + "LoadedCommunityTriplet": "여기에서 커뮤니티 트리플렛을 로드했습니다. 커뮤니티 트리플렛은 큐레이팅된 레지스트리에 빌드되지 않으므로 성공할 가능성이 적습니다.", + "LoadedOverlayTriplet": "여기에서 오버레이 트리플렛을 로드했습니다.", "LoadingDependencyInformation": "{count}개 패키지에 대한 종속성 정보를 로드하는 중...", - "LoadingOverlayTriplet": "-- [OVERLAY] {path}에서 삼중항 구성 로드 중", - "LocalPortfileVersion": "로컬 포트 파일 버전을 사용하고 있습니다. 로컬 포트 파일을 업데이트하려면 'git pull'을 사용하세요.", - "ManifestConflict": "\"{path}\" 포트에서 매니페스트 및 CONTROL 파일을 모두 찾았습니다. 하나 또는 다른 이름을 변경하세요.", + "LocalPortfileVersion": "로컬 포트 버전 사용. 로컬 포트를 업데이트하려면 'git pull'을 사용하세요.", + "ManifestConflict2": "매니페스트 및 CONTROL 파일을 모두 찾았습니다. 하나 또는 다른 하나의 이름을 바꾸세요.", "ManifestFormatCompleted": "매니페스트 파일의 서식을 지정했습니다.", "MismatchedBinParagraphs": "직렬화된 이진 단락이 원래 이진 단락과 다릅니다. https://github.com/microsoft/vcpkg에서 다음 출력으로 문제를 여세요.", "MismatchedFiles": "저장할 파일이 해시와 일치하지 않습니다.", @@ -802,6 +779,7 @@ "MissingAndroidEnv": "ANDROID_NDK_HOME 환경 변수가 없음", "MissingAndroidHomeDir": "ANDROID_NDK_HOME 디렉터리가 존재하지 않습니다: {path}", "MissingArgFormatManifest": "format-manifest가 '--all' 없이 --convert-control로 전달되었습니다.\n아무 작업도 수행하지 않습니다: 명시적으로 전달된 제어 파일은 자동으로 변환됩니다.", + "MissingAssetBlockOrigin": "{path}이(가) 누락되고 다운로드가 x-block-origin에 의해 차단됩니다.", "MissingClosingParen": "닫는 )가 없습니다.", "MissingDependency": "패키지 {spec}이(가) 설치되었지만 종속성 {package_name}이(가) 없습니다.", "MissingExtension": "'{extension}' 확장이 없습니다.", @@ -810,9 +788,9 @@ "MissingPortSuggestPullRequest": "포트가 목록에 없으면 끌어오기 요청에서 문제를 열고/열거나 끌어오기 요청을 만드는 것이 좋습니다.", "MissingRequiredField": "누락된 필수 필드 '{json_field}'({json_type})", "MissingRequiredField2": "누락된 필수 필드 '{json_field}'", + "MissingShaVariable": "다른 변수를 사용하는 경우 템플릿에서 {{sha}} 변수를 사용해야 합니다.", "MixingBooleanOperationsNotAllowed": "& 및 |을 혼합하는 것은 허용되지 않습니다. 작업 순서를 지정하려면 ()를 사용하세요.", "MonoInstructions": "불완전한 모노 설치로 인해 발생할 수 있습니다. 일부 시스템에서는 'sudo apt install mono-complete'를 통해 전체 모노를 사용할 수 있습니다. Ubuntu 18.04 사용자는 https://www.mono-project.com/download/stable/에서 사용할 수 있는 최신 버전의 모노가 필요할 수 있습니다.", - "MsiexecFailedToExtract": "시작 또는 종료 코드 {exit_code} 및 메시지와 함께 \"{path}\"을(를) 추출하는 동안 msiexec가 실패했습니다.", "MultiArch": "다중 아키텍처는 '동일'해야 하지만 {option}입니다.", "MultipleFeatures": "{package_name}이(가) {feature}을(를) 여러 번 선언합니다. 기능에 고유한 이름이 있는지 확인하세요.", "MutuallyExclusiveOption": "--{value}은(는) --{option}과(와) 함께 사용할 수 없습니다.", @@ -822,10 +800,8 @@ "NewOnlyOneVersionKind": "--version-relaxed, --version-date 또는 --version-string 중 하나만 지정할 수 있습니다.", "NewSpecifyNameVersionOrApplication": "--name 및 --version을 지정하여 C++ 라이브러리용 매니페스트를 생성하거나 --application을 지정하여 매니페스트가 포트로 사용되지 않도록 지정합니다.", "NewVersionCannotBeEmpty": "--version은 비워 둘 수 없습니다.", - "NoArgumentsForOption": "--{option} 옵션은 인수를 허용하지 않습니다.", "NoError": "오류 없음", "NoInstalledPackages": "패키지가 설치되어 있지 않습니다. 의도한 명령이 `search`인가요?", - "NoLocalizationForMessages": "다음에 대한 지역화된 메시지가 없습니다. ", "NoOutdatedPackages": "오래된 패키지가 없습니다.", "NoRegistryForPort": "{package_name} 포트에 대해 구성된 레지스트리가 없습니다.", "NoUrlsAndHashSpecified": "SHA를 다운로드하도록 지정된 URL이 없습니다. {sha}", @@ -866,7 +842,6 @@ "PackageManipulationHeader": "패키지 조작", "PackageRootDir": "패키지 디렉터리(실험적)", "PackagesToInstall": "빌드 및 설치할 패키지:", - "PackagesToInstallDirectly": "직접 설치할 패키지:", "PackagesToModify": "이 작업을 완료하기 위해 추가 패키지(*)가 수정됩니다.", "PackagesToRebuild": "다시 빌드할 패키지:", "PackagesToRebuildSuggestRecurse": "위의 패키지를 다시 빌드하려면 --recurse 옵션을 사용하여 명령을 실행하세요.", @@ -882,47 +857,50 @@ "ParseFeatureNameError": "\"{package_name}\"은(는) 유효한 기능 이름이 아닙니다. 기능 이름은 소문자 영숫자+하이픈이어야 하며 예약되지 않아야 합니다(자세한 내용은 {url} 참조).", "ParseIdentifierError": "\"{value}\"는 유효한 식별자가 아닙니다. 식별자는 소문자 영숫자+하이픈이어야 하며 예약되지 않아야 합니다(자세한 내용은 {url} 참조).", "ParsePackageNameError": "\"{package_name}\"은(는) 유효한 패키지 이름이 아닙니다. 패키지 이름은 소문자 영숫자+하이픈이어야 하며 예약되지 않아야 합니다(자세한 내용은 {url} 참조).", + "ParsePackageNameNotEof": "패키지 이름을 구문 분석하는 입력의 끝이 필요합니다. 이는 일반적으로 표시된 문자가 포트 이름에 포함될 수 없음을 의미합니다. 포트 이름은 모두 소문자 영숫자+하이픈이며 예약되어 있지 않습니다(자세한 내용은 {url} 참조).", "ParsePackagePatternError": "\"{package_name}\"은(는) 유효한 패키지 패턴이 아닙니다. 패키지 패턴에는 와일드카드 문자(*)를 하나만 사용해야 하며 패턴의 맨 끝에 써야 합니다(자세한 내용은 {url} 참조).", + "ParseQualifiedSpecifierNotEof": "패키지 사양을 구문 분석하는 입력의 끝이 필요합니다. 이는 일반적으로 표시된 문자가 패키지 사양에 포함될 수 없음을 의미합니다. 포트, 트리플렛 및 기능 이름은 모두 소문자 영숫자+하이픈입니다.", + "ParseQualifiedSpecifierNotEofSquareBracket": "패키지 사양을 구문 분석하는 입력의 끝이 필요합니다. 대신 {version_spec}을(를) 의미했나요?", "PathMustBeAbsolute": "환경 변수 X_VCPKG_REGISTRIES_CACHE 값이 절댓값이 아닙니다. {path}", - "PerformingPostBuildValidation": "-- 빌드 후 유효성 검사를 수행하는 중", - "PortBugAllowRestrictedHeaders": "예외적인 상황에서는 {env_var}을(를) 통해 이 정책을 사용하지 않도록 설정할 수 있습니다.", - "PortBugBinDirExists": "정적 빌드에는 bin\\ 디렉터리가 없어야 하는데 {path}이(가) 있습니다.", - "PortBugDebugBinDirExists": "정적 빌드에는 debug\\bin\\ 디렉터리가 없어야 하는데 {path}이(가) 있습니다.", - "PortBugDebugShareDir": "/debug/share가 없어야 합니다. 중요한 모든 파일을 다시 구성한 다음 다음을 사용하세요.\nfile(REMOVE_RECURSE \"${{CURRENT_PACKAGES_DIR}}/debug/share\")", - "PortBugDllAppContainerBitNotSet": "Windows Store 앱에 앱 컨테이너 비트를 설정해야 합니다. 다음 DLL에 앱 컨테이너 비트가 설정되어 있지 않습니다.", - "PortBugDllInLibDir": "/lib 또는 /debug/lib에서 다음 dll을 찾았습니다. 각각 /bin 또는 /debug/bin으로 이동하세요.", - "PortBugDuplicateIncludeFiles": "포함 파일은 /debug/include 디렉터리에 중복되지 않아야 합니다. 프로젝트 cmake에서 사용하지 않도록 설정할 수 없는 경우 다음을 사용하세요.\nfile(REMOVE_RECURSE \"${{CURRENT_PACKAGES_DIR}}/debug/include\")", + "PerformingPostBuildValidation": "빌드 후 유효성 검사를 수행하는 중", + "PortBugBinDirExists": "${{CURRENT_PACKAGES_DIR}}/{path}이(가) 존재하지만 정적 빌드에는 없어야 합니다. 이 메시지를 표시하지 않도록 설정하려면 set(VCPKG_POLICY_DLLS_IN_STATIC_LIBRARY enabled)을 추가합니다.", + "PortBugDebugShareDir": "${{CURRENT_PACKAGES_DIR}}/debug/share가 없어야 합니다. 중요한 파일을 다시 구성한 다음 `file(REMOVE_RECURSE \"${{CURRENT_PACKAGES_DIR}}/debug/share\")`을 추가하여 나머지 파일을 삭제하세요. 이 메시지를 표시하지 않도록 설정하려면 set(VCPKG_POLICY_ALLOW_DEBUG_SHARE enabled)을 추가합니다.", + "PortBugDllAppContainerBitNotSet": "Windows 스토어 앱의 모든 DLL 및 Windows 스토어를 대상으로 하는 트리플렛 요청에 대해 앱 컨테이너 비트를 설정해야 하지만 다음 DLL은 비트 집합으로 빌드되지 않았습니다. 이는 일반적으로 도구 체인 링커 플래그가 제대로 전파되지 않거나 사용 중인 링커가 /APPCONTAINER 스위치를 지원하지 않음을 의미합니다. 이 메시지를 표시하지 않도록 설정하려면 set(VCPKG_POLICY_SKIP_APPCONTAINER_CHECK enabled)을 추가합니다.", + "PortBugDllInLibDir": "${{CURRENT_PACKAGES_DIR}}/lib 또는 ${{CURRENT_PACKAGES_DIR}}/debug/lib에서 다음 dll을 찾았습니다. 각각 ${{CURRENT_PACKAGES_DIR}}/bin 또는 ${{CURRENT_PACKAGES_DIR}}/debug/bin으로 이동하세요.", + "PortBugDuplicateIncludeFiles": "${{CURRENT_PACKAGES_DIR}}/debug/include는 없어야 합니다. 이 메시지를 표시하지 않도록 설정하려면 set(VCPKG_POLICY_ALLOW_DEBUG_INCLUDE enabled)을 추가합니다.", + "PortBugDuplicateIncludeFilesFixIt": "이 디렉터리가 디버그에서 헤더 설치를 비활성화할 수 없는 빌드 시스템에 의해 생성된 경우 file(REMOVE_RECURSE \"${{CURRENT_PACKAGES_DIR}}/debug/include\")을 사용하여 중복 디렉터리를 삭제합니다.", "PortBugFoundCopyrightFiles": "다음 파일은 잠재적인 저작권 파일입니다.", - "PortBugFoundDebugBinaries": "다음 {count}개 디버그 이진 파일을 찾았습니다.", - "PortBugFoundDllInStaticBuild": "정적 빌드에는 DLL이 없어야 하는데, 다음 DLL이 발견되었습니다.", - "PortBugFoundEmptyDirectories": "{path}에는 빈 디렉터리가 없어야 합니다. 다음 빈 디렉터리를 찾았습니다.", - "PortBugFoundExeInBinDir": "/bin 또는 /debug/bin에 다음 EXE가 있습니다. EXE는 유효한 배포 대상이 아닙니다.", - "PortBugFoundReleaseBinaries": "다음 {count}개 릴리스 이진 파일을 찾았습니다.", - "PortBugIncludeDirInCMakeHelperPort": "/include 폴더가 cmake 도우미 포트에 있습니다. cmake 파일만 설치해야 하므로 잘못되었습니다.", - "PortBugInspectFiles": "{extension} 파일을 검사하려면 다음을 사용하세요.", - "PortBugInvalidCrtLinkage": "다음 이진 파일은 {expected} CRT를 사용해야 합니다.", - "PortBugInvalidCrtLinkageEntry": "다음이 포함된 {path} 링크:", - "PortBugKernel32FromXbox": "선택한 삼중 항목은 Xbox를 대상으로 하지만 다음 DLL은 kernel32와 연결됩니다. 이러한 DLL은 kernel32가 없는 Xbox에서 로드할 수 없습니다. 이는 일반적으로 onecore_apiset.lib 또는 xgameplatform.lib와 같은 적절한 우산 라이브러리가 아닌 kernel32.lib와 연결하여 발생합니다.", - "PortBugMergeLibCMakeDir": "/lib/cmake 폴더는 /debug/lib/cmake와 병합하고 /share/{package_name}/cmake로 이동해야 합니다. vcpkg-cmake-config 포트에서 `vcpkg_cmake_config_fixup()` 도우미 함수를 사용하세요.`", - "PortBugMismatchedNumberOfBinaries": "디버그와 릴리스 이진 파일 수가 일치하지 않습니다.", - "PortBugMisplacedCMakeFiles": "/share/{spec} 외부에서 다음 cmake 파일을 찾았습니다. cmake 파일을 /share/{spec}에 배치하세요.", - "PortBugMisplacedFiles": "다음 파일을 {path} 배치합니다.", - "PortBugMisplacedFilesCont": "해당 디렉터리에는 파일이 있으면 안 됩니다.", - "PortBugMisplacedPkgConfigFiles": "pkgconfig 디렉터리는 share/pkgconfig(헤더 전용 라이브러리의 경우), lib/pkgconfig 또는 lib/debug/pkgconfig 중 하나여야 합니다. 다음 위치가 잘못된 pkgconfig 파일을 찾았습니다.", + "PortBugFoundDebugBinaries": "다음은 디버그 이진 파일입니다.", + "PortBugFoundDllInStaticBuild": "정적 빌드에는 DLL이 없어야 하는데, 다음 DLL이 발견되었습니다. 이 메시지를 표시하지 않도록 설정하려면 set(VCPKG_POLICY_DLLS_IN_STATIC_LIBRARY enabled)을 추가합니다.", + "PortBugFoundEmptyDirectories": "빈 디렉터리가 설치되어 있지 않아야 합니다. 빈 디렉터리는 여러 바이너리 캐시 공급자, git 리포지토리로 표현할 수 없으며 의미 체계 빌드 출력으로 간주되지 않습니다. 각 빈 디렉토리 안에 일반 파일을 만들거나 다음 CMake를 사용하여 삭제해야합니다. 이 메시지를 표시하지 않도록 설정하려면 set(VCPKG_POLICY_ALLOW_EMPTY_FOLDERS enabled)을 추가합니다.", + "PortBugFoundExeInBinDir": "${{CURRENT_PACKAGES_DIR}}/bin 또는 ${{CURRENT_PACKAGES_DIR}}/debug/bin에서 다음 실행 파일을 찾았습니다. 실행 파일은 유효한 배포 대상이 아닙니다. 이러한 실행 파일이 빌드 도구인 경우 'vcpkg_copy_tools'을 사용하는 것이 좋습니다. 이 메시지를 표시하지 않도록 설정하려면 set(VCPKG_POLICY_ALLOW_EXES_IN_BIN enabled)을 추가합니다.", + "PortBugFoundReleaseBinaries": "릴리스 이진 파일은 다음과 같습니다.", + "PortBugIncludeDirInCMakeHelperPort": "${{CURRENT_PACKAGES_DIR}}/include 폴더가 CMake 도우미 포트에 있습니다. CMake 파일만 설치해야 하므로 잘못되었습니다. 이 메시지를 표시하지 않도록 설정하려면 set(VCPKG_POLICY_CMAKE_HELPER_PORT enabled)을 제거합니다.", + "PortBugInvalidCrtLinkageCrtGroup": "다음 이진 파일은 {expected}에만 연결되어야 합니다.", + "PortBugInvalidCrtLinkageEntry": "{path} 링크: {actual}", + "PortBugInvalidCrtLinkageHeader": "이 포트에 의해 빌드된 바이너리는 C RunTime(\"CRT\")과 연결되며, 트리플렛 및 배포 구조에서 요청한 것과 일치하지 않습니다. 트리플렛이 릴리스 CRT만 사용하려는 경우 set(VCPKG_POLICY_ONLY_RELEASE_CRT enabled)을 삼중 .cmake 파일에 추가해야 합니다. 이 검사를 완전히 억제하려면 set(VCPKG_POLICY_SKIP_CRT_LINKAGE_CHECK enabled)를 트리플렛 너비인 경우 트리플렛 .cmake에 추가하고, 포트와 관련된 경우 portfile.cmake에 추가합니다. 다음을 사용하여 이진 파일을 검사할 수 있습니다. dumpbin.exe /directives mylibfile.lib", + "PortBugKernel32FromXbox": "선택한 트리플렛은 Xbox를 대상으로 하지만 다음 DLL은 kernel32와 연결됩니다. 이러한 DLL은 kernel32가 없는 Xbox에서 로드할 수 없습니다. 이는 일반적으로 onecore_apiset.lib 또는 xgameplatform.lib와 같은 적절한 상위 라이브러리가 아닌 kernel32.lib와 연결하기 때문에 발생합니다. 'dumpbin.exe /dependents mylibfile.dll'을 사용하여 DLL의 종속성을 검사할 수 있습니다. 이 메시지를 표시하지 않도록 설정하려면 set(VCPKG_POLICY_ALLOW_KERNEL32_FROM_XBOX enabled)을 추가합니다.", + "PortBugMergeLibCMakeDir": "이 포트는 ${{CURRENT_PACKAGES_DIR}}/lib/cmake 및/또는 ${{CURRENT_PACKAGES_DIR}}/debug/lib/cmake를 생성하며, 이를 병합하여 ${{CURRENT_PACKAGES_DIR}}/share/${{PORT}}/cmake로 이동해야 합니다. vcpkg-cmake-config 포트에서 도우미 함수 vcpkg_cmake_config_fixup()를 사용하세요. 이 메시지를 표시하지 않도록 설정하려면 set(VCPKG_POLICY_SKIP_LIB_CMAKE_MERGE_CHECK enabled)을 추가합니다.", + "PortBugMismatchingNumberOfBinaries": "디버그와 릴리스 이진 파일 수가 일치하지 않습니다. 이는 종종 portfile.cmake 또는 빌드 시스템에서 디버그 또는 릴리스를 잘못 처리했음을 나타냅니다. 이 트리플렛에 대한 릴리스 구성 요소만 생성하려는 경우 트리플렛은 .cmake 파일에 set(VCPKG_BUILD_TYPE release)를 추가해야 합니다. 이 메시지를 표시하지 않도록 설정하려면 set(VCPKG_POLICY_MISMATCHED_NUMBER_OF_BINARIES enabled)을 추가합니다.", + "PortBugMisplacedCMakeFiles": "이 포트는 CMake 파일이 필요 없는 위치에 다음 CMake 파일을 설치합니다. CMake 파일은 ${{CURRENT_PACKAGES_DIR}}/share/${{PORT}}에 설치해야 합니다. 이 메시지를 표시하지 않도록 설정하려면 set(VCPKG_POLICY_SKIP_MISPLACED_CMAKE_FILES_CHECK enabled)을 추가합니다.", + "PortBugMisplacedFiles": "다음 일반 파일은 일반 파일이 설치되지 않을 수 있는 위치에 설치되었습니다. 하위 디렉터리에 설치해야 합니다. 이 메시지를 표시하지 않도록 설정하려면 set(VCPKG_POLICY_SKIP_MISPLACED_REGULAR_FILES_CHECK enabled)을 추가합니다.", + "PortBugMisplacedPkgConfigFiles": "다음 위치가 잘못된 pkgconfig 디렉터리가 설치되었습니다. 잘못 배치된 pkgconfig 파일은 pkgconf 또는 pkg-config에서 올바르게 찾을 수 없습니다. pkgconfig 디렉토리는 ${{CURRENT_PACKAGES_DIR}}/share/pkgconfig(아키텍처에 구애받지 않는/헤더 전용 라이브러리에만 해당), ${{CURRENT_PACKAGES_DIR}}/lib/pkgconfig(릴리스 종속성의 경우) 또는 ${{CURRENT_PACKAGES_DIR}}/debug/lib/pkgconfig(디버그 종속성의 경우)여야 합니다. 이 메시지를 표시하지 않도록 설정하려면 set(VCPKG_POLICY_SKIP_PKGCONFIG_CHECK enabled)을 추가합니다.", + "PortBugMissingCMakeHelperPortFile": "${{CURRENT_PACKAGES_DIR}}/share/${{PORT}}/vcpkg-port-config.cmake 파일이 없습니다. 이 파일은 CMake 도우미 포트에 대해 존재해야 합니다. 이 메시지를 표시하지 않도록 설정하려면 set(VCPKG_POLICY_CMAKE_HELPER_PORT enabled)을 제거합니다.", "PortBugMissingDebugBinaries": "디버그 이진 파일을 찾을 수 없습니다.", - "PortBugMissingFile": "/{path} 파일이 없습니다. 이 파일은 CMake 도우미 포트에 있어야 합니다.", - "PortBugMissingImportedLibs": "{path}에 가져오기 라이브러리가 없습니다.\n의도한 경우 포트 파일에 다음 줄을 추가하세요.\nset(VCPKG_POLICY_DLLS_WITHOUT_LIBS 사용)", - "PortBugMissingIncludeDir": "/include 폴더가 비어 있거나 없습니다. 라이브러리가 올바르게 설치되지 않았음을 나타냅니다.", - "PortBugMissingLicense": "소프트웨어 라이선스는 ${{CURRENT_PACKAGES_DIR}}/share/{package_name}/copyright에서 제공되어야 합니다.", - "PortBugMissingProvidedUsage": "포트는 \"usage\"를 제공했지만 /share/{package_name}/usage에 설치하는 것을 잊었습니다. portfile에 다음 행을 추가하세요.", + "PortBugMissingImportedLibs": "설치된 DLL에 대한 가져오기 라이브러리가 누락된 것 같습니다. 의도한 경우 set(VCPKG_POLICY_DLLS_WITHOUT_LIBS enabled)을 추가합니다.", + "PortBugMissingIncludeDir": "폴더 ${{CURRENT_PACKAGES_DIR}}/include가 비어 있거나 없습니다. 이는 일반적으로 헤더가 올바르게 설치되지 않음을 의미합니다. CMake 도우미 포트인 경우 set(VCPKG_POLICY_CMAKE_HELPER_PORT enabled)을 추가합니다. CMake 도우미 포트가 아니지만 의도적인 포트인 경우 set(VCPKG_POLICY_EMPTY_INCLUDE_FOLDER enabled)을 추가하여 이 메시지를 표시하지 않습니다.", + "PortBugMissingLicense": "라이선스가 ${{CURRENT_PACKAGES_DIR}}/share/${{PORT}}/copyright에 설치되어 있지 않습니다. 이 문제는 vcpkg_install_copyright 호출을 추가하여 해결할 수 있습니다. 이 메시지를 표시하지 않도록 설정하려면 set(VCPKG_POLICY_SKIP_COPYRIGHT_CHECK enabled)을 추가합니다.", + "PortBugMissingLicenseFixIt": "추가 고려: {value}", + "PortBugMissingProvidedUsage": "이 포트에는 \"usage\"라는 파일이 포함되어 있지만 ${{CURRENT_PACKAGES_DIR}}/share/${{PORT}}/usage에 설치하지 않았습니다. 이 파일이 사용 텍스트가 아닌 경우 다른 이름을 선택하는 것이 좋습니다. 그렇지 않으면 설치하세요. 이 메시지를 표시하지 않도록 설정하려면 set(VCPKG_POLICY_SKIP_USAGE_INSTALL_CHECK enabled)을 추가합니다.", "PortBugMissingReleaseBinaries": "릴리스 이진 파일을 찾을 수 없습니다.", "PortBugMovePkgConfigFiles": "다음과 유사한 명령으로 pkgconfig 파일을 이동할 수 있습니다.", - "PortBugOutdatedCRT": "다음 파일에서 오래된 동적 CRT를 검색했습니다.", - "PortBugRemoveBinDir": "bin\\ 및/또는 debug\\bin\\을 만들 수 없도록 설정할 수 없는 경우 포트 파일에서 이 항목을 사용하여 제거하세요.", - "PortBugRemoveEmptyDirectories": "디렉터리를 채워야 하지만 채워지지 않는 경우 포트 파일에서 오류가 발생할 수 있습니다.\n디렉터리가 필요하지 않고 디렉터리 만들기를 사용하지 않도록 설정할 수 없는 경우 포트 파일에서 다음과 같은 항목을 사용하여 제거하세요.", + "PortBugOutdatedCRT": "사용되지 않는 C 런타임(\"CRT\") DLL과 연결되는 DLL이 설치되었습니다. 설치된 DLL은 지원되는 CRT와 연결되어야 합니다. 'dumpbin.exe /dependents mylibfile.dll'을 사용하여 DLL의 종속성을 검사할 수 있습니다. 이전 CRT를 대상으로 하는 사용자 지정 트리플렛 항목을 사용하는 경우 set(VCPKG_POLICY_ALLOW_OBSOLETE_MSVCRT enabled)을 트리플렛의 .cmake 파일에 추가합니다. 이 포트에 대해 이 메시지를 표시하지 않도록 하려면 set(VCPKG_POLICY_ALLOW_OBSOLETE_MSVCRT enabled)을 추가합니다.", + "PortBugRemoveBinDir": "이러한 디렉터리를 만들 수 없으면 portfile.cmake에 다음을 추가하여 제거할 수 있습니다.", "PortBugRemoveEmptyDirs": "file(REMOVE_RECURSE 위 이름 바꾸기에서 빈 디렉터리를 남김)", - "PortBugRestrictedHeaderPaths": "다음 제한된 헤더로 인해 코어 C++ 런타임 및 기타 패키지가 제대로 컴파일되지 않습니다. 예외적인 상황에서는portfile.cmake에서 CMake 변수 VCPKG_POLICY_ALLOW_RESTRICTED_HEADERS를 설정하여 이 정책을 사용하지 않도록 설정할 수 있습니다.", - "PortBugSetDllsWithoutExports": "내보내기가 없는 DLL은 빌드 스크립트의 버그일 수 있습니다. 의도한 경우 포트 파일에서 다음 줄을 추가하세요.\nset(VCPKG_POLICY_DLLS_WITHOUT_EXPORTS 사용)\n다음 DLL에 내보내기가 없습니다.", + "PortBugRestrictedHeaderPaths": "다음과 같은 제한된 헤더를 사용하면 핵심 C++ 런타임 및 기타 패키지가 올바르게 컴파일되지 않을 수 있습니다. 대신 하위 디렉터리에 이름을 바꾸거나 저장해야 합니다. 예외적인 상황에서는 set(VCPKG_POLICY_ALLOW_RESTRICTED_HEADERS enabled)을 추가하여 이 경고를 표시하지 않을 수 있습니다.", + "PortBugRestrictedHeaderPathsNote": "헤더는 여기서 ${{CURRENT_PACKAGES_DIR}}/include에 상대적입니다.", + "PortBugSetDllsWithoutExports": "다음 DLL은 내보내기 없이 빌드되었습니다. 내보내기가 없는 DLL은 빌드 스크립트의 버그일 수 있습니다. 의도한 경우 set(VCPKG_POLICY_DLLS_WITHOUT_EXPORTS enabled)을 추가합니다.", + "PortDeclaredHere": "{package_name}이(가) 여기에 선언되었습니다.", "PortDependencyConflict": "포트 {package_name}에는 다음과 같은 지원되지 않는 종속성이 있습니다.", "PortDoesNotExist": "{package_name}이(가) 없습니다.", "PortMissingManifest2": "{package_name} 포트 매니페스트가 없습니다(vcpkg.json 또는 CONTROL 파일이 없음).", @@ -932,7 +910,6 @@ "PortVersionControlMustBeANonNegativeInteger": "\"포트 버전\"은 음수가 아닌 정수여야 합니다.", "PortVersionMultipleSpecification": "\"port_version\"은 버전에 포함된 '#'과 함께 사용할 수 없습니다.", "PortsAdded": "다음 {count}개 포트가 추가되었습니다.", - "PortsDiffHelp": "인수는 체크 아웃할 분기/태그/해시여야 합니다.", "PortsNoDiff": "두 커밋 사이의 포트에 변경 내용이 없습니다.", "PortsRemoved": "다음 {count}개 포트가 제거되었습니다.", "PortsUpdated": "다음 {count}개 포트가 업데이트되었습니다.", @@ -957,7 +934,6 @@ "RestoredPackagesFromNuGet": "{elapsed} 후 NuGet의 패키지 {count}개를 복원했습니다. 자세한 내용을 보려면 --debug를 사용하세요.", "ResultsHeader": "결과", "ScriptAssetCacheRequiresScript": "필요한 인수: 자산 구성 'x-script'에는 인수로 정확히 exec 템플릿이 필요", - "SearchHelp": "인수는 검색할 substring이거나 모든 라이브러리를 표시할 인수가 없어야 합니다.", "SecretBanner": "*** 비밀 ***", "SeeURL": "자세한 내용은 {url}을(를) 참조하세요.", "SerializedBinParagraphHeader": "\n직렬화된 이진 단락", @@ -966,6 +942,7 @@ "ShaPassedWithConflict": "SHA512가 전달되었지만 --skip-sha512도 전달되었습니다. 한 가지만 수행하거나 다른 작업을 수행하세요.", "ShallowRepositoryDetected": "vcpkg가 다음 위치에 단순 리포지토리로 복제되었습니다. {path}\n전체 vcpkg 복제로 다시 시도하세요.", "SkipClearingInvalidDir": "디렉터리가 아니므로 {path} 내용 지우기를 건너뜁니다.", + "SkippingPostBuildValidationDueTo": "{cmake_var}(으)로 인해 빌드 후 유효성 검사를 건너뛰는 중", "SourceFieldPortNameMismatch": "CONTROL 파일 내의 'Source' 필드 또는 vcpkg.json 파일 내의 \"name\" 필드는 이름이 {package_name}이고 포트 디렉터리 \"{path}\"과(와) 일치하지 않습니다.", "SpecifiedFeatureTurnedOff": "'{command_name}' 기능이 특별히 꺼져 있지만 --{option}이(가) 지정되었습니다.", "SpecifyHostArch": "호스트 triplet. 'vcpkg help triplet'(기본값: {env_var}) 참조", @@ -973,10 +950,8 @@ "StartCodeUnitInContinue": "계속 위치에서 시작 코드 단위를 찾았습니다.", "StoreOptionMissingSha": "--store 옵션이 sha512 없어 유효하지 않습니다.", "StoredBinariesToDestinations": "{elapsed} 후 대상 {count}개에 이진 파일이 저장됨.", - "StoredBinaryCache": "저장된 이진 파일 캐시: \"{path}\"", "SuccessfulyExported": "{package_name}을(를) {path}(으)로 내보냄", "SuggestGitPull": "결과가 오래되었을 수 있습니다. 'git pull'을 실행하여 최신 결과를 가져옵니다.", - "SuggestResolution": "한 번에 모든 오류를 해결하려면 다음을 실행합니다.\nvcpkg {command_name} --{option}", "SuggestStartingBashShell": "변경 내용을 적용하려면 새 bash 셸을 시작했는지 확인하세요.", "SupportedPort": "{package_name} 포트가 지원됩니다.", "SwitchUsedMultipleTimes": "'{option}' 전환을 여러 번 지정했습니다.", @@ -1004,7 +979,6 @@ "UnexpectedByteSize": "{expected} 바이트가 작성될 것으로 예상했지만 {actual}이(가) 작성되었습니다.", "UnexpectedCharExpectedCloseBrace": "예기치 않은 문자, 속성 또는 닫기 중괄호가 필요합니다.", "UnexpectedCharExpectedColon": "예기치 않은 문자. 콜론이 필요합니다.", - "UnexpectedCharExpectedComma": "예기치 않은 문자. 쉼표 또는 닫는 중괄호가 필요합니다.", "UnexpectedCharExpectedName": "예기치 않은 문자. 속성 이름이 필요합니다.", "UnexpectedCharExpectedValue": "예기치 않은 문자. 값이 필요합니다.", "UnexpectedCharMidArray": "배열 중간에 예기치 않은 문자가 있습니다.", @@ -1023,26 +997,21 @@ "UnexpectedEOFMidKeyword": "키워드 중간에 예기치 않은 EOF가 있습니다.", "UnexpectedEOFMidString": "문자열 중간에 예기치 않은 EOF가 있습니다.", "UnexpectedEOFMidUnicodeEscape": "유니코드 이스케이프 중간의 예기치 않은 파일의 끝", - "UnexpectedErrorDuringBulkDownload": "대량 다운로드 중 예기치 않은 오류가 발생했습니다.", "UnexpectedEscapeSequence": "예기치 않은 이스케이프 시퀀스 연속", - "UnexpectedExtension": "예기치 않은 보관 확장: '{extension}'.", - "UnexpectedFeatureList": "예기치 않은 기능 목록", "UnexpectedField": "예기치 않은 필드 '{json_field}'", "UnexpectedFieldSuggest": "예기치 않은 필드 '{json_field}'이(가) 있습니다. '{value}'을(를) 의미했나요?", "UnexpectedFormat": "필요한 형식은 [{expected}]이지만 [{actual}]였습니다.", "UnexpectedOption": "예기치 못한 옵션: {option}", - "UnexpectedPlatformExpression": "예기치 않은 플랫폼 식", "UnexpectedPortName": "포트 {expected}이(가) {path}에서 {actual}(으)로 선언되었습니다.", "UnexpectedPortversion": "버전 관리 필드가 없는 예기치 않은 \"port-version\"", "UnexpectedSwitch": "예기치 못한 전환: {option}", "UnexpectedToolOutput": "버전 확인을 시도할 때 {tool_name}({path})이(가) 예기치 않은 출력을 생성했습니다.", "UnexpectedWindowsArchitecture": "예기치 않은 Windows 호스트 아키텍처: {actual}", "UnknownBaselineFileContent": "인식할 수 없는 기준 항목입니다; 'port:triplet=(fail|skip|pass)'가 필요합니다.", - "UnknownBinaryProviderType": "알 수 없는 이진 파일 공급자 유형: 유효한 공급자는 'clear', 'default', 'nuget', 'nugetconfig','nugettimeout', 'interactive', 'x-azblob', 'x-gcs', 'x-aws', 'x-aws-config', 'http' 및 '파일'", + "UnknownBinaryProviderType": "알 수 없는 이진 파일 공급자 유형: 유효한 공급자는 'clear', 'default', 'nuget', 'nugetconfig', 'nugettimeout', 'interactive', 'x-azblob', 'x-gcs', 'x-aws', 'x-aws-config', 'http' 및 'files'", "UnknownBooleanSetting": "{option}에 대한 알 수 없는 부울 설정입니다. \"{value}\". 유효한 값은 '', '1', '0', 'ON', 'OFF', 'TRUE' 및 'FALSE'입니다.", - "UnknownOptions": "'{command_name}' 명령에 대한 알 수 없는 옵션:", "UnknownParameterForIntegrate": "통합에 대한 알 수 없는 매개 변수 '{value}'입니다.", - "UnknownPolicySetting": "'{value}' 정책에 대한 알 수 없는 설정: {option}", + "UnknownPolicySetting": "{cmake_var}의 알 수 없는 설정: {value}. 유효한 정책 값은 '', 'disabled' 및 'enabled'입니다.", "UnknownSettingForBuildType": "알 수 없는 VCPKG_BUILD_TYPE {option}의 설정입니다. 올바른 설정은 '', 'debug' 및 'release'입니다.", "UnknownTool": "vcpkg에는 이 플랫폼에 대한 이 도구에 대한 정의가 없습니다.", "UnknownTopic": "알 수 없는 주제 {value}", @@ -1054,7 +1023,6 @@ "UnsupportedFeatureSupportsExpressionWarning": "{feature_spec}은(는) {triplet}과(와) 일치하지 않는 '{supports_expression}'에서만 지원됩니다. 이것은 일반적으로 다른 플랫폼을 빌드할 때 알려진 빌드 실패 또는 런타임 문제가 있음을 의미합니다. `--allow-unsupported`로 인해 어쨌든 진행합니다.", "UnsupportedPort": "포트 {package_name}은(는) 지원되지 않습니다.", "UnsupportedPortDependency": "- 종속성 {value}은(는) 지원되지 않습니다.", - "UnsupportedShortOptions": "짧은 옵션은 지원되지 않습니다: '{value}'", "UnsupportedSyntaxInCDATA": "]]>는 CDATA 블록에서 지원되지 않습니다.", "UnsupportedSystemName": "VCPKG_CMAKE_SYSTEM_NAME '{system_name}'을(를) vcvarsall 플랫폼에 매핑할 수 없습니다. 지원되는 시스템 이름은 '', 'Windows' 및 'WindowsStore'입니다.", "UnsupportedToolchain": "삼중항 {triplet}: 요청된 대상 아키텍처 {arch}에 대해 유효한 도구 모음을 찾을 수 없습니다.\n선택한 Visual Studio 인스턴스는 다음 위치에 있습니다. {path}\n사용 가능한 도구 모음 조합은 {list}입니다.", @@ -1068,21 +1036,18 @@ "UpdateBaselineUpdatedBaseline": "업데이트된 레지스트리 '{url}': 기준 '{old_value}' -> '{new_value}'", "UpgradeInManifest": "업그레이드하면 클래식 모드 설치가 업그레이드되므로 매니페스트 모드를 지원하지 않습니다. vcpkg x-update-baseline을 사용하여 기준을 현재 값으로 업데이트하고 vcpkg 설치를 실행하여 종속성을 업데이트하는 것이 좋습니다.", "UpgradeRunWithNoDryRun": "위의 패키지를 다시 빌드하려는 경우 --no-dry-run 옵션을 사용하여 이 명령을 실행합니다.", - "UploadedBinaries": "이진 파일을 {count} {vendor}에 업로드했습니다.", - "UploadedPackagesToVendor": "{count}개의 패키지를 {elapsed}에서 {vendor}에 업로드함", "UploadingBinariesToVendor": "\"{spec}\"에 대한 이진 파일을 \"{vendor}\" 원본 \"{path}\"에 업로드하는 중입니다.", - "UploadingBinariesUsingVendor": "\"{vendor}\" \"{path}\"을(를) 사용하여 \"{spec}\"에 대한 이진 파일을 업로드하는 중입니다.", + "UsageInstallInstructions": "다음 CMake를 사용하여 사용 현황 파일을 설치할 수 있습니다.", + "UsageTextHere": "사용 현황 파일이 여기에 있습니다.", "UseEnvVar": "-- 환경 변수에서 {env_var} 사용.", "UserWideIntegrationDeleted": "사용자 전체 통합이 설치되어 있지 않습니다.", "UserWideIntegrationRemoved": "사용자 전체 통합이 제거되었습니다.", - "UsingCommunityTriplet": "-- 커뮤니티 삼중항 {triplet} 사용. 이 트리플렛 구성은 성공을 보장하지 않습니다.", "UsingManifestAt": "{path}에서 매니페스트 파일을 사용 중입니다.", "Utf8ConversionFailed": "UTF-8로 변환하지 못함", "VSExaminedInstances": "다음 Visual Studio 인스턴스가 고려되었습니다.", "VSExaminedPaths": "Visual Studio 인스턴스에 대해 다음 경로를 조사했습니다.", "VSNoInstances": "전체 Visual Studio 인스턴스를 찾을 수 없습니다.", "VcpkgCeIsExperimental": "vcpkg-artifacts는 실험적이며 언제든지 변경될 수 있습니다.", - "VcpkgCommitTableHeader": "VCPKG 커밋", "VcpkgCompletion": "vcpkg {value} 완성은 이미 \"{path}\" 파일로 가져왔습니다.\n다음 항목이 발견되었습니다.", "VcpkgDisallowedClassicMode": "현재 작업 디렉토리 위의 매니페스트(vcpkg.json)를 찾을 수 없습니다.\n이 vcpkg 배포에는 클래식 모드 인스턴스가 없습니다.", "VcpkgHasCrashed": "vcpkg가 충돌했습니다. https://github.com/microsoft/vcpkg에서 수행하려는 작업에 대한 간략한 요약과 다음 정보가 포함된 문제를 만드세요.", @@ -1095,17 +1060,22 @@ "VcpkgUsage": "사용법: vcpkg <명령> [--switches] [--options=values] [arguments] @response_file", "VcvarsRunFailed": "Visual Studio 환경을 가져오기 위한 vcvarsall.bat를 실행하지 못함", "VcvarsRunFailedExitCode": "Visual Studio 환경을 가져오려고 하는 동안 vcvarsall.bat이 {exit_code}을(를) 반환함", - "VersionBaselineMismatch": "최신 버전은 {expected}이지만 기본 파일에는 {actual}이(가) 포함되어 있습니다.\n실행:\nvcpkg x-add-version {package_name}\ngit add versions\ngit commit -m \"Update version database\"\n기본 버전을 업데이트합니다.", + "VersionBaselineMatch": "{version_spec}이(가) 현재 기준과 일치합니다.", + "VersionBaselineMismatch": "{package_name}에 {actual}이(가) 할당되었지만 로컬 포트는 {expected}입니다.", "VersionBuiltinPortTreeEntryMissing": "{expected}에서 {package_name}에 대한 버전 데이터베이스 항목이 없습니다. 체크 아웃된 포트 트리 버전({actual})을 사용합니다.", "VersionCommandHeader": "vcpkg 패키지 관리 프로그램 버전 {version}\n\n라이선스 정보는 LICENSE.txt를 참조하세요.", "VersionConflictXML": "{path} 버전이 필요([{expected_version}])하지만 [{actual_version}]입니다. bootstrap-vcpkg를 다시 실행하세요.", + "VersionConstraintNotInDatabase1": "버전 데이터베이스에 없는 {package_name version} 이름 버전 {version}의 \"version>=\" 제약 조건입니다. vcpkg에서 해석하려면 모든 버전이 버전 데이터베이스에 있어야 합니다.", + "VersionConstraintNotInDatabase2": "버전 제약 조건을 제거하거나 여기에 선언된 값을 선택하는 것이 좋습니다.", + "VersionConstraintOk": "모든 버전 제약 조건은 버전 데이터베이스와 일치합니다.", "VersionConstraintPortVersionMustBePositiveInteger": "\"version>=\"의 port-version('#' 이후)은 음수가 아닌 정수여야 함", - "VersionConstraintUnresolvable": "{spec}에서 종속성 {package_name}에 대한 최소 제약 조건을 확인할 수 없습니다.\n기준선에서 종속성을 찾을 수 없었으며 당시 패키지가 없었음을 나타냅니다. 이는 \"재정의\" 필드를 통해 명시적 재정의 버전을 제공하거나 기준을 업데이트하여 해결할 수 있습니다.\n자세한 내용은 'vcpkg 도움말 버전 관리'를 참조하세요.", "VersionConstraintViolated": "{spec} 종속성은 최소 버전 {expected_version}이어야 하지만 현재 {expected_version}입니다.", "VersionDatabaseEntryMissing": "{version}의 {package_name}에 대한 버전 항목이 없습니다.", - "VersionDatabaseFileMissing": "{package_name}은(는) {path}에 버전 데이터베이스 파일이 없습니다.\n실행:\nvcpkg x-add-version {package_name}\n버전 파일을 만듭니다.", + "VersionDatabaseFileMissing": "이 포트는 버전 데이터베이스에 없습니다.", + "VersionDatabaseFileMissing2": "버전 데이터베이스 파일이 여기에 있어야 합니다.", + "VersionDatabaseFileMissing3": "'{command_line}'을(를) 실행하여 버전 데이터베이스 파일을 만듭니다.", "VersionGitEntryMissing": "{version}의 {package_name}에 대한 버전 데이터베이스 항목이 없습니다.\n사용 가능한 버전:", - "VersionInDeclarationDoesNotMatch": "파일에 선언된 버전이 체크 아웃된 버전과 일치하지 않습니다. {version}", + "VersionInDeclarationDoesNotMatch": "{git_tree_sha}이(가) {expected}을(를) 포함하도록 선언되었지만 {actual}을(를) 포함하는 것으로 나타납니다.", "VersionIncomparable1": "{spec}의 버전 충돌: {constraint_origin}에 {expected}이(가) 필요하므로 기준 버전 {actual}과(와) 비교할 수 없습니다.", "VersionIncomparable2": "{version_spec}에 {new_scheme} 체계가 있음", "VersionIncomparable3": "이 문제는 기본 설정 버전에 명시적 재정의를 추가하여 해결할 수 있습니다. 예:", @@ -1117,17 +1087,29 @@ "VersionInvalidSemver": "'{version}'은(는) 올바른 의미 체계 버전이 아닙니다. 를 참조하세요.", "VersionMissing": "버전 관리 필드(버전, 버전 날짜, 버전 셈버 또는 버전 문자열 중 하나)가 필요합니다.", "VersionMissingRequiredFeature": "{version_spec}에 {constraint_origin}에 필요한 기능 {feature}이(가) 없음", - "VersionNotFound": "{expected}을(를) 사용할 수 없습니다. {actual}만 사용할 수 있습니다.", - "VersionNotFoundInVersionsFile": "{package_name}의 버전 파일에서 버전 {version}을(를) 찾을 수 없습니다.\n실행:\nvcpkg x-add-version {package_name}\n새 포트 버전을 추가합니다.", + "VersionNotFoundInVersionsFile2": "버전 데이터베이스에서 {version_spec}을(를) 찾을 수 없습니다.", + "VersionNotFoundInVersionsFile3": "버전이 이 파일에 있어야 합니다.", + "VersionNotFoundInVersionsFile4": "'{command_line}'을(를) 실행하여 새 포트 버전 추가", + "VersionOverrideNotInVersionDatabase": "버전 재정의 {package_name}이(가) 버전 데이터베이스에 없습니다. 해당 포트가 있나요?", + "VersionOverrideVersionNotInVersionDatabase1": "버전 데이터베이스에 없는 {package_name} 이름 버전 {version}의 재정의입니다. 최상위 수준에 이 포트를 설치하면 해당 버전을 확인할 수 없으므로 실패합니다.", + "VersionOverrideVersionNotInVersionDatabase2": "버전 재정의를 제거하거나 여기에 선언된 값을 선택하는 것이 좋습니다.", + "VersionOverwriteVersion": "다음을 실행하여 올바른 로컬 값으로 {version_spec}을(를) 덮어쓸 수 있습니다.", "VersionRejectedDueToBaselineMissing": "{path}에서 \"{json_field}\"를 사용하고 \"builtin-baseline\"이 없으므로 {path}가 거부되었습니다. 이 문제는 \"{json_field}\"의 사용을 제거하거나 \"builtin-baseline\"을 추가하여 해결할 수 있습니다.\n자세한 내용은 `vcpkg help versioning`를 참조하세요.", "VersionRejectedDueToFeatureFlagOff": "{path}에서 \"{json_field}\"를 사용하고 `versions` 기능 플래그가 비활성화되어 있으므로 {path}가 거부되었습니다. 이 문제는 \"{json_field}\"를 제거하거나 `versions` 기능 플래그를 활성화하여 해결할 수 있습니다.\n자세한 내용은 `vcpkg help versioning`를 참조하세요.", - "VersionSchemeMismatch": "버전 데이터베이스는 {version}을(를) {expected}(으)로 선언하지만 {path}은(는) {actual}(으)로 선언합니다. 버전은 서로 다른 체계로 선언된 경우에도 고유해야 합니다.\n실행:\nvcpkg x-add-version {package_name} --overwrite-version\n버전 데이터베이스에 선언된 체계를 포트에 선언된 스키마로 덮어씁니다.", - "VersionShaMismatch": "{version}이(가) {expected}(으)로 선언되었지만, 로컬 포트에 다른 SHA {actual}이(가) 있습니다.\n포트의 버전 필드를 업데이트한 다음 실행:\nvcpkg x-add-version {package_name}\ngit add version\ngit commit -m \"Update version database\"\n새 버전을 추가하세요.", - "VersionShaMissing": "{package_name} 유효성을 검사하는 동안 Git SHA가 누락되었습니다.\n실행:\ngit add \"{path}\"\ngit commit -m \"wip\"\nvcpkg x-add-version {package_name}\ngit add versions\ngit commit --amend -m \"[{package_name}] Add new port\"\n새 포트를 커밋하고 해당 버전 파일을 만듭니다.", + "VersionSchemeMismatch1": "{version}은(는) {expected}(으)로 선언되었지만 {package_name}은(는) {actual}(으)로 선언되었습니다.", + "VersionSchemeMismatch1Old": "{version}은(는) {expected}(으)로 선언되었지만 {package_name}@{git_tree_sha}은(는) {actual}(으)로 선언되었습니다.", + "VersionSchemeMismatch2": "버전은 서로 다른 스키마로 선언된 경우에도 고유해야 합니다.", + "VersionShaMismatch1": "{version_spec} git 트리 {git_tree_sha}이(가) 포트 디렉터리와 일치하지 않습니다.", + "VersionShaMismatch2": "포트 디렉터리에 Git 트리 {git_tree_sha}이(가) 있습니다.", + "VersionShaMismatch3": "{version_spec}이(가) 이미 게시된 경우 이 파일을 새 버전 또는 포트 버전으로 업데이트하고 커밋한 다음 다음을 실행하여 새 버전을 추가합니다.", + "VersionShaMismatch4": "{version_spec}이(가) 아직 게시되지 않은 경우 다음을 실행하여 이전 git 트리를 덮어씁니다.", + "VersionShaMissing1": "포트 디렉터리의 git 트리를 확인할 수 없습니다. 이는 일반적으로 커밋되지 않은 변경으로 인해 발생합니다.", + "VersionShaMissing2": "다음을 실행하여 변경 내용을 커밋하고 버전 데이터베이스에 추가할 수 있습니다.", + "VersionShaMissing3": "wip", + "VersionShaMissing4": "[{package_name}] 새 포트 추가", "VersionSharpMustBeFollowedByPortVersion": "버전 텍스트의 '#' 다음에는 포트 버전이 와야 합니다.", "VersionSharpMustBeFollowedByPortVersionNonNegativeInteger": "버전 텍스트의 '#' 다음에는 포트 버전(음이 아닌 정수)이 와야 합니다.", "VersionSpecMismatch": "버전이 일치하지 않아 포트를 로드하지 못했습니다. 파일 \"{path}\"에 {actual_version} 버전이 포함되어 있지만 버전 데이터베이스는 {expected_version}이어야 한다고 표시합니다.", - "VersionTableHeader": "버전", "VersionVerifiedOK": "{version_spec}이(가) 버전 데이터베이스({git_tree_sha})에 올바르게 있습니다.", "WaitingForChildrenToExit": "자식 프로세스가 종료되기를 기다리는 중...", "WaitingToTakeFilesystemLock": "{path}에 대한 파일 시스템 잠금을 기다리는 중...", @@ -1136,8 +1118,7 @@ "WhileCheckingOutBaseline": "기준 {commit_sha}을(를) 체크 아웃하는 동안", "WhileCheckingOutPortTreeIsh": "git 트리 {git_tree_sha}(으)로 {package_name} 포트를 체크 아웃하는 동안", "WhileGettingLocalTreeIshObjectsForPorts": "포트에 대한 로컬 트리 개체를 가져오는 동안", - "WhileLoadingLocalPort": "로컬 포트 {package_name}을(를) 로드하는 동안", - "WhileLoadingPortFromGitTree": "{commit_sha}에서 포트를 로드하는 동안", + "WhileLoadingBaselineVersionForPort": "{package_name}에 대한 기준 버전을 로드하는 동안", "WhileLoadingPortVersion": "{version_spec}을(를) 로드하는 동안", "WhileLookingForSpec": "{spec}을(를) 찾는 동안:", "WhileParsingVersionsForPort": "{path}에서 {package_name}의 버전을 구문 분석하는 동안", @@ -1165,7 +1146,7 @@ "descriptionShouldBeOfTypestringFound$": "설명은 'string' 형식이어야 하는데 '${p0}'이(가) 있습니다.", "optionsShouldBeASequenceFound$": "옵션은 시퀀스여야 하는데 '${p0}'이(가) 있습니다.", "DuplicateKeysDetectedInManifest$": "매니페스트에서 검색된 중복 키: '${p0}'", - "noPostscriptFileRerunWithTheVcpkgShellFunctionRatherThanExecutable": "포스트스크립트 파일 없음: 실행 파일이 아닌 vcpkg 셸 함수로 다시 실행", + "noPostscriptFileRunVcpkgshellWithTheSameArguments": "포스트스크립트 파일 없음: 동일한 인수를 사용하여 vcpkg-shell 실행", "DuplicateDefine$DuringActivationNewValueWillReplaceOld": "활성화 중에 중복 정의 ${p0}. 새로운 가치는 오래된 것을 대체할 것입니다.", "DuplicateToolDeclared$DuringActivationNewValueWillReplaceOld": "활성화 중에 중복 도구가 ${p0}(으)로 선언되었습니다. 새로운 값은 오래된 값을 대체할 것입니다.", "DuplicateAliasDeclared$DuringActivationNewValueWillReplaceOld": "활성화 중에 중복된 별칭이 ${p0}로 선언되었습니다. 새로운 가치는 오래된 것을 대체할 것입니다.", @@ -1257,7 +1238,7 @@ "MultipleArtifactsSpecifiedButNotAnEqualNumberOf$Switches": "여러 아티팩트가 지정되었지만 동일한 수의 ${p0} 스위치가 아님", "TriedToAddAnArtifact$$ButCouldNotDetermineTheRegistryToUse": "아티팩트 [${p0}]:${p1}을(를) 추가하려고 했지만 사용할 레지스트리를 확인할 수 없습니다.", "TriedToAddRegistry$As$ButItWasAlready$PleaseAdd$ToThisProjectManuallyAndReattempt": "레지스트리 ${p0}을(를) ${p1}(으)로 추가하려고 했지만 이미 ${p2}입니다. ${p3}을(를) 이 프로젝트에 수동으로 추가하고 다시 시도하세요.", - "RunvcpkgActivateToApplyToTheCurrentTerminal": "\\'vcpkg activate\\'를 실행하여 현재 터미널에 적용", + "RunvcpkgshellActivateToApplyToTheCurrentTerminal": "현재 터미널에 적용하려면 \\'vcpkg-shell activate\\'를 실행합니다.", "DownloadsFolderCleared$": "다운로드 폴더 삭제됨(${p0}) ", "InstalledArtifactFolderCleared$": "설치된 Artifact 폴더가 지워짐(${p0}) ", "CacheFolderCleared$": "캐시 폴더 삭제됨(${p0}) ", diff --git a/locales/messages.pl.json b/locales/messages.pl.json index 76764c3c98..38ae88f1df 100644 --- a/locales/messages.pl.json +++ b/locales/messages.pl.json @@ -46,7 +46,6 @@ "AVersionOfAnyType": "wersja dowolnego typu", "AddArtifactOnlyOne": "„{command_line}” może dodać tylko jeden artefakt naraz.", "AddCommandFirstArg": "Pierwszym parametrem do dodania musi być „artefakt” lub „port”.", - "AddFirstArgument": "Pierwszym argumentem polecenia „{command_line}” musi być „artefakt” lub „port”.", "AddPortRequiresManifest": "'{command_line}' wymaga aktywnego pliku manifestu.", "AddPortSucceeded": "Pomyślnie dodano porty do pliku vcpkg.json.", "AddRecurseOption": "Jeśli na pewno chcesz je usunąć, uruchom polecenie z opcją --recurse.", @@ -54,12 +53,11 @@ "AddVersionAddedVersionToFile": "dodano wersję {version} do ścieżki {path}", "AddVersionArtifactsOnly": "Parametr --version jest tylko dla artefaktów i nie można go używać z portem dodawania vcpkg", "AddVersionCommitChangesReminder": "Czy pamiętasz o zatwierdzeniu zmian?", - "AddVersionCommitResultReminder": "Nie zapomnij zatwierdzić wyniku!", "AddVersionDetectLocalChangesError": "pomijanie wykrywania zmian lokalnych z powodu nieoczekiwanego formatu w danych wyjściowych stanu git", "AddVersionFileNotFound": "nie można odnaleźć wymaganej ścieżki pliku {path}", "AddVersionFormatPortSuggestion": "Uruchom polecenie „{command_line}”, aby sformatować plik", "AddVersionIgnoringOptionAll": "ignorowanie parametru --{option}, ponieważ podano argument nazwy portu", - "AddVersionLoadPortFailed": "nie można załadować portu pakietu {package_name}", + "AddVersionInstructions": "możesz uruchomić następujące polecenia, aby automatycznie dodać bieżącą wersję pakietu {package_name}:", "AddVersionNewFile": "(nowy plik)", "AddVersionNewShaIs": "nowy algorytm SHA: {commit_sha}", "AddVersionNoFilesUpdated": "Nie zaktualizowano żadnych plików", @@ -70,8 +68,8 @@ "AddVersionPortFilesShaChanged": "pliki zaewidencjonowane dla pakietu {package_name} zostały zmienione, ale wersja nie została zaktualizowana", "AddVersionPortFilesShaUnchanged": "pliki zaewidencjonowane dla pakietu {package_name} nie uległy zmianie od wersji {version}", "AddVersionPortHasImproperFormat": "Pakiet {package_name} jest niepoprawnie sformatowany", - "AddVersionSuggestNewVersionScheme": "Użycie schematu wersji „{new_scheme}” zamiast „{old_scheme}” w porcie „{nazwa_pakietu}”.\nUżyj --{opcja} aby wyłączyć to sprawdzanie.", - "AddVersionUnableToParseVersionsFile": "nie można przeanalizować ścieżki pliku wersji {path}", + "AddVersionSuggestVersionDate": "Format wersji „{package_name}” używa ciągu „version-string”, ale format jest dopuszczalny jako „version-date”. Jeśli ten format w rzeczywistości ma być datą w formacie ISO 8601, zmień format na „version-date” i uruchom ponownie to polecenie. W przeciwnym razie wyłącz to sprawdzenie, uruchamiając ponownie to polecenie i dodając polecenie --skip-version-format-check.", + "AddVersionSuggestVersionRelaxed": "Format wersji „{package_name}” używa ciągu „version-string”, ale format jest dopuszczalny jako „version”. Jeśli wersje tego portu można uporządkować przy użyciu reguł swobodnej wersji, zmień format na „version” i uruchom ponownie to polecenie. Reguły swobodnej wersji porządkują wersje według każdego składnika liczbowego. Następnie wersje z przyrostkami w postaci myślnika są sortowane leksekograficznie wcześniej. Tagi kompilacji Plus'd są ignorowane. Przykłady:\n1.0 < 1.1-alpha < 1.1-b < 1.1 < 1.1.1 < 1.2+build = 1.2 < 2.0\nZwróć uwagę na to, że przyrostki w postaci myślnika sortuje się *przed*, a nie po. 1.0-anything < 1.0\nNależy pamiętać, że ta kolejność sortowania jest taka sama jak wybrana w semantycznym przechowywaniu wersji (zobacz https://semver.org), mimo że faktycznie części semantyczne nie mają zastosowania.\nJeśli wersje dla tego portu nie są uporządkowane według tych reguł, wyłącz to sprawdzenie, uruchamiając ponownie to polecenie i dodając polecenie --skip-version-format-check.", "AddVersionUncommittedChanges": "istnieją niezatwierdzone zmiany dla pakietu {package_name}", "AddVersionUpdateVersionReminder": "Czy pamiętasz o zaktualizowaniu wersji lub wersji portu?", "AddVersionUseOptionAll": "Polecenie {command_name} bez argumentów wymaga przekazania parametru --{option} w celu jednoczesnego zaktualizowania wszystkich wersji portów", @@ -82,7 +80,7 @@ "AdditionalPackagesToRemove": "Aby ukończyć tę operację, należy usunąć dodatkowe pakiety (*).", "AllFormatArgsRawArgument": "ciąg formatu „{value}” zawiera argument formatu nieprzetworzonego", "AllFormatArgsUnbalancedBraces": "niezrównoważony nawias klamrowy w ciągu formatu „{value}”", - "AllPackagesAreUpdated": "Wszystkie zainstalowane pakiety są aktualne w lokalnym pliku portów.", + "AllPackagesAreUpdated": "Wszystkie zainstalowane pakiety są aktualne.", "AlreadyInstalled": "Już zainstalowano {spec}", "AlreadyInstalledNotHead": "{spec} jest już zainstalowana — nie kompilowanie z nagłówka", "AmbiguousConfigDeleteConfigFile": "Niejednoznaczna konfiguracja vcpkg dostarczona zarówno przez plik manifestu, jak i plik konfiguracji.\n-- Usuń plik konfiguracji {path}", @@ -110,7 +108,6 @@ "ApplocalProcessing": "wdrażanie zależności", "ArtifactsBootstrapFailed": "Element vcpkg-artifacts nie jest zainstalowany i nie można go uruchomić.", "ArtifactsNotInstalledReadonlyRoot": "Element vcpkg-artifacts nie jest zainstalowany i nie można go zainstalować, ponieważ zakłada się, że VCPKG_ROOT jest tylko do odczytu. Ponowne zainstalowanie programu vcpkg przy użyciu polecenia „one liner” może rozwiązać ten problem.", - "ArtifactsNotOfficialWarning": "Korzystanie z artefaktów vcpkg z nieoficjalnym ", "ArtifactsOptionIncompatibility": "Opcja --{option} nie ma wpływu na znajdowanie artefaktu.", "ArtifactsOptionJson": "Pełna ścieżka do pliku JSON, w którym są rejestrowane zmienne środowiskowe i inne właściwości", "ArtifactsOptionMSBuildProps": "Pełna ścieżka do pliku, w którym zostaną zapisane właściwości programu MSBuild", @@ -118,12 +115,10 @@ "ArtifactsOptionVersionMismatch": "Liczba przełączników --version musi być zgodna z liczbą nazwanych artefaktów", "ArtifactsSwitchARM": "Wymusza wykrywanie hosta na usługę ARM podczas uzyskiwania artefaktów", "ArtifactsSwitchARM64": "Wymusza wykrywanie hosta na architekturze arm64 podczas uzyskiwania artefaktów", - "ArtifactsSwitchAll": "Aktualizowanie wszystkich znanych rejestrów artefaktów", "ArtifactsSwitchAllLanguages": "Uzyskuje wszystkie pliki językowe podczas uzyskiwania artefaktów", "ArtifactsSwitchForce": "Wymusza ponowne uzyskanie, jeśli artefakt został już uzyskany", "ArtifactsSwitchFreebsd": "Wymusza wykrywanie hosta na system FreeBSD podczas uzyskiwania artefaktów", "ArtifactsSwitchLinux": "Wymusza wykrywanie hosta w systemie Linux podczas uzyskiwania artefaktów", - "ArtifactsSwitchNormalize": "Stosuje wszelkie poprawki wycofania", "ArtifactsSwitchOnlyOneHostPlatform": "Można ustawić tylko jedną platformę hosta (--x64, --x86, --arm, --arm64).", "ArtifactsSwitchOnlyOneOperatingSystem": "Można ustawić tylko jeden system operacyjny (--windows, --osx, --linux, --freebsd).", "ArtifactsSwitchOnlyOneTargetPlatform": "Można ustawić tylko jedną platformę docelową (--target:x64, --target:x86, --target:arm, --target:arm64).", @@ -135,9 +130,12 @@ "ArtifactsSwitchWindows": "Wymusza wykrywanie hosta na system Windows podczas uzyskiwania artefaktów", "ArtifactsSwitchX64": "Wymusza wykrywanie hosta na architekturę x64 podczas uzyskiwania artefaktów", "ArtifactsSwitchX86": "Wymusza wykrywanie hosta na architekturze x86 podczas uzyskiwania artefaktów", + "AssetCacheHit": "Trafienie pamięci podręcznej zasobów dla {path}; pobrano z: {url}", + "AssetCacheMiss": "Pominięta pamięć podręczna zasobów; pobieranie z adresu {url}", + "AssetCacheMissBlockOrigin": "Pominięcie pamięci podręcznej zasobów dla {path}, a pobieranie jest blokowane przez element x-block-origin.", "AssetCacheProviderAcceptsNoArguments": "nieoczekiwane argumenty: „{value}” nie akceptuje argumentów", + "AssetCacheSuccesfullyStored": "Pomyślnie zapisano {path} na adres {url}.", "AssetSourcesArg": "Źródła buforowania zasobów. Zobacz „vcpkg help assetcaching”", - "AttemptingToFetchPackagesFromVendor": "Próba pobrania następującej liczby pakietów od dostawcy {vendor}: {count}", "AttemptingToSetBuiltInBaseline": "próba ustawienia wbudowanego punktu odniesienia w pliku vcpkg.json podczas zastępowania rejestru domyślnego w pliku vcpkg-configuration.json.\n zostanie użyty rejestr domyślny z pliku vcpkg-configuration.json.", "AuthenticationMayRequireManualAction": "Co najmniej jeden dostawca poświadczeń {vendor} zażądał wykonania akcji ręcznej. Dodaj źródło binarne „interactive”, aby zezwolić na interakcyjność.", "AutoSettingEnvVar": "-- Automatyczne ustawianie zmiennych środowiskowych {env_var} na stronie „{url}”.", @@ -147,12 +145,11 @@ "AzUrlAssetCacheRequiresBaseUrl": "nieoczekiwane argumenty: konfiguracja zasobu „azurl” wymaga podstawowego adresu URL", "AzUrlAssetCacheRequiresLessThanFour": "nieoczekiwane argumenty: konfiguracja zasobu „azurl” wymaga mniej niż 4 argumenty", "BaselineConflict": "Określenie pliku vcpkg-configuration.default-registry w pliku manifestu powoduje konflikt z wbudowanym punkt odniesienia.\nUsuń jedno z tych ustawień powodujących konflikt.", - "BaselineFileNoDefaultField": "Plik punktu odniesienia w zatwierdzeniu {commit_sha} był nieprawidłowy (brak pola „default”).", "BaselineGitShowFailed": "podczas wyewidencjonowywania punktu odniesienia z „{commit_sha}” zatwierdzania nie można wykonać operacji „git show” versions/baseline.json. Ten problem można naprawić, pobierając zatwierdzenia za pomocą polecenia „git fetch”.", - "BaselineMissing": "Nie znaleziono wersji punktu odniesienia. Uruchom:\nvcpkg x-add-version {package_name}\ngit add versions\ngit commit -m \"Update version database\"\nw celu ustawienia wersji {version} jako wersji punktu odniesienia.", - "BinaryCacheVendorHTTP": "Serwery HTTP", + "BaselineMissing": "Pakiet {package_name} nie ma przypisanej wersji", + "BinariesRelativeToThePackageDirectoryHere": "pliki binarne są względne wobec ${{CURRENT_PACKAGES_DIR}} w tym miejscu", "BinarySourcesArg": "Binarne źródła buforowania. Zobacz „vcpkg help binarycaching”", - "BinaryWithInvalidArchitecture": "{path}\nOczekiwano: {expected}, ale było {actual}", + "BinaryWithInvalidArchitecture": "Utworzono ścieżkę {path} dla {arch}", "BuildAlreadyInstalled": "{spec} jest już zainstalowana; usuń {spec} przed podjęciem próby jej skompilowania.", "BuildDependenciesMissing": "Polecenie kompilacji wymaga zainstalowania wszystkich zależności.\nBrak następujących zależności:", "BuildResultBuildFailed": "BUILD_FAILED", @@ -170,22 +167,19 @@ "BuildTroubleshootingMessage1": "Upewnij się, że używasz najnowszych plików portów z elementami „git pull” i „vcpkg update”.\nNastępnie sprawdź, czy występują znane problemy pod adresem:", "BuildTroubleshootingMessage2": "Możesz przesłać nowy problem pod adresem:", "BuildTroubleshootingMessage3": "W tytule raportu o usterce wpisz „[{package_name}] Błąd kompilacji”, w opisie usterki podaj następujące informacje o wersji oraz dołącz wszelkie odpowiednie dzienniki błędów z powyższych.", - "BuildTroubleshootingMessage4": "Podczas zgłaszania problemu użyj wstępnie wypełnionego szablonu ze ścieżki {path}.", "BuildTroubleshootingMessageGH": "Możesz również przesłać problem, uruchamiając (należy zainstalować interfejs wiersza polecenia usługi GitHub):", "BuildingFromHead": "Trwa kompilowanie {spec} z nagłówka...", "BuildingPackage": "Trwa kompilowanie {spec}...", "BuildingPackageFailed": "kompilowanie {spec} nie powiodło się. {build_result}", "BuildingPackageFailedDueToMissingDeps": "z powodu następujących brakujących zależności:", "BuiltInTriplets": "Wbudowane trójki:", - "BuiltWithIncorrectArchitecture": "Następujące pliki zostały skompilowane dla nieprawidłowej architektury:", - "CISettingsExclude": "Rozdzielana przecinkami lista portów do pominięcia", + "BuiltWithIncorrectArchitecture": "Żądania tripletów, że pliki binarne są kompilowane dla elementu {arch}, ale następujące pliki binarne zostały utworzone dla innej architektury. Zwykle oznacza to, że informacje o łańcuchu narzędzi są nieprawidłowo przekazywane do systemu kompilacji plików binarnych. Aby pominąć ten komunikat, dodaj set(VCPKG_POLICY_SKIP_ARCHITECTURE_CHECK enabled)", "CISettingsOptCIBase": "Ścieżka do pliku ci.baseline.txt. Służy do pomijania portów i wykrywania regresji.", "CISettingsOptExclude": "Rozdzielana przecinkami lista portów do pominięcia", "CISettingsOptFailureLogs": "Katalog, do którego zostaną skopiowane dzienniki błędów", "CISettingsOptHostExclude": "Rozdzielana przecinkami lista portów do pominięcia dla trypletu hosta", "CISettingsOptOutputHashes": "Plik wyjściowy wszystkich określonych skrótów pakietów", "CISettingsOptParentHashes": "Plik do odczytu skrótów pakietu dla nadrzędnego stanu ciągłej integracji w celu zmniejszenia zestawu zmienionych pakietów", - "CISettingsOptSkippedCascadeCount": "Potwierdza, że liczba parametrów --exclude i obsługujących pominięcia jest dokładnie równa tej liczbie", "CISettingsOptXUnit": "Plik do wyników wyjściowych w formacie XUnit", "CISettingsVerifyGitTree": "Sprawdza, czy każdy obiekt drzewa git pasuje do zadeklarowanej wersji (jest to bardzo powolne działanie)", "CISettingsVerifyVersion": "Drukuje wynik dla każdego portu, a nie tylko dla błędów", @@ -200,8 +194,6 @@ "CMakeTargetsUsageHeuristicMessage": "# ten element jest generowany heurystycznie i może być niepoprawny", "CMakeToolChainFile": "Projekty w narzędziu CMake powinny używać ścieżki: \"-DCMAKE_TOOLCHAIN_FILE={path}\"", "CMakeUsingExportedLibs": "Aby używać wyeksportowanych bibliotek w projektach narzędzia CMake, dodaj {value} do wiersza polecenia narzędzia CMake.", - "CheckedOutGitSha": "Wyewidencjonowano algorytm Git SHA: {commit_sha}", - "CheckedOutObjectMissingManifest": "Wyewidencjonowany obiekt nie zawiera pliku CONTROL ani pliku vcpkg.json.", "ChecksFailedCheck": "Pakiet vcpkg uległ awarii; nie są dostępne żadne dodatkowe szczegóły", "ChecksUnreachableCode": "osiągnięto nieosiągalny kod", "ChecksUpdateVcpkg": "zaktualizowanie pakietu vcpkg przez ponowne uruchomienie pakietu bootstrap-vcpkg może rozwiązać ten problem.", @@ -235,14 +227,11 @@ "CmdBuildExternalExample2": "vcpkg build-external zlib2 C:\\path\\to\\dir\\with\\vcpkg.json", "CmdBuildExternalSynopsis": "Kompiluje port ze ścieżki", "CmdBuildSynopsis": "Tworzy port", - "CmdCacheExample1": "pamięć podręczna vcpkg ", - "CmdCacheSynopsis": "Wyświetla specyfikację pakietów", "CmdCheckSupportExample1": "pomoc techniczna vcpkg x-check-support ", "CmdCheckSupportSynopsis": "Sprawdza, czy port jest obsługiwany bez kompilowania go", "CmdCiCleanSynopsis": "Czyści wszystkie pliki, aby przygotować się do uruchomienia ciągłej integracji", "CmdCiSynopsis": "Próbuje skompilować wszystkie porty na potrzeby testowania ciągłej integracji", "CmdCiVerifyVersionsSynopsis": "Sprawdza integralność bazy danych wersji", - "CmdContactOptSurvey": "Uruchom domyślną przeglądarkę w bieżącej ankiecie vcpkg", "CmdCreateExample1": "tworzenie vcpkg ", "CmdCreateExample2": "vcpkg utwórz my-fancy-port https://example.com/sources.zip", "CmdCreateExample3": "tworzy vcpkg ", @@ -265,7 +254,7 @@ "CmdEditOptBuildTrees": "Otwiera edytor w podfolderze drzewa kompilacji specyficznym dla portu", "CmdEnvOptions": "Dodaje zainstalowaną ścieżkę {path} do {env_var}", "CmdExportEmptyPlan": "Odmowa utworzenia eksportu pakietów o wartości zero. Zainstaluj pakiety przed wyeksportowaniem.", - "CmdExportExample1": "eksportuje vcpkg [--nuget] [--directory=out_dir]", + "CmdExportExample1": "vcpkg eksportuje [--nuget] [--output-dir=out_dir]", "CmdExportOpt7Zip": "Eksportuj do pliku 7zip (.7z)", "CmdExportOptChocolatey": "Eksportuje pakiet Chocolatey (eksperymentalny)", "CmdExportOptDebug": "Włącza debugowanie prefab", @@ -376,8 +365,10 @@ "CmdZExtractExample2": "vcpkg z-extract source.zip source_dir --strip 2", "CmdZExtractOptStrip": "Liczba wiodących katalogów do usunięcia ze wszystkich ścieżek", "CommandEnvExample2": "vcpkg env „ninja -C ” --triplet x64-windows", - "CommandFailed": "polecenie:\n{command_line}\nnie powiodło się z następującymi wynikami:", + "CommandFailed": "polecenie:\n{command_line}\nniepowodzenie z następującymi danymi wyjściowymi:", + "CommandFailedCode": "polecenie:\n{command_line}\nniepowodzenie z kodem zakończenia {exit_code} i następującymi danymi wyjściowymi:", "CommunityTriplets": "Trójki społeczności:", + "CompilerPath": "Znaleziono kompilator: {path}", "CompressFolderFailed": "Nie można skompresować folderu „{path}”:", "ComputingInstallPlan": "Trwa obliczanie planu instalacji...", "ConfigurationErrorRegistriesWithoutBaseline": "Konfiguracja zdefiniowana w ścieżce {path} jest nieprawidłowa.\n\nKorzystanie z rejestrów wymaga ustawienia punktu odniesienia dla rejestru domyślnego lub domyślnego rejestru o wartości null.\n\nZobacz {url}, aby uzyskać więcej szczegółów.", @@ -386,11 +377,10 @@ "ConsideredVersions": "Następujące pliki wykonywalne zostały uwzględnione, ale odrzucone ze względu na wymaganie wersji {version}:", "ConstraintViolation": "Znaleziono naruszenie ograniczenia:", "ContinueCodeUnitInStart": "znaleziono jednostkę kodu kontynuacji w pozycji początkowej", - "ControlAndManifestFilesPresent": "Plik manifestu i plik CONTROL istnieją w katalogu portów: {path}", "ControlCharacterInString": "Znak kontrolny w ciągu", "ControlSupportsMustBeAPlatformExpression": "Element „Supports” musi być wyrażeniem platformy", - "CopyrightIsDir": "Element `{path}` będący katalogiem jest przestarzały.", - "CorruptedDatabase": "Baza danych jest uszkodzona.", + "CopyrightIsDir": "ten port ustawia prawa autorskie ${{CURRENT_PACKAGES_DIR}}/share/${{PORT}}/ na katalog, ale powinien to być plik. Rozważ połączenie oddzielnych plików praw autorskich w jeden przy użyciu vcpkg_install_copyright. Aby pominąć ten komunikat, dodaj set(VCPKG_POLICY_SKIP_COPYRIGHT_CHECK enabled)", + "CorruptedDatabase": "Baza danych instalacji programu vcpkg jest uszkodzona. Jest to spowodowane usterką w pliku vcpkg lub inny element zmodyfikował zawartość katalogu „installed” w nieoczekiwany sposób. Możesz rozwiązać ten problem, usuwając katalog „installed” i ponownie instalując to, czego chcesz użyć. Jeśli ten problem występuje stale, zgłoś usterkę na https://github.com/microsoft/vcpkg.", "CorruptedInstallTree": "Drzewo „installed” pakietu vcpkg jest uszkodzone.", "CouldNotDeduceNugetIdAndVersion": "Nie można wywnioskować identyfikatora NuGet i wersji z nazwy pliku: {path}", "CouldNotFindBaselineInCommit": "Nie można odnaleźć punktu odniesienia w adresie {url} w lokalizacji {commit_sha} dla elementu {package_name}.", @@ -403,14 +393,12 @@ "CreatingNugetPackage": "Trwa tworzenie pakietu NuGet...", "CreatingZipArchive": "Trwa tworzenie archiwum zip...", "CreationFailed": "Tworzenie ścieżki {path} nie powiodło się.", - "CurlFailedToExecute": "Wykonywanie narzędzia curl nie powiodło się. Kod zakończenia: {exit_code}.", "CurlFailedToPut": "Narzędzie curl nie może umieścić pliku w adresie {url} za pomocą kodu zakończenia {exit_code}.", "CurlFailedToPutHttp": "Narzędzie curl nie może umieścić pliku w adresie {url} za pomocą kodu zakończenia {exit_code} i kodu http {value}.", - "CurlReportedUnexpectedResults": "Program Curl zgłosił nieoczekiwane wyniki dla programu vcpkg i z tego powodu program vcpkg nie może kontynuować działania.\nPrzejrzyj następujący tekst pod kątem informacji poufnych i otwórz zgłoszenie problemu w witrynie GitHub Microsoft/vcpkg, aby pomóc w rozwiązaniu tego problemu!\ncmd: {command_line}\n=== curl output ===\n{actual}\n=== end curl output ===", - "CurlReturnedUnexpectedResponseCodes": "program curl zwrócił inną liczbę kodów odpowiedzi niż oczekiwano dla żądania ({actual} w porównaniu z oczekiwanym {expected}).", + "CurlResponseTruncatedRetrying": "polecenie curl zwróciło częściową odpowiedź; oczekiwanie {value} ms i ponowna próba", + "CurlTimeout": "Polecenie curl nie mogło wykonać wszystkich żądanych operacji HTTP, nawet po przekroczenia limitu czasu i ponownych próbach. Ostatni wiersz polecenia: {command_line}", "CurrentCommitBaseline": "Bieżące zatwierdzenie można używać jako punktu odniesienia, który jest \n\t„wbudowanym punktem odniesienia”: „{commit_sha}”", "CycleDetectedDuring": "cykl wykryty podczas {spec}:", - "DateTableHeader": "Data", "DefaultBinaryCachePlatformCacheRequiresAbsolutePath": "Zmienna środowiskowa VCPKG_DEFAULT_BINARY_CACHE musi być katalogiem (była: {path})", "DefaultBinaryCacheRequiresAbsolutePath": "Zmienna środowiskowa VCPKG_DEFAULT_BINARY_CACHE musi być ścieżką bezwzględną (była: {path})", "DefaultBinaryCacheRequiresDirectory": "Zmienna środowiskowa VCPKG_DEFAULT_BINARY_CACHE musi być katalogiem (była: {path})", @@ -419,15 +407,18 @@ "DefaultFeatureIdentifier": "nazwy funkcji domyślnych muszą być identyfikatorami", "DefaultFlag": "Domyślnie opcja --{option} jest włączona.", "DefaultRegistryIsArtifact": "Rejestr domyślny nie może być rejestrem artefaktów.", - "DefaultTripletChanged": "W wydaniu z września 2023 r. domyślna trójka dla bibliotek vcpkg zmieniła się z x86-windows na wykrytą trójkę hosta ({triplet}). Aby uzyskać stare zachowanie, dodaj --triplet x86-windows . Aby pominąć ten komunikat, należy dodać --triplet {triplet} .", "DeleteVcpkgConfigFromManifest": "-- Lub usuń \"vcpkg-configuration\" z pliku manifestu {path}.", "DependencyFeatureCore": "funkcja „rdzeń” nie może znajdować się na liście funkcji zależności. Aby wyłączyć funkcje domyślne, dodaj zamiast tego wartość „funkcje domyślne”: prawda.", "DependencyFeatureDefault": "funkcja „domyślny” nie może znajdować się na liście funkcji zależności. Aby włączyć funkcje domyślne, dodaj zamiast tego wartość „funkcje domyślne”: prawda.", "DependencyGraphCalculation": "Przesyłanie grafu zależności jest włączone.", "DependencyGraphFailure": "Przesyłanie grafu zależności nie powiodło się.", "DependencyGraphSuccess": "Przesyłanie grafu zależności powiodło się.", + "DependencyInFeature": "zależność znajduje się w funkcji o nazwie {feature}", + "DependencyNotInVersionDatabase": "zależność pakietu {package_name} nie istnieje w bazie danych wersji; czy ten port istnieje?", "DeprecatedPrefabDebugOption": "Opcja --prefab-debug jest teraz przestarzała.", "DetectCompilerHash": "Trwa wykrywanie skrótu kompilatora dla potrójnego elementu {triplet}...", + "DirectoriesRelativeToThePackageDirectoryHere": "katalogi są względne wobec ${{CURRENT_PACKAGES_DIR}} w tym miejscu", + "DllsRelativeToThePackageDirectoryHere": "biblioteki DLL są względne względem wartości ${{CURRENT_PACKAGES_DIR}} w tym miejscu", "DocumentedFieldsSuggestUpdate": "Jeśli są to udokumentowane pola, które powinny zostać rozpoznane, spróbuj zaktualizować narzędzie vcpkg.", "DownloadAvailable": "Dostępna jest kopia tego narzędzia do pobrania, której można użyć przez zresetowanie elementu {env_var}.", "DownloadFailedCurl": "{url}: narzędzie curl nie może pobrać za pomocą kodu zakończenia: {exit_code}", @@ -437,8 +428,7 @@ "DownloadRootsDir": "Katalog pobierania (domyślnie: {env_var})", "DownloadWinHttpError": "{url}: niepowodzenie interfejsu {system_api} za pomocą kodu zakończenia:{exit_code}", "DownloadedSources": "Pobrane źródła dla {spec}", - "DownloadingPortableToolVersionX": "Nie znaleziono odpowiedniej wersji produktu {tool_name} (wymagana wersja v{version}) Trwa pobieranie przenośnej wersji {tool_name} {version}...", - "DownloadingTool": "Trwa pobieranie {tool_name}... \n{url}->{path}", + "DownloadingPortableToolVersionX": "Nie znaleziono odpowiedniej wersji produktu {tool_name} (wymagana wersja: v{version}).", "DownloadingUrl": "Pobieranie adresu {ulr}", "DownloadingVcpkgStandaloneBundle": "Pobieranie pakietu autonomicznego {version}.", "DownloadingVcpkgStandaloneBundleLatest": "Pobieranie najnowszego pakietu autonomicznego.", @@ -449,7 +439,6 @@ "DuplicatePackagePatternRegistry": "rejestr: {url}", "DuplicatedKeyInObj": "Zduplikowany klucz „{value}” w obiekcie", "ElapsedForPackage": "Czas, który upłynął, aby obsłużyć {spec}: {upłynął}", - "ElapsedInstallTime": "Łączny czas, który upłynął: {count}.", "ElapsedTimeForChecks": "Czas na określenie przebiegu/niepowodzenia: {elapsed}", "EmailVcpkgTeam": "Wyślij wiadomość e-mail na adres {url} z dowolną opinią.", "EmbeddingVcpkgConfigInManifest": "Osadzanie elementu „vcpkg-configuration” w pliku manifestu jest funkcją EKSPERYMENTALNĄ.", @@ -479,25 +468,23 @@ "ErrorWhileFetchingBaseline": "podczas pobierania punktu odniesienia `\"{value}\"` z repozytorium {package_name}:", "ErrorWhileParsing": "Wystąpiły błędy podczas analizowania ścieżki {path}.", "ErrorWhileWriting": "Wystąpił błąd podczas zapisywania ścieżki {path}.", - "ErrorsFound": "Znaleziono następujące błędy:", "ExamplesHeader": "Przykłady:", "ExceededRecursionDepth": "Przekroczono głębokość rekursji.", "ExcludedPackage": "Wykluczono {spec}", "ExcludedPackages": "Następujące pakiety są wykluczone:", + "ExecutablesRelativeToThePackageDirectoryHere": "pliki wykonywalne są względne wobec ${{CURRENT_PACKAGES_DIR}} w tym miejscu", "ExpectedAnObject": "oczekiwano obiektu", "ExpectedAtMostOneSetOfTags": "Znaleziono {count} zestawów z {old_value}.*{new_value}, ale oczekiwano co najwyżej 1, w bloku:\n{value}", "ExpectedCharacterHere": "oczekiwano tutaj elementu \"{expected}\"", "ExpectedDefaultFeaturesList": "oczekiwany znak „,” lub koniec tekstu na liście funkcji domyślnych", "ExpectedDependenciesList": "oczekiwany znak „,” lub koniec tekstu na liście zależności", "ExpectedDigitsAfterDecimal": "Oczekiwane cyfry po przecinku dziesiętnych", - "ExpectedEof": "oczekiwany znak eof", "ExpectedExplicitTriplet": "oczekiwany jawny tryplet", "ExpectedFailOrSkip": "oczekiwano tutaj instrukcji „fail”, „skip” lub „pass”", "ExpectedFeatureListTerminal": "oczekiwany znak „,” lub „]” na liście funkcji", "ExpectedFeatureName": "oczekiwana nazwa funkcji (musi być wprowadzona małymi literami, cyframi, ze znakiem „-”)", "ExpectedOneSetOfTags": "Znaleziono {count} zestawów z {old_value}.*{new_value}, ale oczekiwano dokładnie 1, w bloku:\n{value}", "ExpectedOneVersioningField": "oczekiwano tylko jednego pola przechowywania wersji", - "ExpectedPackageSpecifier": "oczekiwany specyfikator pakietu", "ExpectedPathToExist": "Oczekiwano, że ścieżka {path} będzie istnieć po pobraniu", "ExpectedPortName": "oczekiwana tutaj nazwa portu (musi być wprowadzona małymi literami, cyframi, ze znakiem „-”)", "ExpectedReadWriteReadWrite": "nieoczekiwany argument: oczekiwano argumenty „read”,„readwrite” lub „write”", @@ -505,7 +492,6 @@ "ExpectedTripletName": "oczekiwana tutaj nazwa trypletu (musi być wprowadzona małymi literami, cyframi, ze znakiem „-”)", "ExportArchitectureReq": "Opcja export prefab wymaga określenia co najmniej jednej z następujących istniejących architektur arm64-v8a, armeabi-v7a, x86_64 i x86.", "ExportPrefabRequiresAndroidTriplet": "Opcja export prefab wymaga potrójnej wersji systemu Android.", - "ExportUnsupportedInManifest": "Opcja vcpkg export nie obsługuje trybu manifestu, aby umożliwić uwzględnianie przyszłych kwestii związanych z projektem. Możesz użyć eksportu w trybie klasycznym, uruchamiając pakiet vcpkg poza projektem opartym na manifeście.", "Exported7zipArchive": "Archiwum 7zip wyeksportowane do: {path}", "ExportedZipArchive": "Archiwum ZIP wyeksportowano do: {path}", "ExportingAlreadyBuiltPackages": "Następujące pakiety zostały już skompilowane i zostaną wyeksportowane:", @@ -514,14 +500,12 @@ "ExtendedDocumentationAtUrl": "Dokumentacja rozszerzona dostępna w „{url}”.", "ExtractHelp": "Wyodrębnia archiwum.", "ExtractingTool": "Trwa wyodrębnianie {tool_name}...", - "FailedPostBuildChecks": "Znaleziono problemy z sprawdzeniem po kompilacji: {count}. Aby przesłać te porty do wyselekcjonowanych wykazów, najpierw popraw plik portów: {path}", + "FailedPostBuildChecks": "Znaleziono problemy z sprawdzeniem po kompilacji: {count}. Są one zwykle spowodowane przez usterki w pliku portfile.cmake lub nadrzędnym systemie kompilacji. Popraw je przed przesłaniem tego portu do wyselekcjonowanego rejestru.", "FailedToAcquireMutant": "nie można uzyskać zmutowanej ścieżki {path}", "FailedToCheckoutRepo": "Nie można wyewidencjonować elementu `versions` z repozytorium {package_name}", "FailedToDeleteDueToFile": "nie można wykonać polecenia remove_all({value}) z powodu ścieżki {path}: ", "FailedToDeleteInsideDueToFile": "nie można wykonać polecenia remove_inside({value}) z powodu ścieżki {path}: ", - "FailedToDetermineArchitecture": "Nie można określić architektury ścieżki {path}.\n{command_line}", "FailedToDetermineCurrentCommit": "Nie można określić bieżącego zatwierdzenia:", - "FailedToDownloadFromMirrorSet": "Nie można pobrać z zestawu dublowanego", "FailedToExtract": "Nie można wyodrębnić \"{path}\":", "FailedToFetchRepo": "Nie można pobrać adresu {url}.", "FailedToFindPortFeature": "Pakiet {package_name} nie ma funkcji o nazwie {feature}.", @@ -530,27 +514,20 @@ "FailedToLoadManifest": "Nie można załadować manifestu z katalogu {path}", "FailedToLocateSpec": "Nie można zlokalizować specyfikacji na wykresie: {spec}", "FailedToObtainDependencyVersion": "Nie można odnaleźć żądanej wersji zależności.", - "FailedToObtainLocalPortGitSha": "Nie można uzyskać modułów SHA GIT dla portów lokalnych.", "FailedToObtainPackageVersion": "Nie można odnaleźć żądanej wersji pakietu.", "FailedToOpenAlgorithm": "nie można otworzyć {value}", "FailedToParseBaseline": "Nie można przeanalizować punktu odniesienia: {path}", "FailedToParseCMakeConsoleOut": "Nie można przeanalizować danych wyjściowych z konsoli narzędzia CMake w celu zlokalizowania znaczników rozpoczęcia/zakończenia bloku.", "FailedToParseConfig": "Nie można przeanalizować konfiguracji: {path}", - "FailedToParseControl": "Nie można przeanalizować pliku CONTROL: {path}", - "FailedToParseManifest": "Nie można przeanalizować pliku manifestu: {path}", "FailedToParseNoTopLevelObj": "Nie można przeanalizować ścieżki {path}. Oczekiwano obiektu najwyższego poziomu.", "FailedToParseNoVersionsArray": "Nie można przeanalizować ścieżki {path}. Oczekiwano tablicy „versions”.", "FailedToParseSerializedBinParagraph": "[sanity check] Nie można przeanalizować serializowanego akapitu binarnego.\nZgłoś problem na stronie https://github.com/microsoft/vcpkg z następującymi danymi wyjściowymi:\n{error_msg}\nserializowany akapit binarny:", + "FailedToParseVersionFile": "Nie można przeanalizować pliku wersji: {path}", "FailedToParseVersionXML": "Nie można przeanalizować wersji narzędzia {tool_name}. Ciąg wersji: {version}", - "FailedToParseVersionsFile": "nie można przeanalizować ścieżki {path} pliku wersji", - "FailedToProvisionCe": "Nie można aprowizować elementów vcpkg-artifacts.", - "FailedToReadParagraph": "Nie można odczytać akapitów ze ścieżki {path}", - "FailedToRemoveControl": "Nie można usunąć pliku kontrolnego {path}", "FailedToRunToolToDetermineVersion": "Nie można uruchomić \"{path}\" w celu określenia wersji narzędzia {tool_name}.", - "FailedToStoreBackToMirror": "nie można przechować z powrotem do dublowania:", + "FailedToStoreBackToMirror": "Nie można zapisać {path} na adres {url}.", "FailedToStoreBinaryCache": "Nie można zapisać binarnej pamięci podręcznej {path}", "FailedToTakeFileSystemLock": "Nie można zablokować systemu plików", - "FailedToWriteManifest": "Nie można zapisać pliku manifestu {path}", "FailedVendorAuthentication": "Uwierzytelnienie co najmniej jednego dostawcy poświadczeń {vendor} nie powiodło się. Aby uzyskać więcej informacji na temat sposobu dostarczania poświadczeń, zobacz „{url}”.", "FetchingBaselineInfo": "Trwa pobieranie informacji o punkcie odniesienia z {package_name}...", "FetchingRegistryInfo": "Trwa pobieranie informacji rejestru z adresu {url} ({value})...", @@ -559,11 +536,13 @@ "FileNotFound": "{path}: nie znaleziono pliku", "FileReadFailed": "Nie można odczytać {count} bajtów z {path} z przesunięciem {byte_offset}.", "FileSeekFailed": "Nie można poszukać pozycji {byte_offset} w ścieżce {path}.", - "FileSystemOperationFailed": "Operacja systemu plików nie powiodła się:", - "FilesContainAbsolutePath1": "W zainstalowanym pakiecie nie powinny istnieć ścieżki bezwzględne, takie jak następujące:", - "FilesContainAbsolutePath2": "Ścieżki bezwzględne zostały znalezione w następujących plikach:", + "FilesContainAbsolutePath1": "W zainstalowanym pakiecie nie powinny istnieć ścieżki bezwzględne, takie jak następujące. Aby pominąć ten komunikat, dodaj element set(VCPKG_POLICY_SKIP_ABSOLUTE_PATHS_CHECK enabled)", + "FilesContainAbsolutePath2": "w tym miejscu znaleziono ścieżki bezwzględne", + "FilesContainAbsolutePathPkgconfigNote": "Dodanie wywołania funkcji „vcpkg_fixup_pkgconfig()” może naprawić ścieżki bezwzględne w plikach pc", "FilesExported": "Pliki wyeksportowane do: {path}", - "FindHelp": "Wyszukuje wskazany artefakt lub port. Bez parametru po elemencie „artifact” lub „port” wyświetla wszystko.", + "FilesRelativeToTheBuildDirectoryHere": "pliki są względne względem katalogu kompilacji w tym miejscu", + "FilesRelativeToThePackageDirectoryHere": "pliki są względne wobec ${{CURRENT_PACKAGES_DIR}}w tym miejscu", + "FindCommandFirstArg": "Pierwszym argumentem elementu „find” musi być „artifact” lub „port”.", "FindVersionArtifactsOnly": "Nie można użyć parametru --version z wyszukiwaniem vcpkg lub portem odkrywania vcpkg", "FishCompletion": "Uzupełnianie powłoki fish w menedżerze vcpkg zostało już dodane w lokalizacji \"{path}\".", "FloatingPointConstTooBig": "Stała zmiennoprzecinkowa jest za duża: {count}", @@ -581,6 +560,7 @@ "GeneratingRepo": "Trwa generowanie ścieżki {path} repozytorium...", "GetParseFailureInfo": "Użyj polecenia „--debug”, aby uzyskać więcej informacji o błędach analizy.", "GitCommandFailed": "nie można wykonać polecenia: {command_line}", + "GitCommitUpdateVersionDatabase": "git commit -m „Aktualizuj bazę danych wersji”", "GitFailedToFetch": "nie można pobrać wartości {value} odwołania z repozytorium {url}", "GitFailedToInitializeLocalRepository": "nie można zainicjować ścieżki {path} lokalnego repozytorium", "GitRegistryMustHaveBaseline": "Rejestr git „{url}” musi mieć pole „baseline”, które jest prawidłowym algorytmem SHA zatwierdzenia Git (40 znaków szesnastkowych).\nAby korzystać z bieżących najnowszych wersji, ustaw punkt odniesienia na element HEAD tego repozytorium, „{commit_sha}”.", @@ -591,7 +571,7 @@ "GitUnexpectedCommandOutputCmd": "git wygenerował nieoczekiwane dane wyjściowe podczas uruchamiania {command_line}", "GraphCycleDetected": "Wykryto cykl w grafie przy pakiecie {package_name}:", "HashFileFailureToRead": "nie można odczytać pliku \"{path}\" dla haszowania: ", - "HashPortManyFiles": "Pakiet {package_name} zawiera {count} plików. Skracanie tej zawartości może zająć dużo czasu podczas określania skrótu ABI dla buforowania binarnego. Rozważ zmniejszenie liczby plików. Najczęstsze przyczyny to przypadkowe sprawdzenie plików źródłowych lub kompilacji w katalogu portu.", + "HashPortManyFiles": "Pakiet {package_name} zawiera następującą liczbę plików: {count}. Utworzenie skrótu tej zawartości może zająć dużo czasu podczas określania skrótu instrukcji ABI dla buforowania binarnego. Rozważ zmniejszenie liczby plików. Typowe przyczyny tego problemu to przypadkowe wyewidencjonowanie plików źródłowych lub plików kompilacji w katalogu portu.", "HeaderOnlyUsage": "Element {package_name} jest tylko w nagłówku i może być używany z narzędzia CMake za pośrednictwem:", "HelpAssetCaching": "**Funkcja eksperymentalna: ta funkcja może ulec zmianie lub zostać usunięta w dowolnym momencie**\n\nProgram vcpkg może używać duplikatów do buforowania pobranych zasobów, zapewniając kontynuowanie działania, nawet jeśli oryginalne źródło zmieni się lub zniknie.\n\nBuforowanie zasobów można skonfigurować, ustawiając zmienną środowiskową X_VCPKG_ASSET_SOURCES na rozdzielaną średnikami listę źródeł lub przekazując sekwencję opcji wiersza polecenia --x-asset-sources=. Źródła wiersza polecenia są interpretowane po źródłach środowiska. Przecinki, średniki i znaki backtick można oznaczyć znakami ucieczki backtick (`).\n\nOpcjonalny parametr dla niektórych ciągów kontroluje sposób uzyskiwania do nich dostępu. Można go określić jako „read”, „write” lub „readwrite”, a wartość domyślna to „read”.\n\nPrawidłowe źródła:", "HelpAssetCachingAzUrl": "Dodaje źródło usługi Azure Blob Storage, opcjonalnie używając weryfikacji sygnatury dostępu współdzielonego. Adres URL powinien zawierać ścieżkę kontenera i być zakończony znakiem „/”. , jeśli została zdefiniowana, powinna mieć prefiks „?”. Serwery spoza platformy Azure będą również działać, jeśli odpowiedzą na żądania GET i PUT w postaci: „”.", @@ -623,10 +603,7 @@ "HelpEnvCommand": "Tworzy środowisko czystej powłoki na potrzeby programowania lub kompilowania", "HelpExampleCommand": "Aby uzyskać dodatkową pomoc (w tym przykłady), zobacz https://learn.microsoft.com/vcpkg", "HelpExampleManifest": "Przykładowy manifest:", - "HelpExportCommand": "Eksportuje pakiet.", - "HelpHashCommand": "Utwórz skrót pliku według określonego algorytmu, domyślny algorytm SHA512.", "HelpInstallCommand": "Instaluje pakiet", - "HelpListCommand": "Wyświetl listę zainstalowanych pakietów", "HelpManifestConstraints": "Manifesty mogą nakładać trzy rodzaje ograniczeń na używane wersje", "HelpMinVersion": "Program Vcpkg wybierze znalezioną wersję minimalną zgodną ze wszystkimi odpowiednimi ograniczeniami, w tym wersję z punktu odniesienia określoną na najwyższym poziomie, a także dowolne ograniczenie „wersja>=” na wykresie.", "HelpOverrides": "W przypadku używania jako manifestu najwyższego poziomu (na przykład podczas uruchamiania polecenia `vcpkg install` w katalogu) przesłonięcia umożliwiają manifestowi rozpoznawanie zależności krótkiego obwodu i określają dokładnie wersję do użycia. Mogą one służyć do obsługi konfliktów wersji, takich jak zależności `version-string`. Nie będą one brane pod uwagę, gdy zależność na nich jest przechodnia.", @@ -674,7 +651,6 @@ "IllegalPlatformSpec": "Kwalifikator platformy jest niedozwolony w tym kontekście", "ImproperShaLength": "Zestaw SHA512 musi zawierać 128 znaków szesnastkowych: {value}", "IncorrectArchiveFileSignature": "Niepoprawny podpis pliku archiwum", - "IncorrectPESignature": "Niepoprawny podpis PE", "InfoSetEnvVar": "Można również ustawić {env_var} na wybrany edytor.", "InitRegistryFailedNoRepo": "Nie można utworzyć rejestru w lokalizacji {path}, ponieważ nie jest to katalog główny repozytorium GIT.\nUżyj polecenia `git init {command_line}`, aby utworzyć repozytorium GIT w tym folderze.", "InstallCopiedFile": "{path_source} — > wykonano {path_destination}", @@ -688,8 +664,8 @@ "InstalledBy": "Zainstalowane przez {path}", "InstalledPackages": "Następujące pakiety są już zainstalowane:", "InstalledRequestedPackages": "Wszystkie żądane pakiety są obecnie zainstalowane.", - "InstallingFromLocation": "-- Instalowanie portu z lokalizacji: {path}", "InstallingMavenFile": "{path} instaluje plik narzędzia Maven", + "InstallingOverlayPort": "instalowanie portu nakładki z tego miejsca", "InstallingPackage": "Instalowanie {action_index}/{count} {spec}...", "IntegrateBashHelp": "Włącz bash tab-completion. Dotyczy systemu innego niż Windows", "IntegrateFishHelp": "Włącz uzupełnianie karty ryby. Dotyczy systemu innego niż Windows", @@ -725,7 +701,7 @@ "InvalidBundleDefinition": "Nieprawidłowa definicja pakietu.", "InvalidCharacterInFeatureList": "nieprawidłowy znak w nazwie funkcji (musi być wprowadzona małymi literami, cyframi, ze znakiem „-” lub „*”)", "InvalidCharacterInFeatureName": "nieprawidłowy znak w nazwie funkcji (musi być wprowadzona małymi literami, cyframi, ze znakiem „-”)", - "InvalidCharacterInPackageName": "nieprawidłowy znak w nazwie pakietu (musi być wprowadzona małymi literami, cyframi, ze znakiem „-”)", + "InvalidCharacterInPortName": "nieprawidłowy znak w nazwie portu (musi składać się z małych liter, cyfr, „-”)", "InvalidCodePoint": "Do elementu utf8_encoded_code_point_count przekazano nieprawidłowy punkt kodu", "InvalidCodeUnit": "nieprawidłowa jednostka kodu", "InvalidCommandArgSort": "Wartość parametru --sort musi być jedną z wartości „leksykograficznych”, „topologicznych”, „odwrotnych”.", @@ -743,7 +719,6 @@ "InvalidLinkage": "Nieprawidłowy typ powiązania {system_name}: [{value}]", "InvalidLogicExpressionUnexpectedCharacter": "nieprawidłowe wyrażenie logiczne, nieoczekiwany znak", "InvalidLogicExpressionUsePipe": "nieprawidłowe wyrażenie logiki, użyj znaku „|”, a nie znaku „or”", - "InvalidNoVersions": "Plik nie zawiera żadnych wersji.", "InvalidOptionForRemove": "Element „usuń” akceptuje biblioteki lub „--outdated”", "InvalidPortVersonName": "Znaleziono nieprawidłową nazwę pliku wersji portu: `{path}`.", "InvalidSharpInVersion": "nieprawidłowy znak „#” w tekście wersji", @@ -751,6 +726,8 @@ "InvalidString": "Przekazano nieprawidłowy kod utf8 do elementu Value::string(std::string)", "InvalidTriplet": "Nieprawidłowy triplet: {triplet}", "InvalidUri": "nie można przeanalizować identyfikatora uri: {value}", + "InvalidValueHashAdditionalFiles": "Zmienna VCPKG_HASH_ADDITIONAL_FILES zawiera nieprawidłową ścieżkę pliku: „{path}”. Wartość musi być ścieżką bezwzględną do istniejącego pliku.", + "InvalidValuePostPortfileIncludes": "Zmienna VCPKG_POST_PORTFILE_INCLUDES zawiera nieprawidłową ścieżkę pliku: „{path}”. Wartość musi być ścieżką bezwzględną do istniejącego pliku CMake.", "IrregularFile": "ścieżka nie była zwykłym plikiem: {path}", "JsonErrorMustBeAnObject": "Oczekiwano, że element \"{path}\" będzie obiektem.", "JsonFieldNotObject": "wartość [\"{json_field}\"] musi być obiektem", @@ -786,11 +763,11 @@ "LinkageStaticDebug": "Debugowanie statyczne (/MTd)", "LinkageStaticRelease": "Wydanie statyczne (/MT)", "ListHelp": "Wyświetla listę zainstalowanych bibliotek", - "LoadingCommunityTriplet": "-- [COMMUNITY] Ładowanie konfiguracji potrójnej z lokalizacji: {path}", + "LoadedCommunityTriplet": "z tego miejsca załadowano triplet społeczność. Triplety społeczności nie są wbudowane w wyselekcjonowany rejestr i dlatego mają mniejszą szansę powodzenia.", + "LoadedOverlayTriplet": "z tego miejsca załadowano triplet nakładki", "LoadingDependencyInformation": "Trwa ładowanie informacji o zależnościach dla {count} pakietów...", - "LoadingOverlayTriplet": "-- [OVERLAY] Ładowanie konfiguracji potrójnej z lokalizacji: {path}", - "LocalPortfileVersion": "Używanie wersji lokalnego pliku portfile. Aby zaktualizować lokalne pliki portów, użyj polecenia „git pull”.", - "ManifestConflict": "Znaleziono manifest i pliki CONTROL w porcie „{path}”; zmień nazwę jednego lub drugiego elementu", + "LocalPortfileVersion": "Przy użyciu wersji portu lokalnego. Aby zaktualizować lokalne pliki portów, użyj polecenia „git pull”.", + "ManifestConflict2": "Znaleziono plik manifestu i plik CONTROL; zmień nazwę jednego lub drugiego", "ManifestFormatCompleted": "Pomyślnie sformatowano pliki manifestu.", "MismatchedBinParagraphs": "Serializowany akapit binarny różnił się od oryginalnego akapitu binarnego. Zgłoś problem na stronie https://github.com/microsoft/vcpkg z następującymi danymi wyjściowymi:", "MismatchedFiles": "plik do przechowywania jest niezgodny z skrótem", @@ -802,6 +779,7 @@ "MissingAndroidEnv": "Brak zmiennej środowiskowe ANDROID_NDK_HOME", "MissingAndroidHomeDir": "Katalog ANDROID_NDK_HOME nie istnieje: {path}", "MissingArgFormatManifest": "Przekazano polecenie format-manifest --convert-control bez znaku „--all”.\nNie jest to konieczne: przekazywane jawnie pliki sterujące są konwertowane automatycznie.", + "MissingAssetBlockOrigin": "Brak ścieżki {path} i pobieranie jest blokowane przez element x-block-origin.", "MissingClosingParen": "Brakuje zamykającego nawiasu klamrowego )", "MissingDependency": "Pakiet {spec} jest zainstalowany, ale zależność {package_name} nie jest.", "MissingExtension": "Brak rozszerzenia \"{extension}\".", @@ -810,9 +788,9 @@ "MissingPortSuggestPullRequest": "Jeśli Twojego portu nie ma na liście, otwórz problem i/lub rozważ wysłanie żądania ściągnięcia.", "MissingRequiredField": "brak wymaganego pola '{json_field}' ({json_type})", "MissingRequiredField2": "brak wymaganego pola „{json_field}”", + "MissingShaVariable": "Zmienna {{sha}} musi być używana w szablonie, jeśli są używane inne zmienne.", "MixingBooleanOperationsNotAllowed": "mieszanie znaków & i | jest niedozwolone; użyj znaków () w celu określenia kolejności operacji", "MonoInstructions": "Może to być spowodowane niekompletną instalacją mono. Pełna wersja mono jest dostępna w niektórych systemach za pośrednictwem polecenia „sudo apt install mono-complete”. Użytkownicy systemu Ubuntu 18.04 mogą potrzebować nowszej wersji mono, dostępnej pod adresem https://www.mono-project.com/download/stable/", - "MsiexecFailedToExtract": "nie można wykonać procesu msiexec podczas wyodrębniania z lokalizacji \"{path}\" z kodem uruchamiania lub zakończenia {exit_code} i komunikatem:", "MultiArch": "Element Multi-Arch musi mieć wartość „same”, ale miał wartość {option}", "MultipleFeatures": "Pakiet {package_name} deklaruje wielokrotnie funkcję {feature}; upewnij się, że funkcje mają różne nazwy", "MutuallyExclusiveOption": "Wartości --{value} nie można używać z opcją --{option}.", @@ -822,10 +800,8 @@ "NewOnlyOneVersionKind": "Można określić tylko jeden z parametrów: --version-relaxed, --version-date lub --version-string.", "NewSpecifyNameVersionOrApplication": "Określ parametr --name i --version, aby utworzyć manifest przeznaczony dla bibliotek języka C++ lub określ parametr --application, aby wskazać, że manifest nie jest przeznaczony do użycia jako port.", "NewVersionCannotBeEmpty": "parametr --version nie może być pusty.", - "NoArgumentsForOption": "Opcja --{option} nie akceptuje argumentu.", "NoError": "brak błędów", "NoInstalledPackages": "Nie zainstalowano żadnych pakietów. Czy chodziło Ci o `search`?", - "NoLocalizationForMessages": "Brak zlokalizowanych komunikatów dla następujących elementów: ", "NoOutdatedPackages": "Brak nieaktualnych pakietów.", "NoRegistryForPort": "nie skonfigurowano rejestru dla portu {package_name}", "NoUrlsAndHashSpecified": "Nie określono żadnych adresów URL do pobrania SHA: {sha}", @@ -866,7 +842,6 @@ "PackageManipulationHeader": "Manipulowanie pakietami", "PackageRootDir": "Katalog pakietów (eksperymentalny)", "PackagesToInstall": "Następujące pakiety zostaną skompilowane i zainstalowane:", - "PackagesToInstallDirectly": "Następujące pakiety zostaną zainstalowane bezpośrednio:", "PackagesToModify": "Dodatkowe pakiety (*) zostaną zmodyfikowane w celu ukończenia tej operacji.", "PackagesToRebuild": "Następujące pakiety zostaną odbudowane:", "PackagesToRebuildSuggestRecurse": "Jeśli na pewno chcesz odbudować powyższe pakiety, uruchom polecenie z opcją --recurse.", @@ -882,47 +857,50 @@ "ParseFeatureNameError": "„{package_name}” nie jest prawidłową nazwą funkcji. Nazwy funkcji muszą zawierać małe litery alfanumeryczne + myślniki i nie mogą być zastrzeżone (więcej informacji można znaleźć w {url}).", "ParseIdentifierError": "„{value}” nie jest prawidłowym identyfikatorem. Identyfikatory muszą składać się z małych liter alfanumerycznych + myślników i nie mogą być zastrzeżone (więcej informacji można znaleźć w {url}).", "ParsePackageNameError": "„{package_name}” nie jest prawidłową nazwą pakietu. Nazwy pakietów muszą zawierać małe litery alfanumeryczne + myślniki i nie mogą być zastrzeżone (więcej informacji można znaleźć w {url}).", + "ParsePackageNameNotEof": "oczekiwano końca danych wejściowych analizujących nazwę pakietu; zwykle oznacza to, że wskazany znak nie może znajdować się w nazwie portu. Wszystkie nazwy portów mogą składać się z małych znaków alfanumerycznych i myślników oraz nie mogą być zastrzeżone (zobacz {url}, aby uzyskać więcej informacji).", "ParsePackagePatternError": "Pakiet „{package_name}” nie jest prawidłowym wzorcem pakietu. Wzorce pakietów muszą używać tylko jednego znaku wieloznacznego (*) i musi to być ostatni znak we wzorcu (więcej informacji można znaleźć w sekcji {url}).", + "ParseQualifiedSpecifierNotEof": "oczekiwano końca danych wejściowych analizujących specyfikację pakietu; zwykle oznacza to, że wskazany znak nie może znajdować się w specyfikacji pakietu. Nazwy portów, tripletów i funkcji mogą składać się z małych znaków alfanumerycznych i myślników.", + "ParseQualifiedSpecifierNotEofSquareBracket": "oczekiwano końca danych wejściowych analizujących specyfikację pakietu; czy zamiast tego chodziło Ci o {version_spec}?", "PathMustBeAbsolute": "Wartość zmiennej środowiskowej X_VCPKG_REGISTRIES_CACHE nie jest bezwzględna: {path}", "PerformingPostBuildValidation": "-- Przeprowadzanie weryfikacji po kompilacji", - "PortBugAllowRestrictedHeaders": "W wyjątkowych okolicznościach te zasady można wyłączyć za pośrednictwem {env_var}", - "PortBugBinDirExists": "Brak katalogu bin\\ w kompilacji statycznej, ale plik {path} występuje.", - "PortBugDebugBinDirExists": "Brak katalogu debug\\bin\\ w kompilacji statycznej, ale istnieje plik {path}.", - "PortBugDebugShareDir": "Element /debug/share nie powinien istnieć. Zreorganizuj wszystkie ważne pliki, a następnie użyj pliku\n(REMOVE_RECURSE \"${{CURRENT_PACKAGES_DIR}}/debug/share\")", - "PortBugDllAppContainerBitNotSet": "Bit kontenera aplikacji musi być ustawiony dla aplikacji ze sklepu Windows Store. Następujące biblioteki DLL nie mają ustawionego bitu kontenera aplikacji:", - "PortBugDllInLibDir": "W pliku /lib lub /debug/lib znaleziono następujące biblioteki dll. Przenieś je odpowiednio do /bin lub /debug/bin.", - "PortBugDuplicateIncludeFiles": "Pliki dołączane nie powinny być duplikowane w katalogu /debug/include. Jeśli nie można tego wyłączyć w narzędziu cmake projektu, użyj pliku\n(REMOVE_RECURSE \"${{CURRENT_PACKAGES_DIR}}/debug/include\")", + "PortBugBinDirExists": "Ścieżka ${{CURRENT_PACKAGES_DIR}}/{path} istnieje, ale nie powinna znajdować się w kompilacji statycznej. Aby pominąć ten komunikat, dodaj set(VCPKG_POLICY_DLLS_IN_STATIC_LIBRARY enabled)", + "PortBugDebugShareDir": "${{CURRENT_PACKAGES_DIR}}/debug/share nie powinien istnieć. Zreorganizuj wszystkie ważne pliki, a następnie usuń pozostałe pliki, dodając ciąg „file(REMOVE_RECURSE \"${{CURRENT_PACKAGES_DIR}}/debug/share\")”. Aby pominąć ten komunikat, dodaj set(VCPKG_POLICY_ALLOW_DEBUG_SHARE enabled)", + "PortBugDllAppContainerBitNotSet": "Bit kontenera aplikacji musi być ustawiony dla wszystkich bibliotek DLL w aplikacjach ze sklepu Windows Store oraz żądań tripletu przeznaczonych dla sklepu Windows Store, ale następujące biblioteki DLL nie zostały skompilowane przy użyciu zestawu bitów. Zwykle oznacza to, że flagi konsolidatora łańcucha narzędzi nie są poprawnie propagowane lub używany konsolidator nie obsługuje przełącznika /APPCONTAINER. Aby pominąć ten komunikat, dodaj set(VCPKG_POLICY_SKIP_APPCONTAINER_CHECK enabled)", + "PortBugDllInLibDir": "W ${{CURRENT_PACKAGES_DIR}}/lib lub ${{CURRENT_PACKAGES_DIR}}/debug/lib. znaleziono następujące biblioteki dll. Przenieś je odpowiednio do ${{CURRENT_PACKAGES_DIR}}/bin lub ${{CURRENT_PACKAGES_DIR}}/debug/bin.", + "PortBugDuplicateIncludeFiles": "${{CURRENT_PACKAGES_DIR}}/debug/include nie powinien istnieć. Aby pominąć ten komunikat, dodaj set(VCPKG_POLICY_ALLOW_RESTRICTED_HEADERS enabled)", + "PortBugDuplicateIncludeFilesFixIt": "Jeśli ten katalog został utworzony przez system kompilacji, który nie zezwala na wyłączenie instalowania nagłówków w debugowaniu, usuń zduplikowany katalog z plikiem (REMOVE_RECURSE \"${{CURRENT_PACKAGES_DIR}}/debug/include\")", "PortBugFoundCopyrightFiles": "Następujące pliki są potencjalnymi plikami praw autorskich:", - "PortBugFoundDebugBinaries": "Znaleziono pliki binarne debugowania ({count}):", - "PortBugFoundDllInStaticBuild": "Biblioteki DLL nie powinny być obecne w kompilacji statycznej, ale znaleziono następujące biblioteki DLL:", - "PortBugFoundEmptyDirectories": "Brak pustych katalogów w ścieżce {path}. Znaleziono następujące puste katalogi:", - "PortBugFoundExeInBinDir": "Następujące pliki exe zostały znalezione w katalogu /bin lub /debug/bin. Pliki exe nie są prawidłowymi obiektami docelowymi dystrybucji.", - "PortBugFoundReleaseBinaries": "Znaleziono pliki binarne wydania ({count}):", - "PortBugIncludeDirInCMakeHelperPort": "Folder /include istnieje w porcie pomocnika cmake; jest to niepoprawne, ponieważ należy zainstalować tylko pliki cmake", - "PortBugInspectFiles": "Aby sprawdzić pliki {extension}, użyj:", - "PortBugInvalidCrtLinkage": "Następujące pliki binarne powinny używać zestawu CRT {expected}.", - "PortBugInvalidCrtLinkageEntry": "Linki {path} z:", - "PortBugKernel32FromXbox": "Wybrana potrójna wartość jest przeznaczona dla konsoli Xbox, ale poniższe biblioteki DLL łączą się z jądrem kernel32. Tych bibliotek DLL nie można załadować na konsoli Xbox, w której nie ma jądra kernel32. Jest to zwykle spowodowane połączeniem z biblioteką kernel32.lib, a nie odpowiednią biblioteką umbrella, taką jak onecore_apiset.lib lub xgameplatform.lib.", - "PortBugMergeLibCMakeDir": "Folder /lib/cmake powinien zostać scalony z folderem /debug/lib/cmake i przeniesiony do folderu /share/{spec}/cmake. Użyj funkcji pomocnika `vcpkg_cmake_config_fixup()` z portu vcpkg-cmake-config`", - "PortBugMismatchedNumberOfBinaries": "Niezgodność liczby plików binarnych debugowania i wydania.", - "PortBugMisplacedCMakeFiles": "Następujące pliki cmake zostały znalezione poza elementem /share/{spec}. Umieść pliki cmake w folderze /share/{spec}.", - "PortBugMisplacedFiles": "Następujące pliki są umieszczane w ścieżce {path}:", - "PortBugMisplacedFilesCont": "Pliki nie mogą znajdować się w tych katalogach.", - "PortBugMisplacedPkgConfigFiles": "Katalogi pkgconfig powinny być jednym z katalogów share/pkgconfig (tylko dla bibliotek tylko nagłówków), lib/pkgconfig lub lib/debug/pkgconfig. Znaleziono następujące zagubione pliki pkgconfig:", + "PortBugFoundDebugBinaries": "Poniżej przedstawiono pliki binarne debugowania:", + "PortBugFoundDllInStaticBuild": "Biblioteki DLL nie powinny być obecne w kompilacji statycznej, ale znaleziono następujące biblioteki DLL. Aby pominąć ten komunikat, dodaj set(VCPKG_POLICY_DLLS_IN_STATIC_LIBRARY enabled)", + "PortBugFoundEmptyDirectories": "Brak zainstalowanych pustych katalogów. Puste katalogi nie są reprezentowane przez kilku dostawców binarnej pamięci podręcznej, repozytoria Git i nie są traktowane jako semantyczne dane wyjściowe kompilacji. Należy utworzyć zwykły plik wewnątrz każdego pustego katalogu lub usunąć go za pomocą następującego narzędzia CMake. Aby pominąć ten komunikat, dodaj element set(VCPKG_POLICY_ALLOW_EMPTY_FOLDERS enabled)", + "PortBugFoundExeInBinDir": "W folderze ${{CURRENT_PACKAGES_DIR}}/bin lub ${{CURRENT_PACKAGES_DIR}}/debug/bin znaleziono następujące pliki wykonywalne. Pliki wykonywalne nie są prawidłowymi elementami docelowymi dystrybucji. Jeśli te pliki wykonywalne są narzędziami kompilacji, rozważ użycie polecenia „vcpkg_copy_tools”. Aby pominąć ten komunikat, dodaj set(VCPKG_POLICY_ALLOW_EXES_IN_BIN enabled)", + "PortBugFoundReleaseBinaries": "Poniżej przedstawiono pliki binarne wydania:", + "PortBugIncludeDirInCMakeHelperPort": "Folder ${{CURRENT_PACKAGES_DIR}}/include istnieje w porcie pomocnika narzędzia CMake; jest to niepoprawne, ponieważ należy zainstalować tylko pliki narzędzia CMake. Aby pominąć ten komunikat, usuń set(VCPKG_POLICY_CMAKE_HELPER_PORT enabled).", + "PortBugInvalidCrtLinkageCrtGroup": "Następujące pliki binarne powinny łączyć się tylko z: {expected}", + "PortBugInvalidCrtLinkageEntry": "Linki {path} z: {actual}", + "PortBugInvalidCrtLinkageHeader": "Pliki binarne utworzone przez ten link portu ze środowiskami uruchomieniowymi języka C („CRT”) są niespójne z plikami żądanymi przez triplet i strukturę wdrożenia. Jeśli triplet jest przeznaczony tylko do korzystania z CRT wydania, należy dodać set(VCPKG_POLICY_ONLY_RELEASE_CRT enabled) do pliku cmake tripletu. Aby całkowicie pominąć to sprawdzenie, dodaj set(VCPKG_BUILD_TYPE release) do pliku cmake tripletu, jeśli dotyczy tripletu , lub do pliku portfile.cmake, jeśli jest to specyficzne dla portu. Pliki binarne można sprawdzić za pomocą polecenia: dumpbin.exe /directives mylibfile.lib", + "PortBugKernel32FromXbox": "Wybrana wartość tripletu jest przeznaczona dla konsoli Xbox, ale poniższe biblioteki DLL łączą się z jądrem kernel32. Tych bibliotek DLL nie można załadować na konsoli Xbox, w której nie ma jądra kernel32. Jest to zwykle spowodowane połączeniem z biblioteką kernel32.lib, a nie odpowiednią biblioteką umbrella, taką jak onecore_apiset.lib lub xgameplatform.lib. Zależności biblioteki DLL można sprawdzić za pomocą polecenia „dumpbin.exe /dependents mylibfile.dll”. Aby pominąć ten komunikat, dodaj set(VCPKG_POLICY_ALLOW_KERNEL32_FROM_XBOX enabled)", + "PortBugMergeLibCMakeDir": "Ten port tworzy ${{CURRENT_PACKAGES_DIR}}/lib/cmake i/lub ${{CURRENT_PACKAGES_DIR}}/debug/lib/cmake, który powinien zostać scalony i przeniesiony do ${{CURRENT_PACKAGES_DIR}}/share/${{PORT}}/cmake. Użyj funkcji pomocnika vcpkg_cmake_config_fixup() z portu vcpkg-cmake-config. Aby pominąć ten komunikat, dodaj set(VCPKG_POLICY_SKIP_LIB_CMAKE_MERGE_CHECK enabled)", + "PortBugMismatchingNumberOfBinaries": "niezgodność liczby plików binarnych debugowania i wydania. Często oznacza to nieprawidłową obsługę debugowania lub wydania w pliku portfile.cmake lub systemie kompilacji. Jeśli celem jest tylko wygenerowanie kiedykolwiek składników wydania dla tego tripletu, triplet powinien mieć zestaw mieć ustawienie set(VCPKG_BUILD_TYPE release) dodany do pliku cmake. Aby pominąć ten komunikat, dodaj set(VCPKG_POLICY_MISMATCHED_NUMBER_OF_BINARIES enabled)", + "PortBugMisplacedCMakeFiles": "Ten port instaluje następujące pliki narzędzia CMake w miejscach, w których nie są oczekiwane pliki narzędzia CMake. Pliki narzędzia CMake powinny być instalowane w folderze ${{CURRENT_PACKAGES_DIR}}/share/${{PORT}}. Aby pominąć ten komunikat, dodaj set(VCPKG_POLICY_SKIP_MISPLACED_CMAKE_FILES_CHECK enabled)", + "PortBugMisplacedFiles": "Następujące zwykłe pliki są instalowane w lokalizacjach, w których zwykłe pliki mogą nie być instalowane. Należy je zainstalować w podkatalogu. Aby pominąć ten komunikat, dodaj set(VCPKG_POLICY_SKIP_MISPLACED_REGULAR_FILES_CHECK enabled)", + "PortBugMisplacedPkgConfigFiles": "Następujące zagubione katalogi pkgconfig zostały zainstalowane. Zagubione pliki pkgconfig nie zostaną poprawnie odnalezione przez plik pkgconf lub pkg-config. Katalogi pkgconfig powinny mieć wartość ${{CURRENT_PACKAGES_DIR}}/share/pkgconfig (tylko dla bibliotek niezależnych od architektury /tylko nagłówek), ${{CURRENT_PACKAGES_DIR}}/lib/pkgconfig (dla zależności wydania) lub ${{CURRENT_PACKAGES_DIR}}/debug/lib/pkgconfig (dla zależności debugowania). Aby pominąć ten komunikat, dodaj element set(VCPKG_POLICY_SKIP_PKGCONFIG_CHECK enabled)", + "PortBugMissingCMakeHelperPortFile": "Plik ${{CURRENT_PACKAGES_DIR}}/share/${{PORT}}/vcpkg-port-config.cmake nie istnieje. Ten plik musi istnieć dla portów pomocniczych narzędzia CMake. Aby pominąć ten komunikat, usuń set(VCPKG_POLICY_CMAKE_HELPER_PORT enabled)", "PortBugMissingDebugBinaries": "Nie znaleziono plików binarnych debugowania.", - "PortBugMissingFile": "Plik /{path} nie istnieje. Ten plik musi istnieć dla portów pomocniczych narzędzia CMake.", - "PortBugMissingImportedLibs": "Biblioteki importu nie były obecne w ścieżce {path}. Jeśli jest to zamierzone, dodaj następujący wiersz w pliku portfile:\nustaw(VCPKG_POLICY_DLLS_WITHOUT_LIBS włączone)", - "PortBugMissingIncludeDir": "Katalog /include jest pusty lub nie istnieje. Oznacza to, że biblioteka nie została poprawnie zainstalowana.", - "PortBugMissingLicense": "Licencja na oprogramowanie musi być dostępna w katalogu ${{CURRENT_PACKAGES_DIR}}/share/{package_name}/copyright", - "PortBugMissingProvidedUsage": "Port dostarczył „usage”, ale zapomniał o instalacji w pliku folderze /share/{package_name}/usage. Dodaj następujący wiersz w pliku portów:", + "PortBugMissingImportedLibs": "Prawdopodobnie brakuje bibliotek importu zainstalowanych bibliotek DLL. Jeśli jest to zamierzone, dodaj set(VCPKG_POLICY_DLLS_WITHOUT_LIBS enabled)", + "PortBugMissingIncludeDir": "Folder ${{CURRENT_PACKAGES_DIR}}/include jest pusty lub nie istnieje. Zwykle oznacza to, że nagłówki nie są poprawnie zainstalowane. Jeśli jest to port pomocnika narzędzia CMake, dodaj set(VCPKG_POLICY_CMAKE_HELPER_PORT enabled). Jeśli nie jest to port pomocnika narzędzia CMake, ale w przeciwnym razie jest to zamierzone, dodaj set(VCPKG_POLICY_EMPTY_INCLUDE_FOLDER enabled), aby pominąć ten komunikat.", + "PortBugMissingLicense": "licencja nie jest zainstalowana w ${{CURRENT_PACKAGES_DIR}}/share/${{PORT}}/copyright . Można to naprawić, dodając wywołanie do vcpkg_install_copyright. Aby pominąć ten komunikat, dodaj set(VCPKG_POLICY_SKIP_COPYRIGHT_CHECK enabled)", + "PortBugMissingLicenseFixIt": "Rozważ dodanie: {value}", + "PortBugMissingProvidedUsage": "ten port zawiera plik o nazwie „usage”, ale nie został zainstalowany w ${{CURRENT_PACKAGES_DIR}}/share/${{PORT}}/usage. Jeśli ten plik nie ma być tekstem użycia, rozważ wybranie innej nazwy; w przeciwnym razie zainstaluj go. Aby pominąć ten komunikat, dodaj set(VCPKG_POLICY_SKIP_USAGE_INSTALL_CHECK enabled)", "PortBugMissingReleaseBinaries": "Nie znaleziono plików binarnych wydania.", "PortBugMovePkgConfigFiles": "Pliki pkgconfig można przenosić za pomocą poleceń podobnych do następujących:", - "PortBugOutdatedCRT": "Wykryto nieaktualne dynamiczne crt w następujących plikach:", - "PortBugRemoveBinDir": "Jeśli nie można wyłączyć tworzenia pliku bin\\ i/lub debug\\bin\\, użyj go w pliku portów, aby je usunąć", - "PortBugRemoveEmptyDirectories": "Jeśli katalog powinien być wypełniony, ale nie, może to oznaczać błąd w pliku portfile.\nJeśli katalogi nie są potrzebne i nie można wyłączyć ich tworzenia, użyj następującego elementu w pliku portów, aby je usunąć:", + "PortBugOutdatedCRT": "Biblioteki DLL łączące się z przestarzałymi bibliotekami DLL środowiska uruchomieniowego C („CRT”) zostały zainstalowane. Zainstalowane biblioteki DLL powinny łączyć się z obsługiwanym zestawem CRT. Zależności biblioteki DLL można sprawdzić za pomocą polecenia „dumpbin.exe /dependents mylibfile.dll”. Jeśli używasz niestandardowego tripletu obiektu docelowego dla starego zestawu CRT, dodaj set(VCPKG_POLICY_ALLOW_OBSOLETE_MSVCRT enabled) do pliku cmake tripletu. Aby pominąć ten komunikat dla tego portu, dodaj set(VCPKG_POLICY_ALLOW_OBSOLETE_MSVCRT enabled)", + "PortBugRemoveBinDir": "jeśli nie można wyłączyć tworzenia tych katalogów, możesz dodać następujące elementy w pliku portfile.cmake, aby je usunąć", "PortBugRemoveEmptyDirs": "plik(REMOVE_RECURSE usuń katalogi pozostawione przez powyższe zmiany nazw)", - "PortBugRestrictedHeaderPaths": "Następujące ograniczone nagłówki mogą uniemożliwić poprawną kompilację podstawowego środowiska uruchomieniowego C++ i innych pakietów. W wyjątkowych okolicznościach zasady te można wyłączyć, ustawiając zmienną CMake VCPKG_POLICY_ALLOW_RESTRICTED_HEADERS w pliku portfile.cmake.", - "PortBugSetDllsWithoutExports": "Biblioteki DLL bez żadnych eksportów są prawdopodobnie usterką w skrypcie kompilacji. Jeśli jest to zamierzone, dodaj następujący wiersz w pliku portfile:\nustaw(VCPKG_POLICY_DLLS_WITHOUT_EXPORTS włączone)\nNastępujące biblioteki DLL nie mają eksportów:", + "PortBugRestrictedHeaderPaths": "Poniższe nagłówki z ograniczeniami mogą uniemożliwić poprawne skompilowanie rdzennego środowiska uruchamiania języka C++ i innych pakietów. Zamiast tego należy zmienić ich nazwę lub przechowywać je w podkatalogu. W wyjątkowych okolicznościach to ostrzeżenie można pominąć, dodając set(VCPKG_POLICY_ALLOW_RESTRICTED_HEADERS enabled)", + "PortBugRestrictedHeaderPathsNote": "nagłówki są względne wobec ${{CURRENT_PACKAGES_DIR}}/include w tym miejscu", + "PortBugSetDllsWithoutExports": "Następujące biblioteki DLL zostały skompilowane bez żadnych eksportów. Biblioteki DLL bez eksportów są prawdopodobnie usterkami w skrypcie kompilacji. Jeśli jest to zamierzone, dodaj set(VCPKG_POLICY_DLLS_WITHOUT_EXPORTS enabled)", + "PortDeclaredHere": "W tym miejscu zadeklarowano pakiet {package_name}", "PortDependencyConflict": "Port {package_name} ma następujące nieobsługiwane zależności:", "PortDoesNotExist": "Pakiet {package_name} nie istnieje", "PortMissingManifest2": "Brak manifestu portu {package_name} (brak pliku vcpkg.json lub CONTROL)", @@ -932,7 +910,6 @@ "PortVersionControlMustBeANonNegativeInteger": "Wartość „Port-Version” musi być nieujemną liczbą całkowitą.", "PortVersionMultipleSpecification": "Nie można łączyć elementu „port_version” z osadzonym znakiem „#” w wersji", "PortsAdded": "Dodano następujące porty ({count}):", - "PortsDiffHelp": "Argument powinien być gałęzią/tagiem/skrótem do wyewidencjonowania.", "PortsNoDiff": "Między tymi dwoma zatwierdzeniami nie wprowadzono żadnych zmian w portach.", "PortsRemoved": "Następujące porty ({count}) zostały usunięte:", "PortsUpdated": "Aktualizowano następujące porty ({count}):", @@ -957,7 +934,6 @@ "RestoredPackagesFromNuGet": "Przywrócono następującą liczbę pakietów: {count} z menedżera NuGet w ciągu {elapsed}. Użyj opcji --debug, aby wyświetlić więcej szczegółów.", "ResultsHeader": "WYNIKI", "ScriptAssetCacheRequiresScript": "oczekiwane argumenty: konfiguracja zasobu „x-script” wymaga dokładnie szablonu exec jako argumentu", - "SearchHelp": "Argument powinien być podciągiem do wyszukania lub bez argumentu umożliwiającego wyświetlenie wszystkich bibliotek.", "SecretBanner": "*** WPIS TAJNY ***", "SeeURL": "Aby uzyskać więcej informacji, zobacz adres {url}.", "SerializedBinParagraphHeader": "\nSerializowany akapit binarny", @@ -966,6 +942,7 @@ "ShaPassedWithConflict": "Algorytm SHA512 został przekazany, ale przekazano również parametr --skip-sha512; wykonaj tylko jedne lub drugie działanie.", "ShallowRepositoryDetected": "Menedżer vcpkg został sklonowany jako płytkie repozytorium w: {path}\nSpróbuj ponownie za pomocą pełnego klonowania menedżera vcpkg.", "SkipClearingInvalidDir": "Pomijanie czyszczenia zawartości {path}, ponieważ nie był to katalog.", + "SkippingPostBuildValidationDueTo": "Pomijanie weryfikacji po kompilacji z powodu {cmake_var}", "SourceFieldPortNameMismatch": "Pole „Source” wewnątrz pliku CONTROL lub pole „name” wewnątrz pliku vcpkg.json ma nazwę {package_name} i nie jest zgodne z katalogiem portów w lokalizacji \"{path}\".", "SpecifiedFeatureTurnedOff": "Funkcja „{command_name}” została specjalnie wyłączona, ale określono opcję --{option}.", "SpecifyHostArch": "Potrójne hostowanie. Zobacz „vcpkg help triplet” (domyślnie: {env_var})", @@ -973,10 +950,8 @@ "StartCodeUnitInContinue": "znaleziono jednostkę kodu początkowego w pozycji kontynuuj", "StoreOptionMissingSha": "Opcja --store jest nieprawidłowa bez zestawu sha512", "StoredBinariesToDestinations": "Przechowywane dane binarne w {count} lokalizacjach docelowych w ciągu {elapsed}.", - "StoredBinaryCache": "Przechowywana pamięć podręczna danych binarnych: \"{path}\"", "SuccessfulyExported": "Wyeksportowano {package_name} do {path}", "SuggestGitPull": "Wynik może być nieaktualny. Uruchom polecenie `git pull`, aby uzyskać najnowsze wyniki.", - "SuggestResolution": "Aby spróbować rozwiązać wszystkie błędy jednocześnie, uruchom polecenie:\nvcpkg {command_name} --{option}", "SuggestStartingBashShell": "Aby zmiana została wprowadzona, upewnij się, że została uruchomiona nowa powłoka bash.", "SupportedPort": "Port {package_name} jest obsługiwany.", "SwitchUsedMultipleTimes": "przełącznik '{option}' został określony wiele razy", @@ -1004,7 +979,6 @@ "UnexpectedByteSize": "Oczekiwano {expected} bajtów do zapisania, ale zapisano {actual}.", "UnexpectedCharExpectedCloseBrace": "Nieoczekiwany znak; oczekiwano właściwości lub zamykającego nawiasu klamrowego", "UnexpectedCharExpectedColon": "Nieoczekiwany znak; oczekiwano dwukropka", - "UnexpectedCharExpectedComma": "Nieoczekiwany znak; oczekiwano przecinka lub zamykającego nawiasu klamrowego", "UnexpectedCharExpectedName": "Nieoczekiwany znak; oczekiwano nazwy właściwości", "UnexpectedCharExpectedValue": "Nieoczekiwany znak; oczekiwano wartości", "UnexpectedCharMidArray": "Nieoczekiwany znak w środku tablicy", @@ -1023,15 +997,11 @@ "UnexpectedEOFMidKeyword": "Nieoczekiwany znak EOF w środku słowa kluczowego", "UnexpectedEOFMidString": "Nieoczekiwany znak EOF w środku ciągu", "UnexpectedEOFMidUnicodeEscape": "Nieoczekiwany koniec pliku w środku sekwencji ucieczki Unicode", - "UnexpectedErrorDuringBulkDownload": "wystąpił nieoczekiwany błąd podczas pobierania zbiorczego.", "UnexpectedEscapeSequence": "Nieoczekiwana kontynuacja sekwencji ucieczki", - "UnexpectedExtension": "Nieoczekiwane rozszerzenie archiwum: \"{extension}\".", - "UnexpectedFeatureList": "nieoczekiwana lista funkcji", "UnexpectedField": "nieoczekiwane pole '{json_field}'", "UnexpectedFieldSuggest": "nieoczekiwane pole '{json_field}'. Czy chodziło Ci o '{value}'?", "UnexpectedFormat": "Oczekiwany format to [{expected}], rzeczywisty — [{actual}].", "UnexpectedOption": "nieoczekiwana opcja: {option}", - "UnexpectedPlatformExpression": "nieoczekiwane wyrażenie platformy", "UnexpectedPortName": "port {expected} jest zadeklarowany jako {actual} w ścieżce {path}", "UnexpectedPortversion": "nieoczekiwany element „port-version” bez pola przechowywania wersji", "UnexpectedSwitch": "nieoczekiwany przełącznik: {option}", @@ -1040,9 +1010,8 @@ "UnknownBaselineFileContent": "nierozpoznawalny wpis punktu odniesienia; oczekiwano elementu „port:triplet=(fail|skip|pass)”", "UnknownBinaryProviderType": "nieznany typ dostawcy binarnego: prawidłowi dostawcy to „clear”, „default”, „nuget”, „nugetconfig”, „nugettimeout”, „interactive”, „x-azblob”, „x-gcs”, „x-aws”, „x-aws-config”, „http” i „files”", "UnknownBooleanSetting": "nieznane ustawienie wartości logicznej dla opcji {option}: „{value}”. Prawidłowe wartości to '', „1”, „0”, „ON”, „OFF”, „TRUE” i „FALSE”.", - "UnknownOptions": "Nieznane opcje dla polecenia „{command_name}”:", "UnknownParameterForIntegrate": "Nieznany parametr \"{value}\" do integracji.", - "UnknownPolicySetting": "Nieznane ustawienie zasad „{value}”: {option}", + "UnknownPolicySetting": "Nieznane ustawienie {cmake_var}: {value}. Prawidłowe wartości zasad to „”, „wyłączone” i „włączone”.", "UnknownSettingForBuildType": "Nieznane ustawienie dla VCPKG_BUILD_TYPE {option}. Prawidłowe ustawienia to „debuguj” i „zwolnij”.", "UnknownTool": "Program vcpkg nie ma definicji tego narzędzia dla tej platformy.", "UnknownTopic": "nieznany temat {value}", @@ -1054,7 +1023,6 @@ "UnsupportedFeatureSupportsExpressionWarning": "Element {feature_spec} jest obsługiwany tylko na „{supports_expression}”, który nie jest zgodny z {triplet}. Zwykle oznacza to, że podczas tworzenia innych platform występują znane błędy kompilacji lub problemy ze środowiskami uruchomieniowymi. Kontynuowanie mimo to z powodu `--allow-unsupported`.", "UnsupportedPort": "Port {package_name} nie jest obsługiwany.", "UnsupportedPortDependency": "- zależność {value} nie jest obsługiwana.", - "UnsupportedShortOptions": "opcje krótkie nie są obsługiwane: „{value}”", "UnsupportedSyntaxInCDATA": "]]> nie jest obsługiwane w bloku CDATA", "UnsupportedSystemName": "Nie można zmapować VCPKG_CMAKE_SYSTEM_NAME „{system_name}” na platformę vcvarsall. Obsługiwane nazwy systemów to „Windows” i „WindowsStore”.", "UnsupportedToolchain": "W potrójnym {triplet}: nie można odnaleźć prawidłowego łańcucha narzędzi dla żądanej architektury docelowej {arch}.\nWybrane wystąpienie programu Visual Studio znajduje się w lokalizacji: {path}\nDostępne kombinacje łańcucha narzędzi to: {list}", @@ -1068,21 +1036,18 @@ "UpdateBaselineUpdatedBaseline": "zaktualizowany rejestr „{url}”: punkt odniesienia „{old_value}” -> „{new_value}”", "UpgradeInManifest": "Uaktualnienie uaktualnia instalację w trybie klasycznym i w związku z tym nie obsługuje trybu manifestu. Rozważ zaktualizowanie zależności, aktualizując punkt odniesienia do bieżącej wartości za pomocą polecenia vcpkg x-update-baseline i uruchamiając instalację programu vcpkg.", "UpgradeRunWithNoDryRun": "Jeśli chcesz ponownie skompilować powyższe pakiety, uruchom polecenie z opcją --no-dry-run.", - "UploadedBinaries": "Przekazano dane binarne do {count} {vendor}.", - "UploadedPackagesToVendor": "Przekazano następującą liczbę pakietów do dostawcy {vendor} w {elapsed}: {count}", "UploadingBinariesToVendor": "Przekazywanie danych binarnych dla \"{spec}” do ścieżki źródłowej dostawcy \"{vendor}\": \"{path}\".", - "UploadingBinariesUsingVendor": "Przekazywanie danych binarnych dla \"{spec}\" przy użyciu ścieżki dostawcy \"{vendor}\": \"{path}\".", + "UsageInstallInstructions": "możesz zainstalować plik użycia za pomocą następującego narzędzia CMake", + "UsageTextHere": "plik użycia jest tutaj", "UseEnvVar": "-- Używanie elementu {env_var} w zmiennych środowiskowych.", "UserWideIntegrationDeleted": "Integracja na poziomie użytkownika nie jest zainstalowana.", "UserWideIntegrationRemoved": "Integracja na poziomie użytkownika została usunięta.", - "UsingCommunityTriplet": "-- Używanie {triplet} triplet społeczności. Ta konfiguracja potrójnej konfiguracji nie gwarantuje powodzenia.", "UsingManifestAt": "Używanie pliku manifestu w ścieżce {path}.", "Utf8ConversionFailed": "Nie można przekonwertować na UTF-8", "VSExaminedInstances": "Brano pod uwagę następujące wystąpienia programu Visual Studio:", "VSExaminedPaths": "Następujące ścieżki zostały sprawdzone pod kątem wystąpień programu Visual Studio:", "VSNoInstances": "Nie można zlokalizować pełnego wystąpienia programu Visual Studio", "VcpkgCeIsExperimental": "vcpkg-artifacts jest eksperymentalny i może się zmienić w każdej chwili.", - "VcpkgCommitTableHeader": "Zatwierdzenie VCPKG", "VcpkgCompletion": "ukończenie operacji menedżera vcpkg {value} zostało już zaimportowane do pliku \"{path}\".\nZnaleziono następujące wpisy:", "VcpkgDisallowedClassicMode": "Nie można zlokalizować manifestu (vcpkg.json) powyżej bieżącego katalogu roboczego.\nTa dystrybucja vcpkg nie ma wystąpienia trybu klasycznego.", "VcpkgHasCrashed": "Wystąpiła awaria programu vcpkg. Utwórz zgłoszenie problemu na https://github.com/microsoft/vcpkg zawierające krótkie podsumowanie czynności, które próbujesz wykonać oraz następujące informacje.", @@ -1095,17 +1060,22 @@ "VcpkgUsage": "użycie: vcpkg [--switches] [--options=values] [arguments] @response_file", "VcvarsRunFailed": "nie można uruchomić pliku vcvarsall.bat w celu uzyskania środowiska Visual Studio", "VcvarsRunFailedExitCode": "podczas próby uzyskania środowiska programu Visual Studio plik vcvarsall.bat zwrócił kod {exit_code}", - "VersionBaselineMismatch": "Najnowsza wersja jest {expected}, ale plik punktu odniesienia zawiera {actual}.\nUruchom:\nvcpkg x-add-version {package_name}\ngit add versions\ngit commit -m \"Update version database\"\nw celu zaktualizowania wersji punktu odniesienia.", + "VersionBaselineMatch": "Wersja {version_spec} jest zgodna z bieżącym punktem odniesienia", + "VersionBaselineMismatch": "Pakiet {package_name} ma przypisany {actual}, ale port lokalny to {expected}", "VersionBuiltinPortTreeEntryMissing": "brak wpisu bazy danych wersji dla pakietu {package_name} w {expected}; używanie wersji wyewidencjonowanego drzewa portów ({actual}).", "VersionCommandHeader": "wersja programu do zarządzania pakietami vcpkg {version}\n\nZobacz plik LICENSE.txt, aby uzyskać informacje o licencji.", "VersionConflictXML": "Oczekiwano wersji {path}: [{expected_version}], ale była [{actual_version}]. Uruchom ponownie polecenie bootstrap-vcpkg.", + "VersionConstraintNotInDatabase1": "ograniczenie „version>=” do wersji {version} nazw pakietu {package_name}, która nie istnieje w bazie danych wersji. Wszystkie wersje muszą istnieć w bazie danych wersji, aby mogły być interpretowane przez program vcpkg.", + "VersionConstraintNotInDatabase2": "rozważ usunięcie ograniczenia wersji lub wybranie wartości zadeklarowanej w tym miejscu", + "VersionConstraintOk": "wszystkie ograniczenia wersji są spójne z bazą danych wersji", "VersionConstraintPortVersionMustBePositiveInteger": "port-version (po znaku „#”) w ścieżce „version>=” musi być nieujemną liczbą całkowitą", - "VersionConstraintUnresolvable": "Nie można rozpoznać minimalnego ograniczenia dla pakietu {package_name} zależności z {spec}.\nNie znaleziono zależności w punkcie odniesienia, co wskazuje, że pakiet nie istniał w tym momencie. Ten problem można naprawić, podając jawną wersję zastąpienia za pomocą pola „overrides” lub aktualizując punkt odniesienia.\nAby uzyskać więcej informacji, zobacz sekcję „vcpkg help versioning”.", "VersionConstraintViolated": "zależność {spec} powinna być co najmniej wersją {expected_version}, ale obecnie jest w wersji {actual_version}.", "VersionDatabaseEntryMissing": "brak wpisu wersji dla pakietu {package_name} w wersji {version}.", - "VersionDatabaseFileMissing": "W ścieżce {path} pakietu {package_name} brakuje pliku bazy danych wersji\nUruchom:\nvcpkg x-add-version {package_name}\nw celu utworzenia pliku wersji.", + "VersionDatabaseFileMissing": "ten port nie znajduje się w bazie danych wersji", + "VersionDatabaseFileMissing2": "plik bazy danych wersji powinien być tutaj", + "VersionDatabaseFileMissing3": "uruchom polecenie „{command_line}”, aby utworzyć plik bazy danych wersji", "VersionGitEntryMissing": "brak wpisu bazy danych wersji dla pakietu {package_name} w wersji {version}.\nDostępne wersje:", - "VersionInDeclarationDoesNotMatch": "Wersja zadeklarowana w pliku jest niezgodna z wyewidencjonowaną wersją: {version}", + "VersionInDeclarationDoesNotMatch": "Element {git_tree_sha} jest zadeklarowany jako zawierający element {expected}, ale prawdopodobnie zawiera element {actual}", "VersionIncomparable1": "konflikt wersji w elemencie {spec}: {constraint_origin} wymaga {expected}, którego nie można porównać z wersją bazową {actual}.", "VersionIncomparable2": "{version_spec} ma schemat {new_scheme}", "VersionIncomparable3": "Można to rozwiązać, dodając jawne zastąpienie do preferowanej wersji. Na przykład:", @@ -1117,17 +1087,29 @@ "VersionInvalidSemver": "„{version}“ nie jest prawidłową wersją semantyczną. Zapoznaj się z .", "VersionMissing": "oczekiwano pola przechowywania wersji (jednej z wersji, version-date, version-semver lub version_string)", "VersionMissingRequiredFeature": "{version_spec} nie ma wymaganej funkcji {feature} wymaganej przez użytkownika {constraint_origin}", - "VersionNotFound": "{expected} niedostępne, dostępna jest tylko {actual}", - "VersionNotFoundInVersionsFile": "Wersja {version} nie została znaleziona w pliku wersji dla {package_name}.\nUruchom:\nvcpkg x-add-version {package_name}\nw celu dodania nowej wersji portu.", + "VersionNotFoundInVersionsFile2": "Nie znaleziono wersji {version_spec} w bazie danych wersji", + "VersionNotFoundInVersionsFile3": "wersja powinna znajdować się w tym pliku", + "VersionNotFoundInVersionsFile4": "uruchom polecenie „{command_line}”, aby dodać nową wersję portu", + "VersionOverrideNotInVersionDatabase": "zastąpienie wersji pakietu {package_name} nie istnieje w bazie danych wersji; czy ten port istnieje?", + "VersionOverrideVersionNotInVersionDatabase1": "zastąpienie wersji {version} nazw pakietu {package_name}, która nie istnieje w bazie danych wersji. Instalowanie tego portu na najwyższym poziomie zakończy się niepowodzeniem, ponieważ ta wersja będzie nierozpoznawalna.", + "VersionOverrideVersionNotInVersionDatabase2": "rozważ usunięcie zastąpienia wersji lub wybranie wartości zadeklarowanej w tym miejscu", + "VersionOverwriteVersion": "możesz zastąpić wersję {version_spec} poprawnymi wartościami lokalnymi, uruchamiając polecenie:", "VersionRejectedDueToBaselineMissing": "Ścieżka {path} została odrzucona, ponieważ używa elementu „{json_field}” i nie ma „wbudowanego punktu odniesienia”. Można to naprawić, usuwając zastosowania elementu „{json_field}” lub dodając „wbudowany punkt odniesienia”.\nAby uzyskać więcej informacji, zobacz sekcję `vcpkg help versioning`.", "VersionRejectedDueToFeatureFlagOff": "Ścieżka {path} została odrzucona, ponieważ używa elementu „{json_field}”, a flaga funkcji `versions` jest wyłączona. Można to naprawić, usuwając element „{json_field}” lub włączając flagę funkcji `versions`.\nAby uzyskać więcej informacji, zobacz sekcję `vcpkg help versioning`.", - "VersionSchemeMismatch": "Baza danych wersji deklaruje wersję {version} jako {expected}, ale ścieżka {path} deklaruje ją jako {actual}. Wersje muszą być unikatowe, nawet jeśli są zadeklarowane przy użyciu różnych schematów.\nUruchom:\nvcpkg x-add-version {package_name} --overwrite-version\nw celu zastąpienia schematu zadeklarowanego w bazie danych wersji schematem zadeklarowanym w porcie.", - "VersionShaMismatch": "Wersja {version} jest zadeklarowana z {expected}, ale port lokalny ma inny algorytm SHA {actual}.\nZaktualizuj pola wersji portu, a następnie uruchom:\nvcpkg x-add-version {package_name}\ngit add versions\ngit commit -m \"Update version database\"\nw celu dodania nowej wersji.", - "VersionShaMissing": "podczas walidacji pakietu {package_name} brakuje algorytmu Git SHA.\nUruchom:\ngit add \"{path}\"\ngit commit -m \"wip\"\nvcpkg x-add-version {package_name}\ngit add versions\ngit commit --amend -m \"[{package_name}] Add new port\"\nw celu zatwierdzenia nowego portu i utworzenia jego pliku wersji.", + "VersionSchemeMismatch1": "Wersja {version} jest zadeklarowana jako {expected}, ale pakiet {package_name} jest zadeklarowany z {actual}", + "VersionSchemeMismatch1Old": "Wersja {version} jest zadeklarowana jako {expected}, ale pakiet {package_name}@{git_tree_sha} jest zadeklarowany z {actual}", + "VersionSchemeMismatch2": "wersje muszą być unikatowe, nawet jeśli są zadeklarowane przy użyciu różnych schematów", + "VersionShaMismatch1": "Drzewo Git {git_tree_sha} w wersji {version_spec} nie pasuje do katalogu portów", + "VersionShaMismatch2": "katalog portów ma drzewo Git {git_tree_sha}", + "VersionShaMismatch3": "jeśli wersja {version_spec} jest już opublikowana, zaktualizuj ten plik przy użyciu nowej wersji lub wersji portu, zatwierdź go, a następnie dodaj nową wersję, uruchamiając:", + "VersionShaMismatch4": "jeśli wersja {version_spec} nie został jeszcze opublikowana, zastąp poprzednie drzewo Git, uruchamiając:", + "VersionShaMissing1": "nie można określić drzewa Git katalogu portów. Jest to zwykle spowodowane przez niezatwierdzone zmiany.", + "VersionShaMissing2": "możesz zatwierdzić zmiany i dodać je do bazy danych wersji, uruchamiając:", + "VersionShaMissing3": "praca w toku", + "VersionShaMissing4": "[{package_name}] Dodaj nowy port", "VersionSharpMustBeFollowedByPortVersion": "Po znaku „#” w tekście wersji musi następować wersja portu", "VersionSharpMustBeFollowedByPortVersionNonNegativeInteger": "Po znaku „#” w tekście wersji musi następować wersja portu (nieujemna liczba całkowita)", "VersionSpecMismatch": "Nie można załadować portu, ponieważ wersje są niespójne. Plik „{path}” zawiera wersję {actual_version}, ale baza danych wskazuje, że powinna to być wersja {expected_version}.", - "VersionTableHeader": "Wersja", "VersionVerifiedOK": "{version_spec} jest poprawnie w bazie danych wersji ({git_tree_sha})", "WaitingForChildrenToExit": "Trwa oczekiwanie na zakończenie procesów podrzędnych...", "WaitingToTakeFilesystemLock": "trwa oczekiwanie na zablokowanie systemu plików na ścieżce {path}...", @@ -1136,8 +1118,7 @@ "WhileCheckingOutBaseline": "podczas wyewidencjonowywania {commit_sha} punktu odniesienia", "WhileCheckingOutPortTreeIsh": "podczas wyewidencjonowywania portu {package_name} z drzewem Git {git_tree_sha}", "WhileGettingLocalTreeIshObjectsForPorts": "podczas pobierania lokalnych obiektów drzewa dla portów", - "WhileLoadingLocalPort": "podczas próby załadowania pakietu {package_name} portu lokalnego", - "WhileLoadingPortFromGitTree": "podczas próby załadowania portu z: {commit_sha}", + "WhileLoadingBaselineVersionForPort": "podczas ładowania wersji bazowej dla pakietu {package_name}", "WhileLoadingPortVersion": "podczas ładowania wersji {version_spec}", "WhileLookingForSpec": "podczas wyszukiwania elementu {spec}:", "WhileParsingVersionsForPort": "podczas analizowania wersji dla pakietu {package_name} ze ścieżki {path}", @@ -1165,7 +1146,7 @@ "descriptionShouldBeOfTypestringFound$": "opis powinien być typu 'string', znaleziono '${p0}'", "optionsShouldBeASequenceFound$": "opcje powinny być sekwencją, znaleziono '${p0}'", "DuplicateKeysDetectedInManifest$": "Wykryto zduplikowane klucze w manifeście: „${p0}”", - "noPostscriptFileRerunWithTheVcpkgShellFunctionRatherThanExecutable": "brak pliku postscript: uruchom ponownie za pomocą funkcji powłoki vcpkg, a nie pliku wykonywalnego", + "noPostscriptFileRunVcpkgshellWithTheSameArguments": "brak pliku postscript: uruchom polecenie vcpkg-shell z takimi samymi argumentami", "DuplicateDefine$DuringActivationNewValueWillReplaceOld": "Zduplikuj definicję ${p0} podczas aktywacji. Nowa wartość zastąpi starą.", "DuplicateToolDeclared$DuringActivationNewValueWillReplaceOld": "Narzędzie duplikacji zadeklarowało element ${p0} podczas aktywacji. Nowa wartość zastąpi starą.", "DuplicateAliasDeclared$DuringActivationNewValueWillReplaceOld": "Podczas aktywacji zadeklarowano zduplikowany alias ${p0}. Nowa wartość zastąpi starą.", @@ -1257,7 +1238,7 @@ "MultipleArtifactsSpecifiedButNotAnEqualNumberOf$Switches": "Określono wiele artefaktów, ale nie jednakową liczbę przełączników ${p0}", "TriedToAddAnArtifact$$ButCouldNotDetermineTheRegistryToUse": "Podjęto próbę dodania artefaktu [${p0}]:${p1}, ale nie można określić rejestru do użycia.", "TriedToAddRegistry$As$ButItWasAlready$PleaseAdd$ToThisProjectManuallyAndReattempt": "Podjęto próbę dodania rejestru ${p0} jako ${p1}, ale był on już ${p2}. Dodaj ręcznie ${p3} do tego projektu i przeprowadź ponowną próbę.", - "RunvcpkgActivateToApplyToTheCurrentTerminal": "Uruchom polecenie \\`vcpkg activate\\`, aby zastosować je do bieżącego terminalu", + "RunvcpkgshellActivateToApplyToTheCurrentTerminal": "Uruchom polecenie \\`vcpkg-shell activate\\`, aby zastosować je do bieżącego terminalu", "DownloadsFolderCleared$": "Wyczyszczono folder Pobrane (${p0}) ", "InstalledArtifactFolderCleared$": "Wyczyszczono zainstalowany folder artefaktu (${p0}) ", "CacheFolderCleared$": "Wyczyszczono folder pamięci podręcznej (${p0}) ", diff --git a/locales/messages.pt-BR.json b/locales/messages.pt-BR.json index 06e48d2659..9f0a3e784d 100644 --- a/locales/messages.pt-BR.json +++ b/locales/messages.pt-BR.json @@ -46,7 +46,6 @@ "AVersionOfAnyType": "uma versão de qualquer tipo", "AddArtifactOnlyOne": "'{command_line}' só pode adicionar um artefato por vez.", "AddCommandFirstArg": "O primeiro parâmetro a ser adicionado deve ser 'artefato' ou 'porta'.", - "AddFirstArgument": "O primeiro argumento para '{command_line}' deve ser 'artifact' ou 'port'.", "AddPortRequiresManifest": "'{command_line}' requer um arquivo de manifesto ativo.", "AddPortSucceeded": "Conseguiu adicionar portas ao arquivo vcpkg.json.", "AddRecurseOption": "Se você tiver certeza de que deseja removê-los, execute o comando com a opção --recurse.", @@ -54,12 +53,11 @@ "AddVersionAddedVersionToFile": "versão adicionada {version} para {path}", "AddVersionArtifactsOnly": "--version é somente artefatos e não pode ser usado com vcpkg add port", "AddVersionCommitChangesReminder": "Você se lembrou de confirmar suas alterações?", - "AddVersionCommitResultReminder": "Não se esqueça de confirmar o resultado!", "AddVersionDetectLocalChangesError": "ignorando a detecção de alterações locais devido a um formato inesperado na saída de status do git", "AddVersionFileNotFound": "não foi possível encontrar o arquivo necessário {path}", "AddVersionFormatPortSuggestion": "Execute `{command_line}` para formatar o arquivo", "AddVersionIgnoringOptionAll": "ignorando --{option} desde que um argumento de nome de porta foi fornecido", - "AddVersionLoadPortFailed": "não é possível carregar a porta {package_name}", + "AddVersionInstructions": "você pode executar os seguintes comandos para adicionar a versão atual do {package_name} automaticamente:", "AddVersionNewFile": "(novo arquivo)", "AddVersionNewShaIs": "novo SHA: {commit_sha}", "AddVersionNoFilesUpdated": "Nenhum arquivo foi atualizado", @@ -70,8 +68,8 @@ "AddVersionPortFilesShaChanged": "os arquivos de check-in de {package_name} foram alterados, mas a versão não foi atualizada", "AddVersionPortFilesShaUnchanged": "os arquivos de check-in para {package_name} não foram alterados da versão {version}", "AddVersionPortHasImproperFormat": "{package_name} não está formatado corretamente", - "AddVersionSuggestNewVersionScheme": "Use o esquema de versão \"{new_scheme}\" em vez de \"{old_scheme}\" na porta \"{package_name}\".\nUse --{option} para desabilitar esta verificação.", - "AddVersionUnableToParseVersionsFile": "não foi possível de analisar o arquivo de versões {path}", + "AddVersionSuggestVersionDate": "O formato da versão de \"{package_name}\" usa \"version-string\", mas o formato é aceitável como \"version-date\". Se esse formato for de fato uma data ISO 8601, altere o formato para \"version-date\" e execute esse comando novamente. Caso contrário, desabilite essa verificação executando novamente esse comando e adicionando --skip-version-format-check .", + "AddVersionSuggestVersionRelaxed": "O formato de versão de \"{package_name}\" usa \"version-string\", mas o formato é aceitável como \"version\". Se as versões para essa porta podem ser ordenadas usando regras relaxed-version, altere o formato para \"version\" e execute novamente este comando. As relaxed-version ordenam as versões por cada componente numérico. Em seguida, as versões com sufixos de traço são previamente classificadas lexicograficamente. As marcas de compilação com sinal de + são ignoradas. Exemplos:\n1.0 < 1.1-alpha < 1.1-b < 1.1 < 1.1.1 < 1.2+build = 1.2 < 2.0\nObserve, em particular, que os sufixos os sufixos com hífen são classificados antes, não depois. 1.0-anything < 1.0\nObserve que essa ordem de classificação é a mesma escolhida no Controle de Versão Semântico (consulte https://semver.org), mesmo que as partes semanticamente aplicáveis não se apliquem.\nSe as versões dessa porta não forem ordenadas por essas regras, desabilite essa verificação executando novamente esse comando e adicionando --skip-version-format-check .", "AddVersionUncommittedChanges": "há alterações não confirmadas para {package_name}", "AddVersionUpdateVersionReminder": "Você se lembrou de atualizar a versão ou a versão da porta?", "AddVersionUseOptionAll": "{command_name} sem argumentos requer passar --{option} para atualizar todas as versões da porta de uma só vez", @@ -82,7 +80,7 @@ "AdditionalPackagesToRemove": "Pacotes adicionais (*) precisam ser removidos para concluir esta operação.", "AllFormatArgsRawArgument": "cadeia de caracteres de formato \"{value}\" contém um argumento de formato bruto", "AllFormatArgsUnbalancedBraces": "chave não balanceada na cadeia de caracteres de formato \"{value}\"", - "AllPackagesAreUpdated": "Todos os pacotes instalados estão atualizados com o arquivo de porta local.", + "AllPackagesAreUpdated": "Todos os pacotes instalados estão atualizados.", "AlreadyInstalled": "{spec} já está instalado", "AlreadyInstalledNotHead": "{spec} já está instalado -- não está sendo criado pela HEAD", "AmbiguousConfigDeleteConfigFile": "Configuração vcpkg ambígua fornecida pelo manifesto e pelo arquivo de configuração.\n-- Excluir arquivo de configuração {path}", @@ -110,7 +108,6 @@ "ApplocalProcessing": "implantando dependências", "ArtifactsBootstrapFailed": "vcpkg-artifacts não está instalado e não pôde ser inicializado.", "ArtifactsNotInstalledReadonlyRoot": "vcpkg-artifacts não está instalado e não pode ser instalado porque VCPKG_ROOT é considerado somente leitura. A reinstalação do vcpkg usando o 'one liner' pode corrigir esse problema.", - "ArtifactsNotOfficialWarning": "Usando vcpkg-artifacts com um não oficial ", "ArtifactsOptionIncompatibility": "--{option} não tem efeito em localizar artefato.", "ArtifactsOptionJson": "Caminho completo para o arquivo JSON no qual as variáveis de ambiente e outras propriedades são registradas", "ArtifactsOptionMSBuildProps": "Caminho completo para o arquivo no qual as propriedades do MSBuild serão gravadas.", @@ -118,12 +115,10 @@ "ArtifactsOptionVersionMismatch": "O número de opções --version deve corresponder ao número de artefatos nomeados", "ArtifactsSwitchARM": "Força a detecção de host para ARM ao adquirir artefatos", "ArtifactsSwitchARM64": "Força a detecção de host para ARM64 ao adquirir artefatos", - "ArtifactsSwitchAll": "Atualiza todos os registros de artefatos conhecidos", "ArtifactsSwitchAllLanguages": "Adquire todos os arquivos de idioma ao adquirir artefatos", "ArtifactsSwitchForce": "As forças readquirem se um artefato já estiver adquirido", "ArtifactsSwitchFreebsd": "Força a detecção de host para o FreeBSD ao adquirir artefatos", "ArtifactsSwitchLinux": "Força a detecção de host para Linux ao adquirir artefatos", - "ArtifactsSwitchNormalize": "Aplica quaisquer correções de depreciação", "ArtifactsSwitchOnlyOneHostPlatform": "Somente uma plataforma de host (--x64, --x86, --arm, --arm64) pode ser definida.", "ArtifactsSwitchOnlyOneOperatingSystem": "Somente um sistema operacional (--windows, --osx, --linux, --freebsd) pode ser definido.", "ArtifactsSwitchOnlyOneTargetPlatform": "Somente uma plataforma de destino (--target:x64, --target:x86, --target:arm, --target:arm64) pode ser definida.", @@ -135,9 +130,12 @@ "ArtifactsSwitchWindows": "Força a detecção de host para o Windows ao adquirir artefatos", "ArtifactsSwitchX64": "Força a detecção de host para x64 ao adquirir artefatos", "ArtifactsSwitchX86": "Força a detecção de host para x86 ao adquirir artefatos", + "AssetCacheHit": "Ocorrência no cache de ativos para {path}; baixado de: {url}", + "AssetCacheMiss": "Perda no cache de ativos; baixando de {url}", + "AssetCacheMissBlockOrigin": "Perda no cache de ativos para {path} e downloads são bloqueados por x-block-origin.", "AssetCacheProviderAcceptsNoArguments": "argumentos inesperados: '{value}' não aceita argumentos", + "AssetCacheSuccesfullyStored": "{path} armazenado com sucesso em {url}.", "AssetSourcesArg": "Fontes do cache de ativos. Consulte 'vcpkg help assetcaching'", - "AttemptingToFetchPackagesFromVendor": "Tentando buscar {count} pacote(s) do {vendor}", "AttemptingToSetBuiltInBaseline": "tentativa de definir a linha de base interna em vcpkg.json ao substituir o registro padrão em vcpkg-configuration.json.\no registro padrão de vcpkg-configuration.json será usado.", "AuthenticationMayRequireManualAction": "Um ou mais provedores de credenciais do {vendor} solicitaram ação manual. Adicione a fonte binária 'interativa' para permitir a interatividade.", "AutoSettingEnvVar": "-- Definindo automaticamente {env_var} variáveis de ambiente para \"{url}\".", @@ -147,12 +145,11 @@ "AzUrlAssetCacheRequiresBaseUrl": "argumentos inesperados: a configuração do ativo 'azurl' requer uma url base", "AzUrlAssetCacheRequiresLessThanFour": "argumentos inesperados: a configuração do ativo 'azurl' requer menos de 4 argumentos", "BaselineConflict": "Especificar vcpkg-configuration.default-registry em um arquivo de manifesto entra em conflito com a linha de base interna.\nRemova uma dessas configurações conflitantes.", - "BaselineFileNoDefaultField": "O arquivo de linha de base no commit {commit_sha} era inválido (sem campo \"default\").", "BaselineGitShowFailed": "ao fazer check-out da linha de base do commit '{commit_sha}', falha ao `git show` versions/baseline.json. Isso pode ser corrigido buscando commits com `git fetch`.", - "BaselineMissing": "Versão da linha de base não encontrada. Correr:\nvcpkg x-add-version {package_name}\ngit adicionar versões\ngit commit -m \"Atualizar versão do banco de dados\"\npara definir {version} como a versão de linha de base.", - "BinaryCacheVendorHTTP": "Servidores HTTP", + "BaselineMissing": "uma versão não foi atribuída a {package_name}", + "BinariesRelativeToThePackageDirectoryHere": "os binários são relativos a ${{CURRENT_PACKAGES_DIR}} aqui", "BinarySourcesArg": "Fontes de cache binárias. Consulte 'vcpkg help binarycaching'", - "BinaryWithInvalidArchitecture": "{path}\n Esperado: {expected}, mas era {actual}", + "BinaryWithInvalidArchitecture": "{path} foi criado para {arch}", "BuildAlreadyInstalled": "A {spec} já está instalada; remover {spec} antes de tentar compilá-la.", "BuildDependenciesMissing": "O comando build exige que todas as dependências já estejam instaladas.\nAs seguintes dependências estão ausentes:", "BuildResultBuildFailed": "BUILD_FAILED", @@ -170,22 +167,19 @@ "BuildTroubleshootingMessage1": "Certifique-se de est arusando os mais recentes arquivos de porta com `git pull' e 'vcpkg update'.\nEm seguida, verifique se há problemas conhecidos em:", "BuildTroubleshootingMessage2": "Você pode enviar a respeito de um novo problema em:", "BuildTroubleshootingMessage3": "Incluir 'Erro de build [{package_name}]' em seu título de relatório de bug, as seguintes informações de versão em sua descrição de bug, e anexe qualquer logs de falha relevante do erro acima.", - "BuildTroubleshootingMessage4": "Use o modelo pré-preenchido de {path} ao relatar seu problema.", "BuildTroubleshootingMessageGH": "Você também pode enviar um problema executando (o GitHub CLI deve estar instalado):", "BuildingFromHead": "Criando {spec} de HEAD...", "BuildingPackage": "Criando {spec}...", "BuildingPackageFailed": "Ocorreu um erro ao compilar {spec} com: {build_result}", "BuildingPackageFailedDueToMissingDeps": "devido às seguintes dependências ausente:", "BuiltInTriplets": "Triplos internos:", - "BuiltWithIncorrectArchitecture": "Os seguintes arquivos foram criados para uma arquitetura incorreta:", - "CISettingsExclude": "Lista separada por vírgulas de portas a serem ignoradas", + "BuiltWithIncorrectArchitecture": "O tripleto solicita que os binários sejam criados para {arch}, mas os binários a seguir foram criados para uma arquitetura diferente. Isso geralmente significa que as informações da cadeia de ferramentas são transmitidas incorretamente para o sistema de build dos binários. Para suprimir esta mensagem, adicione set(VCPKG_POLICY_SKIP_ARCHITECTURE_CHECK enabled)", "CISettingsOptCIBase": "Caminho para o arquivo ci.baseline.txt. Usado para ignorar portas e detectar regressões.", "CISettingsOptExclude": "Lista separada por vírgulas de portas a serem ignoradas", "CISettingsOptFailureLogs": "Diretório para o qual os logs de falha serão copiados", "CISettingsOptHostExclude": "Lista separada por vírgulas de portas a serem ignoradas para o host triplet", "CISettingsOptOutputHashes": "Arquivo para saída de todos os hashes de pacote determinados", "CISettingsOptParentHashes": "Arquivo para ler hashes de pacote para um estado de CI pai, para reduzir o conjunto de pacotes alterados", - "CISettingsOptSkippedCascadeCount": "Declara que o número de --exclude e dá suporte a skips exatamente igual a este número", "CISettingsOptXUnit": "Resultados do arquivo para saída no formato XUnit", "CISettingsVerifyGitTree": "Verifica se cada objeto de árvore git corresponde à sua versão declarada (isso é muito lento)", "CISettingsVerifyVersion": "Imprime o resultado de cada porta em vez de apenas erros", @@ -200,8 +194,6 @@ "CMakeTargetsUsageHeuristicMessage": "# isso é gerado heuristicamente e pode não estar correto", "CMakeToolChainFile": "Os projetos do CMake devem usar: \"-DCMAKE_TOOLCHAIN_FILE={path}\"", "CMakeUsingExportedLibs": "Para usar bibliotecas exportadas em projetos do CMake, adicione {value} à linha de comando do CMake.", - "CheckedOutGitSha": "Verifiquei o Git SHA: {commit_sha}", - "CheckedOutObjectMissingManifest": "O objeto com check-out não contém um arquivo CONTROL ou arquivo vcpkg.json.", "ChecksFailedCheck": "vcpkg falhou; nenhum detalhe adicional está disponível.", "ChecksUnreachableCode": "código inacessível atingido", "ChecksUpdateVcpkg": "atualizar vcpkg executando novamente bootstrap-vcpkg pode resolver essa falha.", @@ -235,14 +227,11 @@ "CmdBuildExternalExample2": "vcpkg build-external zlib2 C:\\path\\to\\dir\\with\\vcpkg.json", "CmdBuildExternalSynopsis": "Cria a porta a partir de um caminho", "CmdBuildSynopsis": "Cria uma porta", - "CmdCacheExample1": "vcpkg cache ", - "CmdCacheSynopsis": "Listar especificações de pacotes", "CmdCheckSupportExample1": "VCPKG X-Check-Support ", "CmdCheckSupportSynopsis": "Testa se uma porta é suportada sem criá-la", "CmdCiCleanSynopsis": "Limpa todos os arquivos para se preparar para uma execução de CI", "CmdCiSynopsis": "Tenta criar todas as portas para teste de CI", "CmdCiVerifyVersionsSynopsis": "Verifica a integridade do banco de dados de versão", - "CmdContactOptSurvey": "Iniciar o navegador padrão para a pesquisa vcpkg atual", "CmdCreateExample1": "vcpkg create ", "CmdCreateExample2": "vcpkg create my-fancy-por https://example.com/sources.zip", "CmdCreateExample3": "vcpkg create ", @@ -265,7 +254,7 @@ "CmdEditOptBuildTrees": "Abre o editor na subpasta buildtree específica da porta", "CmdEnvOptions": "Adiciona {path} instalado a {env_var}", "CmdExportEmptyPlan": "Recusando-se a criar uma exportação de pacotes zero. Instale os pacotes antes de exportar.", - "CmdExportExample1": "vcpkg export [--nuget] [--directory=out_dir]", + "CmdExportExample1": "vcpkg export [--nuget] [--output-dir=out_dir]", "CmdExportOpt7Zip": "Exportar para um arquivo 7zip (.7z)", "CmdExportOptChocolatey": "Exporta um pacote chocolatey (experimental)", "CmdExportOptDebug": "Habilita a depuração de pré-fabricada", @@ -376,8 +365,10 @@ "CmdZExtractExample2": "vcpkg z-extract source.zip source_dir --strip 2", "CmdZExtractOptStrip": "O número de diretórios principais a serem removidos de todos os caminhos", "CommandEnvExample2": "vcpkg env \"ninja -C \" --triplet x64-windows", - "CommandFailed": "o comando:\n{command_line}\nfalhou com os seguintes resultados:", + "CommandFailed": "comando:\n{command_line}\nfalhou com a seguinte saída:", + "CommandFailedCode": "comando:\n{command_line}\nfalha com o código de saída {exit_code} e a seguinte saída:", "CommunityTriplets": "Tripletos da comunidade:", + "CompilerPath": "Compilador encontrado: {path}", "CompressFolderFailed": "Falha ao compactar a pasta \"{path}\":", "ComputingInstallPlan": "Plano de instalação de computação...", "ConfigurationErrorRegistriesWithoutBaseline": "A configuração definida em {path} é inválida.\n\nO uso de registros exige que uma linha de base seja definida para o registro padrão ou que o registro padrão seja nulo.\n\nConsulte {url} para obter mais detalhes.", @@ -386,11 +377,10 @@ "ConsideredVersions": "Os executáveis a seguir foram considerados, mas descartados devido ao requisito de versão de {version}:", "ConstraintViolation": "Encontrou uma violação de restrição:", "ContinueCodeUnitInStart": "encontrou unidade de código de continuação na posição inicial", - "ControlAndManifestFilesPresent": "Tanto um arquivo manifesto quanto um arquivo CONTROL existem no diretório porta: {path}", "ControlCharacterInString": "Caractere de controle na cadeia de caracteres", "ControlSupportsMustBeAPlatformExpression": "\"Supports\" deve ser uma expressão de plataforma", - "CopyrightIsDir": "'{path}' sendo um diretório foi preterido.", - "CorruptedDatabase": "Banco de dados corrompido.", + "CopyrightIsDir": "essa porta define ${{CURRENT_PACKAGES_DIR}}/share/${{PORT}}/copyright como um diretório, mas deveria ser um arquivo. Considere combinar arquivos de direitos autorais separados em um usando vcpkg_install_copyright. Para suprimir esta mensagem, adicione set(VCPKG_POLICY_SKIP_COPYRIGHT_CHECK enabled)", + "CorruptedDatabase": "Banco de dados de instalação do vcpkg corrompido. Isso é um bug no vcpkg ou algo mais modificou o conteúdo do diretório ''instalado'' de maneira inesperada. Você pode corrigir isso excluindo o diretório ''instalado'' e reinstalando o que deseja usar. Se esse problema ocorrer consistentemente, registre um bug em https://github.com/microsoft/vcpkg.", "CorruptedInstallTree": "Sua árvore 'instalada' do vcpkg está corrompida.", "CouldNotDeduceNugetIdAndVersion": "Não foi possível deduzir a ID e a versão do nuget do nome de arquivo: {path}", "CouldNotFindBaselineInCommit": "Não foi possível localizar a linha de base {url} em {commit_sha} para {package_name}.", @@ -403,14 +393,12 @@ "CreatingNugetPackage": "Criando o pacote NuGet...", "CreatingZipArchive": "Criando arquivo zip...", "CreationFailed": "Falha ao criar {path}.", - "CurlFailedToExecute": "curl falhou ao executar com código de saída {exit_code}.", "CurlFailedToPut": "o curl não pôde colocar o arquivo em {url} com o código de saída {exit_code}.", "CurlFailedToPutHttp": "O curl não pôde colocar o arquivo em {url} com o código de saída {exit_code} e o código http {value}.", - "CurlReportedUnexpectedResults": "O cURL relatou resultados inesperados para vcpkg e vcpkg não pode continuar.\nExamine o seguinte texto para obter informações confidenciais e abra um problema no GitHub Microsoft/vcpkg para ajudar a corrigir esse problema!\ncmd: {command_line}\n=== saída do curl ===\n{actual}\n=== final da saída do curl ===", - "CurlReturnedUnexpectedResponseCodes": "curl retornou um número diferente de códigos de resposta do que o esperado para a solicitação ({real} vs esperado {expected}).", + "CurlResponseTruncatedRetrying": "o curl retornou uma resposta parcial; após {value} milissegundos a tentativa será repetida", + "CurlTimeout": "o curl não pôde executar todas as operações HTTP solicitadas, mesmo após o tempo limite e as repetições. A última linha de comando foi: {command_line}", "CurrentCommitBaseline": "Você pode usar a confirmação atual como uma linha de base, que é:\n\t\"builtin-baseline\": \"{commit_sha}\"", "CycleDetectedDuring": "ciclo detectado durante {spec}:", - "DateTableHeader": "Data", "DefaultBinaryCachePlatformCacheRequiresAbsolutePath": "A variável de ambiente VCPKG_DEFAULT_BINARY_CACHE deve ser um diretório (era: {path})", "DefaultBinaryCacheRequiresAbsolutePath": "A variável de ambiente VCPKG_DEFAULT_BINARY_CACHE deve ser absoluta (era: {path})", "DefaultBinaryCacheRequiresDirectory": "A variável de ambiente VCPKG_DEFAULT_BINARY_CACHE deve ser um diretório (era: {path})", @@ -419,15 +407,18 @@ "DefaultFeatureIdentifier": "os nomes dos recursos padrão devem ser identificadores", "DefaultFlag": "O padrão é --{option} estar ativado.", "DefaultRegistryIsArtifact": "O registro padrão não pode ser um registro de artefato.", - "DefaultTripletChanged": "Na versão de setembro de 2023, o triplete padrão para bibliotecas vcpkg mudou de x86-windows para o triplet host detectado ({triplet}). Para o comportamento antigo, adicione --triplet x86-windows . Para suprimir essa mensagem, adicione --triplet {triplet} .", "DeleteVcpkgConfigFromManifest": "-- Ou remova \"vcpkg-configuration\" do arquivo de manifesto {path}.", "DependencyFeatureCore": "o recurso \"core\" não pode estar na lista de recursos de uma dependência. Para desabilitar os recursos padrão, adicione \"default-features\": false.", "DependencyFeatureDefault": "o recurso \"padrão\" não pode estar na lista de recursos de uma dependência. Para habilitar os recursos padrão, adicione \"default-features\": true.", "DependencyGraphCalculation": "Envio de grafo de dependência habilitado.", "DependencyGraphFailure": "Falha no envio do grafo de dependência.", "DependencyGraphSuccess": "Envio de grafo de dependência realizado com êxito.", + "DependencyInFeature": "a dependência está no recurso chamado {feature}", + "DependencyNotInVersionDatabase": "a dependência {package_name} não existe no banco de dados da versão; essa porta existe?", "DeprecatedPrefabDebugOption": "--prefab-debug agora está obsoleto.", "DetectCompilerHash": "Detectando hash do compilador para tripleto {triplet}...", + "DirectoriesRelativeToThePackageDirectoryHere": "os diretórios são relativos a ${{CURRENT_PACKAGES_DIR}} aqui", + "DllsRelativeToThePackageDirectoryHere": "as DLLs são relativas a ${{CURRENT_PACKAGES_DIR}} aqui", "DocumentedFieldsSuggestUpdate": "Se estes forem campos documentados que devem ser reconhecidos, tente atualizar a ferramenta vcpkg.", "DownloadAvailable": "Uma cópia para download desta ferramenta está disponível e pode ser usada desativando {env_var}.", "DownloadFailedCurl": "{url}: falha ao baixar o curl com o código de saída {exit_code}", @@ -437,8 +428,7 @@ "DownloadRootsDir": "Baixa o diretório (padrão: {env_var})", "DownloadWinHttpError": "{url}: {system_api} falhou com o código de saída {exit_code}", "DownloadedSources": "Fontes baixadas para {spec}", - "DownloadingPortableToolVersionX": "Uma versão adequada de {tool_name} não foi encontrada (v{version} exigida) Baixando {tool_name} {version} portátil...", - "DownloadingTool": "Baixando {tool_name}...\n{url}->{path}", + "DownloadingPortableToolVersionX": "Não foi encontrada uma versão adequada de {tool_name} (necessário v{version}).", "DownloadingUrl": "Baixando {url}", "DownloadingVcpkgStandaloneBundle": "Baixando o pacote autônomo {version}.", "DownloadingVcpkgStandaloneBundleLatest": "Baixando o pacote autônomo mais recente.", @@ -449,7 +439,6 @@ "DuplicatePackagePatternRegistry": "registro: {url}", "DuplicatedKeyInObj": "Chave duplicada \"{value}\" em um objeto", "ElapsedForPackage": "Tempo decorrido para lidar {spec}: {elapsed}", - "ElapsedInstallTime": "Tempo total decorrido: {count}", "ElapsedTimeForChecks": "Tempo para determinar a passagem/falha: {elapsed}", "EmailVcpkgTeam": "Envie um email para {url} com qualquer comentário.", "EmbeddingVcpkgConfigInManifest": "A inserção de 'vcpkg-configuration' em um arquivo de manifesto é um recurso EXPERIMENTAL.", @@ -479,25 +468,23 @@ "ErrorWhileFetchingBaseline": "ao buscar a linha de base `\"{value}\"` do repositório {package_name}:", "ErrorWhileParsing": "Erros ao analisar {path}.", "ErrorWhileWriting": "Ocorreu um erro ao gravar {path}.", - "ErrorsFound": "Encontrou os seguintes erros:", "ExamplesHeader": "Exemplos:", "ExceededRecursionDepth": "Profundidade de recursão excedida.", "ExcludedPackage": "Excluído {spec}", "ExcludedPackages": "Estão excluídos os seguintes pacotes:", + "ExecutablesRelativeToThePackageDirectoryHere": "os executáveis são relativos a ${{CURRENT_PACKAGES_DIR}} aqui", "ExpectedAnObject": "esperava um objeto", "ExpectedAtMostOneSetOfTags": "Foram encontrados {count} conjuntos de {old_value}.*{new_value}, mas esperado no máximo 1, no bloco: \n{value}", "ExpectedCharacterHere": "esperava-se '{expected}' aqui", "ExpectedDefaultFeaturesList": "esperado ',' ou final do texto na lista de recursos padrão", "ExpectedDependenciesList": "esperado ',' ou fim do texto na lista de dependências", "ExpectedDigitsAfterDecimal": "Dígitos esperados após o ponto decimal", - "ExpectedEof": "eof esperado", "ExpectedExplicitTriplet": "esperava um trio explícito", "ExpectedFailOrSkip": "esperado 'falhar', 'pular' ou 'passar' aqui", "ExpectedFeatureListTerminal": "esperado ',' ou ']' na lista de recursos", "ExpectedFeatureName": "nome do recurso esperado (deve ser minúsculo, dígitos, '-')", "ExpectedOneSetOfTags": "Foram encontrados {count} conjuntos de {old_value}.*{new_value}, mas esperado exatamente 1, no bloco: \n {value}", "ExpectedOneVersioningField": "esperava apenas um campo de controle de versão", - "ExpectedPackageSpecifier": "esperava um especificador de pacote", "ExpectedPathToExist": "Espera-se que {path} exista após a busca", "ExpectedPortName": "esperava um nome de porta aqui (deve ser minúscula, dígitos, '-')", "ExpectedReadWriteReadWrite": "argumento inesperado: 'read', readwrite' ou 'write' esperado", @@ -505,7 +492,6 @@ "ExpectedTripletName": "esperava um nome trigêmeo aqui (deve ser minúsculo, dígitos, '-')", "ExportArchitectureReq": "O pré-fabricado de exportação exige que pelo menos uma das seguintes arquiteturas arm64-v8a, armeabi-v7a, x86_64, x86 esteja presente.", "ExportPrefabRequiresAndroidTriplet": "export prefab requer um trio Android.", - "ExportUnsupportedInManifest": "A exportação vcpkg não oferece suporte ao modo manifesto, para permitir futuras considerações de design. Você pode usar a exportação no modo clássico executando vcpkg fora de um projeto baseado em manifesto.", "Exported7zipArchive": "arquivo 7zip exportado em: {path}", "ExportedZipArchive": "Arquivo zip exportado em: {path}", "ExportingAlreadyBuiltPackages": "Os seguintes pacotes já estão compilados e serão exportados:", @@ -514,14 +500,12 @@ "ExtendedDocumentationAtUrl": "Documentação estendida disponível em '{url}'.", "ExtractHelp": "Extrai um arquivo.", "ExtractingTool": "Extraindo {tool_name}...", - "FailedPostBuildChecks": "{count} problemas de verificação pós-build encontrados. Para enviar essas portas para catálogos coletados, corrija primeiro o portfile: {path}", + "FailedPostBuildChecks": "{count} problemas de verificação pós-build encontrados. Eles geralmente são causados por bugs em portfile.cmake ou no sistema de build upstream. Corrija-os antes de enviar esta porta para o registro coletado.", "FailedToAcquireMutant": "falhou em adquirir o mutante {path}", "FailedToCheckoutRepo": "falha ao fazer check-out de `versions` do repositório {package_name}", "FailedToDeleteDueToFile": "falha ao remover_all({value}) devido a {path}: ", "FailedToDeleteInsideDueToFile": "falha ao remover_all_inside({value}) devido a {path}: ", - "FailedToDetermineArchitecture": "não é possível determinar a arquitetura de {path}.\n{command_line}", "FailedToDetermineCurrentCommit": "Falha ao determinar a confirmação atual:", - "FailedToDownloadFromMirrorSet": "Falha ao baixar do conjunto de espelhos", "FailedToExtract": "Falha ao extrair \"{path}\":", "FailedToFetchRepo": "Falha ao buscar {url}.", "FailedToFindPortFeature": "{package_name} não tem nenhum recurso chamado {feature}.", @@ -530,27 +514,20 @@ "FailedToLoadManifest": "Falha ao carregar o manifesto do diretório {path}", "FailedToLocateSpec": "Falha ao localizar especificação no gráfico: {spec}", "FailedToObtainDependencyVersion": "Não é possível encontrar a versão de dependência desejada.", - "FailedToObtainLocalPortGitSha": "Falha ao obter git SHAs para portas locais.", "FailedToObtainPackageVersion": "Não é possível encontrar a versão do pacote desejada.", "FailedToOpenAlgorithm": "falha ao abrir {value}", "FailedToParseBaseline": "Falha ao analisar a linha de base: {path}", "FailedToParseCMakeConsoleOut": "Falha ao analisar a saída do console do CMake para localizar marcadores de início/término do bloco.", "FailedToParseConfig": "Falha ao analisar a configuração: {path}", - "FailedToParseControl": "Falha ao analisar o arquivo CONTROL: {path}", - "FailedToParseManifest": "Falha ao analisar o arquivo de manifesto: {path}", "FailedToParseNoTopLevelObj": "Falha ao analisar {path}, era esperado um objeto de nível superior.", "FailedToParseNoVersionsArray": "Falha ao analisar {path}, esperava uma matriz 'versions'.", "FailedToParseSerializedBinParagraph": "[verificação de integridade] Falha ao analisar um parágrafo binário serializado.\nAbra um problema em https://github.com/microsoft/vcpkg, com a seguinte saída:\n{error_msg}\nParágrafo Binário Serializado:", + "FailedToParseVersionFile": "Falha ao analisar o arquivo da versão: {path}", "FailedToParseVersionXML": "Não foi possível analisar a versão da ferramenta {tool_name}. A cadeia de caracteres de versão era: {version}", - "FailedToParseVersionsFile": "falha ao analisar o arquivo de versões {path}", - "FailedToProvisionCe": "Falha ao provisionar os artefatos-vcpkg.", - "FailedToReadParagraph": "Falha ao ler parágrafos de {path}", - "FailedToRemoveControl": "Falha ao remover o arquivo de controle {path}", "FailedToRunToolToDetermineVersion": "Falha ao executar \"{path}\" para determinar a versão de {tool_name}.", - "FailedToStoreBackToMirror": "falha ao armazenar de volta ao espelho:", + "FailedToStoreBackToMirror": "Falha ao armazenar {path} para {url}.", "FailedToStoreBinaryCache": "Falha ao armazenar o cache binário {path}", "FailedToTakeFileSystemLock": "Falha ao bloquear o sistema de arquivos", - "FailedToWriteManifest": "Falha ao gravar o arquivo de manifesto {path}", "FailedVendorAuthentication": "Não foi possível autenticar um ou mais provedores de credenciais do {vendor}. Consulte '{url}' para obter mais detalhes sobre como fornecer credenciais.", "FetchingBaselineInfo": "Buscando informações de linha de base de {package_name}...", "FetchingRegistryInfo": "Buscando informações de registro de {url} ({value})...", @@ -559,11 +536,13 @@ "FileNotFound": "{path}: arquivo não encontrado", "FileReadFailed": "Falha ao ler {count} bytes de {path} no deslocamento {byte_offset}.", "FileSeekFailed": "Falha ao buscar a posição {byte_offset} em {path}.", - "FileSystemOperationFailed": "Falha na operação do sistema de arquivos:", - "FilesContainAbsolutePath1": "Não deve haver caminhos absolutos, como os seguintes, em um pacote instalado:", - "FilesContainAbsolutePath2": "Caminhos absolutos foram encontrados nos seguintes arquivos:", + "FilesContainAbsolutePath1": "Não deve haver caminhos absolutos, como os seguintes, em um pacote instalado. Para suprimir esta mensagem, adicione set(VCPKG_POLICY_SKIP_ABSOLUTE_PATHS_CHECK enabled)", + "FilesContainAbsolutePath2": "caminhos absolutos encontrados aqui", + "FilesContainAbsolutePathPkgconfigNote": "Adicionar uma chamada a “vcpkg_fixup_pkgconfig()” pode corrigir caminhos absolutos em arquivos .pc", "FilesExported": "Arquivos exportados em: {path}", - "FindHelp": "Procura o artefato ou porta indicado. Sem parâmetro após 'artefato' ou 'porta', exibe tudo.", + "FilesRelativeToTheBuildDirectoryHere": "os arquivos são relativos ao diretório de build aqui", + "FilesRelativeToThePackageDirectoryHere": "os arquivos são relativos a ${{CURRENT_PACKAGES_DIR}} aqui", + "FindCommandFirstArg": "O primeiro argumento para \"find\" deve ser \"artifact\" ou \"port\".", "FindVersionArtifactsOnly": "--version não pode ser usado com a porta de localização vcpkg ou pesquisa vcpkg", "FishCompletion": "a conclusão do peixe vcpkg já foi adicionada em \"{path}\".", "FloatingPointConstTooBig": "Constante de ponto flutuante muito grande: {count}", @@ -581,6 +560,7 @@ "GeneratingRepo": "Gerando repositório {path}...", "GetParseFailureInfo": "Use '--debug' para mais informações sobre as falhas de análise.", "GitCommandFailed": "falhou ao executar: {command_line}", + "GitCommitUpdateVersionDatabase": "git commit -m \"Atualizar banco de dados da versão\"", "GitFailedToFetch": "falha ao buscar a ref {value} do repositório {url}", "GitFailedToInitializeLocalRepository": "falha ao inicializar o repositório local {path}", "GitRegistryMustHaveBaseline": "O registro git \"{url}\" deve ter um campo \"linha de base\" que seja um SHA de confirmação git válido (40 caracteres hexadecimais).\nPara usar as versões mais recentes atuais, defina a linha de base para o HEAD do repositório, \"{commit_sha}\".", @@ -591,7 +571,7 @@ "GitUnexpectedCommandOutputCmd": "o git produziu uma saída inesperada ao executar {command_line}", "GraphCycleDetected": "Ciclo detectado no gráfico em {package_name}:", "HashFileFailureToRead": "falha ao ler o arquivo \"{path}\" para hash: ", - "HashPortManyFiles": "O {package_name} contém {count} arquivos. O hash desses conteúdos pode levar muito tempo ao determinar o hash da ABI para cache binário. Considere reduzir o número de arquivos. Fazer check-out acidental de arquivos de origem ou build no diretório de uma porta estão entre as causas comuns disso.", + "HashPortManyFiles": "O {package_name} contém {count} arquivos. O hash desses conteúdos pode levar muito tempo ao determinar o hash da ABI para cache binário. Considere reduzir o número de arquivos. Causas comuns são fazer check-out acidental de arquivos de origem ou build no diretório de uma porta.", "HeaderOnlyUsage": "{package_name} é somente de cabeçalho e pode ser usado da CMake via:", "HelpAssetCaching": "**Recurso experimental: isso pode ser alterado ou ser removido a qualquer momento**\n\nO vcpkg pode usar espelhos para armazenar em cache os ativos baixados, garantindo a operação contínua mesmo se a fonte original mudar ou desaparecer.\n\nO cache de ativos pode ser configurado definindo a variável de ambiente X_VCPKG_ASSET_SOURCES para uma lista de origens delimitada por ponto-e-vírgula ou passando uma sequência de --x-asset-sources= opções de linha de comando. As fontes da linha de comando são interpretadas após as fontes do ambiente. Vírgulas, ponto e vírgula e acentos graves podem ser escapados usando crase (`).\n\nO parâmetro opcional para certas cadeia de caracteres controla como elas serão acessadas. Ele pode ser especificado como \"read\", \"write\" ou \"readwrite\" e o padrão é \"read\".\n\nFontes válidas:", "HelpAssetCachingAzUrl": "Adiciona uma fonte de Armazenamento de Blobs do Azure, opcionalmente usando a validação de Assinatura de Acesso Compartilhado. O URL deve incluir o caminho do contêiner e terminar com um \"/\" à direita. , se definido, deve ser prefixado com um \"?\". Servidores não Azure também funcionarão se responderem a solicitações GET e PUT no formato: \"\".", @@ -623,10 +603,7 @@ "HelpEnvCommand": "Cria um ambiente de shell limpo para desenvolvimento ou compilação.", "HelpExampleCommand": "Para obter mais ajuda (incluindo exemplos), consulte https://learn.microsoft.com/vcpkg", "HelpExampleManifest": "Manifesto de exemplo:", - "HelpExportCommand": "Exporta um pacote.", - "HelpHashCommand": "Hash de um arquivo por algoritmo específico, o padrão é SHA512.", "HelpInstallCommand": "Instala um pacote", - "HelpListCommand": "Lista os pacotes instalados", "HelpManifestConstraints": "Os manifestos podem colocar três tipos de restrições nas versões usadas", "HelpMinVersion": "Vcpkg selecionará a versão mínima encontrada que corresponda a todas as restrições aplicáveis, incluindo a versão da linha de base especificada no nível superior, bem como quaisquer restrições \"version>=\" no gráfico.", "HelpOverrides": "Quando usado como o manifesto de nível superior (como ao executar `vcpkg install` no diretório), as substituições permitem que um manifesto cause um curto-circuito na resolução de dependências e especifique exatamente a versão a ser usada. Eles podem ser usados para lidar com conflitos de versão, como dependências de `version-string`. Eles não serão considerados quando transitivamente dependentes.", @@ -674,7 +651,6 @@ "IllegalPlatformSpec": "O qualificador de plataforma não é permitido neste contexto", "ImproperShaLength": "SHA512s devem ter 128 caracteres hexadecimais: {value}", "IncorrectArchiveFileSignature": "Assinatura incorreta do arquivo morto", - "IncorrectPESignature": "Assinatura PE incorreta", "InfoSetEnvVar": "Você também pode definir {env_var} para o editor da sua escolha.", "InitRegistryFailedNoRepo": "Não foi possível criar um registro em {path} porque este não é um repositório git root.\nUse 'git init {command_line}' para criar um repositório git nesta pasta.", "InstallCopiedFile": "{path_source} -> {path_destination} concluído", @@ -688,8 +664,8 @@ "InstalledBy": "Instalado por {path}", "InstalledPackages": "Os seguintes pacotes já estão instalados:", "InstalledRequestedPackages": "Todos os pacotes solicitados estão instalados no momento.", - "InstallingFromLocation": "-- Instalando porta do local: {path}", "InstallingMavenFile": "{path} instalando arquivo do Maven", + "InstallingOverlayPort": "instalar a porta de sobreposição daqui", "InstallingPackage": "Instalando {action_index}/{count} {spec}...", "IntegrateBashHelp": "Habilite a conclusão de guias bash. Apenas fora do Windows", "IntegrateFishHelp": "Habilite a conclusão da guia peixe. Apenas fora do Windows", @@ -725,7 +701,7 @@ "InvalidBundleDefinition": "Definição de pacote inválida.", "InvalidCharacterInFeatureList": "caractere inválido no nome do recurso (deve ser letras minúsculas, dígitos, '-' ou '*')", "InvalidCharacterInFeatureName": "caractere inválido no nome do recurso (deve ser minúsculo, dígitos, '-')", - "InvalidCharacterInPackageName": "caractere inválido no nome do pacote (deve ser minúsculo, dígitos, '-')", + "InvalidCharacterInPortName": "caractere inválido no nome da porta (deve ser minúsculo, dígitos, ''-'')", "InvalidCodePoint": "Ponto de código inválido passado para utf8_encoded_code_point_count", "InvalidCodeUnit": "unidade de código inválida", "InvalidCommandArgSort": "O valor de --sort deve ser um de 'lexicographical', 'topographic', 'reverse'.", @@ -743,7 +719,6 @@ "InvalidLinkage": "Tipo de vinculação {system_name} inválido: [{value}]", "InvalidLogicExpressionUnexpectedCharacter": "expressão lógica inválida, caractere inesperado", "InvalidLogicExpressionUsePipe": "expressão lógica inválida, use '|' em vez de 'ou'", - "InvalidNoVersions": "O arquivo não contém versões.", "InvalidOptionForRemove": "'remove' aceita bibliotecas ou '--outdated'", "InvalidPortVersonName": "Nome de arquivo de versão de porta inválido encontrado: `{path}`.", "InvalidSharpInVersion": "caractere inválido \"#\" no texto da versão", @@ -751,6 +726,8 @@ "InvalidString": "Utf8 inválido passado para Value::string(std::string)", "InvalidTriplet": "Tripleto inválido: {triplet}", "InvalidUri": "não é possível analisar o URI: {value}", + "InvalidValueHashAdditionalFiles": "O VCPKG_HASH_ADDITIONAL_FILES variável contém um caminho de arquivo inválido: ''{path}''. O valor deve ser um caminho absoluto para um arquivo existente.", + "InvalidValuePostPortfileIncludes": "A variável VCPKG_POST_PORTFILE_INCLUDES contém um caminho de arquivo inválido: \"{path}\". O valor deve ser um caminho absoluto para um arquivo cmake existente.", "IrregularFile": "path não era um arquivo normal: {path}", "JsonErrorMustBeAnObject": "Espera-se que \"{path}\" seja um objeto.", "JsonFieldNotObject": "o valor de [\"{json_field}\"] deve ser um objeto", @@ -786,11 +763,11 @@ "LinkageStaticDebug": "Depuração Estática (/MTd)", "LinkageStaticRelease": "Versão Estática (/MT)", "ListHelp": "Lista bibliotecas instaladas", - "LoadingCommunityTriplet": "-- [COMMUNITY] Carregando a configuração triplet de: {path}", + "LoadedCommunityTriplet": "carregou o tripleto da comunidade daqui. Os tripletos da comunidade não são criados no registro coletado e, portanto, têm menos probabilidade de serem bem-sucedidos.", + "LoadedOverlayTriplet": "tripleto da sobreposição carregada daqui", "LoadingDependencyInformation": "Carregando informações de dependência para {count} pacotes...", - "LoadingOverlayTriplet": "-- [OVERLAY] Carregando a configuração triplet de: {path}", - "LocalPortfileVersion": "Usando versões de arquivo de porta local. Para atualizar os arquivos de porta locais, use 'git pull'.", - "ManifestConflict": "Encontrado um manifesto e arquivos CONTROL na porta \"{path}\"; renomeie um ou outro", + "LocalPortfileVersion": "Usando versões de porta local. Para atualizar as portas locais, use “git pull”.", + "ManifestConflict2": "Encontrado tanto um manifesto quanto os arquivos de CONTROL: renomeie um ou outro", "ManifestFormatCompleted": "Foi bem-sucedido na formatação dos arquivos de manifesto.", "MismatchedBinParagraphs": "O parágrafo binário serializado era diferente do parágrafo binário original. Abra um problema em https://github.com/microsoft/vcpkg com a seguinte saída:", "MismatchedFiles": "o arquivo a ser armazenado não corresponde ao hash", @@ -802,6 +779,7 @@ "MissingAndroidEnv": "ANDROID_NDK_HOME variável de ambiente ausente", "MissingAndroidHomeDir": "O diretório ANDROID_NDK_HOME não existe: {path}", "MissingArgFormatManifest": "format-manifest foi passado --convert-control sem '--all'.\nIsso não faz nada: os arquivos de controle passados explicitamente são convertidos automaticamente.", + "MissingAssetBlockOrigin": "{path} ausente e downloads são bloqueados por x-block-origin.", "MissingClosingParen": "faltou fechar )", "MissingDependency": "O pacote {spec} está instalado, mas a dependência {package_name} não.", "MissingExtension": "Extensão \"{extension}\" ausente.", @@ -810,9 +788,9 @@ "MissingPortSuggestPullRequest": "Se sua porta não estiver listada, abra um problema em e/ou considere fazer uma solicitação pull.", "MissingRequiredField": "campo obrigatório ausente '{json_field}' ({json_type})", "MissingRequiredField2": "campo obrigatório ausente \"{json_field}\"", + "MissingShaVariable": "A variável {{sha}} deverá ser usada no modelo se outras variáveis forem usadas.", "MixingBooleanOperationsNotAllowed": "misturando & e | não é permitido; use () para especificar a ordem das operações", "MonoInstructions": "Isso pode ser causado por uma instalação mono incompleta. Mono completo está disponível em alguns sistemas via `sudo apt install mono-complete`. Os usuários do Ubuntu 18.04 podem precisar de uma versão mais recente do mono, disponível em https://www.mono-project.com/download/stable/", - "MsiexecFailedToExtract": "msiexec falhou ao extrair \"{path}\" com o código de inicialização ou saída {exit_code} e a mensagem:", "MultiArch": "O Multi-Arch deve ser 'o mesmo', mas era {option}", "MultipleFeatures": "{package_name} declara {feature} várias vezes; certifique-se de que os recursos tenham nomes distintos", "MutuallyExclusiveOption": "--{value} não pode ser usado com --{option}.", @@ -822,10 +800,8 @@ "NewOnlyOneVersionKind": "Somente uma da --version-relax, --version-date ou --version-string pode ser especificada.", "NewSpecifyNameVersionOrApplication": "Especifique --name e --version para produzir um manifesto destinado a bibliotecas C++ ou especifique --application para indicar que o manifesto não deve ser usado como uma porta.", "NewVersionCannotBeEmpty": "--version não pode ficar vazia.", - "NoArgumentsForOption": "A opção --{option} não aceita um argumento.", "NoError": "nenhum erro", "NoInstalledPackages": "Nenhum pacote está instalado. Você quis dizer 'pesquisar'?", - "NoLocalizationForMessages": "Nenhuma mensagem localizada para o seguinte: ", "NoOutdatedPackages": "Não há pacotes desatualizados.", "NoRegistryForPort": "nenhum registro configurado para porta {package_name}", "NoUrlsAndHashSpecified": "Nenhuma URL especificada para baixar SHA: {sha}", @@ -866,7 +842,6 @@ "PackageManipulationHeader": "Manipulação de pacotes", "PackageRootDir": "Diretório de pacotes (experimental)", "PackagesToInstall": "Os seguintes pacotes serão compilados e instalados:", - "PackagesToInstallDirectly": "Os seguintes pacotes serão instalados diretamente:", "PackagesToModify": "Pacotes adicionais (*) serão modificados para completar esta operação.", "PackagesToRebuild": "Os seguintes pacotes serão reconstruídos:", "PackagesToRebuildSuggestRecurse": "Se você tiver certeza de que deseja reconstruir os pacotes acima, execute o comando com a opção --recurse.", @@ -882,47 +857,50 @@ "ParseFeatureNameError": "\"{package_name}\" não é um nome de recurso válido. Os nomes dos recursos devem ser alfanuméricos minúsculos + hifens e não reservados (consulte {url} para obter mais informações).", "ParseIdentifierError": "\"{value}\" não é um identificador válido. Os identificadores devem ser alfanuméricos minúsculos + hifens e não reservados (consulte {url} para obter mais informações).", "ParsePackageNameError": "\"{Package_name}\" não é um nome de pacote válido. Os nomes dos pacotes devem ser alfanuméricos minúsculos + hifens e não reservados (consulte {url} para obter mais informações).", + "ParsePackageNameNotEof": "esperado o fim da análise de entrada de um nome do pacote; isso geralmente significa que o caractere indicado não tem permissão para estar em um nome da porta. Os nomes das portas são todos alfanuméricos minúsculos + hifens e não reservados (confira {url} para obter mais informações).", "ParsePackagePatternError": "\"{Package_name}\" não é um padrão de pacote válido. Os padrões de pacote devem usar apenas um caractere curinga (*) e deve ser o último caractere do padrão (consulte {url} para obter mais informações).", + "ParseQualifiedSpecifierNotEof": "esperado o fim da análise de entrada de uma especificação do pacote; isso geralmente significa que o caractere indicado não tem permissão para estar em uma especificação do pacote. Os nomes da porta, tripleto e recurso são alfanuméricos minúsculos + hifens.", + "ParseQualifiedSpecifierNotEofSquareBracket": "esperado o fim da análise de entrada de uma especificação de pacote; você quis dizer {version_spec}?", "PathMustBeAbsolute": "O valor de variável de ambiente X_VCPKG_REGISTRIES_CACHE não é absoluto: {path}", - "PerformingPostBuildValidation": "-- Executando a validação pós-compilação", - "PortBugAllowRestrictedHeaders": "Em circunstâncias excepcionais, essa política pode ser desabilitada via {env_var}", - "PortBugBinDirExists": "Não deve haver nenhum diretório bin\\ em um build estático, mas {path} está presente.", - "PortBugDebugBinDirExists": "Não deve haver nenhum diretório debug\\bin\\ em um build estático, mas {path} está presente.", - "PortBugDebugShareDir": "/debug/share não deve existir. Reorganize todos os arquivos importantes e use\nfile(REMOVE_RECURSE \"${{CURRENT_PACKAGES_DIR}}/debug/share\")", - "PortBugDllAppContainerBitNotSet": "O bit do Contêiner de Aplicativos deve ser definido para aplicativos da Windows Store. As seguintes DLLs não têm o bit do Contêiner de Aplicativo definido:", - "PortBugDllInLibDir": "As dlls a seguir foram encontradas em /lib ou /debug/lib. Mova-as para /bin ou /debug/bin, respectivamente.", - "PortBugDuplicateIncludeFiles": "Os arquivos de inclusão não devem ser duplicados no diretório /debug/include. Se isso não puder ser desabilitado no cmake do projeto, use\nfile(REMOVE_RECURSE \"${{CURRENT_PACKAGES_DIR}}/debug/include\")", - "PortBugFoundCopyrightFiles": "A seguir estão os potenciais arquivos de copyright:", - "PortBugFoundDebugBinaries": "{count} binários de depuração encontrados:", - "PortBugFoundDllInStaticBuild": "As DLLs não devem estar presentes em um build estático, mas as seguintes DLLs foram encontradas:", - "PortBugFoundEmptyDirectories": "Não deve haver diretórios vazios em {path}. Os seguintes diretórios vazios foram encontrados:", - "PortBugFoundExeInBinDir": "Os EXEs a seguir foram encontrados em /bin ou /debug/bin. EXEs não são destinos de distribuição válidos.", - "PortBugFoundReleaseBinaries": "{count} binários de laçamento encontrados:", - "PortBugIncludeDirInCMakeHelperPort": "A pasta /include existe em uma porta auxiliar do cmake; isso está incorreto, pois apenas arquivos cmake devem ser instalados", - "PortBugInspectFiles": "Para inspecionar os arquivos {extension}, use:", - "PortBugInvalidCrtLinkage": "Os binários a seguir devem usar o CRT {expected}.", - "PortBugInvalidCrtLinkageEntry": "{path} é vinculado com:", - "PortBugKernel32FromXbox": "O trio selecionado tem como alvo o Xbox, mas as seguintes DLLs estão vinculadas ao kernel32. Essas DLLs não podem ser carregadas no Xbox, onde o kernel32 não está presente. Isso geralmente é causado pela vinculação com kernel32.lib em vez de uma biblioteca abrangente adequada, como onecore_apiset.lib ou xgameplatform.lib.", - "PortBugMergeLibCMakeDir": "A pasta /lib/cmake deve ser mesclada com /debug/lib/cmake e movida para /share/{package_name}/cmake. Use a função auxiliar `vcpkg_cmake_config_fixup()` da porta vcpkg-cmake-config`.", - "PortBugMismatchedNumberOfBinaries": "Número incompatível de binários de depuração e lançamento.", - "PortBugMisplacedCMakeFiles": "Os seguintes arquivos cmake foram encontrados fora de /share/{spec}. Coloque arquivos cmake em /share/{spec}.", - "PortBugMisplacedFiles": "Os seguintes arquivos estão posicionados em {path}:", - "PortBugMisplacedFilesCont": "Arquivos não podem estar presentes nesses diretórios.", - "PortBugMisplacedPkgConfigFiles": "Os diretórios pkgconfig devem ser share/pkgconfig (somente para bibliotecas apenas de cabeçalho), lib/pkgconfig ou lib/debug/pkgconfig. Os seguintes arquivos pkgconfig foram encontrados em local incorreto:", + "PerformingPostBuildValidation": "Executando a validação pós-compilação", + "PortBugBinDirExists": "${{CURRENT_PACKAGES_DIR}}/{path} existe, mas não deve estar em um build estático. Para suprimir esta mensagem, adicione set(VCPKG_POLICY_DLLS_IN_STATIC_LIBRARY enabled)", + "PortBugDebugShareDir": "${{CURRENT_PACKAGES_DIR}}/debug/share não deve existir. Reorganize todos os arquivos importantes e exclua os restantes adicionando “file(REMOVE_RECURSE \"${{CURRENT_PACKAGES_DIR}}/debug/share\")”. Para suprimir esta mensagem, adicione set(VCPKG_POLICY_ALLOW_DEBUG_SHARE enabled)", + "PortBugDllAppContainerBitNotSet": "O bit do Contêiner de Aplicativos deve ser definido para todas as DLLs em aplicativos da Windows Store e o tripleto solicita um direcionamento à Windows Store, mas as DLLs a seguir não foram criadas com o conjunto de bits. Isso geralmente significa que os sinalizadores do vinculador de cadeia de ferramentas não estão sendo propagados corretamente ou que o vinculador em uso não dá suporte à opção /APPCONTAINER. Para suprimir esta mensagem, adicione set(VCPKG_POLICY_SKIP_APPCONTAINER_CHECK enabled)", + "PortBugDllInLibDir": "As dlls a seguir foram encontradas em ${{CURRENT_PACKAGES_DIR}}/lib ou ${{CURRENT_PACKAGES_DIR}}/debug/lib. Mova-as para ${{CURRENT_PACKAGES_DIR}}/bin ou ${{CURRENT_PACKAGES_DIR}}/debug/bin, respectivamente.", + "PortBugDuplicateIncludeFiles": "${{CURRENT_PACKAGES_DIR}}/debug/include não deve existir. Para suprimir esta mensagem, adicione set(VCPKG_POLICY_ALLOW_DEBUG_INCLUDE enabled)", + "PortBugDuplicateIncludeFilesFixIt": "Se esse diretório foi criado por um sistema de build que não permite que a instalação de cabeçalhos na depuração seja desabilitada, exclua o diretório duplicado com file(REMOVE_RECURSE \"${{CURRENT_PACKAGES_DIR}}/debug/include\")", + "PortBugFoundCopyrightFiles": "A seguir estão os potenciais arquivos de direitos autorais:", + "PortBugFoundDebugBinaries": "Os arquivos a seguir são os binários de depuração:", + "PortBugFoundDllInStaticBuild": "As DLLs não devem estar presentes em um build estático, mas as seguintes DLLs foram encontradas. Para suprimir esta mensagem, adicione set(VCPKG_POLICY_DLLS_IN_STATIC_LIBRARY enabled)", + "PortBugFoundEmptyDirectories": "Não deve haver diretórios vazios instalados. Diretórios vazios não são representáveis para vários provedores de cache binário, repositórios git e não são considerados saídas de build semântico. Você deve criar um arquivo regular dentro de cada diretório vazio ou excluí-lo com o CMake a seguir. Para suprimir esta mensagem, adicione set(VCPKG_POLICY_ALLOW_EMPTY_FOLDERS enabled)", + "PortBugFoundExeInBinDir": "Os executáveis a seguir foram encontrados em ${{CURRENT_PACKAGES_DIR}}/bin ou ${{CURRENT_PACKAGES_DIR}}/debug/bin. Executáveis não são destinos de distribuição válidos. Se esses executáveis forem ferramentas de build, considere usar “vcpkg_copy_tools”. Para suprimir esta mensagem, adicione set(VCPKG_POLICY_ALLOW_EXES_IN_BIN enabled)", + "PortBugFoundReleaseBinaries": "Estes são os binários de versão:", + "PortBugIncludeDirInCMakeHelperPort": "A pasta ${{CURRENT_PACKAGES_DIR}}/include existe em uma porta auxiliar do CMake; isso está incorreto, pois apenas arquivos CMake devem ser instalados. Para suprimir esta mensagem, remova set(VCPKG_POLICY_CMAKE_HELPER_PORT enabled).", + "PortBugInvalidCrtLinkageCrtGroup": "Os seguintes binários devem ser vinculados apenas a: {expected}", + "PortBugInvalidCrtLinkageEntry": "{path} links com: {actual}", + "PortBugInvalidCrtLinkageHeader": "binários criados por esse link de porta com RunTimes C (\"CRTs\") inconsistentes com os solicitados pelo tripleto e pela estrutura de implantação. Se o tripleto destina-se a usar apenas o CRT de versão, você deve adicionar set(VCPKG_POLICY_ONLY_RELEASE_CRT enabled) ao arquivo .cmake do tripleto. Para suprimir essa verificação inteiramente, adicione set(VCPKG_POLICY_SKIP_CRT_LINKAGE_CHECK enabled) ao arquivo .cmake do tripleto se ele for de largura do tripleto ou ao portfile.cmake se ele for específico para a porta. Você pode inspecionar os binários com: dumpbin.exe /directives mylibfile.lib", + "PortBugKernel32FromXbox": "O tripleto selecionado tem como alvo o Xbox, mas as DLLs a seguir se vinculam ao kernel32. Essas DLLs não podem ser carregadas no Xbox, onde kernel32 não está presente. Isso normalmente é causado pela vinculação com kernel32.lib em vez de uma biblioteca guarda-chuva adequada, como onecore_apiset.lib ou xgameplatform.lib. Você pode inspecionar as dependências de uma DLL com “dumpbin.exe /dependents mylibfile.dll”. Para suprimir esta mensagem, adicione set(VCPKG_POLICY_ALLOW_KERNEL32_FROM_XBOX enabled)", + "PortBugMergeLibCMakeDir": "Essa porta cria ${{CURRENT_PACKAGES_DIR}}/lib/cmake e/ou ${{CURRENT_PACKAGES_DIR}}/debug/lib/cmake, que deve ser mesclado e movido para ${{CURRENT_PACKAGES_DIR}}/share/${{PORT}}/cmake. Use a função auxiliar vcpkg_cmake_config_fixup() da porta vcpkg-cmake-config. Para suprimir esta mensagem, adicione set(VCPKG_POLICY_SKIP_LIB_CMAKE_MERGE_CHECK enabled)", + "PortBugMismatchingNumberOfBinaries": "Número incompatível de binários de depuração e lançamento. Isso geralmente indica tratamento incorreto de depuração ou versão em portfile.cmake ou no sistema de build. Se a intenção for apenas produzir componentes de versão para esse tripleto, o tripleto deverá ter set(VCPKG_BUILD_TYPE release) adicionado ao seu arquivo .cmake. Para suprimir esta mensagem, adicione set(VCPKG_POLICY_MISMATCHED_NUMBER_OF_BINARIES enabled)", + "PortBugMisplacedCMakeFiles": "Essa porta instala os seguintes arquivos CMake em locais em que os arquivos CMake não são esperados. Os arquivos CMake devem ser instalados em ${{CURRENT_PACKAGES_DIR}}/share/${{PORT}}. Para suprimir esta mensagem, adicione set(VCPKG_POLICY_SKIP_MISPLACED_CMAKE_FILES_CHECK enabled)", + "PortBugMisplacedFiles": "Os arquivos regulares a seguir são instalados em locais em que arquivos regulares podem não estar instalados. Eles devem ser instalados em um subdiretório. Para suprimir esta mensagem, adicione set(VCPKG_POLICY_SKIP_MISPLACED_REGULAR_FILES_CHECK enabled)", + "PortBugMisplacedPkgConfigFiles": "Os diretórios pkgconfig a seguir posicionados em local incorreto foram instalados. Arquivos pkgconfig posicionados em local errado não serão encontrados corretamente por pkgconf ou pkg-config. Os diretórios pkgconfig devem ser ${{CURRENT_PACKAGES_DIR}}/share/pkgconfig (somente para bibliotecas independente de arquitetura/cabeçalho), ${{CURRENT_PACKAGES_DIR}}/lib/pkgconfig (para dependências de versão) ou ${{CURRENT_PACKAGES_DIR}}/debug/lib/pkgconfig (para dependências de depuração). Para suprimir esta mensagem, adicione set(VCPKG_POLICY_SKIP_PKGCONFIG_CHECK enabled)", + "PortBugMissingCMakeHelperPortFile": "O arquivo ${{CURRENT_PACKAGES_DIR}}/share/${{PORT}}/vcpkg-port-config.cmake não existe. Esse arquivo deve existir para portas auxiliares do CMake. Para suprimir esta mensagem, remova set(VCPKG_POLICY_CMAKE_HELPER_PORT enabled)", "PortBugMissingDebugBinaries": "Binários de depuração não encontrados.", - "PortBugMissingFile": "O arquivo /{path} não existe. Esse arquivo deve existir em portas auxiliares do CMake.", - "PortBugMissingImportedLibs": "Bibliotecas de importação não estavam presentes em {path}.\nSe isso for desejado, adicione a seguinte linha no portfile:\nset(VCPKG_POLICY_DLLS_WITHOUT_LIBS enabled)", - "PortBugMissingIncludeDir": "A pasta /include está vazia ou não está presente. Isso indica que a biblioteca não foi instalada corretamente.", - "PortBugMissingLicense": "A licença de software deve estar disponível em ${{CURRENT_PACKAGES_DIR}}/share/{package_name}/copyright", - "PortBugMissingProvidedUsage": "A porta forneceu \"uso\", mas não instalou em /share/{package_name}/usage, adicione a seguinte linha no arquivo de porta:", + "PortBugMissingImportedLibs": "As bibliotecas de importação para DLLs instaladas parecem estar ausentes. Se isso for intencional, adicione set(VCPKG_POLICY_DLLS_WITHOUT_LIBS enabled)", + "PortBugMissingIncludeDir": "A pasta ${{CURRENT_PACKAGES_DIR}}/include está vazia ou não está presente. Isso geralmente significa que os cabeçalhos não estão instalados corretamente. Se esta for uma porta auxiliar do CMake, adicione set(VCPKG_POLICY_CMAKE_HELPER_PORT enabled). Se essa não for uma porta auxiliar do CMake, mas isso for intencional, adicione set(VCPKG_POLICY_EMPTY_INCLUDE_FOLDER enabled) para suprimir essa mensagem.", + "PortBugMissingLicense": "a licença não está instalada em ${{CURRENT_PACKAGES_DIR}}/share/${{PORT}}/copyright. Isso pode ser corrigido adicionando uma chamada para vcpkg_install_copyright. Para suprimir esta mensagem, adicione set(VCPKG_POLICY_SKIP_COPYRIGHT_CHECK enabled)", + "PortBugMissingLicenseFixIt": "Considere adicionar: {value}", + "PortBugMissingProvidedUsage": "esta porta contém um arquivo chamado \"uso\", mas não o instalou em ${{CURRENT_PACKAGES_DIR}}/share/${{PORT}}/usage. Se esse arquivo não se destina a ser texto de uso, considere escolher outro nome; caso contrário, instale-o. Para suprimir esta mensagem, adicione set(VCPKG_POLICY_SKIP_USAGE_INSTALL_CHECK enabled)", "PortBugMissingReleaseBinaries": "Binários de lançamento não encontrados.", "PortBugMovePkgConfigFiles": "Você pode mover os arquivos pkgconfig com comandos semelhantes a:", - "PortBugOutdatedCRT": "Um CRT dinâmico desatualizado foi detectado nos seguintes arquivos:", - "PortBugRemoveBinDir": "Se a criação de bin\\ e/ou debug\\bin\\ não puder ser desabilitada, use-a no portfile para removê-las", - "PortBugRemoveEmptyDirectories": "Se um diretório deve ser preenchido, mas não está, isso pode indicar um erro no portfile.\nSe os diretórios não forem necessários e sua criação não puder ser desabilitada, use algo assim no portfile para removê-los:", + "PortBugOutdatedCRT": "DLLs que se vinculam a DLLs obsoletas do Runtime C (\"CRT\") foram instaladas. As DLLs instaladas devem se vincular a um CRT com suporte. Você pode inspecionar as dependências de uma DLL com “dumpbin.exe /dependents mylibfile.dll”. Se você estiver usando um tripleto personalizado direcionado a um CRT antigo, adicione set(VCPKG_POLICY_ALLOW_OBSOLETE_MSVCRT enabled) ao arquivo .cmake do tripleto. Para suprimir esta mensagem para esta porta, adicione set(VCPKG_POLICY_ALLOW_OBSOLETE_MSVCRT enabled)", + "PortBugRemoveBinDir": "se a criação desses diretórios não puder ser desabilitada, você poderá adicionar o seguinte em portfile.cmake para removê-los", "PortBugRemoveEmptyDirs": "file(REMOVE_RECURSE diretórios vazios deixados pelas renomeações acima)", - "PortBugRestrictedHeaderPaths": "Os cabeçalhos restritos a seguir podem impedir que o runtime principal do C++ e outros pacotes sejam compilados corretamente. Em circunstâncias excepcionais, essa política pode ser desabilitada definindo a variável CMake VCPKG_POLICY_ALLOW_RESTRICTED_HEADERS em portfile.cmake.", - "PortBugSetDllsWithoutExports": "DLLs sem nenhuma exportação provavelmente são um bug no script de build. Se isso for desejado, adicione a seguinte linha no portfile:\nset(VCPKG_POLICY_DLLS_WITHOUT_EXPORTS enabled)\nAs seguintes DLLs não têm exportações:", + "PortBugRestrictedHeaderPaths": "Os cabeçalhos restritos a seguir podem impedir que o runtime C++ principal e outros pacotes sejam compilados corretamente. Eles devem ser renomeados ou armazenados em um subdiretório. Em circunstâncias excepcionais, esse aviso pode ser suprimido adicionando set(VCPKG_POLICY_ALLOW_RESTRICTED_HEADERS enabled)", + "PortBugRestrictedHeaderPathsNote": "os cabeçalhos são relativos a ${{CURRENT_PACKAGES_DIR}}/include aqui", + "PortBugSetDllsWithoutExports": "as DLLs a seguir foram criadas sem nenhuma exportação. DLLs sem exportações são provavelmente bugs no script do build. Se isso for intencional, adicione set(VCPKG_POLICY_DLLS_WITHOUT_EXPORTS enabled)", + "PortDeclaredHere": "{package_name} está declarado aqui", "PortDependencyConflict": "A porta {package_name} tem as seguintes dependências sem suporte:", "PortDoesNotExist": "{package_name} não existe", "PortMissingManifest2": "{package_name} manifesto de porta ausente (nenhum arquivo vcpkg.json ou CONTROL)", @@ -932,7 +910,6 @@ "PortVersionControlMustBeANonNegativeInteger": "\"Port-Version\" deve ser um inteiro não negativo", "PortVersionMultipleSpecification": "\"port_version\" não pode ser combinado com um \"#\" inserido na versão", "PortsAdded": "As seguintes {count} portas foram adicionadas:", - "PortsDiffHelp": "O argumento deve ser um branch/tag/hash para checkout.", "PortsNoDiff": "Não houve alterações nas portas entre as duas confirmações.", "PortsRemoved": "As seguintes {count} portas foram removidas:", "PortsUpdated": "As seguintes portas {count} foram atualizadas:", @@ -957,7 +934,6 @@ "RestoredPackagesFromNuGet": "{count} pacote(s) restaurado(s) do NuGet em {elapsed}. Use --debug para ver mais detalhes.", "ResultsHeader": "RESULTADOS", "ScriptAssetCacheRequiresScript": "argumentos esperados: a configuração do ativo 'x-script' requer exatamente o modelo exec como um argumento", - "SearchHelp": "O argumento deve ser uma substring para pesquisar ou nenhum argumento para exibir todas as bibliotecas.", "SecretBanner": "*** SEGREDO ***", "SeeURL": "Consulte {url} para obter mais informações.", "SerializedBinParagraphHeader": "\nParágrafo Binário Serializado", @@ -966,6 +942,7 @@ "ShaPassedWithConflict": "SHA512 foi aprovado, mas --skip-sha512 também foi aprovado; só fazer um ou outro.", "ShallowRepositoryDetected": "O vcpkg foi clonado como um repositório superficial em: {path} \n Tente novamente com um clone completo do vcpkg.", "SkipClearingInvalidDir": "Ignorando a limpeza do conteúdo de {path} porque ele não era um diretório.", + "SkippingPostBuildValidationDueTo": "Ignorando a validação pós-build devido a {cmake_var}", "SourceFieldPortNameMismatch": "O campo “Fonte” dentro do arquivo CONTROLE, ou o campo “nome” dentro do arquivo vcpkg.json tem o nome {package_name} e não corresponde ao diretório da porta \"{path}\".", "SpecifiedFeatureTurnedOff": "O recurso '{command_name}' foi especificamente desativado, mas --{option} foi especificado.", "SpecifyHostArch": "Tripleto do host. Consulte 'vcpkg help triplet' (padrão: {env_var})", @@ -973,10 +950,8 @@ "StartCodeUnitInContinue": "unidade de código inicial encontrada na posição continuar", "StoreOptionMissingSha": "--store opção é inválida sem um sha512", "StoredBinariesToDestinations": "Binários armazenados em {count} destinos em {elapsed}.", - "StoredBinaryCache": "Cache binário armazenado: \"{path}\"", "SuccessfulyExported": "Exportou {package_name} para {path}", "SuggestGitPull": "O resultado pode estar desatualizado. Execute `git pull` para obter os resultados mais recentes.", - "SuggestResolution": "Para tentar resolver todos os erros de uma vez, execute:\nvcpkg {command_name} --{option}", "SuggestStartingBashShell": "Verifique se você iniciou um novo shell de bash para que a alteração entre em vigor.", "SupportedPort": "Há suporte para a porta {package_name}.", "SwitchUsedMultipleTimes": "a opção “{option}” foi especificada várias vezes", @@ -1004,7 +979,6 @@ "UnexpectedByteSize": "Esperado {expected} bytes a serem gravados, mas {real} foram gravados.", "UnexpectedCharExpectedCloseBrace": "Caráter inesperado; propriedade esperada ou chave fechada", "UnexpectedCharExpectedColon": "Caráter inesperado; dois pontos esperados", - "UnexpectedCharExpectedComma": "Caráter inesperado; vírgula esperada ou chave fechada", "UnexpectedCharExpectedName": "Caráter inesperado; nome da propriedade esperada", "UnexpectedCharExpectedValue": "Caráter inesperado; valor esperado", "UnexpectedCharMidArray": "Caractere inesperado no meio da matriz", @@ -1023,26 +997,21 @@ "UnexpectedEOFMidKeyword": "EOF inesperado no meio da palavra-chave", "UnexpectedEOFMidString": "EOF inesperado no meio da string", "UnexpectedEOFMidUnicodeEscape": "Fim inesperado do arquivo no meio do escape unicode", - "UnexpectedErrorDuringBulkDownload": "ocorreu um erro inesperado durante o download em massa.", "UnexpectedEscapeSequence": "Continuação inesperada da sequência de escape", - "UnexpectedExtension": "Extensão de arquivo morto inesperada: \"{extension}\".", - "UnexpectedFeatureList": "lista inesperada de recursos", "UnexpectedField": "campo inesperado '{json_field}'", "UnexpectedFieldSuggest": "campo inesperado '{json_field}', você quis dizer '{value}'?", "UnexpectedFormat": "O formato esperado é [{expected}], mas foi [{actual}].", "UnexpectedOption": "opção inesperada: {option}", - "UnexpectedPlatformExpression": "expressão de plataforma inesperada", "UnexpectedPortName": "a porta {esperada} é declarada como {actual} em {path}", "UnexpectedPortversion": "\"port-version\" inesperado sem um campo de controle de versão", "UnexpectedSwitch": "opção inesperada: {option}", "UnexpectedToolOutput": "{tool_name} ({path}) produziu uma saída inesperada ao tentar determinar a versão:", "UnexpectedWindowsArchitecture": "arquitetura inesperada do host do Windows: {actual}", "UnknownBaselineFileContent": "entrada de linha de base irreconhecível; esperado 'porta: tripleto=(fail|skip|pass)'", - "UnknownBinaryProviderType": "tipo de provedor binário desconhecido: os provedores válidos são 'clear', 'default', 'nuget', 'nugetconfig','nugettimeout', 'interactive', 'x-azblob', 'x-gcs', 'x-aws', 'x-aws-config', 'http' e 'files'", + "UnknownBinaryProviderType": "tipo de provedor binário desconhecido: os provedores válidos são \"clear\", \"default\", \"nuget\", \"nugetconfig\", \"nugettimeout\", \"interactive\", \"x-azblob\", \"x-gcs\", \"x-aws\", \"x-aws-config\", \"http\" e \"files\".", "UnknownBooleanSetting": "configuração booleana desconhecida para {option}: \"{value}\". Os valores válidos são '', '1', '0', 'ON', 'OFF', 'TRUE' e 'FALSE'.", - "UnknownOptions": "Opções desconhecidas para o comando '{command_name}':", "UnknownParameterForIntegrate": "Parâmetro desconhecido \"{value}\" para integração.", - "UnknownPolicySetting": "Configuração desconhecida para a política '{value}': {option}", + "UnknownPolicySetting": "Configuração desconhecida de {cmake_var}: {value}. Os valores de política válidos são '', “disabled” e “enabled”.", "UnknownSettingForBuildType": "Configuração desconhecida para VCPKG_BUILD_TYPE {option}. As configurações válidas são '', 'debug' e 'release'.", "UnknownTool": "vcpkg não possui uma definição desta ferramenta para esta plataforma.", "UnknownTopic": "tópico desconhecido {value}", @@ -1054,7 +1023,6 @@ "UnsupportedFeatureSupportsExpressionWarning": "{feature_spec} só tem suporte em '{supports_expression}', que não corresponde a {triplet}. Isso geralmente significa que há falhas de build conhecidas ou problemas de runtime ao compilar outras plataformas. Continuando mesmo assim devido a `--allow-unsupported`.", "UnsupportedPort": "Não há suporte para a porta {package_name}.", "UnsupportedPortDependency": "- não há suporte para a dependência {value}.", - "UnsupportedShortOptions": "não há suporte para opções curtas: '{value}'", "UnsupportedSyntaxInCDATA": "]]> não há suporte no bloco CDATA", "UnsupportedSystemName": "Não foi possível mapear VCPKG_CMAKE_SYSTEM_NAME '{system_name}' para uma plataforma vcvarsall. Os nomes de sistema suportados são '', 'Windows' e 'WindowsStore'.", "UnsupportedToolchain": "no triplo {triplet}: não é possível encontrar uma cadeia de ferramentas válida para a arquitetura de destino solicitada {arch}.\nA instância do Visual Studio selecionada está em: {path}\nAs combinações da cadeia de ferramentas disponíveis são: {list}", @@ -1068,21 +1036,18 @@ "UpdateBaselineUpdatedBaseline": "registro atualizado '{url}': linha de base '{old_value}' -> '{new_value}'", "UpgradeInManifest": "A atualização atualiza uma instalação no modo clássico e, portanto, não oferece suporte ao modo manifesto. Considere atualizar suas dependências atualizando sua linha de base para um valor atual com vcpkg x-update-baseline e executando a instalação vcpkg.", "UpgradeRunWithNoDryRun": "Se você tiver certeza de que deseja reconstruir os pacotes acima, execute este comando com a opção --no-dry-run.", - "UploadedBinaries": "Binários carregados para {count} {vendor}.", - "UploadedPackagesToVendor": "{count} pacote(s) carregado(s) para {vendor} em {elapsed}", "UploadingBinariesToVendor": "Carregando binários de \"{spec}\" para o \"{vendor}\" na origem \"{path}\".", - "UploadingBinariesUsingVendor": "Carregando binários para \"{spec}\" usando o \"{vendor}\" \"{path}\"", + "UsageInstallInstructions": "você pode instalar o arquivo de uso com o CMake a seguir", + "UsageTextHere": "o arquivo de uso está aqui", "UseEnvVar": "-- Usando {env_var} nas variáveis de ambiente.", "UserWideIntegrationDeleted": "A integração para todo o usuário não está instalada.", "UserWideIntegrationRemoved": "A integração de todo o usuário foi removida.", - "UsingCommunityTriplet": "-- Usando o triplet da comunidade {triplet}. Essa configuração triplet não tem garantia de êxito.", "UsingManifestAt": "Usando o arquivo de manifesto em {path}.", "Utf8ConversionFailed": "Falha ao converter para UTF-8", "VSExaminedInstances": "As seguintes instâncias do Visual Studio foram consideradas:", "VSExaminedPaths": "Os seguintes caminhos foram examinados para as instâncias do Visual Studio:", "VSNoInstances": "Não foi possível localizar uma instância completa do Visual Studio", "VcpkgCeIsExperimental": "vcpkg-artifacts é experimental e pode mudar a qualquer momento.", - "VcpkgCommitTableHeader": "Confirmação de VCPKG", "VcpkgCompletion": "a conclusão do vcpkg {value} já foi importada para o arquivo \"{path}\".\nAs seguintes entradas foram encontradas:", "VcpkgDisallowedClassicMode": "Não foi possível localizar um manifesto (vcpkg.json) acima do diretório de trabalho atual.\nEsta distribuição vcpkg não tem uma instância de modo clássico.", "VcpkgHasCrashed": "o vcpkg falhou. Crie um problema em https://github.com/microsoft/vcpkg contendo um breve resumo do que você estava tentando fazer e as informações a seguir.", @@ -1095,17 +1060,22 @@ "VcpkgUsage": "usage: vcpkg [--switches] [--options=values] [argumentos] @response_file", "VcvarsRunFailed": "falha ao executar vcvarsall.bat para obter um ambiente do Visual Studio", "VcvarsRunFailedExitCode": "ao tentar obter um ambiente do Visual Studio, vcvarsall.bat retornou {exit_code}", - "VersionBaselineMismatch": "A versão mais recente é {esperada}, mas o arquivo de linha de base contém {real}.\nCorrer:\nvcpkg x-add-version {package_name}\ngit adicionar versões\ngit commit -m \"Atualizar versão do banco de dados\"\npara atualizar a versão da linha de base.", + "VersionBaselineMatch": "{version_spec} corresponde à linha de base atual", + "VersionBaselineMismatch": "{actual} foi atribuída ao {package_name}, mas a porta local é {expected}", "VersionBuiltinPortTreeEntryMissing": "nenhuma entrada de banco de dados de versão para {package_name} em {expected}; usando a versão da árvore de portas verificada ({actual}).", "VersionCommandHeader": "versão do programa de gerenciamento de pacotes vcpkg {version}\n\nConsulte LICENSE.txt para obter informações de licença.", "VersionConflictXML": "Versão {path} esperada: [{expected_version}], mas era [{actual_version}]. Execute bootstrap-vcpkg novamente.", + "VersionConstraintNotInDatabase1": "a restrição \"version>=\" para a versão {version} dos nomes do {package_name}, que não existe no banco de dados da versão. Todas as versões precisam existir no banco de dados da versão para serem interpretadas pelo vcpkg.", + "VersionConstraintNotInDatabase2": "pense em remover a restrição da versão ou em escolher um valor declarado aqui", + "VersionConstraintOk": "todas as restrições da versão são consistentes com o banco de dados da versão", "VersionConstraintPortVersionMustBePositiveInteger": "port-version (após o '#') em \"version>=\" deve ser um número inteiro não negativo", - "VersionConstraintUnresolvable": "Não é possível resolver uma restrição mínima para a dependência {package_name} de {spec}.\nA dependência não foi encontrada na linha de base, indicando que o pacote não existia naquele momento. Isso pode ser corrigido fornecendo uma versão de substituição explícita por meio do campo \"substituições\" ou atualizando a linha de base.\nConsulte `vcpkg help versioning` para mais informações.", "VersionConstraintViolated": "dependência {spec} deveria ser pelo menos a versão {expected_version}, mas atualmente é {actual_version}.", "VersionDatabaseEntryMissing": "nenhuma entrada de versão para {package_name} em {version}.", - "VersionDatabaseFileMissing": "{package_name} está faltando um arquivo de banco de dados de versão em {path}\nCorrer:\nvcpkg x-add-version {package_name}\npara criar o arquivo de versões.", + "VersionDatabaseFileMissing": "essa porta não está no banco de dados da versão", + "VersionDatabaseFileMissing2": "o arquivo de banco de dados da versão deve estar aqui", + "VersionDatabaseFileMissing3": "execute \"{command_line}\" para criar o arquivo do banco de dados da versão", "VersionGitEntryMissing": "nenhuma entrada de banco de dados de versão para {package_name} em {version}.\nVersões disponíveis:", - "VersionInDeclarationDoesNotMatch": "A versão declarada no arquivo não corresponde à versão verificada: {version}", + "VersionInDeclarationDoesNotMatch": "{git_tree_sha} está declarado como contendo {expected}, mas parece conter {actual}", "VersionIncomparable1": "conflito de versão em {spec}: {constraint_origin} exigiu {expected}, que não pode ser comparado com a versão de linha de base {actual}.", "VersionIncomparable2": "{version_spec} tem esquema {new_scheme}", "VersionIncomparable3": "Isso pode ser resolvido adicionando uma substituição explícita à versão preferencial. Por exemplo:", @@ -1117,17 +1087,29 @@ "VersionInvalidSemver": "`{version}` não é uma versão semântica válida, consulte .", "VersionMissing": "esperava um campo de controle de versão (uma versão, data da versão, semver de versão ou cadeia de caracteres de versão)", "VersionMissingRequiredFeature": "{version_spec} não tem o recurso obrigatório {feature} necessário para {constraint_origin}", - "VersionNotFound": "{expected} não disponível, apenas {actual} está disponível", - "VersionNotFoundInVersionsFile": "A versão {version} não foi encontrada no arquivo de versões para {package_name}.\nCorrer:\nvcpkg x-add-version {package_name}\npara adicionar a nova versão da porta.", + "VersionNotFoundInVersionsFile2": "{version_spec} não foi encontrada no banco de dados de versões", + "VersionNotFoundInVersionsFile3": "a versão deve estar nesse arquivo", + "VersionNotFoundInVersionsFile4": "execute \"{command_line}\" para adicionar a nova versão da porta", + "VersionOverrideNotInVersionDatabase": "a substituição da versão {package_name} não existe no banco de dados da versão; essa porta existe?", + "VersionOverrideVersionNotInVersionDatabase1": "a substituição da versão {version} dos nomes do {package_name}, que não existe no banco de dados da versão. A instalação dessa porta no nível superior irá falhar, já que essa versão não será resolvível.", + "VersionOverrideVersionNotInVersionDatabase2": "pense em remover a substituição da versão ou em escolher um valor declarado aqui", + "VersionOverwriteVersion": "você pode substituir {version_spec} pelos valores locais corretos executando o seguinte:", "VersionRejectedDueToBaselineMissing": "{path} foi rejeitado porque usa \"{json_field}\" e não tem uma \"linha de base incorporada\". Isso pode ser corrigido removendo os usos de \"{json_field}\" ou adicionando uma \"linha de base incorporada\".\nConsulte `vcpkg help versioning` para mais informações.", "VersionRejectedDueToFeatureFlagOff": "{path} foi rejeitado porque usa \"{json_field}\" e o sinalizador de recurso `versões` está desativado. Isso pode ser corrigido removendo \"{json_field}\" ou ativando o sinalizador de recurso `versões`.\nConsulte `vcpkg ajuda versionamento` para mais informações.", - "VersionSchemeMismatch": "O banco de dados de versão declara {version} como {expected}, mas {path} o declara como {actual}. As versões devem ser únicas, mesmo que sejam declaradas com esquemas diferentes.\nCorrer:\nvcpkg x-add-version {package_name} --overwrite-version\npara sobrescrever o esquema declarado no banco de dados da versão com o declarado na porta.", - "VersionShaMismatch": "{version} é declarado com {expected}, mas a porta local tem um SHA diferente {actual}.\nAtualize os campos de versão da porta e execute:\nvcpkg x-add-version {package_name}\ngit adicionar versões\ngit commit -m \"Atualizar versão do banco de dados\"\npara adicionar a nova versão.", - "VersionShaMissing": "ao validar {package_name}, falta Git SHA.\nCorrer:\ngit add \"{caminho}\"\ngit commit -m \"wip\"\nvcpkg x-add-version {package_name}\ngit adicionar versões\ngit commit --amend -m \"[{package_name}] Adicionar nova porta\"\npara confirmar a nova porta e criar seu arquivo de versão.", + "VersionSchemeMismatch1": "{version} está declarada como {expected}, mas o {package_name} está declarado com {actual}", + "VersionSchemeMismatch1Old": "{version} está declarada como {expected}, mas o {package_name}@{git_tree_sha} está declarado com {actual}", + "VersionSchemeMismatch2": "as versões devem ser exclusivas, mesmo que sejam declaradas com esquemas diferentes", + "VersionShaMismatch1": "a árvore do git {git_tree_sha} {version_spec} não corresponde ao diretório da porta", + "VersionShaMismatch2": "o diretório da porta tem a árvore do git {git_tree_sha}", + "VersionShaMismatch3": "se a {version_spec} já estiver publicada, atualize esse arquivo com uma nova versão ou versão de porta, faça o commit e adicione a nova versão executando o seguinte:", + "VersionShaMismatch4": "se a {version_spec} ainda não tiver sido publicada, substitua a árvore do git anterior executando o seguinte:", + "VersionShaMissing1": "não foi possível determinar a árvore do git do diretório da porta. Isso costuma ser causado por alterações sem commit.", + "VersionShaMissing2": "você pode fazer commit de suas alterações e adicioná-las ao banco de dados da versão executando:", + "VersionShaMissing3": "wip", + "VersionShaMissing4": "[{package_name}] Adicionar nova porta", "VersionSharpMustBeFollowedByPortVersion": "\"#\" no texto da versão deve ser seguido por uma versão de porta", "VersionSharpMustBeFollowedByPortVersionNonNegativeInteger": "\"#\" no texto da versão deve ser seguido por uma versão de porta (um inteiro não negativo)", "VersionSpecMismatch": "Falha ao carregar a porta porque as versões são inconsistentes. O arquivo \"{path}\" contém a versão {actual_version}, mas o banco de dados de versões indica que deve ser {expected_version}.", - "VersionTableHeader": "Versão", "VersionVerifiedOK": "{version_spec} está corretamente no banco de dados de versão ({git_tree_sha})", "WaitingForChildrenToExit": "Aguardando a saída dos processos filhos...", "WaitingToTakeFilesystemLock": "esperando para ativar o bloqueio do sistema de arquivos {path}...", @@ -1136,8 +1118,7 @@ "WhileCheckingOutBaseline": "ao fazer check-out da linha de base {commit_sha}", "WhileCheckingOutPortTreeIsh": "ao fazer check-out da porta {package_name} com a árvore git {commit_sha}", "WhileGettingLocalTreeIshObjectsForPorts": "ao obter objetos treeish locais para portas", - "WhileLoadingLocalPort": "ao tentar carregar a porta local {package_name}", - "WhileLoadingPortFromGitTree": "ao tentar carregar a porta de: {commit_sha}", + "WhileLoadingBaselineVersionForPort": "ao carregar a versão de linha de base para {package_name}", "WhileLoadingPortVersion": "ao carregar {version_spec}", "WhileLookingForSpec": "ao procurar {spec}:", "WhileParsingVersionsForPort": "ao analisar versões para {package_name} de {path}", @@ -1165,7 +1146,7 @@ "descriptionShouldBeOfTypestringFound$": "descrição deve ser do tipo 'string', encontrado '${p0}'", "optionsShouldBeASequenceFound$": "as opções devem ser uma sequência, encontradas '${p0}'", "DuplicateKeysDetectedInManifest$": "Chaves duplicadas detectadas no manifesto: '${p0}'", - "noPostscriptFileRerunWithTheVcpkgShellFunctionRatherThanExecutable": "nenhum arquivo postscript: execute novamente com a função shell vcpkg em vez do executável", + "noPostscriptFileRunVcpkgshellWithTheSameArguments": "nenhum arquivo postscript: execute vcpkg-shell com os mesmos argumentos", "DuplicateDefine$DuringActivationNewValueWillReplaceOld": "Duplicar definir ${p0} durante a ativação. O novo valor substituirá o antigo.", "DuplicateToolDeclared$DuringActivationNewValueWillReplaceOld": "Ferramenta duplicada declarada ${p0} durante a ativação. O novo valor substituirá o antigo.", "DuplicateAliasDeclared$DuringActivationNewValueWillReplaceOld": "Alias duplicado declarado ${p0} durante a ativação. O novo valor substituirá o antigo.", @@ -1257,7 +1238,7 @@ "MultipleArtifactsSpecifiedButNotAnEqualNumberOf$Switches": "Vários artefatos especificados, mas não um número igual de ${p0} comutadores", "TriedToAddAnArtifact$$ButCouldNotDetermineTheRegistryToUse": "Tentativa de adicionar um artefato [${p0}]:${p1}, mas não foi possível determinar o Registro a ser usado.", "TriedToAddRegistry$As$ButItWasAlready$PleaseAdd$ToThisProjectManuallyAndReattempt": "Tentou adicionar o registro ${p0} como ${p1}, mas ele já era ${p2}. Adicione ${p3} a este projeto manualmente e tente novamente.", - "RunvcpkgActivateToApplyToTheCurrentTerminal": "Execute \\'vcpkg activate\\' para aplicar ao terminal atual", + "RunvcpkgshellActivateToApplyToTheCurrentTerminal": "Execute \\'vcpkg-shell activate\\' para aplicar ao terminal atual", "DownloadsFolderCleared$": "Pasta de downloads desmarcada (${p0}) ", "InstalledArtifactFolderCleared$": "Pasta Artefato instalada desmarcada (${p0}) ", "CacheFolderCleared$": "Pasta de cache desmarcada (${p0}) ", diff --git a/locales/messages.ru.json b/locales/messages.ru.json index 07e795cf81..12f4b6c08f 100644 --- a/locales/messages.ru.json +++ b/locales/messages.ru.json @@ -46,7 +46,6 @@ "AVersionOfAnyType": "версия любого типа", "AddArtifactOnlyOne": "\"{command_line}\" может добавлять только один артефакт за раз.", "AddCommandFirstArg": "Первым добавляемым параметром должен быть \"артефакт\" или \"порт\".", - "AddFirstArgument": "Первым аргументом для \"{command_line}\" должен быть 'artifact' или 'port'.", "AddPortRequiresManifest": "\"{command_line}\" требуется активный файл манифеста.", "AddPortSucceeded": "Порты успешно добавлены в файл vcpkg.json.", "AddRecurseOption": "Если вы действительно хотите удалить их, выполните команду с параметром --recurse.", @@ -54,12 +53,11 @@ "AddVersionAddedVersionToFile": "добавлена версия {version} в {path}", "AddVersionArtifactsOnly": "--version содержит только артефакты и не может использоваться с портом добавления vcpkg", "AddVersionCommitChangesReminder": "Вы не забыли зафиксировать изменения?", - "AddVersionCommitResultReminder": "Не забудьте зафиксировать результат!", "AddVersionDetectLocalChangesError": "пропуск обнаружения локальных изменений из-за непредвиденного формата в выходных данных состояния git", "AddVersionFileNotFound": "не удалось найти необходимый файл {path}", "AddVersionFormatPortSuggestion": "Выполните \"{command_line}\", чтобы форматировать файл", "AddVersionIgnoringOptionAll": "пропуск --{option}, так как указан аргумент имени порта", - "AddVersionLoadPortFailed": "не удалось загрузить порт {package_name}", + "AddVersionInstructions": "для автоматического добавления текущей версии {package_name} можно выполнить следующие команды:", "AddVersionNewFile": "(новый файл)", "AddVersionNewShaIs": "новый SHA: {commit_sha}", "AddVersionNoFilesUpdated": "Файлы не были обновлены", @@ -70,8 +68,8 @@ "AddVersionPortFilesShaChanged": "зарегистрированные файлы для {package_name} изменились, но версия не обновлена", "AddVersionPortFilesShaUnchanged": "зарегистрированные файлы для {package_name} не изменялись с версии {version}", "AddVersionPortHasImproperFormat": "Неверный формат {package_name}", - "AddVersionSuggestNewVersionScheme": "Используйте схему версий \"{new_scheme}\", а не \"{old_scheme}\" в порте \"{package_name}\".\nЧтобы отключить эту проверку, используйте --{option}.", - "AddVersionUnableToParseVersionsFile": "не удалось проанализировать файл версий {path}", + "AddVersionSuggestVersionDate": "В формате версии \"{package_name}\" используется \"version-string\", но формат допустим в виде \"version-date\". Если этот формат на самом деле должен быть датой ISO 8601, измените формат на \"version-date\" и выполните эту команду повторно. В противном случае отключите эту проверку, выполнив команду повторно и добавив --skip-version-format-check.", + "AddVersionSuggestVersionRelaxed": "В формате версии \"{package_name}\" используется \"version-string\", но формат допустим в виде \"version\". Если версии для этого порта можно упорядочить с помощью правил с нестрогой версией, измените формат на \"version\" и выполните эту команду повторно. Правила с нестрогой версией упорядочивают версии по каждому числовому компоненту. Затем версии с пунктирными суффиксами сортируются лексикографически в начале. Теги сборок с плюсами игнорируются. Примеры:\n1.0 < 1.1-alpha < 1.1-b < 1.1 < 1.1.1 < 1.2+build = 1.2 < 2.0\nОбратите внимание, что пунктирные суффиксы сортируются *в начале*, а не в конце. 1.0-anything < 1.0\nОбратите внимание, что этот порядок сортировки совпадает с выбранным в семантическом версионировании (см. страницу https://semver.org), хотя фактически семантические части не применяются.\nЕсли версии для этого порта не упорядочиваются этими правилами, отключите эту проверку, повторно выполнив эту команду и добавив параметр --skip-version-format-check.", "AddVersionUncommittedChanges": "для {package_name} есть незафиксированные изменения", "AddVersionUpdateVersionReminder": "Вы не забыли обновить версию или версию порта?", "AddVersionUseOptionAll": "Чтобы одновременно обновить все версии портов, для {command_name} без аргументов требуется передача параметра --{option}", @@ -82,7 +80,7 @@ "AdditionalPackagesToRemove": "Требуется удалить дополнительные пакеты (*) для завершения этой операции.", "AllFormatArgsRawArgument": "строка формата \"{value}\" содержит необработанный аргумент формата", "AllFormatArgsUnbalancedBraces": "несбалансированная фигурная скобка в строке формата \"{value}\"", - "AllPackagesAreUpdated": "Все установленные пакеты обновлены с локальным профилем.", + "AllPackagesAreUpdated": "Все установленные пакеты актуальны.", "AlreadyInstalled": "Уже установлено: {spec}", "AlreadyInstalledNotHead": "{spec} уже установлено -- сборка не выполняется из HEAD", "AmbiguousConfigDeleteConfigFile": "Неоднозначная конфигурация vcpkg, указанная как в манифесте, так и в файле конфигурации.\n-- Удалить {path} файла конфигурации", @@ -110,7 +108,6 @@ "ApplocalProcessing": "развертывание зависимостей", "ArtifactsBootstrapFailed": "vcpkg-артефакты не установлены и не могут использоваться для начальной загрузки.", "ArtifactsNotInstalledReadonlyRoot": "vcpkg-артефакты не установлены, и их невозможно установить, так как предполагается, что VCPKG_ROOT доступен только для чтения. Переустановка vcpkg с помощью \"one liner\" может устранить эту проблему.", - "ArtifactsNotOfficialWarning": "Использование vcpkg-артефактов с неофициальной версией ", "ArtifactsOptionIncompatibility": "--{option} не влияет на поиск артефакта.", "ArtifactsOptionJson": "Полный путь к файлу JSON, в котором записаны переменные среды и другие свойства", "ArtifactsOptionMSBuildProps": "Полный путь к файлу, в который будут записаны свойства MSBuild", @@ -118,12 +115,10 @@ "ArtifactsOptionVersionMismatch": "Число переключателей --version должно соответствовать числу именованных артефактов", "ArtifactsSwitchARM": "Принудительно обнаруживает узел для ARM при получении артефактов", "ArtifactsSwitchARM64": "Принудительно обнаруживает узел на ARM64 при получении артефактов", - "ArtifactsSwitchAll": "Обновляет все известные реестры артефактов", "ArtifactsSwitchAllLanguages": "Получает все языковые файлы при получении артефактов", "ArtifactsSwitchForce": "Принудительно запускает повторное получение, если артефакт уже получен", "ArtifactsSwitchFreebsd": "Принудительно обнаруживает узел для FreeBSD при получении артефактов", "ArtifactsSwitchLinux": "Принудительно обнаруживает узел в Linux при получении артефактов", - "ArtifactsSwitchNormalize": "Применяет все исправления нерекомендуемых элементов", "ArtifactsSwitchOnlyOneHostPlatform": "Можно установить только одну платформу узла (--x64, --x86, --arm, --arm64).", "ArtifactsSwitchOnlyOneOperatingSystem": "Можно установить только одну операционную систему (--windows, --osx, --linux, --freebsd).", "ArtifactsSwitchOnlyOneTargetPlatform": "Можно установить только одну целевую платформу (--target:x64, --target:x86, --target:arm, --target:arm64).", @@ -135,9 +130,12 @@ "ArtifactsSwitchWindows": "Принудительно обнаруживает узел в Windows при получении артефактов", "ArtifactsSwitchX64": "Принудительно обнаруживает узел в x64 при получении артефактов", "ArtifactsSwitchX86": "Принудительно обнаруживает узел на x86 при получении артефактов", + "AssetCacheHit": "Попадание в кэше для ресурса по пути {path}; скачано с адреса {url}.", + "AssetCacheMiss": "Промах кэша для ресурса; выполняется скачивание с адреса {url}.", + "AssetCacheMissBlockOrigin": "Промах кэша для ресурса по пути {path}, и загрузки заблокированы x-block-origin.", "AssetCacheProviderAcceptsNoArguments": "непредвиденные аргументы: \"{value}\" не принимает аргументы", + "AssetCacheSuccesfullyStored": "Путь {path} для URL-адреса {url} сохранен.", "AssetSourcesArg": "Источники для кэширования ресурсов. См. \"vcpkg help assetcaching\"", - "AttemptingToFetchPackagesFromVendor": "Попытка получить {count} пакетов от {vendor}", "AttemptingToSetBuiltInBaseline": "попытка задать встроенный базовый план в vcpkg.json при переопределения default-registry в vcpkg-configuration.json.\nБудет использоваться default-registry из vcpkg-configuration.json.", "AuthenticationMayRequireManualAction": "Один или несколько поставщиков учетных данных {vendor} запросили действие вручную. Добавьте двоичный источник «интерактивный», чтобы обеспечить интерактивность.", "AutoSettingEnvVar": "-- Автоматическая установка переменных среды {env_var} в \"{url}\".", @@ -147,12 +145,11 @@ "AzUrlAssetCacheRequiresBaseUrl": "непредвиденные аргументы: для конфигурации ресурса \"azurl\" требуется базовый URL-адрес", "AzUrlAssetCacheRequiresLessThanFour": "непредвиденные аргументы: для конфигурации ресурса \"azurl\" требуется менее 4 аргументов", "BaselineConflict": "Указание vcpkg-configuration.default-registry в файле манифеста конфликтует со встроенным базовым планом.\nУдалите один из этих конфликтующих параметров.", - "BaselineFileNoDefaultField": "Базовый файл при фиксации {commit_sha} был недопустимым (нет поля \"по умолчанию\").", "BaselineGitShowFailed": "при проверке базовых показателей из фиксации \"{commit_sha}\" не удалось \"git show\" versions/baseline.json. Это можно исправить путем получения фиксаций с помощью \"git fetch\".", - "BaselineMissing": "Базовая версия не найдена. Запустите:\nvcpkg x-add-version {package_name}\ngit add versions\ngit commit -m \"Update version database\",\nчтобы установить {version} в качестве базовой версии.", - "BinaryCacheVendorHTTP": "HTTP-серверы", + "BaselineMissing": "Для {package_name} не назначена версия", + "BinariesRelativeToThePackageDirectoryHere": "двоичные файлы здесь относятся к ${{CURRENT_PACKAGES_DIR}}", "BinarySourcesArg": "Источники для двоичного кэширования. См. \"vcpkg help binarycaching\"", - "BinaryWithInvalidArchitecture": "{path}\n Ожидалась архитектура {expected}, а была {actual}", + "BinaryWithInvalidArchitecture": "{path} создан для {arch}", "BuildAlreadyInstalled": "{spec} — уже установлено. Удалите {spec}, прежде чем выполнять сборку.", "BuildDependenciesMissing": "Для команды сборки необходимо установить все зависимости.\nОтсутствуют следующие зависимости:", "BuildResultBuildFailed": "BUILD_FAILED", @@ -170,22 +167,19 @@ "BuildTroubleshootingMessage1": "Используйте последние файлы портов с \"git pull\" и \"vcpkg update\".\nЗатем проверьте наличие известных проблем в:", "BuildTroubleshootingMessage2": "Вы можете отправить новую проблему в:", "BuildTroubleshootingMessage3": "Добавьте \"Ошибка сборки [{package_name}]\" в название отчета об ошибке, следующие сведения о версии в описании ошибки и вложите любые релевантные журналы ошибок из раздела выше.", - "BuildTroubleshootingMessage4": "Используйте предварительно заполненный шаблон из {path} при отправке сообщения о проблеме.", "BuildTroubleshootingMessageGH": "Вы также можете отправить проблему с помощью запуска (необходимо установить интерфейс командной строки GitHub):", "BuildingFromHead": "Сборка {spec} из HEAD...", "BuildingPackage": "Сборка {spec}...", "BuildingPackageFailed": "сбой {spec} при построении: {build_result}", "BuildingPackageFailedDueToMissingDeps": "из-за следующих отсутствующих зависимостей:", "BuiltInTriplets": "Встроенные триплеты:", - "BuiltWithIncorrectArchitecture": "Следующие файлы были созданы для неправильной архитектуры:", - "CISettingsExclude": "Список разделенных запятыми портов, которые нужно пропустить", + "BuiltWithIncorrectArchitecture": "Триплет запрашивает создание двоичных файлов для {arch}, но следующие двоичные файлы созданы для другой архитектуры. Обычно это означает, что сведения о наборе инструментов неправильно передаются в систему сборки двоичных файлов. Чтобы скрыть это сообщение, добавьте set(VCPKG_POLICY_SKIP_ARCHITECTURE_CHECK enabled)", "CISettingsOptCIBase": "Путь к файлу ci.baseline.txt. Используется для пропуска портов и обнаружения регрессий.", "CISettingsOptExclude": "Список разделенных запятой портов, которые нужно пропустить", "CISettingsOptFailureLogs": "Каталог, в который будут скопированы журналы сбоев", "CISettingsOptHostExclude": "Разделенный запятыми список портов, которые нужно пропустить для триплета узла", "CISettingsOptOutputHashes": "Файл для вывода всех определенных хэшей пакетов", "CISettingsOptParentHashes": "Чтение файлов хэшей пакетов для родительского состояния CI для уменьшения набора измененных пакетов.", - "CISettingsOptSkippedCascadeCount": "Указывает, что число параметров --exclude и supports в точности равно этому числу", "CISettingsOptXUnit": "Файл для вывода результатов в формате XUnit", "CISettingsVerifyGitTree": "Проверяет, соответствует ли каждый объект дерева git объявленной версии (это очень медленно)", "CISettingsVerifyVersion": "Печатает результат для каждого порта, а не только для ошибок", @@ -200,8 +194,6 @@ "CMakeTargetsUsageHeuristicMessage": "# этот элемент создан эвристически и может быть неверным", "CMakeToolChainFile": "В проектах CMake следует использовать: \"-DCMAKE_TOOLCHAIN_FILE={path}\"", "CMakeUsingExportedLibs": "Чтобы использовать экспортированные библиотеки в проектах CMake, добавьте {value} в командную строку CMake.", - "CheckedOutGitSha": "Извлеченный Git SHA: {commit_sha}", - "CheckedOutObjectMissingManifest": "Извлеченный объект не содержит файла CONTROL или файла vcpkg.json.", "ChecksFailedCheck": "сбой vcpkg; дополнительные сведения недоступны.", "ChecksUnreachableCode": "достигнут недостижимый код", "ChecksUpdateVcpkg": "обновление vcpkg путем повторного запуска bootstrap-vcpkg может устранить этот сбой.", @@ -235,14 +227,11 @@ "CmdBuildExternalExample2": "vcpkg build-external zlib2 C:\\путь\\к\\каталогу\\с\\vcpkg.json", "CmdBuildExternalSynopsis": "Выполняет сборку порта из пути", "CmdBuildSynopsis": "Собирает порт", - "CmdCacheExample1": "vcpkg cache ", - "CmdCacheSynopsis": "Список спецификаций пакетов", "CmdCheckSupportExample1": "vcpkg x-check-support ", "CmdCheckSupportSynopsis": "Проверяет, поддерживается ли порт, без его сборки.", "CmdCiCleanSynopsis": "Очищает все файлы для подготовки к запуску CI.", "CmdCiSynopsis": "Пытается собрать все порты для CI-тестирования.", "CmdCiVerifyVersionsSynopsis": "Проверяет целостность базы данных версий", - "CmdContactOptSurvey": "Запуск браузера по умолчанию для текущего опроса VCPKG", "CmdCreateExample1": "vcpkg create ", "CmdCreateExample2": "vcpkg create my-fancy-port https://example.com/sources.zip", "CmdCreateExample3": "vcpkg create ", @@ -265,7 +254,7 @@ "CmdEditOptBuildTrees": "Открывает редактор во вложенной папке buildtree для конкретного порта.", "CmdEnvOptions": "Добавляет установленный {path} в {env_var}", "CmdExportEmptyPlan": "Отказ от создания экспорта нулевых пакетов. Установите пакеты перед экспортом.", - "CmdExportExample1": "vcpkg export [--nuget] [--directory=out_dir]", + "CmdExportExample1": "vcpkg export <имена портов> [--nuget] [--output-dir=out_dir]", "CmdExportOpt7Zip": "Экспортирует в файл 7zip (.7z)", "CmdExportOptChocolatey": "Экспортирует в пакет Chocolatey (экспериментальная функция)", "CmdExportOptDebug": "Включает отладку prefab", @@ -376,8 +365,10 @@ "CmdZExtractExample2": "vcpkg z-extract источник.zip исходный_каталог --strip 2", "CmdZExtractOptStrip": "Количество начальных каталогов, которые нужно удалить из всех путей", "CommandEnvExample2": "vcpkg env \"ninja -C <путь>\" --triplet x64-windows", - "CommandFailed": "команда:\n{command_line}\nсбой со следующими результатами:", + "CommandFailed": "следующую команду:\n{command_line}\nвыполнить не удалось. Выдано сообщение об ошибке:", + "CommandFailedCode": "следующую команду:\n{command_line}\nвыполнить не удалось. Возвращен код выхода {exit_code} и следующее сообщение:", "CommunityTriplets": "Триплеты сообщества:", + "CompilerPath": "Найден компилятор: {path}", "CompressFolderFailed": "Сбой сжатия папки \"{path}\":", "ComputingInstallPlan": "Вычисление плана установки...", "ConfigurationErrorRegistriesWithoutBaseline": "Конфигурация, определенная в {path}, недопустима..\n\nПри использовании реестров необходимо, чтобы для стандартного реестра были настроены базовые показатели или чтобы стандартному реестру было присвоено значение NULL.\n\nДополнительные сведения: {url}.", @@ -386,11 +377,10 @@ "ConsideredVersions": "Следующие исполняемые файлы были рассмотрены, но отклонены из-за требования версии {version}:", "ConstraintViolation": "Обнаружено нарушение ограничения:", "ContinueCodeUnitInStart": "найдена единица кода продолжения в начальной позиции", - "ControlAndManifestFilesPresent": "Файл манифеста и файл CONTROL существуют в каталоге порта: {path}", "ControlCharacterInString": "Управляющий символ в строке", "ControlSupportsMustBeAPlatformExpression": "\"Supports\" должно быть выражением платформы", - "CopyrightIsDir": "\"{path}\", являющийся каталогом, не рекомендуется.", - "CorruptedDatabase": "База данных повреждена.", + "CopyrightIsDir": "этот порт устанавливает ${{CURRENT_PACKAGES_DIR}}/share/${{PORT}}/copyright в каталог, но это должно быть файлом. Рассмотрите возможность объединения отдельных файлов об авторских правах в один с помощью vcpkg_install_copyright. Чтобы скрыть это сообщение, добавьте set(VCPKG_POLICY_SKIP_COPYRIGHT_CHECK enabled)", + "CorruptedDatabase": "База данных установки vcpkg повреждена. Это может объясняться дефектом в vcpkg или непредвиденным изменением содержимого каталога \"installed\". Проблему можно устранить, удалив каталог \"installed\" и переустановив нужные компоненты. Если проблема возникает постоянно, зарегистрируйте дефект на https://github.com/microsoft/vcpkg.", "CorruptedInstallTree": "Дерево vcpkg \"installed\" повреждено.", "CouldNotDeduceNugetIdAndVersion": "Не удалось определить идентификатор nuget и версию по имени файла: {path}", "CouldNotFindBaselineInCommit": "Не удалось найти базовый показатель в ссылке {url} в {commit_sha} для {package_name}.", @@ -403,14 +393,12 @@ "CreatingNugetPackage": "Создание пакета NuGet...", "CreatingZipArchive": "Создание архива Zip...", "CreationFailed": "Не удалось создать {path}.", - "CurlFailedToExecute": "curl не удалось выполнить с кодом выхода {exit_code}.", "CurlFailedToPut": "curl не удалось поместить файл в {url} с кодом завершения {exit_code}.", "CurlFailedToPutHttp": "curl не удалось поместить файл в {url} с кодом завершения {exit_code} и HTTP-кодом {value}.", - "CurlReportedUnexpectedResults": "Служба curl сообщила о неожиданных результатах для vcpkg и что vcpkg не может продолжить работу.\nПожалуйста, обратитесь к следующему тексту для получения конфиденциальной информации и откройте на GitHub Microsoft/vcpkg проблему, чтобы решить этот вопрос!\n: {command_line}\n=== curl output ===\n{actual}\n=== end curl output ===", - "CurlReturnedUnexpectedResponseCodes": "curl вернул другое количество кодов ответа, чем ожидалось для данного запроса ({фактический} против ожидаемого {ожидаемого}).", + "CurlResponseTruncatedRetrying": "Вызов curl возвратил частичный ответ; через {value} миллисекунд попытка будет повторена", + "CurlTimeout": "Вызову curl не удалось выполнить все запрашиваемые операции HTTP даже после ожидания и повторного выполнения. Последняя командная строка: {command_line}", "CurrentCommitBaseline": "Текущую фиксацию можно использовать в качестве базового плана, а именно:\n\t\"builtin-baseline\": \"{commit_sha}\"", "CycleDetectedDuring": "обнаружен цикл во время {spec}:", - "DateTableHeader": "Дата", "DefaultBinaryCachePlatformCacheRequiresAbsolutePath": "Переменная среды VCPKG_DEFAULT_BINARY_CACHE должна быть каталогом (было: {path})", "DefaultBinaryCacheRequiresAbsolutePath": "Значение переменной среды VCPKG_DEFAULT_BINARY_CACHE должно быть абсолютным (было: {path})", "DefaultBinaryCacheRequiresDirectory": "Переменная среды VCPKG_DEFAULT_BINARY_CACHE должна быть каталогом (было: {path})", @@ -419,15 +407,18 @@ "DefaultFeatureIdentifier": "имена компонентов по умолчанию должны быть идентификаторами", "DefaultFlag": "По умолчанию включено --{option}.", "DefaultRegistryIsArtifact": "Реестр, используемый по умолчанию, не может быть реестром артефактов.", - "DefaultTripletChanged": "В выпуске за сентябрь 2023 г. триплет по умолчанию для библиотек vcpkg изменен с x86-windows на триплет обнаруженного узла ({triplet}). Добавьте параметр --triplet x86-windows для использования старого поведения. Добавьте параметр --triplet {triplet}, чтобы скрыть это сообщение.", "DeleteVcpkgConfigFromManifest": "-- Или удалите \"vcpkg-configuration\" из {path} файла манифеста.", "DependencyFeatureCore": "компонент \"core\" не может находиться в списке компонентов зависимости. Чтобы отключить компоненты по умолчанию, добавьте \"default-features\": false.", "DependencyFeatureDefault": "компонент \"default\" не может находиться в списке компонентов зависимости. Чтобы включить компоненты по умолчанию, добавьте \"default-features\": true.", "DependencyGraphCalculation": "Отправка графа зависимостей включена.", "DependencyGraphFailure": "Сбой отправки графа зависимостей.", "DependencyGraphSuccess": "Граф зависимостей успешно отправлен.", + "DependencyInFeature": "зависимость находится в функции с именем {feature}", + "DependencyNotInVersionDatabase": "в базе данных версий нет зависимости {package_name}. Существует ли этот порт?", "DeprecatedPrefabDebugOption": "Параметр --prefab-debug упразднен.", "DetectCompilerHash": "Обнаружение хэша компилятора для триплета {triplet}...", + "DirectoriesRelativeToThePackageDirectoryHere": "каталоги здесь относятся к ${{CURRENT_PACKAGES_DIR}}", + "DllsRelativeToThePackageDirectoryHere": "библиотеки DLL здесь относятся к ${{CURRENT_PACKAGES_DIR}}", "DocumentedFieldsSuggestUpdate": "Если это задокументированные поля, которые следует распознать, попробуйте обновить средство VCPKG.", "DownloadAvailable": "Доступна загружаемая копия этого инструмента, которую можно использовать, отключив {env_var}.", "DownloadFailedCurl": "{url}: не удалось скачать curl с кодом завершения {exit_code}", @@ -437,8 +428,7 @@ "DownloadRootsDir": "Скачивает каталог (по умолчанию: {env_var})", "DownloadWinHttpError": "{url}: сбой {system_api} с кодом завершения {exit_code}", "DownloadedSources": "Скачанные источники для {spec}", - "DownloadingPortableToolVersionX": "Не найдена подходящая версия {tool_name} (требуется v{version}) Скачивание переносимой версии {tool_name} {version}...", - "DownloadingTool": "Скачивание {tool_name}...\n{url}->{path}", + "DownloadingPortableToolVersionX": "Подходящая версия инструмента {tool_name} не найдена (требуется версия {version}).", "DownloadingUrl": "Выполняется скачивание {url}", "DownloadingVcpkgStandaloneBundle": "Скачивание изолированного пакета {version}.", "DownloadingVcpkgStandaloneBundleLatest": "Скачивание новейшего изолированного пакета.", @@ -449,7 +439,6 @@ "DuplicatePackagePatternRegistry": "реестр: {url}", "DuplicatedKeyInObj": "Дублированный ключ \"{value}\" в объекте", "ElapsedForPackage": "Затраченное время на обработку {spec}: {elapsed}", - "ElapsedInstallTime": "Общее затраченное время: {count}", "ElapsedTimeForChecks": "Время определения успешного выполнения или сбоя: {elapsed}", "EmailVcpkgTeam": "Отправьте электронное письмо с любым отзывом на адрес {url}.", "EmbeddingVcpkgConfigInManifest": "Внедрение \"vcpkg-configuration\" в файл манифеста является ЭКСПЕРИМЕНТАЛЬНОЙ возможностью.", @@ -479,25 +468,23 @@ "ErrorWhileFetchingBaseline": "при получении базового плана \"{value}\" из репозитория {package_name}:", "ErrorWhileParsing": "При анализе {path} возникли ошибки.", "ErrorWhileWriting": "Произошла ошибка при записи {path}.", - "ErrorsFound": "Обнаружены следующие ошибки:", "ExamplesHeader": "Примеры:", "ExceededRecursionDepth": "Превышена глубина рекурсии.", "ExcludedPackage": "Исключено: {spec}", "ExcludedPackages": "Исключены следующие пакеты:", + "ExecutablesRelativeToThePackageDirectoryHere": "исполняемые файлы здесь относятся к ${{CURRENT_PACKAGES_DIR}}", "ExpectedAnObject": "ожидается объект", "ExpectedAtMostOneSetOfTags": "Найдено {count} наборов {old_value}.*{new_value}, но ожидается не более 1, в блоке:\n{value}", "ExpectedCharacterHere": "здесь ожидается \"{expected}\"", "ExpectedDefaultFeaturesList": "требуется \",\" или конец текста в списке функций по умолчанию", "ExpectedDependenciesList": "требуется \",\" или конец текста в списке зависимостей", "ExpectedDigitsAfterDecimal": "Ожидаемые цифры после десятичной запятой", - "ExpectedEof": "ожидается eof", "ExpectedExplicitTriplet": "ожидался явный триплет", "ExpectedFailOrSkip": "Ожидалось значение fail, skip или pass.", "ExpectedFeatureListTerminal": "в списке функций ожидается \",\" или \"]\"", "ExpectedFeatureName": "ожидаемое имя функции (должно быть строчными буквами, цифрами, \"-\")", "ExpectedOneSetOfTags": "Найдено {count} наборов {old_value}.*{new_value}, но ожидается ровно 1, в блоке:\n{value}", "ExpectedOneVersioningField": "ожидается только одно поле управления версиями", - "ExpectedPackageSpecifier": "требуется описатель пакета", "ExpectedPathToExist": "Ожидается, что {path} будет существовать после получения", "ExpectedPortName": "здесь ожидается имя порта (должно быть в нижнем регистре, цифры, \"-\")", "ExpectedReadWriteReadWrite": "непредвиденный аргумент: ожидается \"read\", \"readwrite\" или \"write\"", @@ -505,7 +492,6 @@ "ExpectedTripletName": "здесь ожидается имя триплета (должно быть в нижнем регистре, цифры, \"-\")", "ExportArchitectureReq": "Для экспорта prefab требуется выбор хотя бы одной из следующих целевых архитектур: arm64-v8a, armeabi-v7a, x86_64, x86.", "ExportPrefabRequiresAndroidTriplet": "Для экспорта prefab требуется триплет Android.", - "ExportUnsupportedInManifest": "Экспорт vcpkg не поддерживает режим манифеста в соответствии с соображениями перспективного проектирования. Можно использовать экспорт в классическом режиме, запустив vcpkg вне проекта на основе манифеста.", "Exported7zipArchive": "Архив 7zip экспортирован в папку: {path}", "ExportedZipArchive": "Архив Zip экспортирован в папку: {path}", "ExportingAlreadyBuiltPackages": "Следующие пакеты уже созданы и будут экспортированы:", @@ -514,14 +500,12 @@ "ExtendedDocumentationAtUrl": "Расширенная документация доступна по адресу '{url}'.", "ExtractHelp": "Извлекает архив.", "ExtractingTool": "Извлечение {tool_name}...", - "FailedPostBuildChecks": "Обнаружено столько проблем при проверке после сборки: {count}. Чтобы отправить эти порты в проверенные каталоги, сначала исправьте файл порта: {path}", + "FailedPostBuildChecks": "Обнаружено проблем с проверкой после сборки: {count}. Обычно это вызвано ошибками в portfile.cmake или вышестоящей системе сборки. Исправьте их перед отправкой этого порта в курированный реестр.", "FailedToAcquireMutant": "не удалось получить {path} мутанта", "FailedToCheckoutRepo": "не удалось извлечь \"versions\" из репозитория {package_name}", "FailedToDeleteDueToFile": "не удалось remove_all({value}) из-за {path}: ", "FailedToDeleteInsideDueToFile": "не удалось remove_all_inside({value}) из-за {path}: ", - "FailedToDetermineArchitecture": "не удается определить архитектуру {path}.\n{command_line}", "FailedToDetermineCurrentCommit": "Не удалось определить текущую фиксацию:", - "FailedToDownloadFromMirrorSet": "Не удалось скачать из зеркального набора", "FailedToExtract": "Сбой извлечения \" {path}\":", "FailedToFetchRepo": "Не удалось получить {url}.", "FailedToFindPortFeature": "{package_name} не содержит функции с именем {feature}.", @@ -530,27 +514,20 @@ "FailedToLoadManifest": "Не удалось загрузить манифест из {path} каталога", "FailedToLocateSpec": "Сбой поиска спецификации в графе: {spec}", "FailedToObtainDependencyVersion": "Не удается найти нужную версию зависимостей.", - "FailedToObtainLocalPortGitSha": "Не удалось получить Git SHA для локальных портов.", "FailedToObtainPackageVersion": "Не удается найти нужную версию пакета.", "FailedToOpenAlgorithm": "не удалось открыть {value}", "FailedToParseBaseline": "Не удалось проанализировать базовый план: {path}", "FailedToParseCMakeConsoleOut": "Сбой анализа выходных данных консоли CMake для поиска маркеров начала или конца блока.", "FailedToParseConfig": "Не удалось проанализировать конфигурацию: {path}", - "FailedToParseControl": "Не удалось проанализировать файл CONTROL: {path}", - "FailedToParseManifest": "Не удалось проанализировать файл манифеста: {path}", "FailedToParseNoTopLevelObj": "Не удалось проанализировать {path}, ожидался объект верхнего уровня.", "FailedToParseNoVersionsArray": "Не удалось проанализировать {path}, ожидался массив \"versions\".", "FailedToParseSerializedBinParagraph": "[проверка работоспособности] Не удалось проанализировать абзац сериализованного двоичного файла.\nОткройте проблему на странице https://github.com/microsoft/vcpkg со следующими выходными данными:\n{error_msg}\nАбзац сериализованного двоичного файла:", + "FailedToParseVersionFile": "Не удалось проанализировать файл версии: {path}", "FailedToParseVersionXML": "Не удалось проанализировать версию инструмента {tool_name}. Строка версии: {version}", - "FailedToParseVersionsFile": "не удалось проанализировать файл версий {path}", - "FailedToProvisionCe": "Не удалось подготовить артефакты vcpkg.", - "FailedToReadParagraph": "Не удалось прочитать абзацы из {path}", - "FailedToRemoveControl": "Не удалось удалить файл управления {path}", "FailedToRunToolToDetermineVersion": "Сбой запуска \"{path}\" для определения версии {tool_name}.", - "FailedToStoreBackToMirror": "не удалось сохранить обратно в зеркале:", + "FailedToStoreBackToMirror": "Не удалось сохранить путь {path} для URL-адреса {url}.", "FailedToStoreBinaryCache": "Сбой сохранения двоичного кэша {path}", "FailedToTakeFileSystemLock": "Не удалось заблокировать файловую систему", - "FailedToWriteManifest": "Не удалось записать файл манифеста {path}", "FailedVendorAuthentication": "Одному или нескольким поставщикам учетных данных {vendor} не удалось пройти аутентификацию. См. «{url}» для получения дополнительной информации о том, как предоставить учетные данные.", "FetchingBaselineInfo": "Извлечение базовой информации из {package_name}...", "FetchingRegistryInfo": "Получение сведений реестра из {url} ({value})...", @@ -559,11 +536,13 @@ "FileNotFound": "{path}: файл не найден", "FileReadFailed": "Не удалось прочитать {count} байт из {path} по смещению {byte_offset}.", "FileSeekFailed": "Не удалось найти расположение {byte_offset} в {path}.", - "FileSystemOperationFailed": "Сбой операции файловой системы:", - "FilesContainAbsolutePath1": "В установленном пакете не должно быть абсолютных путей, таких как следующие:", - "FilesContainAbsolutePath2": "Абсолютные пути найдены в следующих файлах:", + "FilesContainAbsolutePath1": "В установленном пакете не должно быть абсолютных путей, таких как следующие. Чтобы скрыть это сообщение, добавьте set(VCPKG_POLICY_SKIP_ABSOLUTE_PATHS_CHECK enabled)", + "FilesContainAbsolutePath2": "здесь найдены абсолютные пути", + "FilesContainAbsolutePathPkgconfigNote": "Добавление вызова \"vcpkg_fixup_pkgconfig()\" может исправить абсолютные пути в файлах .pc.", "FilesExported": "Файлы экспортированы в папку: {path}", - "FindHelp": "Поиск указанного артефакта или порта. Без параметров после \"artifact\" или \"port\", отображается все.", + "FilesRelativeToTheBuildDirectoryHere": "файлы здесь относятся к каталогу сборки", + "FilesRelativeToThePackageDirectoryHere": "файлы здесь относятся к ${{CURRENT_PACKAGES_DIR}}", + "FindCommandFirstArg": "Первым аргументом для \"find\" должен быть \"artifact\" или \"port\".", "FindVersionArtifactsOnly": "--version нельзя использовать с поиском vcpkg или портом поиска vcpkg", "FishCompletion": "Завершение vcpkg fish уже полностью добавлено в \"{path}\".", "FloatingPointConstTooBig": "Слишком большая константа с плавающей запятой: {count}", @@ -581,6 +560,7 @@ "GeneratingRepo": "Создание репозитория {path}...", "GetParseFailureInfo": "Используйте \"--debug\", чтобы получить дополнительные сведения о сбоях анализа.", "GitCommandFailed": "не удалось выполнить: {command_line}", + "GitCommitUpdateVersionDatabase": "git commit -m \"Обновить базу данных версий\"", "GitFailedToFetch": "не удалось получить ссылку {value} из репозитория {url}", "GitFailedToInitializeLocalRepository": "не удалось инициализировать локальный репозиторий {path}", "GitRegistryMustHaveBaseline": "Поле реестра Git \"{url}\" должно содержать поле \"baseline\", которое является допустимым SHA фиксации Git (40 шестнадцатеричных символов).\nЧтобы использовать последние версии, задайте базовый показатель для этого репозитория HEAD, \"{commit_sha}\".", @@ -591,7 +571,7 @@ "GitUnexpectedCommandOutputCmd": "Git создал непредвиденные выходные данные при выполнении {command_line}", "GraphCycleDetected": "Обнаружен цикл в графе в {package_name}:", "HashFileFailureToRead": "сбой при чтении файла \"{path}\" для хеширования: ", - "HashPortManyFiles": "{package_name} содержит несколько ({count}) файлов. Хэширование этого содержимого может занять много времени при определении хэша ABI для двоичного кэширования. Рассмотрите возможность уменьшения количества файлов. Распространенные причины: случайное извлечение исходных файлов или файлов сборки в каталог порта.", + "HashPortManyFiles": "{package_name} содержит несколько файлов ({count}). Хэширование этого содержимого может занять много времени при определении хэша ABI для двоичного кэширования. Рассмотрите возможность уменьшения количества файлов. Распространенные причины: случайное извлечение исходных файлов или файлов сборки в каталог порта.", "HeaderOnlyUsage": "{package_name} является заголовочным и может использоваться из CMake через:", "HelpAssetCaching": "**Экспериментальная функция: она может быть изменена или удалена в любое время**\n\nvcpkg может использовать зеркала для кэширования скачанных ресурсов, что гарантирует продолжение операции, даже если исходный источник изменяется или исчезает.\n\nКэширование ресурсов можно настроить, задав для переменной среды X_VCPKG_ASSET_SOURCES список источников с разделителями-точками с запятой или передав последовательность параметров командной строки --x-asset-sources=. Источники командной строки интерпретируются после источников среды. Запятые, точки с запятой и обратные апострофы можно экранировать с помощью обратного апострофа (`).\n\nНеобязательный параметр для определенных строк управляет способом получения к ним доступа. Для него можно указать значения \"read\", \"write\" или \"readwrite\". По умолчанию используется \"read\".\n\nДопустимые источники:", "HelpAssetCachingAzUrl": "Добавляет источник Хранилища BLOB-объектов Azure, используя при необходимости проверку подписанных URL-адресов. URL-адрес должен содержать путь к контейнеру и заканчиваться конечным символом \"/\". , если определен, должен иметь префикс \"?\". Серверы, отличные от Azure, также будут работать, если отвечают на запросы GET и PUT в формате \"\".", @@ -623,10 +603,7 @@ "HelpEnvCommand": "Создает среду чистой оболочки для разработки или компиляции", "HelpExampleCommand": "Дополнительные сведения (включая примеры) см. на странице https://learn.microsoft.com/vcpkg", "HelpExampleManifest": "Пример манифеста:", - "HelpExportCommand": "Экспортирует пакет.", - "HelpHashCommand": "Хешировать файл по определенному алгоритму, по умолчанию SHA512.", "HelpInstallCommand": "Устанавливает пакет", - "HelpListCommand": "Выводит список установленных пакетов", "HelpManifestConstraints": "Манифесты могут накладывать три типа ограничений на используемые версии.", "HelpMinVersion": "Vcpkg выберет минимальную найденную версию, соответствующую всем применимым ограничениям, включая версию из базовой линии, указанной на верхнем уровне, а также любые ограничения \"version>=\" в графе.", "HelpOverrides": "При использовании в качестве манифеста верхнего уровня (например, при запуске \"vcpkg install\" в каталоге) переопределения позволяют манифесту сократить разрешение зависимостей и точно указать используемую версию. Их можно использовать для обработки конфликтов версий, например, с зависимостями \"version-string\". Они не будут рассматриваться, когда от них зависит транзитивно.", @@ -674,7 +651,6 @@ "IllegalPlatformSpec": "Квалификатор платформы не разрешен в этом контексте", "ImproperShaLength": "Длина SHA512 должна составлять 128 шестнадцатеричных символов: {value}", "IncorrectArchiveFileSignature": "Неверная подпись файла архива", - "IncorrectPESignature": "Неверная подпись PE", "InfoSetEnvVar": "Вы также можете установить {env_var} в свой редактор.", "InitRegistryFailedNoRepo": "Не удалось создать реестр в {path}: это не корневой каталог репозитория Git.\nИспользуйте команду \"git init {command_line}\", чтобы создать репозиторий Git в этой папке.", "InstallCopiedFile": "{path_source} -> {path_destination}: готово", @@ -688,8 +664,8 @@ "InstalledBy": "Установлено посредством {path}", "InstalledPackages": "Следующие пакеты уже установлены:", "InstalledRequestedPackages": "Все запрашиваемые пакеты сейчас установлены.", - "InstallingFromLocation": "-- Установка порта из расположения: {путь}", "InstallingMavenFile": "{path}: установка файла Maven", + "InstallingOverlayPort": "производится установка порта наложения отсюда", "InstallingPackage": "Выполняется установка {action_index}/{count} {spec}…", "IntegrateBashHelp": "Включить завершение табуляции bash. Только для систем, отличных от Windows", "IntegrateFishHelp": "Включить завершение табуляции fish. Только для систем, отличных от Windows.", @@ -725,7 +701,7 @@ "InvalidBundleDefinition": "Недопустимое определение пакета.", "InvalidCharacterInFeatureList": "недопустимый символ в имени функции (должен содержать строчные буквы, цифры, символы \"-\" или \"*\")", "InvalidCharacterInFeatureName": "недопустимый символ в имени функции (должен содержать строчные буквы, цифры, символы \"-\")", - "InvalidCharacterInPackageName": "недопустимый символ в имени пакета (должен содержать строчные буквы, цифры, символы \"-\")", + "InvalidCharacterInPortName": "недопустимый символ в имени порта (разрешаются только строчные буквы, цифры и дефисы \"-\")", "InvalidCodePoint": "Недопустимая кодовая точка передана в utf8_encoded_code_point_count", "InvalidCodeUnit": "недопустимая кодовая единица", "InvalidCommandArgSort": "Значением --sort должен быть один из следующих вариантов: \"lexicographical\", \"topographical\", \"reverse\".", @@ -743,7 +719,6 @@ "InvalidLinkage": "Недопустимый тип связи {system_name}: [{value}]", "InvalidLogicExpressionUnexpectedCharacter": "недопустимое логическое выражение, непредвиденный символ", "InvalidLogicExpressionUsePipe": "недопустимое логическое выражение, используйте \"|\", а не \"или\"", - "InvalidNoVersions": "Файл не содержит версий.", "InvalidOptionForRemove": "\"remove\" принимает библиотеки или \"--outdated\"", "InvalidPortVersonName": "Обнаружено недопустимое имя файла версии порта: \"{path}\".", "InvalidSharpInVersion": "недопустимый символ \"#\" в тексте версии", @@ -751,6 +726,8 @@ "InvalidString": "Недопустимый utf8 передается значению Value::string(std::string)", "InvalidTriplet": "Недопустимая триада: {triplet}", "InvalidUri": "не удалось проанализировать URI: {value}", + "InvalidValueHashAdditionalFiles": "Переменная VCPKG_HASH_ADDITIONAL_FILES содержит недопустимый путь к файлу: \"{path}\". Значение должно быть абсолютным путем к существующему файлу.", + "InvalidValuePostPortfileIncludes": "Переменная VCPKG_POST_PORTFILE_INCLUDES содержит недопустимый путь к файлу: \"{path}\". Значение должно быть абсолютным путем к существующему файлу cmake.", "IrregularFile": "путь не является обычным файлом: {path}", "JsonErrorMustBeAnObject": "Ожидается, что \"{path}\" будет объектом.", "JsonFieldNotObject": "значение [\"{json_field}\"] должно быть объектом", @@ -786,11 +763,11 @@ "LinkageStaticDebug": "Статическая отладка (/MTd)", "LinkageStaticRelease": "Статический выпуск (/MT)", "ListHelp": "Перечисляет установленные библиотеки", - "LoadingCommunityTriplet": "-- [СООБЩЕСТВО] Загрузка тройной конфигурации из: {путь}", + "LoadedCommunityTriplet": "загружен отсюда триплет сообщества. Триплеты сообщества не встроены в курируемый реестр, поэтому вероятность их беспроблемной работы несколько ниже.", + "LoadedOverlayTriplet": "загружен отсюда триплет наложения", "LoadingDependencyInformation": "Загрузка сведений о зависимостях для пакетов {count}...", - "LoadingOverlayTriplet": "-- [OVERLAY] Загрузка тройной конфигурации из: {path}", - "LocalPortfileVersion": "Использование локальных версий файлов портов. Чтобы обновить локальные файлы портов, используйте \"git pull\".", - "ManifestConflict": "Обнаружен файл манифеста и файл CONTROL в порте \"{path}\". Переименуйте один из них", + "LocalPortfileVersion": "Использование локальных версий порта. Чтобы обновить локальные порты, используйте \"git pull\".", + "ManifestConflict2": "Обнаружен файл манифеста и файл CONTROL. Переименуйте один из них", "ManifestFormatCompleted": "Файлы манифеста отформатированы успешно.", "MismatchedBinParagraphs": "Абзац сериализованного двоичного файла отличался от абзаца исходного двоичного файла. Откройте проблему на странице https://github.com/microsoft/vcpkg со следующими выходными данными:", "MismatchedFiles": "файл для хранения не соответствует хэшу", @@ -802,6 +779,7 @@ "MissingAndroidEnv": "Отсутствует переменная среды ANDROID_NDK_HOME", "MissingAndroidHomeDir": "Каталог ANDROID_NDK_HOME не существует: {path}", "MissingArgFormatManifest": "манифест формата был передан --convert-control без '--all'.\nЭто ничего не делает: явно переданные управляющие файлы преобразуются автоматически.", + "MissingAssetBlockOrigin": "Путь {path} отсутствует, и загрузки заблокированы x-block-origin.", "MissingClosingParen": "отсутствует закрывающая скобка )", "MissingDependency": "Пакет {spec} установлен, но зависимость {package_name} не установлена.", "MissingExtension": "Отсутствует расширение \"{extension}\".", @@ -810,9 +788,9 @@ "MissingPortSuggestPullRequest": "Если вашего порта нет в списке, откройте вопрос и рассмотрите возможность размещения запроса на вытягивание.", "MissingRequiredField": "отсутствует обязательное поле \"{json_field}\" ({json_type})", "MissingRequiredField2": "отсутствует обязательное поле \"{json_field}\"", + "MissingShaVariable": "Если используются другие переменные, в шаблоне должна применяться переменная {{sha}}.", "MixingBooleanOperationsNotAllowed": "смешивание & и | не разрешено; используйте () для указания порядка операций", "MonoInstructions": "Это может быть вызвано неполной установкой Mono. Полная версия Mono доступна в некоторых системах по команде \"sudo apt install mono-complete\". Пользователям Ubuntu 18.04 может потребоваться более новая версия Mono, доступная по адресу https://www.mono-project.com/download/stable/", - "MsiexecFailedToExtract": "сбой msiexec при извлечении \"{path}\" с кодом запуска или выхода {exit_code} и сообщением:", "MultiArch": "Значение Multi-Arch должно быть \"то же\", но было {option}", "MultipleFeatures": "{package_name} объявляет {feature} несколько раз. Убедитесь, что функции имеют уникальные имена", "MutuallyExclusiveOption": "--{value} не может использоваться с --{option}.", @@ -822,10 +800,8 @@ "NewOnlyOneVersionKind": "Можно указать только одно из --version-relaxed, --version-date или --version-string.", "NewSpecifyNameVersionOrApplication": "Чтобы указать, что манифест не предназначен для использования в качестве порта, определите --name и --version для создания манифеста, предназначенного для библиотек C++, или укажите --application.", "NewVersionCannotBeEmpty": "--version не может быть пустой.", - "NoArgumentsForOption": "Параметр --{option} не принимает аргумент.", "NoError": "нет ошибок", "NoInstalledPackages": "Нет установленных пакетов. Вы имели в виду \"search\"?", - "NoLocalizationForMessages": "Нет локализованных сообщений для следующего: ", "NoOutdatedPackages": "Нет устаревших пакетов.", "NoRegistryForPort": "Не настроен реестр для порта {package_name}.", "NoUrlsAndHashSpecified": "Не указаны URL-адреса для скачивания SHA: {sha}", @@ -866,7 +842,6 @@ "PackageManipulationHeader": "Обработка пакета", "PackageRootDir": "Каталог Packages (экспериментальная функция)", "PackagesToInstall": "Будут собраны и установлены следующие пакеты:", - "PackagesToInstallDirectly": "Следующие пакеты будут непосредственно установлены:", "PackagesToModify": "Дополнительные пакеты (*) будут изменены для завершения этой операции.", "PackagesToRebuild": "Будут повторно собраны следующие пакеты:", "PackagesToRebuildSuggestRecurse": "Если вы действительно хотите повторно собрать перечисленные выше пакеты, запустите команду с параметром --recurse.", @@ -882,47 +857,50 @@ "ParseFeatureNameError": "\"{package_name}\" не является допустимым именем компонента. Имена компонентов должны содержать строчные буквы, цифры и дефисы и не должны быть зарезервированы (см. {url} для получения дополнительных сведений).", "ParseIdentifierError": "\"{value}\" не является допустимым идентификатором. Идентификаторы должны содержать строчные буквы, цифры и дефисы и не должны быть зарезервированы (см. {url} для получения дополнительных сведений).", "ParsePackageNameError": "\"{package_name}\" не является допустимым именем пакета. Имена пакетов должны содержать строчные буквы, цифры и дефисы и не должны быть зарезервированы (см. {url} для получения дополнительных сведений).", + "ParsePackageNameNotEof": "ожидался конец ввода при анализе имени пакета; обычно это означает, что имя порта не может содержать указанный символ. Имена пакетов могут содержать только строчные буквы, цифры и дефисы и не должны быть зарезервированы (подробнее см. {url}).", "ParsePackagePatternError": "\"{package_name}\" не является допустимым шаблоном пакета. Шаблоны пакетов должны использовать только один подстановочный знак (*), который должен быть последним символом в шаблоне (см. {url} для получения дополнительных сведений).", + "ParseQualifiedSpecifierNotEof": "ожидался конец ввода при анализе спецификации пакета; обычно это означает, что спецификация пакета не может содержать указанный символ. Имена портов, триплетов и функций могут содержать строчные буквы, цифры и дефисы.", + "ParseQualifiedSpecifierNotEofSquareBracket": "ожидался конец ввода при анализе спецификации пакета; может быть, вы хотели вместо этого указать {version_spec}?", "PathMustBeAbsolute": "Значение переменной среды X_VCPKG_REGISTRIES_CACHE не является абсолютным: {path}", - "PerformingPostBuildValidation": "-- Выполнение проверки после сборки", - "PortBugAllowRestrictedHeaders": "В исключительных случаях эту политику можно отключить с помощью {env_var}", - "PortBugBinDirExists": "Хотя в статической сборке не должно быть каталога bin\\, имеется {path}.", - "PortBugDebugBinDirExists": "Хотя в статической сборке не должно быть каталога debug\\bin\\, имеется {path}.", - "PortBugDebugShareDir": "Каталог /debug/share не должен существовать. Переупорядочьте все важные файлы, а затем используйте\nfile(REMOVE_RECURSE \"${{CURRENT_PACKAGES_DIR}}/debug/share\")", - "PortBugDllAppContainerBitNotSet": "Необходимо задать бит контейнера приложений для приложений Магазина Windows. Для следующих DLL бит контейнера приложений не задан:", - "PortBugDllInLibDir": "Следующие библиотеки DLL найдены в /lib или /debug/lib. Переместите их в /bin или /debug/bin соответственно.", - "PortBugDuplicateIncludeFiles": "Включаемые файлы не должны дублироваться в каталоге /debug/include. Если не удается отключить этот параметр в CMake проекта, используйте\nfile(REMOVE_RECURSE \"${{CURRENT_PACKAGES_DIR}}/debug/include\")", - "PortBugFoundCopyrightFiles": "Следующие файлы могут быть защищены авторским правом:", - "PortBugFoundDebugBinaries": "Найдено столько двоичных файлов отладки: {count}", - "PortBugFoundDllInStaticBuild": "Хотя в статической сборке не должно быть DLL, найдены следующие DLL:", - "PortBugFoundEmptyDirectories": "В {path} не должно быть пустых каталогов. Найдены следующие пустые каталоги:", - "PortBugFoundExeInBinDir": "Указанные ниже EXE найдены в /bin или /debug/bin. EXE не являются допустимыми целевыми объектами распространения.", - "PortBugFoundReleaseBinaries": "Найдено столько двоичных файлов выпуска: {count}", - "PortBugIncludeDirInCMakeHelperPort": "Папка /include существует во вспомогательном порте CMake. Это неправильно, так как следует устанавливать только файлы cmake", - "PortBugInspectFiles": "Для проверки файлов {extension} используйте:", - "PortBugInvalidCrtLinkage": "Следующие двоичные файлы должны использовать CRT {expected}.", - "PortBugInvalidCrtLinkageEntry": "{path} связывается с:", - "PortBugKernel32FromXbox": "Выбранный триплет нацелен на Xbox, но следующие DLL связаны с kernel32. Эти DLL невозможно загрузить в Xbox, где отсутствует kernel32. Обычно это вызвано связыванием с kernel32.lib вместо подходящей зонтичной библиотеки, например onecore_apiset.lib или xgameplatform.lib.", - "PortBugMergeLibCMakeDir": "Папку /lib/cmake следует объединить с /debug/lib/cmake и переместить в /share/{package_name}/cmake. Используйте вспомогательную функцию \"vcpkg_cmake_config_fixup()\" из порта vcpkg-cmake-config.", - "PortBugMismatchedNumberOfBinaries": "Несоответствие количества двоичных файлов отладки и выпуска.", - "PortBugMisplacedCMakeFiles": "Указанные ниже файлы cmake найдены за пределами /share/{spec}. Поместите файлы cmake в /share/{spec}.", - "PortBugMisplacedFiles": "В {path} помещены следующие файлы:", - "PortBugMisplacedFilesCont": "Файлы не могут присутствовать в этих каталогах.", - "PortBugMisplacedPkgConfigFiles": "Каталоги pkgconfig должны быть share/pkgconfig (только для библиотек заголовков), lib/pkgconfig или lib/debug/pkgconfig. Найдены следующие неправильно размещенные файлы pkgconfig:", + "PerformingPostBuildValidation": "Выполнение проверки после сборки", + "PortBugBinDirExists": "${{CURRENT_PACKAGES_DIR}}/{path} существует, но не должен находиться в статической сборке. Чтобы скрыть это сообщение, добавьте set(VCPKG_POLICY_DLLS_IN_STATIC_LIBRARY enabled)", + "PortBugDebugShareDir": "${{CURRENT_PACKAGES_DIR}}/debug/share не должно существовать. Переупорядочите все важные файлы, а затем удалите все оставшиеся, добавив \"file(REMOVE_RECURSE \"${{CURRENT_PACKAGES_DIR}}/debug/share\")\". Чтобы скрыть это сообщение, добавьте set(VCPKG_POLICY_ALLOW_DEBUG_SHARE enabled)", + "PortBugDllAppContainerBitNotSet": "Бит приложения-контейнера должен быть установлен для всех библиотек DLL в приложениях Windows Store и запросов триплетов, нацеленных на Windows Store, но следующие библиотеки DLL не созданы с установленным битом. Обычно это означает, что флажки компоновщика цепочки инструментов не распространяются должным образом или используемый компоновщик не поддерживает переход /APPCONTAINER. Чтобы скрыть это сообщение, добавьте set(VCPKG_POLICY_SKIP_APPCONTAINER_CHECK enabled)", + "PortBugDllInLibDir": "Следующие библиотеки DLL были найдены в ${{CURRENT_PACKAGES_DIR}}/lib или ${{CURRENT_PACKAGES_DIR}}/debug/lib. Переместите их в ${{CURRENT_PACKAGES_DIR}}/bin или ${{CURRENT_PACKAGES_DIR}}/debug/bin соответственно.", + "PortBugDuplicateIncludeFiles": "${{CURRENT_PACKAGES_DIR}}/debug/include не должно существовать. Чтобы скрыть это сообщение, добавьте set(VCPKG_POLICY_ALLOW_DEBUG_INCLUDE enabled)", + "PortBugDuplicateIncludeFilesFixIt": "Если этот каталог создан системой сборки, не позволяющей отключить установку заголовков в отладке, удалите дубликат каталога с file(REMOVE_RECURSE \"${{CURRENT_PACKAGES_DIR}}/debug/include\")", + "PortBugFoundCopyrightFiles": "следующие файлы могут являться файлами авторских прав", + "PortBugFoundDebugBinaries": "Ниже приведены двоичные файлы отладки:", + "PortBugFoundDllInStaticBuild": "Хотя библиотеки DLL не должны присутствовать в статической сборке, найдены следующие библиотеки DLL. Чтобы скрыть это сообщение, добавьте set(VCPKG_POLICY_DLLS_IN_STATIC_LIBRARY enabled)", + "PortBugFoundEmptyDirectories": "Не должно быть установленных пустых каталогов. Пустые каталоги не могут быть представлены нескольким поставщикам двоичного кэша, репозиториям Git и не считаются выходными данными семантической сборки. Следует создать обычный файл в каждом пустом каталоге или удалить их с помощью следующего CMake. Чтобы скрыть это сообщение, добавьте set(VCPKG_POLICY_ALLOW_EMPTY_FOLDERS enabled)", + "PortBugFoundExeInBinDir": "Следующие исполняемые файлы найдены в ${{CURRENT_PACKAGES_DIR}}/bin or ${{CURRENT_PACKAGES_DIR}}/debug/bin. Исполняемые файлы не являются допустимыми целями распространения. Если эти исполняемые файлы являются инструментами сборки, рассмотрите возможность использования vcpkg_copy_tools. Чтобы скрыть это сообщение, добавьте set(VCPKG_POLICY_ALLOW_EXES_IN_BIN enabled)", + "PortBugFoundReleaseBinaries": "Ниже приведены двоичные файлы выпуска:", + "PortBugIncludeDirInCMakeHelperPort": "Папка ${{CURRENT_PACKAGES_DIR}}/include существует во вспомогательном порте CMake; это неправильно, поскольку следует устанавливать только файлы CMake. Чтобы скрыть это сообщение, удалите set(VCPKG_POLICY_CMAKE_HELPER_PORT enabled).", + "PortBugInvalidCrtLinkageCrtGroup": "Следующие двоичные файлы должны связываться только с: {expected}", + "PortBugInvalidCrtLinkageEntry": "{path} связывается с: {actual}", + "PortBugInvalidCrtLinkageHeader": "двоичные файлы, созданные по этому порту с помощью C RunTimes (\"CRT\"), несовместимы с теми, которые запрошены триплетом и структурой развертывания. Если триплет предназначен для использования только версии CRT, следует добавить set(VCPKG_POLICY_ONLY_RELEASE_CRT enabled) в файл .cmake триплета. Чтобы полностью скрыть эту проверку, добавьте set(VCPKG_POLICY_SKIP_CRT_LINKAGE_CHECK enabled) к триплету .cmake, если он распространяется на весь триплет, или к portfile.cmake, если это специфично для порта. Вы можете проверить двоичные файлы с помощью: dumpbin.exe /directives mylibfile.lib.", + "PortBugKernel32FromXbox": "Выбранный триплет нацелен на Xbox, но следующие библиотеки DLL связаны с kernel32. Эти библиотеки DLL нельзя загрузить на Xbox, где отсутствует kernel32. Обычно это вызвано связыванием с kernel32.lib, а не с подходящей зонтичной библиотекой, такой как onecore_apiset.lib или xgameplatform.lib. Зависимости DLL можно проверить с помощью \"dumpbin.exe/dependents mylibfile.dll\". Чтобы скрыть это сообщение, добавьте set(VCPKG_POLICY_ALLOW_KERNEL32_FROM_XBOX enabled)", + "PortBugMergeLibCMakeDir": "Этот порт создает ${{CURRENT_PACKAGES_DIR}}/lib/cmake или ${{CURRENT_PACKAGES_DIR}}/debug/lib/cmake, которые следует объединить и переместить в ${{CURRENT_PACKAGES_DIR}}/share/${{PORT}}/cmake. Используйте вспомогательную функцию vcpkg_cmake_config_fixup() из порта vcpkg-cmake-config. Чтобы скрыть это сообщение, добавьте set(VCPKG_POLICY_SKIP_LIB_CMAKE_MERGE_CHECK enabled)", + "PortBugMismatchingNumberOfBinaries": "несоответствие числа двоичных файлов отладки и выпуска. Это часто указывает на неправильную обработку отладки или выпуска в portfile.cmake или системе сборки. Если намерение состоит в том, чтобы только создавать компоненты выпуска для этого триплета, этот триплет должен содержать set(VCPKG_BUILD_TYPE release) в файле .cmake. Чтобы скрыть это сообщение, добавьте set(VCPKG_POLICY_MISMATCHED_NUMBER_OF_BINARIES enabled)", + "PortBugMisplacedCMakeFiles": "Этот порт устанавливает следующие файлы CMake в расположениях, где файлы CMake не ожидаются. Файлы CMake следует устанавливать в ${{CURRENT_PACKAGES_DIR}}/share/${{PORT}}. Чтобы скрыть это сообщение, добавьте set(VCPKG_POLICY_SKIP_MISPLACED_CMAKE_FILES_CHECK enabled)", + "PortBugMisplacedFiles": "Следующие обычные файлы устанавливаются в расположения, в которых нельзя установить обычные файлы. Их нужно установить в подкаталог. Чтобы скрыть это сообщение, добавьте set(VCPKG_POLICY_SKIP_MISPLACED_REGULAR_FILES_CHECK enabled)", + "PortBugMisplacedPkgConfigFiles": "Установлены следующие неправильно расположенные каталоги pkgconfig. Неправильно расположенные файлы pkgconfig не будут корректно найдены с помощью pkgconf или pkg-config. каталоги pkgconfig должны быть ${{CURRENT_PACKAGES_DIR}}/share/pkgconfig (для агностических архитектур или только библиотеки заголовков), ${{CURRENT_PACKAGES_DIR}}/lib/pkgconfig (для зависимостей выпуска) или ${{CURRENT_PACKAGES_DIR}}/debug/lib/pkgconfig (для зависимостей отладки). Чтобы скрыть это сообщение, добавьте set(VCPKG_POLICY_SKIP_PKGCONFIG_CHECK enabled)", + "PortBugMissingCMakeHelperPortFile": "Файл ${{CURRENT_PACKAGES_DIR}}/share/${{PORT}}/vcpkg-port-config.cmake не существует. Этот файл должен существовать для вспомогательных портов CMake. Чтобы скрыть это сообщение, удалите set(VCPKG_POLICY_CMAKE_HELPER_PORT enabled)", "PortBugMissingDebugBinaries": "Двоичные файлы отладки не найдены.", - "PortBugMissingFile": "Файл /{path} не существует. Этот файл должен существовать для вспомогательных портов CMake.", - "PortBugMissingImportedLibs": "Библиотеки импорта отсутствуют в {path}.\nЕсли так и должно быть, добавьте следующую строку в файл порта:\nset(VCPKG_POLICY_DLLS_WITHOUT_LIBS enabled)", - "PortBugMissingIncludeDir": "Папка /include пуста или отсутствует. Это означает, что библиотека установлена неправильно.", - "PortBugMissingLicense": "Лицензия на программное обеспечение должна быть доступна в ${{CURRENT_PACKAGES_DIR}}/share/{package_name}/copyright", - "PortBugMissingProvidedUsage": "Порт указал \"usage\", но забыл установить в /share/{package_name}/usage, добавьте в файл порта следующую строку:", + "PortBugMissingImportedLibs": "Библиотеки импорта для установленных DLL отсутствуют. Если это так, добавьте set(VCPKG_POLICY_DLLS_WITHOUT_LIBS enabled)", + "PortBugMissingIncludeDir": "Папка ${{CURRENT_PACKAGES_DIR}}/include пуста или отсутствует. Обычно это означает, что заголовки установлены неправильно. Если это дополнительный порт CMake, добавьте set(VCPKG_POLICY_CMAKE_HELPER_PORT enabled). Если это не вспомогательный порт CMake, но это сделано намеренно, добавьте set(VCPKG_POLICY_EMPTY_INCLUDE_FOLDER enabled), чтобы скрыть это сообщение.", + "PortBugMissingLicense": "лицензия не установлена ​​в ${{CURRENT_PACKAGES_DIR}}/share/${{PORT}}/copyright. Это можно исправить, добавив вызов vcpkg_install_copyright. Чтобы скрыть это сообщение, добавьте set(VCPKG_POLICY_SKIP_COPYRIGHT_CHECK enabled)", + "PortBugMissingLicenseFixIt": "Рассмотрите возможность добавления: {value}", + "PortBugMissingProvidedUsage": "этот порт содержит файл с именем \"usage\", но он не установлен в ${{CURRENT_PACKAGES_DIR}}/share/${{PORT}}/usage. Если этот файл не предназначен для использования в качестве текста, рассмотрите возможность выбора другого имени; в противном случае установите его. Чтобы скрыть это сообщение, добавьте set(VCPKG_POLICY_SKIP_USAGE_INSTALL_CHECK enabled)", "PortBugMissingReleaseBinaries": "Двоичные файлы выпуска не найдены.", "PortBugMovePkgConfigFiles": "Файлы pkgconfig можно перемещать с помощью таких команд:", - "PortBugOutdatedCRT": "Обнаружен устаревший динамический CRT в следующих файлах:", - "PortBugRemoveBinDir": "Если не удается отключить создание bin\\ и/или debug\\bin\\, используйте эту команду в файле порта, чтобы удалить их", - "PortBugRemoveEmptyDirectories": "Если каталог должен быть заполнен, но он пуст, это может указывать на ошибку в файле порта.\nЕсли каталоги не требуются, но не удается отключить их создание, используйте следующие команды в файле порта, чтобы удалить их:", + "PortBugOutdatedCRT": "Установлены библиотеки DLL, связанные с устаревшими библиотеками DLL C RunTime (\"CRT\"). Установленные библиотеки DLL должны быть связаны с поддерживаемым CRT. Зависимости DLL можно проверить с помощью \"dumpbin.exe/dependents mylibfile.dll\". Если вы используете пользовательский триплет, ориентированный на старый CRT, добавьте set(VCPKG_POLICY_ALLOW_OBSOLETE_MSVCRT enabled) в файл .cmake триплета. Чтобы скрыть это сообщение для этого порта, добавьте set(VCPKG_POLICY_ALLOW_OBSOLETE_MSVCRT enabled)", + "PortBugRemoveBinDir": "если создание этих каталогов невозможно отключить, вы можете добавить следующее в portfile.cmake, чтобы удалить их", "PortBugRemoveEmptyDirs": "file(REMOVE_RECURSE пустые каталоги, оставшиеся после операций переименования)", - "PortBugRestrictedHeaderPaths": "Следующие ограниченные заголовки могут препятствовать правильной компиляции основной среды выполнения C++ и других пакетов. В исключительных случаях эту политику можно отключить путем настройки переменной CMake VCPKG_POLICY_ALLOW_RESTRICTED_HEADERS в portfile.cmake.", - "PortBugSetDllsWithoutExports": "DLL без операций экспорта, скорее всего, являются ошибкой в скрипте сборки. Если так и должно быть, добавьте следующую строку в файл порта:\nset(VCPKG_POLICY_DLLS_WITHOUT_EXPORTS enabled)\nСледующие DLL не содержат операций экспорта:", + "PortBugRestrictedHeaderPaths": "Использование следующих ограниченных заголовков может помешать правильной компиляции основной среды выполнения C++ и других пакетов. Вместо этого их следует переименовать или сохранить в подкаталоге. В исключительных случаях это предупреждение можно отключить, добавив set(VCPKG_POLICY_ALLOW_RESTRICTED_HEADERS enabled)", + "PortBugRestrictedHeaderPathsNote": "заголовки здесь относятся к ${{CURRENT_PACKAGES_DIR}}/include", + "PortBugSetDllsWithoutExports": "следующие DLL собраны без экспорта. Библиотеки DLL без экспорта, скорее всего, являются ошибками в сценарии сборки. Если это так, добавьте set(VCPKG_POLICY_DLLS_WITHOUT_EXPORTS enabled)", + "PortDeclaredHere": "{package_name} объявлен здесь", "PortDependencyConflict": "Порт {package_name} имеет следующие неподдерживаемые зависимости:", "PortDoesNotExist": "{package_name} не существует", "PortMissingManifest2": "Отсутствует манифест порта {package_name} (нет файла vcpkg.json или CONTROL)", @@ -932,7 +910,6 @@ "PortVersionControlMustBeANonNegativeInteger": "\"Port-Version\" должно быть неотрицательным целым числом", "PortVersionMultipleSpecification": "\"port_version\" не может сочетаться с внедренным \"#\" в версии", "PortsAdded": "Добавлены следующие порты ({count}):", - "PortsDiffHelp": "Аргумент должен быть ветвью, тегом или хэшом для извлечения.", "PortsNoDiff": "Порты между двумя фиксациями не изменились.", "PortsRemoved": "Удалены следующие порты ({count}):", "PortsUpdated": "Обновлены следующие порты ({count}):", @@ -957,7 +934,6 @@ "RestoredPackagesFromNuGet": "Восстановлено несколько ({count}) пакетов из NuGet за {elapsed}. Используйте --debug, чтобы увидеть больше деталей.", "ResultsHeader": "РЕЗУЛЬТАТЫ", "ScriptAssetCacheRequiresScript": "ожидаемые аргументы: конфигурация ресурса \"x-script\" требует в качестве аргумента только шаблон exec", - "SearchHelp": "Аргумент должен быть подстрокой для поиска или не должен содержать аргумент для отображения всех библиотек.", "SecretBanner": "*** СЕКРЕТ ***", "SeeURL": "Дополнительные сведения см. в {url}.", "SerializedBinParagraphHeader": "\nАбзац сериализованного двоичного файла", @@ -966,6 +942,7 @@ "ShaPassedWithConflict": "Передано SHA512, но также передан параметр --skip-sha512. Выберите только один из этих вариантов.", "ShallowRepositoryDetected": "VCPKG-файл клонирован как неполный репозиторий в: {path}\nПовторите попытку с полным клонированием vcpkg.", "SkipClearingInvalidDir": "Очистка содержимого {path} пропущена: это не каталог.", + "SkippingPostBuildValidationDueTo": "Пропуск проверки после сборки из-за {cmake_var}", "SourceFieldPortNameMismatch": "Поле \"Source\" в файле CONTROL или поле \"name\" в файле vcpkg.json содержит имя {package_name} и не соответствует каталогу порта {path}.", "SpecifiedFeatureTurnedOff": "Функция '{command_name}' специально отключена, но указан --{option}.", "SpecifyHostArch": "Триплет узла. См. \"vcpkg help triplet\" (по умолчанию: {env_var})", @@ -973,10 +950,8 @@ "StartCodeUnitInContinue": "найдена единица начального кода в позиции продолжения", "StoreOptionMissingSha": "Параметр --store недопустим без sha512", "StoredBinariesToDestinations": "Двоичные файлы сохранены в нескольких ({count}) назначениях за {elapsed}.", - "StoredBinaryCache": "Сохраненный двоичный кэш: \"{path}\"", "SuccessfulyExported": "Пакет {package_name} экспортирован в папку {path}", "SuggestGitPull": "Результат может быть устаревшим. Чтобы получить последние результаты, запустите \"git pull\".", - "SuggestResolution": "Чтобы попытаться устранить все ошибки сразу, запустите: \nvcpkg {command_name} --{option}", "SuggestStartingBashShell": "Чтобы изменения вступили в силу, пожалуйста, проверьте, запустили ли вы новую оболочку bash,", "SupportedPort": "Порт {package_name} поддерживается.", "SwitchUsedMultipleTimes": "переключатель \"{option}\" указан несколько раз", @@ -1004,7 +979,6 @@ "UnexpectedByteSize": "Ожидалась запись: {expected}, записано: {actual}.", "UnexpectedCharExpectedCloseBrace": "Непредвиденный символ; требуется свойство или закрывающая фигурная скобка", "UnexpectedCharExpectedColon": "Непредвиденный символ; ожидается двоеточие", - "UnexpectedCharExpectedComma": "Непредвиденный символ; ожидается запятая или закрывающая фигурная скобка", "UnexpectedCharExpectedName": "Непредвиденный символ; ожидается имя свойства", "UnexpectedCharExpectedValue": "Непредвиденный символ; ожидаемое значение", "UnexpectedCharMidArray": "Непредвиденный символ в середине массива", @@ -1023,26 +997,21 @@ "UnexpectedEOFMidKeyword": "Непредвиденный EOF в середине ключевого слова", "UnexpectedEOFMidString": "Непредвиденный EOF в середине строки", "UnexpectedEOFMidUnicodeEscape": "Непредвиденный конец файла в середине escape-кода Юникода", - "UnexpectedErrorDuringBulkDownload": "произошла неожиданная ошибка при массовом скачивании.", "UnexpectedEscapeSequence": "Непредвиденное продолжение escape-последовательности", - "UnexpectedExtension": "Неожиданное расширение архива: \"{extension}\".", - "UnexpectedFeatureList": "непредвиденный список функций", "UnexpectedField": "неожиданное поле \"{json_field}\"", "UnexpectedFieldSuggest": "неожиданное поле \"{json_field}\", вы имели в виду \"{value}\"?", "UnexpectedFormat": "Ожидается формат [{expected}], а был [{actual}].", "UnexpectedOption": "непредвиденный параметр: {option}", - "UnexpectedPlatformExpression": "непредвиденное выражение платформы", "UnexpectedPortName": "порт {expected} объявлен как {actual} в {path}", "UnexpectedPortversion": "неожиданный параметр \"port-version\" без поля управления версиями", "UnexpectedSwitch": "непредвиденный переключатель: {option}", "UnexpectedToolOutput": "Средство {tool_name} ({path}) отобразило непредвиденные выходные данные при попытке определить версию:", "UnexpectedWindowsArchitecture": "неожиданная архитектура узла Windows: {actual}", "UnknownBaselineFileContent": "Базовая запись не распознана; ожидалось \"port:triplet=(fail|skip|pass)\".", - "UnknownBinaryProviderType": "неизвестный тип бинарного провайдера: допустимыми провайдерами являются «clear», «default», «nuget», «nugetconfig», «nugettimeout», «interactive», «x-azblob», «x-gcs», «x-aws», «x-aws-config», «http» и «файлы»", + "UnknownBinaryProviderType": "неизвестный тип бинарного провайдера: допустимыми провайдерами являются \"clear\", \"default\", \"nuget\", \"nugetconfig\", \"nugettimeout\", \"interactive\", \"x-azblob\", \"x-gcs\", \"x-aws\", \"x-aws-config\", \"http\" и \"files\"", "UnknownBooleanSetting": "неизвестная логическая настройка для {option}: \"{value}\". Допустимые значения: '', \"1\", \"0\", \"ВКЛ\", \"ВЫКЛ\", \"ИСТИНА\" и \"ЛОЖЬ\".", - "UnknownOptions": "Неизвестные параметры для команды '{command_namнеизвестныйe}':", "UnknownParameterForIntegrate": "Неизвестный параметр \"{value}\" для интеграции.", - "UnknownPolicySetting": "Неизвестный параметр политики '{value}': {option}", + "UnknownPolicySetting": "Неизвестный параметр {cmake_var}: {value}. Допустимые значения политики: \"\", \"disabled\" и \"enabled\".", "UnknownSettingForBuildType": "Неизвестный параметр для VCPKG_BUILD_TYPE {опция}. Допустимые параметры: '', 'debug', и 'release'.", "UnknownTool": "vcpkg не имеет определения этого инструмента для этой платформы.", "UnknownTopic": "неизвестная тема {value}", @@ -1054,7 +1023,6 @@ "UnsupportedFeatureSupportsExpressionWarning": "{feature_spec} поддерживается только в \"{supports_expression}\", что не соответствует {triplet}. Обычно это означает, что при сборке других платформ возникают известные сбои сборки или проблемы во время выполнения. В любом случае выполняется продолжение из-за параметра \"--allow-unsupported\".", "UnsupportedPort": "Порт {package_name} не поддерживается.", "UnsupportedPortDependency": "- зависимость {value} не поддерживается.", - "UnsupportedShortOptions": "краткие параметры не поддерживаются: '{value}'", "UnsupportedSyntaxInCDATA": "]]> не поддерживается в блоке CDATA", "UnsupportedSystemName": "Не удалось сопоставить VCPKG_CMAKE_SYSTEM_NAME \"{system_name}\" с платформой vcvarsall. Поддерживаемые имена систем: \"\", \"Windows\" и \"WindowsStore\".", "UnsupportedToolchain": "в триплете {triplet}: Не удалось найти допустимую цепочку инструментов для запрошенной целевой архитектуры {arch}.\nВыбранный экземпляр Visual Studio находится в: {path}\nДоступные сочетания наборов инструментов: {list}", @@ -1068,21 +1036,18 @@ "UpdateBaselineUpdatedBaseline": "обновленный реестр \"{url}\": базовый план \"{old_value}\" -> \"{new_value}\"", "UpgradeInManifest": "Обновление обновляет установку в классическом режиме и поэтому не поддерживает режим манифеста. Попробуйте обновить зависимости, обновив базовый план до текущего значения с помощью vcpkg x-update-baseline и запустив установку vcpkg.", "UpgradeRunWithNoDryRun": "Если вы действительно хотите повторно собрать перечисленные выше пакеты, запустите эту команду с параметром --no-dry-run.", - "UploadedBinaries": "Загружены двоичные файлы {count} {vendor}.", - "UploadedPackagesToVendor": "Отправлено {count} пакетов из {vendor} за {elapsed}", "UploadingBinariesToVendor": "Загрузка двоичных файлов для \"{spec}\" в источник \"{vendor}\" \"{path}\".", - "UploadingBinariesUsingVendor": "Загрузка двоичных файлов для \"{spec}\" с использованием \"{vendor}\" \"{path}\".", + "UsageInstallInstructions": "файл использования можно установить с помощью следующего CMake", + "UsageTextHere": "файл использования находится здесь", "UseEnvVar": "-- Использование {env_var} в переменных окружения.", "UserWideIntegrationDeleted": "Общепользовательская интеграция не установлена.", "UserWideIntegrationRemoved": "Общепользовательская интеграция удалена.", - "UsingCommunityTriplet": "-- Использование триплета сообщества {triplet}. Успех этой тройной конфигурации не гарантируется.", "UsingManifestAt": "Использование файла манифеста в {path}.", "Utf8ConversionFailed": "Не удалось преобразовать в UTF-8", "VSExaminedInstances": "Рассмотрены следующие экземпляры Visual Studio:", "VSExaminedPaths": "Следующие пути проверены на наличие экземпляров Visual Studio:", "VSNoInstances": "Не удалось найти полный экземпляр Visual Studio", "VcpkgCeIsExperimental": "Функция vcpkg-artifacts является экспериментальной и может измениться в любое время.", - "VcpkgCommitTableHeader": "Фиксация VCPKG", "VcpkgCompletion": "Завершение vcpkg {value} уже импортировано в ваш файл \"{path}\".\nНайдены следующие записи:", "VcpkgDisallowedClassicMode": "Не удалось найти манифест (vcpkg.json) над текущим рабочим каталогом.\nЭто распределение vcpkg не имеет экземпляра классического режима.", "VcpkgHasCrashed": "Сбой vcpkg. Пожалуйста, создайте проблему на https://github.com/microsoft/vcpkg, содержащую краткую сводку о том, что вы пытались сделать, и следующую информацию.", @@ -1095,17 +1060,22 @@ "VcpkgUsage": "использование: vcpkg <команда> [--переключатели] [--параметры=значения] [аргументы] @файл_ответа", "VcvarsRunFailed": "не удалось запустить vcvarsall.bat для получения среды Visual Studio", "VcvarsRunFailedExitCode": "при попытке получить среду Visual Studio vcvarsall.bat вернул {exit_code}", - "VersionBaselineMismatch": "Последняя версия — {expected}, но базовый файл содержит {actual}.\nЗапустите:\nvcpkg x-add-version {package_name}\ngit add versions\ngit commit -m \"Update version database\"\nдля обновления базовой версии.", + "VersionBaselineMatch": "{version_spec} соответствует текущему базовому плану", + "VersionBaselineMismatch": "Для {package_name} назначено {actual}, но локальный порт: {expected}", "VersionBuiltinPortTreeEntryMissing": "отсутствует запись базы данных версий для {package_name} в {expected}; с использованием извлеченной версией дерева портов ({actual}).", "VersionCommandHeader": "Версия программы управления пакетами vcpkg {version}\n\nСм. LICENSE.txt для получения сведений о лицензии.", "VersionConflictXML": "Ожидаемая версия {path}: [{expected_version}], но была [{actual_version}]. Повторно запустите bootstrap-vcpkg.", + "VersionConstraintNotInDatabase1": "ограничение \"version>=\" версии {version} имен {package_name}, которая не существует в базе данных версий. Все версии должны существовать в базе данных версий для интерпретации с помощью vcpkg.", + "VersionConstraintNotInDatabase2": "рассмотрите возможность удалить ограничение версии или выбрать значение, объявленное здесь", + "VersionConstraintOk": "все ограничения версий согласованы с базой данных версий", "VersionConstraintPortVersionMustBePositiveInteger": "port-version (после \"#\") в \"version>=\" должен быть неотрицательным целым числом", - "VersionConstraintUnresolvable": "Не удается разрешить минимальное ограничение для зависимости {package_name} от {spec}.\nЗависимость не была найдена в базовой версии, что указывает на то, что пакет в то время не существовал. Это можно исправить, предоставив явную версию переопределения через поле \"переопределения\" или обновив базовый план.\nСм. \"vcpkg help versioning\" для получения дополнительных сведений.", "VersionConstraintViolated": "ожидалось, что версия зависимости {spec} будет не менее {expected_version}, но текущая версия — {actual_version}.", "VersionDatabaseEntryMissing": "отсутствует запись версии для {package_name} в {version}.", - "VersionDatabaseFileMissing": "В {package_name} отсутствует файл базы данных версии в {path}\nЗапустите:\nvcpkg x-add-version {package_name}\nдля создания файла версий.", + "VersionDatabaseFileMissing": "этого порта нет в базе данных версий", + "VersionDatabaseFileMissing2": "файл базы данных версий должен находиться здесь", + "VersionDatabaseFileMissing3": "выполните команду \"{command_line}\", чтобы создать файл базы данных версий", "VersionGitEntryMissing": "отсутствует запись базы данных версий для {package_name} в {version}.\nДоступные версии:", - "VersionInDeclarationDoesNotMatch": "Версия, указанная в файле, не соответствует проверенной версии: {version}", + "VersionInDeclarationDoesNotMatch": "{git_tree_sha} объявлено как содержащее {expected}, но, по-видимому, содержит {actual}", "VersionIncomparable1": "конфликт версий {spec}: для {constraint_origin} требуется {expected}, что невозможно сравнить с базовой версией {actual}.", "VersionIncomparable2": "{version_spec} использует схему {new_scheme}", "VersionIncomparable3": "Это можно устранить, добавив явное переопределение в предпочитаемую версию. Например:", @@ -1117,17 +1087,29 @@ "VersionInvalidSemver": "\"{version}\" не является допустимой семантической версией, см. .", "VersionMissing": "ожидается поле управления версиями (один из вариантов: version, version-date, version-semver или version-string)", "VersionMissingRequiredFeature": "{version_spec} не содержит обязательного компонента {feature}, необходимого для {constraint_origin}", - "VersionNotFound": "{expected} недоступно, {actual} доступно только {actual}.", - "VersionNotFoundInVersionsFile": "Версия {version} не найдена в файле версий для {package_name}.\nЗапустите:\nvcpkg x-add-version {package_name},\nчтобы добавить новую версию порта.", + "VersionNotFoundInVersionsFile2": "{version_spec} не найдено в базе данных версий", + "VersionNotFoundInVersionsFile3": "версия должна находиться в этом файле", + "VersionNotFoundInVersionsFile4": "выполните команду \"{command_line}\", чтобы добавить новую версию порта", + "VersionOverrideNotInVersionDatabase": "в базе данных версий нет переопределения версии {package_name}. Существует ли этот порт?", + "VersionOverrideVersionNotInVersionDatabase1": "переопределение версии {version} имен {package_name}, которая не существует в базе данных версий. Установка этого порта на верхнем уровне приведет к сбою, так как эта версия будет неразрешимой.", + "VersionOverrideVersionNotInVersionDatabase2": "рассмотрите возможность удалить переопределение версии или выбрать значение, объявленное здесь", + "VersionOverwriteVersion": "вы можете перезаписать {version_spec} с правильными локальными значениями, выполнив команду:", "VersionRejectedDueToBaselineMissing": "Путь {path} отклонен, поскольку в нем используется \"{json_field}\" и отсутствует \"builtin-baseline\". Чтобы исправить эту ошибку, удалите все вхождения \"{json_field}\" или добавьте \"builtin-baseline\".\nДля получения дополнительных сведений см. \"vcpkg help versioning\".", "VersionRejectedDueToFeatureFlagOff": "Путь {path} отклонен, поскольку в нем используется \"{json_field}\", а флаг функции \"versions\" отключен. Чтобы исправить эту ошибку, удалите \"{json_field}\" или включите флаг функции \"versions\".\nДля получения дополнительных сведений см. \"vcpkg help versioning\".", - "VersionSchemeMismatch": "База данных версии объявляет {version} как {expected}, но {path} объявляет ее как {actual}. Версии должны быть уникальными, даже если они объявлены с разными схемами.\nЗапустите:\nvcpkg x-add-version {package_name} --overwrite-version,\nчтобы перезаписать схему, объявленную в базе данных версии, схемой, объявленной в порту.", - "VersionShaMismatch": "{version} объявлена с {expected}, но локальный порт имеет другой {actual} SHA.\nОбновите поля версии порта, а затем запустите:\nvcpkg x-add-version {package_name}\ngit add versions\ngit commit -m \"Update version database\",\nчтобы добавить новую версию.", - "VersionShaMissing": "при проверке {package_name} отсутствует Git SHA.\nЗапустите:\ngit add \"{path}\"\ngit commit -m \"wip\"\nvcpkg x-add-version {package_name}\ngit add versions\ngit commit --amend -m \"[{package_name}] Add new port\",\nчтобы зафиксировать новый порт и создать файл его версии.", + "VersionSchemeMismatch1": "{version} объявлено как {expected}, но {package_name} объявлен с {actual}", + "VersionSchemeMismatch1Old": "{version} объявлено как {expected}, но {package_name}@{git_tree_sha} объявлен с {actual}", + "VersionSchemeMismatch2": "версии должны быть уникальными, даже если они объявлены с разными схемами", + "VersionShaMismatch1": "{version_spec} дерева Git {git_tree_sha} не соответствует каталогу порта", + "VersionShaMismatch2": "каталог порта содержит дерево Git {git_tree_sha}", + "VersionShaMismatch3": "если {version_spec} уже опубликовано, обновите этот файл, используя новую версию или версию порта, зафиксируйте его, а затем добавьте новую версию, выполнив команду:", + "VersionShaMismatch4": "если {version_spec} еще не опубликовано, перезапишите предыдущее дерево Git, выполнив команду:", + "VersionShaMissing1": "не удалось определить дерево Git каталога порта. Обычно это вызвано незафиксированных изменениями.", + "VersionShaMissing2": "вы можете зафиксировать изменения и добавить их в базу данных версий, выполнив команду:", + "VersionShaMissing3": "wip", + "VersionShaMissing4": "[{package_name}] Добавить новый порт", "VersionSharpMustBeFollowedByPortVersion": "после \"#\" в тексте версии должна следовать версия порта", "VersionSharpMustBeFollowedByPortVersionNonNegativeInteger": "после \"#\" в тексте версии должна следовать версия порта (неотрицательное целое число)", "VersionSpecMismatch": "Не удалось загрузить порт, так как версии не согласованы. Файл \"{path}\" содержит версию {actual_version}, но база данных версий указывает, что она должна быть {expected_version}.", - "VersionTableHeader": "Версия", "VersionVerifiedOK": "параметр {version_spec} правильно указан в базе данных версий ({git_tree_sha})", "WaitingForChildrenToExit": "Ожидание завершения дочерних процессов...", "WaitingToTakeFilesystemLock": "ожидание блокировки файловой системы в {path}...", @@ -1136,8 +1118,7 @@ "WhileCheckingOutBaseline": "при извлечении базовых показателей {commit_sha}", "WhileCheckingOutPortTreeIsh": "при проверке порта {package_name} с деревом Git {git_tree_sha}", "WhileGettingLocalTreeIshObjectsForPorts": "при получении локальных древовидных объектов для портов", - "WhileLoadingLocalPort": "при попытке загрузить локальный порт {package_name}", - "WhileLoadingPortFromGitTree": "при попытке загрузить порт из: {commit_sha}", + "WhileLoadingBaselineVersionForPort": "при загрузке базовой версии для {package_name}", "WhileLoadingPortVersion": "при загрузке {version_spec}", "WhileLookingForSpec": "при поиске {spec}:", "WhileParsingVersionsForPort": "при анализе версий для {package_name} из {path}", @@ -1165,7 +1146,7 @@ "descriptionShouldBeOfTypestringFound$": "Параметр description должен иметь тип \"string\", обнаружено \"${p0}\"", "optionsShouldBeASequenceFound$": "Параметр options должен быть последовательностью, обнаружено \"${p0}\"", "DuplicateKeysDetectedInManifest$": "В манифесте обнаружены повторяющиеся ключи: \"${p0}\"", - "noPostscriptFileRerunWithTheVcpkgShellFunctionRatherThanExecutable": "нет файла в формате PostScript: перезапустите с помощью функции оболочки vcpkg, а не исполняемого файла", + "noPostscriptFileRunVcpkgshellWithTheSameArguments": "нет postscript-файла: запустите команду \\\"vcpkg-shell\\\" с теми же аргументами", "DuplicateDefine$DuringActivationNewValueWillReplaceOld": "Дублировать определение ${p0} во время активации. Новое значение заменит старое.", "DuplicateToolDeclared$DuringActivationNewValueWillReplaceOld": "Во время активации объявлено дублирующее средство ${p0}. Новое значение заменит старое.", "DuplicateAliasDeclared$DuringActivationNewValueWillReplaceOld": "Во время активации объявлен дублирующий псевдоним ${p0}. Новое значение заменит старое.", @@ -1257,7 +1238,7 @@ "MultipleArtifactsSpecifiedButNotAnEqualNumberOf$Switches": "Указано несколько артефактов, но не равное число переключателей ${p0}", "TriedToAddAnArtifact$$ButCouldNotDetermineTheRegistryToUse": "Попытка добавить артефакт [${p0}]:${p1}, но не удалось определить используемый реестр.", "TriedToAddRegistry$As$ButItWasAlready$PleaseAdd$ToThisProjectManuallyAndReattempt": "Попытка добавить реестр ${p0} как ${p1}, но он уже был ${p2}. Добавьте ${p3} в этот проект вручную и повторите попытку.", - "RunvcpkgActivateToApplyToTheCurrentTerminal": "Запустите команду \\\"vcpkg activate\\\", чтобы применить к текущему терминалу", + "RunvcpkgshellActivateToApplyToTheCurrentTerminal": "Запустите команду \\\"vcpkg-shell activate\\\", чтобы применить к текущему терминалу", "DownloadsFolderCleared$": "Папка загрузок очищена (${p0}) ", "InstalledArtifactFolderCleared$": "Папка с установленными артефактами очищена (${p0}) ", "CacheFolderCleared$": "Папка кэша очищена (${p0}) ", diff --git a/locales/messages.tr.json b/locales/messages.tr.json index a7129969dd..7532ab1c99 100644 --- a/locales/messages.tr.json +++ b/locales/messages.tr.json @@ -46,7 +46,6 @@ "AVersionOfAnyType": "herhangi bir türün sürümü", "AddArtifactOnlyOne": "'{command_line}' aynı anda yalnızca bir yapıt ekleyebilir.", "AddCommandFirstArg": "Eklenecek ilk parametre 'artifact' veya 'port' olmalıdır.", - "AddFirstArgument": "'{command_line}' için ilk bağımsız değişken, 'yapıt' veya 'bağlantı noktası' olmalıdır.", "AddPortRequiresManifest": "'{command_line}' etkin bir bildirim dosyası gerektirir.", "AddPortSucceeded": "Bağlantı noktaları vcpkg.json dosyasına başarıyla eklendi.", "AddRecurseOption": "Bunları kaldırmak istediğinizden eminseniz komutu --recurse seçeneğiyle çalıştırın.", @@ -54,12 +53,11 @@ "AddVersionAddedVersionToFile": "{version} sürümü {path} yoluna eklendi", "AddVersionArtifactsOnly": "--version yalnızca yapıtlar içindir ve vcpkg ekleme bağlantı noktasıyla kullanılamaz", "AddVersionCommitChangesReminder": "Değişikliklerinizi işlediniz mi?", - "AddVersionCommitResultReminder": "Sonucu işlemeyi unutmayın!", "AddVersionDetectLocalChangesError": "GIT durum çıkışındaki beklenmeyen biçim nedeniyle yerel değişiklikleri algılama işlemi atlanıyor", "AddVersionFileNotFound": "gerekli {path} dosyası bulunamadı", "AddVersionFormatPortSuggestion": "Dosyayı biçimlendirmek için '{command_line}' komutunu çalıştırın", "AddVersionIgnoringOptionAll": "bağlantı noktası adı bağımsız değişkeni sağlandığı için --{option} yok sayılıyor", - "AddVersionLoadPortFailed": "{package_name} bağlantı noktası yüklenemiyor", + "AddVersionInstructions": "{package_name}'in geçerli sürümünü otomatik olarak eklemek için aşağıdaki komutları çalıştırabilirsiniz:", "AddVersionNewFile": "(yeni dosya)", "AddVersionNewShaIs": "yeni SHA: {commit_sha}", "AddVersionNoFilesUpdated": "Güncelleştirilen dosya yok", @@ -70,8 +68,8 @@ "AddVersionPortFilesShaChanged": "{package_name} için iade dosyaları değiştirildi ancak sürüm güncelleştirilmedi", "AddVersionPortFilesShaUnchanged": "{package_name} için iade dosyaları {version} sürümündekiyle aynı", "AddVersionPortHasImproperFormat": "{package_name} doğru şekilde biçimlendirilmemiş.", - "AddVersionSuggestNewVersionScheme": "\"{package_name}\" bağlantı noktasında \"{old_scheme}\" yerine \"{new_scheme}\" sürüm düzenini kullanın.\nBu denetimi devre dışı bırakmak için --{option} seçeneğini kullanın.", - "AddVersionUnableToParseVersionsFile": "{path} sürüm dosyası ayrıştırılamıyor", + "AddVersionSuggestVersionDate": "\"{package_name}\" paketinin sürüm biçimi \"version-string\" kullanıyor ancak biçim olarak \"version-date\" kabul edilebilir. Bu sürümün aslında bir ISO 8601 tarihi olması amaçlanıyorsa, biçimi \"version-date\" olarak değiştirin ve bu komutu yeniden çalıştırın. Aksi takdirde, bu komutu yeniden çalıştırarak ve --skip-version-format-check ifadesini ekleyerek bu denetimi devre dışı bırakın.", + "AddVersionSuggestVersionRelaxed": "\"{package_name}\" paketinin sürüm biçimi \"version-string\" kullanıyor ancak biçim olarak \"version\" kabul edilebilir. Bu bağlantı noktasının sürümleri esnek sürüm kuralları kullanılarak sıralanabilir özellikteyse, biçimi \"version\" olarak değiştirin ve bu komutu yeniden çalıştırın. Esnek sürüm kuralları sürümleri her sayısal bileşene göre sıralar. Daha sonra, çizgi son ekleri içeren sürümler önce sözlük sırasına göre sıralanır. Ayrıca derleme etiketleri yoksayılır. Örnekler:\n1.0 < 1.1-alpha < 1.1-b < 1.1 < 1.1.1 < 1.2+build = 1.2 < 2.0\nÖzellikle çizgili son eklerin sonra değil *önce* sıralandığını unutmayın. 1.0-anything < 1.0\nGerçekte anlamsal bölümler uygulanmasa bile bu sıralama düzeninin Anlamsal Sürüm Oluşturma (https://semver.org adresine bakın) altında seçilenle aynı olduğunu unutmayın.\nBu bağlantı noktasının sürümleri bu kurallara göre sıralanmıyorsa, bu komutu yeniden çalıştırarak ve --skip-version-format-check ifadesini ekleyerek bu denetimi devre dışı bırakın.", "AddVersionUncommittedChanges": "{package_name} için kaydedilmemiş değişiklikler var", "AddVersionUpdateVersionReminder": "Sürümü veya bağlantı noktası sürümünü güncelleştirdiniz mi?", "AddVersionUseOptionAll": "Bağımsız değişken bulunmayan {command_name} komutunda, tüm bağlantı noktası sürümlerinin tek seferde güncelleştirilmesi için --{option} seçeneğinin tamamlanması gerekli", @@ -82,7 +80,7 @@ "AdditionalPackagesToRemove": "Bu işlemi tamamlamak için ek paketlerin (*) kaldırılması gerekiyor.", "AllFormatArgsRawArgument": "\"{value}\" biçim dizesi, bir ham biçim bağımsız değişkeni içeriyor", "AllFormatArgsUnbalancedBraces": "\"{value}\" biçim dizesinde dengesiz küme ayracı", - "AllPackagesAreUpdated": "Tüm yüklü paketler yerel bağlantı noktası dosyasıyla güncel.", + "AllPackagesAreUpdated": "Tüm yüklü paketler güncel.", "AlreadyInstalled": "{spec} zaten yüklü", "AlreadyInstalledNotHead": "{spec} zaten yüklü -- HEAD'den derlenemiyor", "AmbiguousConfigDeleteConfigFile": "Hem bildirim hem de yapılandırma dosyası tarafından sağlanan vcpkg yapılandırması belirsiz.\n-- {path} yapılandırma dosyasını sil", @@ -110,7 +108,6 @@ "ApplocalProcessing": "bağımlılıkları dağıtılıyor", "ArtifactsBootstrapFailed": "Vcpkg yapıtları yüklü değil ve önyükleme yapılamadı.", "ArtifactsNotInstalledReadonlyRoot": "Vcpkg yapıtları yüklü değil ve VCPKG_ROOT salt okunur varsayıldığından yüklenemiyor. Vcpkg paket yöneticisinin 'tek satırlık' kod kullanılarak yeniden yüklenmesi bu sorunu çözebilir.", - "ArtifactsNotOfficialWarning": "Resmi olmayan uyarı içeren vcpkg yapıtlarını kullanma ", "ArtifactsOptionIncompatibility": "--{option}, yapıtı bulma üzerinde hiçbir etkiye sahip değildir.", "ArtifactsOptionJson": "Ortam değişkenlerinin ve diğer özelliklerin kaydedildiği JSON dosyasının tam yolu", "ArtifactsOptionMSBuildProps": "MSBuild özelliklerinin yazılacağı dosyanın tam yolu", @@ -118,12 +115,10 @@ "ArtifactsOptionVersionMismatch": "--version anahtarlarının sayısı adlandırılmış yapıt sayısıyla eşleşmelidir", "ArtifactsSwitchARM": "Yapıtlar alınırken ARM için konak algılamayı zorlar", "ArtifactsSwitchARM64": "Yapıtlar alınırken ARM64 için konak algılamayı zorlar", - "ArtifactsSwitchAll": "Bilinen tüm yapıt kayıt defterlerini güncelleştirir", "ArtifactsSwitchAllLanguages": "Yapıtlar alınırken tüm dil dosyalarını alır", "ArtifactsSwitchForce": "Bir yapıt zaten alınmışsa yeniden almayı zorlar", "ArtifactsSwitchFreebsd": "Yapıtlar alınırken FreeBSD için konak algılamayı zorlar", "ArtifactsSwitchLinux": "Yapıtlar alınırken Linux için konak algılamayı zorlar", - "ArtifactsSwitchNormalize": "Kullanımdan kaldırma düzeltmelerini uygular", "ArtifactsSwitchOnlyOneHostPlatform": "Yalnızca bir konak platformu (--x64, --x86, --arm, --arm64) ayarlanabilir.", "ArtifactsSwitchOnlyOneOperatingSystem": "Yalnızca bir işletim sistemi (--windows, --osx, --linux, --freebsd) ayarlanabilir.", "ArtifactsSwitchOnlyOneTargetPlatform": "Yalnızca bir hedef platform (--target:x64, --target:x86, --target:arm, --target:arm64) ayarlanabilir.", @@ -135,9 +130,12 @@ "ArtifactsSwitchWindows": "Yapıtlar alınırken Windows için konak algılamayı zorlar", "ArtifactsSwitchX64": "Yapıtlar alınırken x64 için konak algılamayı zorlar", "ArtifactsSwitchX86": "Yapıtlar alınırken x86 için konak algılamayı zorlar", + "AssetCacheHit": "{path} için varlık önbelleğine erişildi; {url} adresinden indiriliyor", + "AssetCacheMiss": "Varlık önbelleğine erişilemedi; {url} adresinden indiriliyor", + "AssetCacheMissBlockOrigin": "{path} için varlık önbelleğine erişilemedi ve indirmeler x blok kaynağı tarafından engellendi.", "AssetCacheProviderAcceptsNoArguments": "beklenmeyen bağımsız değişkenler: '{value}', bağımsız değişkenleri kabul etmiyor", + "AssetCacheSuccesfullyStored": "{path} yolu {url} adresine başarıyla depolandı.", "AssetSourcesArg": "Varlık önbelleğe alma kaynakları. Bkz. 'vcpkg help assetcaching'", - "AttemptingToFetchPackagesFromVendor": "{count} paket {vendor} tarafından getirilmeye çalışılıyor", "AttemptingToSetBuiltInBaseline": "vcpkg-configuration.json içindeki varsayılan kayıt defteri geçersiz kılınırken vcpkg.json içinde yerleşik taban çizgisi ayarlanmaya çalışılıyor.\nvcpkg-configuration.json dosyasındaki varsayılan kayıt defteri kullanılacak.", "AuthenticationMayRequireManualAction": "Bir veya daha {vendor} kimlik bilgisi sağlayıcısı el ile eylem isteğinde bulundu. Etkileşime izin vermek için 'interactive' ikili kaynağı ekleyin.", "AutoSettingEnvVar": "-- {env_var} ortam değişkenlerini otomatik olarak \"{url}\" olarak ayarlama.", @@ -147,12 +145,11 @@ "AzUrlAssetCacheRequiresBaseUrl": "beklenmeyen bağımsız değişkenler: varlık yapılandırması 'azurl', bir temel url gerektiriyor", "AzUrlAssetCacheRequiresLessThanFour": "beklenmeyen bağımsız değişkenler: varlık yapılandırması 'azurl' 4'den az bağımsız değişken gerektirir", "BaselineConflict": "Bildirim dosyasında vcpkg-configuration.default-registry belirtilmesi, yerleşik taban çizgisiyle çakışıyor.\nLütfen bu çakışan ayarlardan birini kaldırın.", - "BaselineFileNoDefaultField": "İşleme sırasındaki temel {commit_sha} geçersizdi (\"varsayılan\" alan yok).", "BaselineGitShowFailed": "'{commit_sha}' işlemesinden temeli kullanıma alırken `git show` versions/baseline.json başarısız oldu. Bu, `git fetch` ile işlemeler getirilerek düzeltilebilir.", - "BaselineMissing": "Temel sürüm bulunamadı. Çalıştır:\nvcpkg x-add-version {package_name}\ngit add versions\ngit commit -m \"Update version database\"\nyazarak {version} sürümünü temel sürüm olarak ayarlayın.", - "BinaryCacheVendorHTTP": "HTTP sunucuları", + "BaselineMissing": "{package_name}'e bir sürüm atanmadı", + "BinariesRelativeToThePackageDirectoryHere": "ikililer burada ${{CURRENT_PACKAGES_DIR}} ile görelidir", "BinarySourcesArg": "İkili önbelleğe alma kaynakları. Bkz. 'vcpkg help binarycaching'", - "BinaryWithInvalidArchitecture": "{path}\n Beklenen: {expected}, ancak bulunan: {actual}", + "BinaryWithInvalidArchitecture": "{arch} için {path} oluşturuldu", "BuildAlreadyInstalled": "{spec} zaten yüklü; derlemeyi denemeden önce lütfen {spec} öğesini kaldırın.", "BuildDependenciesMissing": "Derleme komutu tüm bağımlılıkların yüklenmiş olmasını gerektirir.\nŞu bağımlılıklar eksik:", "BuildResultBuildFailed": "DERLEME_BAŞARISIZ_OLDU", @@ -170,22 +167,19 @@ "BuildTroubleshootingMessage1": "Lütfen 'git pull' ve 'vcpkg update' ile en son bağlantı noktası dosyalarını kullandığınızdan emin olun.\nArdından şu konumda bilinen sorunları kontrol edin:", "BuildTroubleshootingMessage2": "Yeni bir sorun gönderebilirsiniz:", "BuildTroubleshootingMessage3": "Hata raporu başlığınıza '[{package_name}] Derleme hatası' ekleyin, hata açıklamanıza aşağıdaki sürüm bilgilerini ekleyin ve yukarıdaki ilgili hata günlüklerini ekleyin.", - "BuildTroubleshootingMessage4": "Lütfen sorununuzu bildirirken {path} adresindeki önceden doldurulmuş şablonu kullanın.", "BuildTroubleshootingMessageGH": "Ayrıca çalıştırarak bir sorunu gönderebilirsiniz (GitHub CLI yüklü olmalıdır):", "BuildingFromHead": "HEAD'den {spec} derleniyor...", "BuildingPackage": "{spec} derleniyor...", "BuildingPackageFailed": "derleme {spec} başarısız oldu: {build_result}", "BuildingPackageFailedDueToMissingDeps": "şu eksik bağımlılıklar nedeniyle:", "BuiltInTriplets": "Yerleşik Üçlüler:", - "BuiltWithIncorrectArchitecture": "Aşağıdaki dosyalar yanlış bir mimari için oluşturulmuş:", - "CISettingsExclude": "Atlanacak bağlantı noktalarının virgülle ayrılmış listesi", + "BuiltWithIncorrectArchitecture": "Üçlü öğe, ikililerin {arch} için oluşturulmasını istiyor ancak aşağıdaki ikililer farklı bir mimari için oluşturulmuş. Bu genellikle araç zinciri bilgilerinin ikililerin derleme sistemine yanlış iletildiği anlamına gelir. Bu iletiyi gizlemek için set(VCPKG_POLICY_SKIP_ARCHITECTURE_CHECK enabled) ekleyin", "CISettingsOptCIBase": "ci.baseline.txt dosyasının yolu. Bağlantı noktalarını atlamak ve gerilemeleri algılamak için kullanılır.", "CISettingsOptExclude": "Atlanacak bağlantı noktalarının virgülle ayrılmış listesi", "CISettingsOptFailureLogs": "Hata günlüklerinin kopyalanacağı dizin", "CISettingsOptHostExclude": "Konak üçlüsü için atlanan bağlantı noktalarının virgülle ayrılmış listesi", "CISettingsOptOutputHashes": "Tüm belirlenen paket karmalarının çıkarılacağı dosya", "CISettingsOptParentHashes": "Değiştirilen paket kümesini azaltmak üzere üst CI durumu için paket karmalarının okunacağı dosya", - "CISettingsOptSkippedCascadeCount": "--exclude ve supports atlamaları sayısının tam olarak bu sayıya eşit olduğunu onaylar", "CISettingsOptXUnit": "Sonuçların XUnit biçiminde çıkarılacağı dosya", "CISettingsVerifyGitTree": "Her git ağacı nesnesinin bildirilen sürümüyle eşleştiğini doğrular (bu çok yavaştır)", "CISettingsVerifyVersion": "Yalnızca hatalar yerine her bağlantı noktasına ait sonucu yazdırır", @@ -200,8 +194,6 @@ "CMakeTargetsUsageHeuristicMessage": "# bu buluşsal olarak oluşturuldu ve doğru olmayabilir", "CMakeToolChainFile": "CMake projeleri \"-DCMAKE_TOOLCHAIN_FILE={path}\" kullanmalıdır", "CMakeUsingExportedLibs": "Dışa aktarılan kitaplıkları CMake projelerinde kullanmak için CMake komut satırınıza {value} ekleyin.", - "CheckedOutGitSha": "Git SHA kullanıma alındı: {commit_sha}", - "CheckedOutObjectMissingManifest": "Kullanıma alınmış nesne DENETİM dosyası ya da vcpkg.json dosyası içermiyor.", "ChecksFailedCheck": "vcpkg kilitlendi; ek ayrıntı yok.", "ChecksUnreachableCode": "ulaşılamayan koda ulaşıldı", "ChecksUpdateVcpkg": "vcpkg’nin bootstrap-vcpkg’nin yeniden çalıştırılarak güncelleştirilmesi bu hatayı çözebilir.", @@ -235,14 +227,11 @@ "CmdBuildExternalExample2": "vcpkg build-external zlib2 C:\\path\\to\\dir\\with\\vcpkg.json", "CmdBuildExternalSynopsis": "Yol ile bağlantı noktası oluşturur", "CmdBuildSynopsis": "Bağlantı noktası derler", - "CmdCacheExample1": "vcpkg cache ", - "CmdCacheSynopsis": "Paketlerin belirtimlerini listeler", "CmdCheckSupportExample1": "vcpkg x-check-support ", "CmdCheckSupportSynopsis": "Bağlantı noktasını oluşturmadan desteklenip desteklenmediğini test eder", "CmdCiCleanSynopsis": "CI çalıştırma işlemine hazırlanmak için tüm dosyaları temizler", "CmdCiSynopsis": "CI testi için tüm bağlantı noktalarını oluşturmaya çalışır", "CmdCiVerifyVersionsSynopsis": "Sürüm veritabanının bütünlüğünü denetler", - "CmdContactOptSurvey": "Varsayılan tarayıcıyı geçerli vcpkg anketinde başlat", "CmdCreateExample1": "vcpkg create ", "CmdCreateExample2": "vcpkg create my-fancy-port https://example.com/sources.zip", "CmdCreateExample3": "vcpkg create ", @@ -265,7 +254,7 @@ "CmdEditOptBuildTrees": "Düzenleyiciyi bağlantı noktasına özgü derleme ağacı alt klasörüne açar", "CmdEnvOptions": "Yüklü {path} yolunu {env_var} ortam değişkenine ekler", "CmdExportEmptyPlan": "Sıfır paketlerin dışarı aktarılma işleminin oluşturulması reddediliyor. Dışarı aktarmadan önce paketleri yükleyin.", - "CmdExportExample1": "vcpkg export [--nuget] [--directory=out_dir]", + "CmdExportExample1": "vcpkg export [--nuget] [--output-dir=out_dir]", "CmdExportOpt7Zip": "7zip (.7z) dosyasına aktarır", "CmdExportOptChocolatey": "Chocolatey paketini dışarı aktarır (deneysel)", "CmdExportOptDebug": "Prefab hata ayıklamayı etkinleştirir", @@ -376,8 +365,10 @@ "CmdZExtractExample2": "vcpkg z-extract source.zip source_dir --strip 2", "CmdZExtractOptStrip": "Tüm yollardan kaldırılacak olan baştaki dizinlerin sayısı", "CommandEnvExample2": "vcpkg env \"ninja -C \" --triplet x64-windows", - "CommandFailed": "command:\n{command_line}\n komutu aşağıdaki sonuçlarla başarısız oldu:", + "CommandFailed": "komut:\n{command_line}\nkomutu aşağıdaki çıkışla başarısız oldu:", + "CommandFailedCode": "komut:\n{command_line}\nçıkış kodu {exit_code} ve aşağıdaki çıkış ile başarısız oldu:", "CommunityTriplets": "Topluluk Üçlüleri:", + "CompilerPath": "Derleyici bulundu: {path}", "CompressFolderFailed": "\"{path}\" klasörü sıkıştırılamadı:", "ComputingInstallPlan": "Yükleme planı işleniyor...", "ConfigurationErrorRegistriesWithoutBaseline": "{path} yolunda tanımlanan yapılandırma geçersiz.\n\nKayıt defterlerini kullanmak, varsayılan kayıt defteri için bir taban çizgisinin ayarlanmış veya varsayılan kayıt defterinin null olmasını gerektirir.\n\nDaha fazla ayrıntı için {url} adresine gidin.", @@ -386,11 +377,10 @@ "ConsideredVersions": "Aşağıdaki yürütülebilir dosyalar dikkate alındı ancak {version} gereksinimi nedeniyle atıldı:", "ConstraintViolation": "Bir kısıtlama ihlali bulundu:", "ContinueCodeUnitInStart": "başlangıç konumunda devam kodu birimi bulundu", - "ControlAndManifestFilesPresent": "Bağlantı noktası dizininde hem bildirim dosyası hem de KONTROL dosyası bulunur: {path}", "ControlCharacterInString": "Control character in string", "ControlSupportsMustBeAPlatformExpression": "“Destekler”, bir platform ifadesi olmalıdır", - "CopyrightIsDir": "'{path}' bir dizin olarak kullanım dışı bırakıldı.", - "CorruptedDatabase": "Veritabanı bozuk.", + "CopyrightIsDir": "bu bağlantı noktası ${{CURRENT_PACKAGES_DIR}}/share/${{PORT}}/copyright'ı bir dizine ayarlar, ancak bunun bir dosya olması gerekir. Ayrı telif hakkı dosyalarını vcpkg_install_copyright kullanarak tek bir dosyada birleştirmeyi düşünün. Bu iletiyi gizlemek için set(VCPKG_POLICY_SKIP_COPYRIGHT_CHECK enabled) ekleyin", + "CorruptedDatabase": "vcpkg'nin yükleme veritabanı bozuk. Bu ya vcpkg'de bir hatadır ya da başka bir şey, 'yüklenen' dizininin içeriğini beklenmeyen bir şekilde değiştirmiştir. 'Yüklenen' dizini silip kullanmak istediğinizi yeniden yükleyerek bu sorunu düzeltme imkanınız olabilir. Bu sorun sürekli oluşursa lütfen bu adresten bir hata bildirin: https://github.com/microsoft/vcpkg.", "CorruptedInstallTree": "vcpkg 'kurulu' ağacınız bozuk.", "CouldNotDeduceNugetIdAndVersion": "{path} dosya adından NuGet kimliği ve sürümü çıkarılamadı", "CouldNotFindBaselineInCommit": "{package_name} için {commit_sha} konumunda {url} içinde temel bulunamadı.", @@ -403,14 +393,12 @@ "CreatingNugetPackage": "NuGet paketi oluşturuluyor...", "CreatingZipArchive": "Zip arşivi oluşturuluyor...", "CreationFailed": "{path} oluşturulamadı.", - "CurlFailedToExecute": "curl, {exit_code} çıkış koduyla yürütülemedi.", "CurlFailedToPut": "curl, {exit_code} çıkış koduyla dosyayı {url} URL’sine yerleştiremedi.", "CurlFailedToPutHttp": "curl, {exit_code} çıkış kodu ve {value} http kodu ile dosyayı {url} URL’sine yerleştiremedi.", - "CurlReportedUnexpectedResults": "curl, vcpkg'ye beklenmeyen sonuçlar bildirdi ve vcpkg devam edemiyor.\nLütfen hassas bilgiler için aşağıdaki metni gözden geçirin ve bu sorunu gidermeye yardımcı olmak için Microsoft/vcpkg GitHub'da bir sorun açın!\ncmd: {command_line}\n=== curl output ===\n{actual}\n=== end curl output ===", - "CurlReturnedUnexpectedResponseCodes": "curl returned a different number of response codes than were expected for the request ({actual} vs expected {expected}).", + "CurlResponseTruncatedRetrying": "curl kısmi bir yanıt döndürdü; {value} milisaniye beklenip yeniden denenecek", + "CurlTimeout": "curl, zaman aşımı ve yeniden denemeler sonrasında bile istenen tüm HTTP işlemlerini gerçekleştiremedi. Son komut satırı: {command_line}", "CurrentCommitBaseline": "Mevcut işlemeyi temel olarak kullanabilirsiniz, yani:\n\"builtin-baseline\": \"{commit_sha}\"", "CycleDetectedDuring": "{spec} işlemi sırasında algılanan döngü:", - "DateTableHeader": "Tarih", "DefaultBinaryCachePlatformCacheRequiresAbsolutePath": "VCPKG_DEFAULT_BINARY_CACHE ortam değişkeni bir dizin olmalıdır (önceden: {yol})", "DefaultBinaryCacheRequiresAbsolutePath": "VCPKG_DEFAULT_BINARY_CACHE ortam değişkeni mutlak olmalı (önceden: {path})", "DefaultBinaryCacheRequiresDirectory": "VCPKG_DEFAULT_BINARY_CACHE ortam değişkeni bir dizin olmalıdır (önceden: {yol})", @@ -419,15 +407,18 @@ "DefaultFeatureIdentifier": "varsayılan özelliklerin adları tanımlayıcı olmalıdır", "DefaultFlag": "Varsayılan olarak --{option} açık olarak ayarlanıyor.", "DefaultRegistryIsArtifact": "Varsayılan kayıt defteri yapıt kayıt defteri olamaz.", - "DefaultTripletChanged": "Eylül 2023 sürümünden başlayarak, vcpkg kitaplıkları için varsayılan üçlü, x86-windows yerine algılanan ana bilgisayar üçlüsüne ({triplet}) olarak değiştirilecek. Eski davranış için --triplet x86-windows ekleyin. Bu mesajı kaldırmak için --triplet {triplet} ekleyin.", "DeleteVcpkgConfigFromManifest": "-- Veya \"vcpkg-configuration\" öğesini {path} bildirim dosyasından kaldırın.", "DependencyFeatureCore": "\"core\" özelliği bir bağımlılığın özellik listesinde olamaz. Varsayılan özellikleri kapatmak için bunun yerine \"default-features\": false ekleyin.", "DependencyFeatureDefault": "\"default\" özelliği bir bağımlılığın özellik listesinde olamaz. Varsayılan özellikleri açmak için bunun yerine \"default-features\": true ekleyin.", "DependencyGraphCalculation": "Bağımlılık grafiği gönderme etkinleştirildi.", "DependencyGraphFailure": "Bağımlılık grafiği gönderme başarısız oldu.", "DependencyGraphSuccess": "Bağımlılık grafiği başarıyla gönderildi.", + "DependencyInFeature": "bağımlılık {feature} adlı özelliktedir", + "DependencyNotInVersionDatabase": "{package_name} bağımlılığı sürüm veritabanında mevcut değil; o port var mı?", "DeprecatedPrefabDebugOption": "--prefab-debug artık kullanımdan kaldırıldı.", "DetectCompilerHash": "Üçlü {triplet} için derleyici karması algılanamadı...", + "DirectoriesRelativeToThePackageDirectoryHere": "dizinler burada ${{CURRENT_PACKAGES_DIR}} ile görelidir", + "DllsRelativeToThePackageDirectoryHere": "DLL’ler burada ${{CURRENT_PACKAGES_DIR}} ile görelidir", "DocumentedFieldsSuggestUpdate": "Bunlar, tanınması gereken belgelenmiş alanlarsa, vcpkg aracını güncellemeyi deneyin.", "DownloadAvailable": "Bu aracın indirilebilir bir kopyası var ve {env_var} ayarı kaldırılarak kullanılabilir.", "DownloadFailedCurl": "{url} cURL’si {exit_code} çıkış koduyla indirilemedi", @@ -437,8 +428,7 @@ "DownloadRootsDir": "Dizini indirir (default: {env_var})", "DownloadWinHttpError": "{system_api} {url} URL’si {exit_code} çıkış koduyla başarısız oldu", "DownloadedSources": "{spec} için indirilen kaynaklar", - "DownloadingPortableToolVersionX": "Uygun bir {tool_name} sürümü bulunamadı (gerekli v{version}) Taşınabilir {tool_name} {version} indiriliyor...", - "DownloadingTool": "{tool_name} indiriliyor...\n{url}->{path}", + "DownloadingPortableToolVersionX": "Uygun bir {tool_name} sürümü bulunamadı (v{version} gerekiyor).", "DownloadingUrl": "{url} URL’si indiriliyor", "DownloadingVcpkgStandaloneBundle": "Tek başına paket {version} indiriliyor.", "DownloadingVcpkgStandaloneBundleLatest": "En son tek başına paket indiriliyor.", @@ -449,7 +439,6 @@ "DuplicatePackagePatternRegistry": "kayıt defteri: {url}", "DuplicatedKeyInObj": "Bir nesnede yinelenen anahtar \"{value}\"", "ElapsedForPackage": "{spec} işlenmesi için geçen süre: {elapsed}", - "ElapsedInstallTime": "Geçen toplam süre: {count}.", "ElapsedTimeForChecks": "Başarılı/başarısız olup olmadığını belirleme zamanı: {elapsed}", "EmailVcpkgTeam": "Geri bildirimleri {url} adresine e-posta gönderin.", "EmbeddingVcpkgConfigInManifest": "Bildirim dosyasına 'vcpkg-configuration' eklemek DENEYSEL bir özelliktir.", @@ -479,25 +468,23 @@ "ErrorWhileFetchingBaseline": "{package_name} deposundan temel `\"{value}\"` alınırken:", "ErrorWhileParsing": "{path} ayrıştırılırken hatalar oluştu.", "ErrorWhileWriting": "{path} yazılırken hata oluştu.", - "ErrorsFound": "Aşağıdaki hataları bulundu:", "ExamplesHeader": "Örnekler:", "ExceededRecursionDepth": "Özyineleme derinliği aşıldı.", "ExcludedPackage": "Dışlanan {spec}", "ExcludedPackages": "Aşağıdaki paketler hariç tutuldu:", + "ExecutablesRelativeToThePackageDirectoryHere": "yürütülebilir dosyalar burada ${{CURRENT_PACKAGES_DIR}} ile görelidir", "ExpectedAnObject": "nesne bekleniyordu", "ExpectedAtMostOneSetOfTags": "{old_value} için {count} küme bulundu.*{new_value} ancak blokta en fazla 1 olması bekleniyor: \n{value}", "ExpectedCharacterHere": "burada '{expected}' bekleniyordu", "ExpectedDefaultFeaturesList": "varsayılan özellikler listesinde ',' veya metin sonu bekleniyor", "ExpectedDependenciesList": "bağımlılıklar listesinde ',' ya da metin sonu bekleniyor", "ExpectedDigitsAfterDecimal": "Ondalık noktadan sonra beklenen rakamlar", - "ExpectedEof": "eof bekleniyor", "ExpectedExplicitTriplet": "açık bir üçlü bekleniyordu", "ExpectedFailOrSkip": "burada 'fail', 'skip' veya 'pass' bekleniyordu", "ExpectedFeatureListTerminal": "özellik listesinde ',' veya ']' bekleniyor", "ExpectedFeatureName": "özellik adı bekleniyor (küçük harf, rakam, '-' olmalıdır)", "ExpectedOneSetOfTags": "{count} {old_value} kümesi bulundu.*{new_value} ancak tam olarak 1 blokta bekleniyor: \n{value}", "ExpectedOneVersioningField": "yalnızca bir sürüm oluşturma alanı bekleniyordu", - "ExpectedPackageSpecifier": "paket tanımlayıcısı bekleniyor", "ExpectedPathToExist": "Getirdikten sonra {path} yolunun mevcut olması bekleniyordu", "ExpectedPortName": "burada bir bağlantı noktası adı bekleniyor (küçük harf, rakam, '-' olmalıdır)", "ExpectedReadWriteReadWrite": "beklenmeyen bağımsız değişken: beklenen 'okuma', okuma yazma' veya 'yazma'", @@ -505,7 +492,6 @@ "ExpectedTripletName": "burada bir üçlü ad bekleniyor (küçük harf, rakam, '-' olmalıdır)", "ExportArchitectureReq": "Dışa aktarma hazır yapısı, mevcut olması için arm64-v8a, armeabi-v7a, x86_64, x86 mimarilerinden en az birinin hedeflenmesini gerektirir.", "ExportPrefabRequiresAndroidTriplet": "ihracat prefabrik bir Android üçlüsü gerektirir.", - "ExportUnsupportedInManifest": "vcpkg dışa aktarma, gelecekteki tasarım konularına izin vermek için bildirim modunu desteklemez. Dışa aktarmayı, bildirim tabanlı bir projenin dışında vcpkg çalıştırarak klasik modda kullanabilirsiniz.", "Exported7zipArchive": "7zip arşivi şuraya aktarıldı: {path}", "ExportedZipArchive": "Zip arşivi şuraya aktarıldı: {path}", "ExportingAlreadyBuiltPackages": "Aşağıdaki paketler zaten oluşturulmuştur ve dışa aktarılacaktır:", @@ -514,14 +500,12 @@ "ExtendedDocumentationAtUrl": "Genişletilmiş belgelere şuradan ulaşılabilir: '{url}'.", "ExtractHelp": "Arşivi ayıklar.", "ExtractingTool": "{tool_name} ayıklanıyor...", - "FailedPostBuildChecks": "Derleme sonrası {count} denetim sorunu bulundu. Bu bağlantı noktalarını seçki olarak sunulan kataloglara göndermek için lütfen önce portfile’ı düzeltin: {path}", + "FailedPostBuildChecks": "{count} derleme sonrası denetim sorunu bulundu. Bunlar genellikle portfile.cmake veya yukarı akış derleme sistemindeki hatalardan kaynaklanır. Bu bağlantı noktasını seçki olarak sunulan kayıt defterine göndermeden önce lütfen bu hataları düzeltin.", "FailedToAcquireMutant": "değişken {path} alınamadı", "FailedToCheckoutRepo": "depo kaynağından 'sürümler' kullanıma alınamadı{package_name}", "FailedToDeleteDueToFile": "bu {path} nedeniyle remove_all({value}) başarısız oldu: ", "FailedToDeleteInsideDueToFile": "bu {path} nedeniyle remove_all_inside({value}) başarısız oldu: ", - "FailedToDetermineArchitecture": "{path} mimarisi belirlenemiyor.\n {command_line}", "FailedToDetermineCurrentCommit": "Geçerli commit belirlenemedi:", - "FailedToDownloadFromMirrorSet": "Ayna setinden indirilemedi", "FailedToExtract": "\"{path}\" ayıklanamadı:", "FailedToFetchRepo": "{url} getirilemedi.", "FailedToFindPortFeature": "{package_name} paketinin {feature} adlı bir özelliği yok.", @@ -530,27 +514,20 @@ "FailedToLoadManifest": "Bildirim {path} dizininden yüklenemedi", "FailedToLocateSpec": "Grafikte spec bulunamadı: {spec}", "FailedToObtainDependencyVersion": "İstenen bağımlılık sürümü bulunamıyor.", - "FailedToObtainLocalPortGitSha": "Yerel bağlantı noktaları için git SHA'ları alınamadı.", "FailedToObtainPackageVersion": "İstenen paket sürümü bulunamıyor.", "FailedToOpenAlgorithm": "{value} açılamadı", "FailedToParseBaseline": "Temel hat ayrıştırılamadı: {path}", "FailedToParseCMakeConsoleOut": "Blok başlangıç/bitiş işaretçilerini bulmak için CMake konsol çıktısı ayrıştırılamadı.", "FailedToParseConfig": "Yapılandırma ayrıştırılamadı: {path}", - "FailedToParseControl": "Denetim dosyası ayrıştırılamadı: {path}", - "FailedToParseManifest": "Bildirim dosyası ayrıştırılamadı: {path}", "FailedToParseNoTopLevelObj": "{path} ayrıştırılamadı, üst düzey bir nesne bekleniyordu.", "FailedToParseNoVersionsArray": "{path} ayrıştırılamadı, bir 'versions' dizisi bekleniyor.", "FailedToParseSerializedBinParagraph": "[sağlamlık kontrolü] Seri hale getirilmiş ikili paragraf ayrıştırılamadı.\nLütfen https://github.com/microsoft/vcpkg adresine giderek aşağıdaki çıkışla bir sorun açın:\n{error_msg}\nSeri Hale Getirilmiş İkili Paragraf:", + "FailedToParseVersionFile": "Sürüm dosyası ayrıştırılamadı: {path}", "FailedToParseVersionXML": "{tool_name} aracı için sürüm ayrıştırılamadı. Sürüm dizesi şuydu: {version}", - "FailedToParseVersionsFile": "{path} sürüm dosyası ayrıştırılamıyor", - "FailedToProvisionCe": "vcpkg-artifacts sağlanamadı.", - "FailedToReadParagraph": "{path} yolundan paragraflar okunamadı", - "FailedToRemoveControl": "{path} denetim dosyası kaldırılamadı", "FailedToRunToolToDetermineVersion": "{tool_name} sürümünü belirlemek için \"{path}\" çalıştırılamadı.", - "FailedToStoreBackToMirror": "yansıtmaya geri depolanamadı:", + "FailedToStoreBackToMirror": "{path} yolu {url} adresine depolanamadı.", "FailedToStoreBinaryCache": "{path} ikili önbelleği depolanamadı", "FailedToTakeFileSystemLock": "Dosya sistemi kilidi alınamadı", - "FailedToWriteManifest": "{path} manifest dosyası yazılamadı", "FailedVendorAuthentication": "Bir veya daha fazla {vendor} kimlik bilgisi sağlayıcısı kimlik doğrulaması yapamadı. Kimlik bilgilerini sağlama hakkında daha fazla ayrıntı için bkz. '{url}'.", "FetchingBaselineInfo": "Temel bilgiler {package_name}...", "FetchingRegistryInfo": "{url}'dan ({value}) kayıt defteri bilgileri alınıyor...", @@ -559,11 +536,13 @@ "FileNotFound": "{path}: Dosya bulunamadı.", "FileReadFailed": "{byte_offset} uzaklığında {path} yolundan {count} bayt okunamadı.", "FileSeekFailed": "{path} içinde {byte_offset} konumlandırma aranamadı.", - "FileSystemOperationFailed": "Filesystem işlemi başarısız oldu:", - "FilesContainAbsolutePath1": "Yüklü bir pakette aşağıdaki gibi mutlak yol olmamalıdır:", - "FilesContainAbsolutePath2": "Aşağıdaki dosyalarda mutlak yollar bulundu:", + "FilesContainAbsolutePath1": "Yüklü bir pakette aşağıdaki gibi mutlak yol olmamalıdır. Bu iletiyi gizlemek için set(VCPKG_POLICY_SKIP_ABSOLUTE_PATHS_CHECK enabled) ekleyin", + "FilesContainAbsolutePath2": "mutlak yollar burada bulundu", + "FilesContainAbsolutePathPkgconfigNote": "`vcpkg_fixup_pkgconfig()` çağrısı eklemek .pc dosyalarındaki mutlak yolları düzeltebilir", "FilesExported": "{path} konumunda dışa aktarılan dosyalar", - "FindHelp": "Belirtilen yapıtı veya bağlantı noktasını arar. 'artifact' veya 'port' sonrasında parametre yoksa, her şeyi görüntüler.", + "FilesRelativeToTheBuildDirectoryHere": "dosyalar burada derleme dizini ile göredir", + "FilesRelativeToThePackageDirectoryHere": "dosyalar burada ${{CURRENT_PACKAGES_DIR}} ile görelidir", + "FindCommandFirstArg": "'Find' için ilk bağımsız değişken 'artifact' veya 'port' olmalıdır.", "FindVersionArtifactsOnly": "--version, vcpkg arama veya vcpkg bulma bağlantı noktası ile kullanılamaz", "FishCompletion": "vcpkg balık tamamlama zaten \"{path}\" konumuna eklendi.", "FloatingPointConstTooBig": "Kayan nokta sabiti çok büyük: {count}", @@ -581,6 +560,7 @@ "GeneratingRepo": "{path} deposu oluşturuluyor...", "GetParseFailureInfo": "Ayrıştırma hataları hakkında daha fazla bilgi almak için '--debug' seçeneğini kullanın.", "GitCommandFailed": "Şu komut yürütülemedi: {command_line}", + "GitCommitUpdateVersionDatabase": "git commit -m \"Sürüm veritabanını güncelle\"", "GitFailedToFetch": "{url} deposundan ref {value} getirilemedi", "GitFailedToInitializeLocalRepository": "yerel depo {path} başlatılamadı", "GitRegistryMustHaveBaseline": "Git kayıt defteri \"{url}\", geçerli bir git taahhüt SHA'sı (40 onaltılık karakter) olan bir \"temel\" alana sahip olmalıdır.\nGeçerli en son sürümleri kullanmak için tabanı bu deponun HEAD'i olan \"{commit_sha}\" olarak ayarlayın.", @@ -623,10 +603,7 @@ "HelpEnvCommand": "Geliştirme veya derleme için temiz bir kabuk ortamı oluşturur", "HelpExampleCommand": "Daha fazla yardım (örnekler dahil) için bkz. https://learn.microsoft.com/vcpkg", "HelpExampleManifest": "Örnek bildirim:", - "HelpExportCommand": "Paketi dışarı aktarır.", - "HelpHashCommand": "Bir dosyayı belirli bir algoritmaya göre karma, varsayılan SHA512.", "HelpInstallCommand": "Paketi yükler", - "HelpListCommand": "Yüklü paketleri listeler", "HelpManifestConstraints": "Bildirimler, kullanılan versiyonlara üç çeşit kısıtlama getirebilir", "HelpMinVersion": "Vcpkg, grafikteki herhangi bir \"sürüm>=\" kısıtlamasının yanı sıra üst düzeyde belirtilen taban çizgisinden gelen sürüm de dahil olmak üzere tüm geçerli kısıtlamalarla eşleşen bulunan minimum sürümü seçecektir.", "HelpOverrides": "Üst düzey bildirim olarak kullanıldığında (örneğin, dizinde \"vcpkg yükleme\" çalıştırılırken), geçersiz kılmalar bir bildirimin bağımlılık çözümlemesini kısa devre yapmasına ve tam olarak kullanılacak sürümü belirtmesine izin verir. Bunlar, \"versiyon-dize\" bağımlılıkları gibi sürüm çakışmalarını işlemek için kullanılabilir. Geçişli olarak bağlı olduklarında dikkate alınmayacaktır.", @@ -674,7 +651,6 @@ "IllegalPlatformSpec": "Platform niteleyicisine bu bağlamda izin verilmiyor", "ImproperShaLength": "SHA512'ler 128 onaltılık karakter olmalıdır: {value}", "IncorrectArchiveFileSignature": "Yanlış arşiv dosyası imzası", - "IncorrectPESignature": "Yanlış PE imzası", "InfoSetEnvVar": "Ayrıca {env_var} ortam değişkenini istediğiniz düzenleyiciye ayarlayabilirsiniz.", "InitRegistryFailedNoRepo": "Bu bir git deposu kökü olmadığından {path} yolunda kayıt defteri oluşturulamadı.\nBu klasörde bir git deposu oluşturmak için 'git init {command_line}' kullanın.", "InstallCopiedFile": "{path_source} -> {path_destination} bitti", @@ -688,8 +664,8 @@ "InstalledBy": "{path} tarafından yüklendi", "InstalledPackages": "Aşağıdaki paketler zaten yüklü:", "InstalledRequestedPackages": "İstenen tüm paketler şu anda yüklü.", - "InstallingFromLocation": "-- Bağlantı noktası şu konumdan yükleniyor: {path}", "InstallingMavenFile": "{path} Maven dosyasını yüklüyor", + "InstallingOverlayPort": "katman bağlantı noktası buradan yükleniyor", "InstallingPackage": "{action_index}/{count} {spec} yükleniyor...", "IntegrateBashHelp": "bash sekme tamamlamayı etkinleştirir. Yalnızca Windows olmayanlarda yapılabilir.", "IntegrateFishHelp": "fish sekme tamamlamayı etkinleştirir. Yalnızca Windows olmayanlarda yapılabilir.", @@ -725,7 +701,7 @@ "InvalidBundleDefinition": "Paket grubu tanımı geçersiz.", "InvalidCharacterInFeatureList": "özellik adında geçersiz karakter (küçük harf, rakam, '-' ya da '*' olmalıdır)", "InvalidCharacterInFeatureName": "özellik adında geçersiz karakter (küçük harf, rakam, '-' olmalıdır)", - "InvalidCharacterInPackageName": "paket adında geçersiz karakter (küçük harf, rakam, '-' ya da '*' olmalıdır)", + "InvalidCharacterInPortName": "bağlantı noktası adında geçersiz karakter (küçük harf, rakam, '-' olmalıdır)", "InvalidCodePoint": "Utf8_encoded_code_point_count'a geçersiz kod noktası iletildi", "InvalidCodeUnit": "geçersiz kod birimi", "InvalidCommandArgSort": "--sort değeri 'sözlükbilimsel', 'topolojik', 'ters' değerlerinden biri olmalıdır.", @@ -743,7 +719,6 @@ "InvalidLinkage": "Geçersiz {system_name} bağlantı türü: [{value}]", "InvalidLogicExpressionUnexpectedCharacter": "geçersiz mantıksal ifade, beklenmeyen karakter", "InvalidLogicExpressionUsePipe": "geçersiz mantıksal ifade, 'or' yerine '|' kullanılmalı", - "InvalidNoVersions": "Dosyada sürüm yok.", "InvalidOptionForRemove": "'remove' kitaplıkları veya '--outdated' seçeneğini kabul ediyor", "InvalidPortVersonName": "Geçersiz bağlantı noktası sürümü dosya adı bulundu: `{path}`.", "InvalidSharpInVersion": "sürüm metninde geçersiz '#' karakteri", @@ -751,6 +726,8 @@ "InvalidString": "Value::string(std::string) öğesine geçersiz utf8 iletildi", "InvalidTriplet": "Geçersiz üçlü: {triplet}", "InvalidUri": "{value} URI’si ayrıştırılamıyor", + "InvalidValueHashAdditionalFiles": "Değişken VCPKG_HASH_ADDITIONAL_FILES geçersiz dosya yolu içeriyor: '{path}'. Değer, var olan bir dosyanın mutlak yolu olmalıdır.", + "InvalidValuePostPortfileIncludes": "VCPKG_POST_PORTFILE_INCLUDES değişkeni geçersiz dosya yolu içeriyor: '{path}'. Değer, var olan bir cmake dosyasının mutlak yolu olmalıdır.", "IrregularFile": "yol normal bir dosya değildi: {path}", "JsonErrorMustBeAnObject": "“{path}” öğesinin bir nesne olması bekleniyordu.", "JsonFieldNotObject": "[\"{json_field}\"] değeri bir nesne olmalıdır", @@ -786,11 +763,11 @@ "LinkageStaticDebug": "Statik Hata Ayıklama (/MTd)", "LinkageStaticRelease": "Statik Yayın (/MT)", "ListHelp": "Yüklü kitaplıkları listeler", - "LoadingCommunityTriplet": "-- [COMMUNITY] Üçlü yapılandırma şuradan yükleniyor: {path}", + "LoadedCommunityTriplet": "buradan topluluk üçlüsü yükledi. Topluluk üçlüleri, seçki olarak sunulan kayıt defterinde yerleşik olmadığından başarılı olma olasılığı daha düşüktür.", + "LoadedOverlayTriplet": "katman üçlüsü buradan yüklendi", "LoadingDependencyInformation": "{count} paket için bağımlılık bilgileri yükleniyor...", - "LoadingOverlayTriplet": "-- [OVERLAY] Üçlü yapılandırma şuradan yükleniyor: {path}", - "LocalPortfileVersion": "Yerel bağlantı noktası dosyası sürümleri kullanılıyor. Yerel bağlantı noktası dosyalarını güncelleştirmek için `git pull` kullanın.", - "ManifestConflict": "Hem bildirim hem de KONTROL dosyaları bağlantı noktasında “{path}” bulundu. Lütfen birini yeniden adlandırın", + "LocalPortfileVersion": "Yerel bağlantı noktası sürümleri kullanılıyor. Yerel bağlantı noktalarını güncelleştirmek için `git pull` kullanın.", + "ManifestConflict2": "Hem bildirim hem de KONTROL dosyaları bulundu; lütfen birini veya diğerini yeniden adlandırın", "ManifestFormatCompleted": "Bildirim dosyalarını biçimlendirmeyi başardı.", "MismatchedBinParagraphs": "Seri hale getirilmiş ikili paragraf, özgün ikili paragraftan farklı. Lütfen {url} konumunda, aşağıdaki çıkışla bir sorun açın:", "MismatchedFiles": "depolanacak dosya karma ile eşleşmiyor", @@ -802,6 +779,7 @@ "MissingAndroidEnv": "ANDROID_NDK_HOME ortam değişkeni eksik", "MissingAndroidHomeDir": "ANDROID_NDK_HOME dizini mevcut değil: {path}", "MissingArgFormatManifest": "format-manifest '--all' olmadan --convert-control’den geçirildi.\nBu işlem hiçbir şey yapmaz: Açıkça geçirilen kontrol dosyaları otomatik olarak dönüştürülür.", + "MissingAssetBlockOrigin": "Eksik {path} ve indirmeler x blok kaynağı tarafından engellendi.", "MissingClosingParen": "kapatma ayracı eksik", "MissingDependency": "Paket {spec} yüklü, ancak bağımlılık {package_name} değil.", "MissingExtension": "'{extension}' uzantısı eksik.", @@ -810,9 +788,9 @@ "MissingPortSuggestPullRequest": "Bağlantı noktanız listede yoksa, lütfen bir sorun bildirimi açın ve/veya bir çekme isteğinde bulunmayı düşünün.", "MissingRequiredField": "gerekli '{json_field}' alanı eksik ({json_type})", "MissingRequiredField2": "'{json_field}' gerekli alanı eksik", + "MissingShaVariable": "Başka değişkenler kullanılırsa şablonda {{sha}} değişkeni kullanılmalıdır.", "MixingBooleanOperationsNotAllowed": "& ve | öğelerinin karıştırılmasına izin verilmiyor; işlem sırasını belirtmek için () kullanın", "MonoInstructions": "Bunun nedeni, eksik bir Mono yüklemesi olabilir. Bazı sistemlerde `sudo apt install mono-complete` aracılığıyla tam Mono yüklemesi yapılabilir. Ubuntu 18.04 kullanıcıları https://www.mono-project.com/download/stable/ adresinde kullanıma sunulan daha yeni bir Mono sürümüne gerek duyabilir", - "MsiexecFailedToExtract": "“{path}” ayıklanırken msiexec başlatma veya {exit_code} çıkış kodu ve iletisi ile başarısız oldu:", "MultiArch": "Çoklu Mimari 'aynı' olması gerekirken {option} oldu", "MultipleFeatures": "{package_name}, {feature} ögesini birden çok tanımlıyor; lütfen özelliklerin farklı adlara sahip olduğundan emin olun", "MutuallyExclusiveOption": "--{value}, --{option} ile kullanılamaz.", @@ -822,10 +800,8 @@ "NewOnlyOneVersionKind": "--version-relaxed, --version-date veya --version-string değerlerden yalnızca biri belirtilebilir.", "NewSpecifyNameVersionOrApplication": "C++ kitaplıklarına yönelik bir bildirim oluşturmak için --name ve --version belirtin ya da bildirimin bağlantı noktası olarak kullanılmaya yönelik olmadığını belirtmek için --application belirtin.", "NewVersionCannotBeEmpty": "--version boş olamaz.", - "NoArgumentsForOption": "--{option} seçeneği bir bağımsız değişken kabul etmez.", "NoError": "hata yok", "NoInstalledPackages": "Yüklü paket yok. \"Ara\" mı demek istiyorsunuz?", - "NoLocalizationForMessages": "Şunlar için yerelleştirilmiş ileti yok: ", "NoOutdatedPackages": "Güncel olmayan paket yok.", "NoRegistryForPort": "{package_name} bağlantı noktası için yapılandırılmış kayıt yok", "NoUrlsAndHashSpecified": "{sha} SHA bileşenini indirmek için URL belirtilmedi", @@ -866,7 +842,6 @@ "PackageManipulationHeader": "Paket İşleme", "PackageRootDir": "Paketler dizini (deneysel)", "PackagesToInstall": "Aşağıdaki paketler oluşturulacak ve kurulacaktır:", - "PackagesToInstallDirectly": "Aşağıdaki paketler doğrudan yüklenecektir:", "PackagesToModify": "Bu işlemi tamamlamak için ek paketler (*) değiştirilecektir.", "PackagesToRebuild": "Aşağıdaki paketler yeniden oluşturulacak:", "PackagesToRebuildSuggestRecurse": "Yukarıdaki paketleri yeniden derlemek istediğinizden eminseniz, komutu --recurse seçeneğiyle çalıştırın.", @@ -882,47 +857,50 @@ "ParseFeatureNameError": "\"{package_name}\" geçerli bir özellik adı değil. Özellik adları küçük alfasayısal+kısa çizgi şeklinde ve ayrılmamış olmalıdır (daha fazla bilgi için {url} adresine gidin)", "ParseIdentifierError": "\"{value}\" geçerli bir tanımlayıcı değil. Tanımlayıcılar sadece küçük alfasayısal+kısa çizgi şeklinde ve ayrılmamış olmalıdır (daha fazla bilgi için {url} adresine gidin).", "ParsePackageNameError": "\"{package_name}\" geçerli bir paket adı değil. Paket adları küçük alfasayısal+kısa çizgi şeklinde ve ayrılmamış olmalıdır (daha fazla bilgi için {url} adresine gidin).", + "ParsePackageNameNotEof": "bir paket adı ayrıştıran giriş sonu bekleniyordu; bu genellikle belirtilen karakterin, bağlantı noktası adında bulunamayacağı anlamına gelir. Bağlantı noktası adları küçük alfasayısal+kısa çizgi şeklinde ve ayrılmamış olmalıdır (daha fazla bilgi için {url} adresine gidin).", "ParsePackagePatternError": "\"{package_name}\" geçerli bir paket deseni değil. Paket desenlerinin yalnızca bir joker karakter (*) kullanması ve bunun desendeki son karakter olması gerekir (daha fazla bilgi için {url} adresine gidin).", + "ParseQualifiedSpecifierNotEof": "bir paket belirtimi ayrıştıran giriş sonu bekleniyordu; bu genellikle belirtilen karakterin, paket belirtiminde bulunamayacağı anlamına gelir. Bağlantı noktası, üçlü ve özellik adlarının tümü küçük alfasayısal+kısa çizgilerdir.", + "ParseQualifiedSpecifierNotEofSquareBracket": "bir paket belirtimini ayrıştıran giriş sonu bekleniyordu; Aslında şunu mu demek istediniz: {version_spec}?", "PathMustBeAbsolute": "X_VCPKG_REGISTRIES_CACHE ortam değişkeninin değeri mutlak değil: {path}", - "PerformingPostBuildValidation": "-- Derleme sonrası doğrulama gerçekleştiriyor", - "PortBugAllowRestrictedHeaders": "Bu ilke, olağanüstü durumlarda {env_var} yoluyla devre dışı bırakılabilir", - "PortBugBinDirExists": "Statik derlemede bin\\ dizini olmamalıdır, ancak {path} var.", - "PortBugDebugBinDirExists": "Statik derlemede debug\\bin\\ dizini olmamalıdır, ancak {path} var.", - "PortBugDebugShareDir": "/debug/share bulunmamalıdır. Lütfen önemli dosyaları yeniden düzenleyip\nfile(REMOVE_RECURSE \"${{CURRENT_PACKAGES_DIR}}/debug/share\") kullanın", - "PortBugDllAppContainerBitNotSet": "Uygulama Kapsayıcısı biti, Windows Mağazası uygulamaları için ayarlanmalıdır. Aşağıdaki DLL'lerde Uygulama Kapsayıcısı bit kümesi yok:", - "PortBugDllInLibDir": "/lib veya /debug/lib içinde aşağıdaki DLL'ler bulundu. Lütfen bunları sırasıyla /bin veya /debug/bin'e taşıyın.", - "PortBugDuplicateIncludeFiles": "Ekleme dosyaları /debug/include dizininde çoğaltılamaz. Bu proje CMake içinde devre dışı bırakılamazsa,\nfile(REMOVE_RECURSE \"${{CURRENT_PACKAGES_DIR}}/debug/include\") kullanın", - "PortBugFoundCopyrightFiles": "Aşağıdaki dosyalar olası telif hakkı dosyalarıdır:", - "PortBugFoundDebugBinaries": "{count} hata ayıklama ikili dosyası bulundu:", - "PortBugFoundDllInStaticBuild": "DLL'ler statik bir derlemede mevcut olmamalıdır ancak aşağıdaki DLL'ler bulundu:", - "PortBugFoundEmptyDirectories": "{path} yolunda boş dizin olmamalıdır. Aşağıdaki boş dizinler bulundu:", - "PortBugFoundExeInBinDir": "/bin veya /debug/bin içinde aşağıdaki EXE’ler bulundu. EXE'ler geçerli dağıtım hedefi değil.", - "PortBugFoundReleaseBinaries": "{count} yayın ikili dosyaları bulundu:", - "PortBugIncludeDirInCMakeHelperPort": "/include klasörü bir CMake yardımcı bağlantı noktasında var; bu doğru değil çünkü yalnızca CMake dosyaları yüklenmelidir", - "PortBugInspectFiles": "{extension} dosyalarını incelemek için şu komutu kullanın:", - "PortBugInvalidCrtLinkage": "Aşağıdaki ikili dosyalar {expected} CRT'yi kullanmalıdır.", - "PortBugInvalidCrtLinkageEntry": "Şunları barındıran {path} bağlantıları:", - "PortBugKernel32FromXbox": "Seçilen üçlü Xbox'ı hedefler, ancak aşağıdaki DLL'ler kernel32 ile bağlantılıdır. Bu DLL'ler, kernel32'nin bulunmadığı Xbox'a yüklenemez. Bu genellikle onecore_apiset.lib veya xgameplatform.lib gibi uygun bir şemsiye kitaplık yerine kernel32.lib ile bağlantı kurulmasından kaynaklanır.", - "PortBugMergeLibCMakeDir": "/lib/cmake klasörü /debug/lib/cmake ile birleştirilmeli ve /share/{package_name}/cmake konumuna taşınmalıdır. Lütfen vcpkg-cmake-config bağlantı noktasından 'vcpkg_cmake_config_fixup()' yardımcı işlevini kullanın.", - "PortBugMismatchedNumberOfBinaries": "Hata ayıklama ve yayın ikili dosyalarının sayısı eşleşmiyor.", - "PortBugMisplacedCMakeFiles": "Aşağıdaki CMake dosyaları /share/{spec} dışında bulundu. Lütfen CMake dosyalarını /share/{spec} dosyasına yerleştirin.", - "PortBugMisplacedFiles": "Şu dosyalar {path} yoluna yerleştirilir:", - "PortBugMisplacedFilesCont": "Dosyalar bu dizinlerde bulunamaz.", - "PortBugMisplacedPkgConfigFiles": "pkgconfig dizinleri, share/pkgconfig (yalnızca üst bilgi kitaplıkları için), lib/pkgconfig veya lib/debug/pkgconfig'den biri olmalıdır. Aşağıdaki yanlış yerleştirilmiş pkgconfig dosyaları bulundu:", + "PerformingPostBuildValidation": "Derleme sonrası doğrulama gerçekleştiriyor", + "PortBugBinDirExists": "${{CURRENT_PACKAGES_DIR}}/{path} var, ancak statik derlemede olmamalıdır. Bu iletiyi gizlemek için set(VCPKG_POLICY_DLLS_IN_STATIC_LIBRARY enabled) ekleyin", + "PortBugDebugShareDir": "${{CURRENT_PACKAGES_DIR}}/debug/share mevcut olmamalıdır. Lütfen önemli dosyaları yeniden düzenleyin ve kalan dosyaları `file(REMOVE_RECURSE \"${{CURRENT_PACKAGES_DIR}}/debug/share\")` ekleyerek kaldırın. Bu iletiyi gizlemek için set(VCPKG_POLICY_ALLOW_DEBUG_SHARE enabled) ekleyin", + "PortBugDllAppContainerBitNotSet": "Uygulama Kapsayıcısı biti, Windows Mağazası uygulamalarındaki tüm DLL’ler ve Windows Mağazası’nı hedef alan üçlü istekler için ayarlanmalıdır, ancak aşağıdaki DLL’ler bit kümesiyle derlenemedi. Bu genellikle araç zinciri bağlayıcı bayraklarının düzgün şekilde yayılmadığı veya kullanımda olan bağlayıcının /APPCONTAINER anahtarını desteklemediği anlamına gelir. Bu iletiyi gizlemek için set(VCPKG_POLICY_SKIP_APPCONTAINER_CHECK enabled) ekleyin", + "PortBugDllInLibDir": "${{CURRENT_PACKAGES_DIR}}/lib veya ${{CURRENT_PACKAGES_DIR}}/debug/lib içinde aşağıdaki DLL’ler bulundu. Lütfen bunları sırasıyla ${{CURRENT_PACKAGES_DIR}}/bin veya ${{CURRENT_PACKAGES_DIR}}/debug/bin'e taşıyın.", + "PortBugDuplicateIncludeFiles": "${{CURRENT_PACKAGES_DIR}}/debug/include mevcut olmamalıdır. Bu iletiyi gizlemek için set(VCPKG_POLICY_ALLOW_DEBUG_INCLUDE enabled) ekleyin", + "PortBugDuplicateIncludeFilesFixIt": "Bu dizin, hata ayıklamada üst bilgi yüklemenin devre dışı bırakılmasına izin vermeyen bir derleme sistemi tarafından oluşturulmuşsa, yinelenen dizini file(REMOVE_RECURSE \"${{CURRENT_PACKAGES_DIR}}/debug/include\") ile silin", + "PortBugFoundCopyrightFiles": "aşağıdaki dosyalar olası telif hakkı dosyalarıdır", + "PortBugFoundDebugBinaries": "Aşağıdakiler hata ayıklama ikilileridir:", + "PortBugFoundDllInStaticBuild": "DLL’ler statik bir derlemede mevcut olmamalıdır ancak aşağıdaki DLL’ler bulundu. Bu iletiyi gizlemek için set(VCPKG_POLICY_DLLS_IN_STATIC_LIBRARY enabled) ekleyin", + "PortBugFoundEmptyDirectories": "Yüklü boş dizin olmamalıdır. Boş dizinler birkaç ikili önbellek sağlayıcısı ve git deposu için gösterilemez ve anlamsal derleme çıkışları olarak değerlendirilmez. Her boş dizin içinde normal bir dosya oluşturun veya boş dizinleri aşağıdaki CMake ile silin. Bu iletiyi gizlemek için set(VCPKG_POLICY_ALLOW_EMPTY_FOLDERS enabled) ekleyin", + "PortBugFoundExeInBinDir": "Aşağıdaki yürütülebilir dosyalar ${{CURRENT_PACKAGES_DIR}}/bin veya ${{CURRENT_PACKAGES_DIR}}/debug/bin içinde bulundu. Yürütülebilir dosyalar geçerli dağıtım hedefleri değildir. Bu yürütülebilir dosyalar derleme araçlarıysa `vcpkg_copy_tools` kullanmayı düşünün. Bu iletiyi gizlemek için set(VCPKG_POLICY_ALLOW_EXES_IN_BIN enabled) ekleyin", + "PortBugFoundReleaseBinaries": "Aşağıdakiler sürüm ikilileridir:", + "PortBugIncludeDirInCMakeHelperPort": "${{CURRENT_PACKAGES_DIR}}/include klasörü bir CMake yardımcı bağlantı noktasında var; yalnızca CMake dosyalarının yüklenmesi gerektiğinden bu yanlıştır. Bu iletiyi gizlemek için set(VCPKG_POLICY_CMAKE_HELPER_PORT enabled) öğesini kaldırın.", + "PortBugInvalidCrtLinkageCrtGroup": "Aşağıdaki ikililer yalnızca şunlarla bağlantı oluşturmalıdır: {expected}", + "PortBugInvalidCrtLinkageEntry": "Şunu içeren {path} bağlantıları: {actual}", + "PortBugInvalidCrtLinkageHeader": "C RunTimes (\"CRT\") ile bu bağlantı noktası bağlantısı tarafından oluşturulan ikili dosyalar, üçlü ve dağıtım yapısı tarafından istenenlerle tutarsız. Üçlü öğenin yalnızca yayın CRT’sini kullanması amaçlanıyorsa, üçlü .cmake dosyasına set(VCPKG_POLICY_ONLY_RELEASE_CRT enabled) eklemeniz gerekir. Bu denetimi tamamen gizlemek için, bu üçlü genelinde geçerliyse üçlü .cmake dosyasına veya bağlantı noktasına özelse portfile.cmake dosyasına set(VCPKG_POLICY_SKIP_CRT_LINKAGE_CHECK enabled) ekleyin. İkili dosyaları şu şekilde inceleyebilirsiniz: dumpbin.exe /directives mylibfile.lib", + "PortBugKernel32FromXbox": "Seçilen üçlü Xbox’ı hedefliyor, ancak aşağıdaki DLL’ler kernel32 ile bağlantılı. Bu DLL’ler, kernel32’nin mevcut olmadığı Xbox’a yüklenemiyor. Bu genellikle, onecore_apiset.lib veya xgameplatform.lib gibi uygun bir şemsiye kitaplığı yerine kernel32.lib ile bağlantı yapılmasından kaynaklanır. `dumpbin.exe /dependents mylibfile.dll` ile DLL bağımlılıklarını inceleyebilirsiniz. Bu iletiyi gizlemek için set(VCPKG_POLICY_ALLOW_KERNEL32_FROM_XBOX enabled) ekleyin", + "PortBugMergeLibCMakeDir": "Bu bağlantı noktası ${{CURRENT_PACKAGES_DIR}}/lib/cmake ve/veya ${{CURRENT_PACKAGES_DIR}}/debug/lib/cmake oluşturur, bunun birleştirilip ${{CURRENT_PACKAGES_DIR}}/share/${{PORT}}/cmake’e taşınması gerekir. Lütfen vcpkg-cmake-config bağlantı noktasından vcpkg_cmake_config_fixup() yardımcı işlevini kullanın. Bu iletiyi gizlemek için set(VCPKG_POLICY_SKIP_LIB_CMAKE_MERGE_CHECK enabled) ekleyin", + "PortBugMismatchingNumberOfBinaries": "hata ayıklama ve yayın ikili dosyalarının sayısı eşleşmiyor. Bu genellikle portfile.cmake veya derleme sistemindeki hata ayıklama veya yayının hatalı işlendiğini gösterir. Yalnızca bu üçlü için yayın bileşenleri oluşturmayı hedefliyorsanız, üçlü öğenin .cmake dosyasına set(VCPKG_BUILD_TYPE release) eklenmelidir. Bu iletiyi gizlemek için set(VCPKG_POLICY_MISMATCHED_NUMBER_OF_BINARIES enabled) ekleyin", + "PortBugMisplacedCMakeFiles": "Bu bağlantı noktası aşağıdaki CMake dosyalarını CMake dosyalarının beklenmediği konumlara yüklüyor. CMake dosyaları ${{CURRENT_PACKAGES_DIR}}/share/${{PORT}} konumuna yüklenmelidir. Bu iletiyi gizlemek için set(VCPKG_POLICY_SKIP_MISPLACED_CMAKE_FILES_CHECK enabled) ekleyin", + "PortBugMisplacedFiles": "Aşağıdaki normal dosyalar, normal dosyaların yüklenemeyeceği konumlara yüklenmiş. Bunlar bir alt dizine yüklenmelidir. Bu iletiyi gizlemek için set(VCPKG_POLICY_SKIP_MISPLACED_REGULAR_FILES_CHECK enabled) ekleyin", + "PortBugMisplacedPkgConfigFiles": "Aşağıdaki yanlış yerleştirilmiş pkgconfig dizinleri yüklendi. Yanlış yerleştirilmiş pkgconfig dosyaları pkgconf veya pkg-config tarafından doğru bulunamaz. pkgconfig dizinleri ${{CURRENT_PACKAGES_DIR}}/share/pkgconfig (mimariden bağımsız / yalnızca üst bilgi kitaplıkları için), ${{CURRENT_PACKAGES_DIR}}/lib/pkgconfig (yayın bağımlılıkları için) veya ${{CURRENT_PACKAGES_DIR}}/debug/lib/pkgconfig (hata ayıklama bağımlılıkları için) olmalıdır. Bu iletiyi gizlemek için set(VCPKG_POLICY_SKIP_PKGCONFIG_CHECK enabled) ekleyin", + "PortBugMissingCMakeHelperPortFile": "${{CURRENT_PACKAGES_DIR}}/share/${{PORT}}/vcpkg-port-config.cmake dosyası yok. CMake yardımcı bağlantı noktaları için bu dosya bulunmalıdır. Bu iletiyi gizlemek için set(VCPKG_POLICY_CMAKE_HELPER_PORT enabled) öğesini kaldırın", "PortBugMissingDebugBinaries": "Hata ayıklama ikili dosyaları bulunamadı.", - "PortBugMissingFile": "/{path} dosyası yok. CMake yardımcı bağlantı noktaları için bu dosya bulunmalıdır.", - "PortBugMissingImportedLibs": "İçeri aktarma kitaplıkları {path} yolunda yoktu.\n Bu amaçlandıysa, portfile’da:\nset(VCPKG_POLICY_DLLS_WITHOUT_LIBS etkin) satırı ekleyin", - "PortBugMissingIncludeDir": "/include klasörü boş veya yok. Bu, kitaplığın düzgün yüklenmemiş olduğunu gösterir.", - "PortBugMissingLicense": "Yazılım lisansı ${{CURRENT_PACKAGES_DIR}}/share/{package_name}/copyright adresinde kullanıma sunulmalıdır", - "PortBugMissingProvidedUsage": "Bağlantı noktası \"usage\" sağladı ancak /share/{package_name}/usage içine yüklemeyi unuttu, portfile içine aşağıdaki satırı ekleyin:", + "PortBugMissingImportedLibs": "Yüklü DLL’ler için içeri aktarma kitaplıkları eksik gibi görünüyor. Bu amaçlandıysa set(VCPKG_POLICY_DLLS_WITHOUT_LIBS enabled) ekleyin", + "PortBugMissingIncludeDir": "${{CURRENT_PACKAGES_DIR}}/include klasörü boş veya yok. Bu genellikle üst bilgilerin düzgün yüklenmemiş olduğu anlamına gelir. Bu bir CMake yardımcı bağlantı noktasıysa set(VCPKG_POLICY_CMAKE_HELPER_PORT enabled) ekleyin. Bu bir CMake yardımcı bağlantı noktası değilse ancak bu bilerek yapılmışsa, bu iletiyi gizlemek için set(VCPKG_POLICY_EMPTY_INCLUDE_FOLDER enabled) ekleyin.", + "PortBugMissingLicense": "lisans ${{CURRENT_PACKAGES_DIR}}/share/${{PORT}}/copyright konumuna yüklenmedi. Bu sorun, vcpkg_install_copyright’a bir çağrı eklenerek düzeltilebilir. Bu iletiyi gizlemek için set(VCPKG_POLICY_SKIP_COPYRIGHT_CHECK enabled) ekleyin", + "PortBugMissingLicenseFixIt": "Şunu eklemeyi düşünün: {value}", + "PortBugMissingProvidedUsage": "bu bağlantı noktası \"usage\" adlı bir dosya içeriyor ancak bunu ${{CURRENT_PACKAGES_DIR}}/share/${{PORT}}/usage konumuna yüklemedi. Bu dosyanın kullanım metni olması amaçlanmadıysa, başka bir ad seçmeyi düşünün; aksi halde yükleyin. Bu iletiyi gizlemek için set(VCPKG_POLICY_SKIP_USAGE_INSTALL_CHECK enabled) ekleyin", "PortBugMissingReleaseBinaries": "Yayın ikili dosyaları bulunamadı.", "PortBugMovePkgConfigFiles": "pkgconfig dosyalarını aşağıdakine benzer komutlarla taşıyabilirsiniz:", - "PortBugOutdatedCRT": "Aşağıdaki dosyalarda süresi geçmiş dinamik CRT algılandı:", - "PortBugRemoveBinDir": "bin\\ ve/veya debug\\bin\\ oluşturma devre dışı bırakılamıyorsa, bunları kaldırmak için bunu portfile’da kullanın", - "PortBugRemoveEmptyDirectories": "Doldurulması gereken bir dizin doldurulmamışsa bu, portfile’da bir hata olabileceğini gösterir.\nDizinlere gerek yoksa ve oluşturmaları devre dışı bırakılamıyorsa bunları kaldırmak için portfile’da buna benzer bir özellik kullanın:", + "PortBugOutdatedCRT": "Artık kullanılmayan C RunTime (\"CRT\") DLL’leri ile bağlantılı olan DLL’ler yüklendi. Yüklü DLL’lerin desteklenen bir CRT ile bağlanması gerekir. `dumpbin.exe /dependents mylibfile.dll` ile DLL bağımlılıklarını inceleyebilirsiniz. Eski bir CRT’yi hedefleyen özel bir üçlü kullanıyorsanız, üçlü .cmake dosyasına set(VCPKG_POLICY_ALLOW_OBSOLETE_MSVCRT enabled) ekleyin. Bu iletiyi bu bağlantı noktası için gizlemek için set(VCPKG_POLICY_ALLOW_OBSOLETE_MSVCRT enabled) ekleyin", + "PortBugRemoveBinDir": "bu dizinlerin oluşturulması devre dışı bırakılamıyorsa, bunları kaldırmak için portfile.cmake’e aşağıdakini ekleyebilirsiniz", "PortBugRemoveEmptyDirs": "file(REMOVE_RECURSE yukarıdaki yeniden adlandırmalardan kalan dizinleri boşalt)", - "PortBugRestrictedHeaderPaths": "Aşağıdaki kısıtlanmış üst bilgiler çekirdek C++ çalışma zamanının ve diğer paketlerin düzgün bir şekilde derlenmesini önleyebilir. Bu ilke, olağanüstü durumlarda CMake değişkenini portfile.cmake üzerinde VCPKG_POLICY_ALLOW_RESTRICTED_HEADERS olarak ayarlayarak devre dışı bırakılabilir.", - "PortBugSetDllsWithoutExports": "Dışarı aktarma içermeyen DLL'ler büyük olasılıkla derleme betiğinde bir hatadır. Bu amaçlandıysa, portfile’da şu satırı ekleyin:\nset(VCPKG_POLICY_DLLS_WITHOUT_EXPORTS etkin)\nAşağıdaki DLL'lerde dışarı aktarma yok:", + "PortBugRestrictedHeaderPaths": "Aşağıdaki kısıtlanmış üst bilgiler çekirdek C++ çalışma zamanının ve diğer paketlerin düzgün bir şekilde derlenmesini önleyebilir. Bunlar yeniden adlandırılmalı veya bir alt dizinde depolanmalıdır. Sıra dışı durumlarda, bu uyarı set(VCPKG_POLICY_ALLOW_RESTRICTED_HEADERS enabled) eklenerek gizlenebilir", + "PortBugRestrictedHeaderPathsNote": "üst bilgiler burada ${{CURRENT_PACKAGES_DIR}}/include ile görelidir", + "PortBugSetDllsWithoutExports": "aşağıdaki DLL’ler dışarı aktarma olmadan oluşturuldu. Dışarı aktarma içermeyen DLL’ler büyük olasılıkla derleme betiğindeki hatalardır. Bu amaçlandıysa set(VCPKG_POLICY_DLLS_WITHOUT_EXPORTS enabled) ekleyin", + "PortDeclaredHere": "{package_name} burada bildirildi", "PortDependencyConflict": "{package_name} bağlantı noktası aşağıdaki desteklenmeyen bağımlılıklara sahip:", "PortDoesNotExist": "{package_name} yok", "PortMissingManifest2": "{package_name} bağlantı noktası bildirimi eksik (vcpkg.json veya CONTROL dosyası yok)", @@ -932,7 +910,6 @@ "PortVersionControlMustBeANonNegativeInteger": "“Bağlantı Noktası Sürümü”, negatif olmayan bir tamsayı olmalıdır.", "PortVersionMultipleSpecification": "\"port_version\", sürümde ekli '#' karakteri ile birleştirilemez", "PortsAdded": "Aşağıdaki {count} bağlantı noktası eklendi:", - "PortsDiffHelp": "Bağımsız değişken, sonuçlandırma için bir dal/etiket/karma olmalıdır.", "PortsNoDiff": "İki işleme arasındaki bağlantı noktalarında herhangi bir değişiklik olmadı.", "PortsRemoved": "Aşağıdaki {count} bağlantı noktası kaldırıldı:", "PortsUpdated": "Aşağıdaki {count} bağlantı noktası güncelleştirildi:", @@ -957,7 +934,6 @@ "RestoredPackagesFromNuGet": "{elapsed} içinde NuGet kaynağından {count} paket geri yüklendi. Daha fazla ayrıntı için --debug kullanın.", "ResultsHeader": "SONUÇLAR", "ScriptAssetCacheRequiresScript": "beklenen bağımsız değişkenler: varlık yapılandırması 'x-script', bağımsız değişken olarak tam olarak exec şablonunu gerektirir", - "SearchHelp": "Bağımsız değişken aranılacak bir alt dize olmalıdır ya da tüm kitaplıkları görüntülemek için bağımsız değişken olmamalıdır.", "SecretBanner": "*** GİZLİ DİZİ ***", "SeeURL": "Daha fazla bilgi için bkz. {url}.", "SerializedBinParagraphHeader": "\nSeri Hale Getirilmiş İkili Paragraf", @@ -966,6 +942,7 @@ "ShaPassedWithConflict": "SHA512 geçti, ancak --skip-sha512 de geçti. Sadece biri için işlem yapın.", "ShallowRepositoryDetected": "vcpkg sığ bir depo olarak klonlandı: {path}\n Tam bir vcpkg klonu ile tekrar deneyin.", "SkipClearingInvalidDir": "{path} bir dizin olmadığından, {path} içeriğinin temizlenmesi atlanıyor.", + "SkippingPostBuildValidationDueTo": "{cmake_var} nedeniyle derleme sonrası doğrulama atlanıyor", "SourceFieldPortNameMismatch": "CONTROL dosyasının içindeki 'Source' alanı veya vcpkg.json dosyasındaki \"name\" alanı {package_name} adına sahip ve “{path}” bağlantı noktası diziniyle eşleşmiyor.", "SpecifiedFeatureTurnedOff": "'{command_name}' özelliği özellikle kapatıldı, ancak --{option} belirtildi.", "SpecifyHostArch": "Konak üçlüsü. Bkz. 'vcpkg help triplet' (varsayılan: {env_var})", @@ -973,10 +950,8 @@ "StartCodeUnitInContinue": "devam konumunda başlangıç kodu birimi bulundu", "StoreOptionMissingSha": "--store seçeneği sha512 olmadan geçersiz", "StoredBinariesToDestinations": "İkili dosyalar {elapsed} içinde {count} hedefte depolandı.", - "StoredBinaryCache": "İkili önbellek depolandı: \"{path}\"", "SuccessfulyExported": "{package_name}, {path} paketine aktarıldı", "SuggestGitPull": "Sonuç eski olabilir. En son sonuçları almak için `git pull` komutunu çalıştırın.", - "SuggestResolution": "Tüm hataları bir kerede çözmeyi denemek için şunu çalıştırın:\nvcpkg {command_name} --{option}", "SuggestStartingBashShell": "Değişikliğin yürürlüğe girmesi için lütfen yeni bir bash kabuğu başlattığınızdan emin olun.", "SupportedPort": "{package_name} bağlantı noktası destekleniyor.", "SwitchUsedMultipleTimes": "'{option}' geçişi birden çok kez belirtildi", @@ -1004,7 +979,6 @@ "UnexpectedByteSize": "Beklenen {beklenen} bayt yazılacak, ancak {gerçek} yazıldı.", "UnexpectedCharExpectedCloseBrace": "Beklenmeyen karakter; beklenen özellik veya yakın ayraç", "UnexpectedCharExpectedColon": "Beklenmeyen karakter; beklenen kolon", - "UnexpectedCharExpectedComma": "Beklenmeyen karakter; beklenen virgül veya yakın ayraç", "UnexpectedCharExpectedName": "Beklenmeyen karakter; beklenen mülk adı", "UnexpectedCharExpectedValue": "Beklenmeyen karakter; beklenen değer", "UnexpectedCharMidArray": "Dizinin ortasında beklenmeyen karakter", @@ -1023,26 +997,21 @@ "UnexpectedEOFMidKeyword": "Beklenmeyen EOF; beklenen mülk adı", "UnexpectedEOFMidString": "Dizenin ortasında beklenmeyen EOF", "UnexpectedEOFMidUnicodeEscape": "Unicode kaçış ortasında beklenmeyen dosya sonu", - "UnexpectedErrorDuringBulkDownload": "toplu indirme sırasında beklenmeyen bir hata oluştu.", "UnexpectedEscapeSequence": "Beklenmeyen kaçış dizisi devamı", - "UnexpectedExtension": "Beklenmeyen arşiv uzantısı: '{extension}'.", - "UnexpectedFeatureList": "beklenmeyen özellikler listesi", "UnexpectedField": "beklenmeyen '{json_field}' alanı", "UnexpectedFieldSuggest": "beklenmeyen '{json_field}' alanı, bu '{value}' değerini mi demek istediniz?", "UnexpectedFormat": "Beklenen biçim [{expected}], ancak [{actual}] idi.", "UnexpectedOption": "beklenmeyen seçenek: {option}", - "UnexpectedPlatformExpression": "beklenmeyen platform ifadesi", "UnexpectedPortName": "{beklenen} bağlantı noktası, {path} içinde {actual} olarak bildirildi", "UnexpectedPortversion": "sürüm oluşturma alanı olmadan \"port-version\" beklenmiyordu", "UnexpectedSwitch": "beklenmeyen geçiş: {option}", "UnexpectedToolOutput": "{tool_name} ({path}) sürümü belirlemeye çalışırken beklenmeyen bir çıktı üretti:", "UnexpectedWindowsArchitecture": "beklenmeyen Windows konak mimarisi: {actual}", "UnknownBaselineFileContent": "tanınmayan taban çizgisi girdisi; 'port:triplet=(fail|skip|pass)' bekleniyordu", - "UnknownBinaryProviderType": "bilinmeyen ikili sağlayıcı türü: geçerli sağlayıcılar: 'clear', 'default', 'nuget', 'nugetconfig','nugettimeout', 'interactive', 'x-azblob', 'x-gcs', 'x-aws', 'x-aws-config', 'http' ve 'files", + "UnknownBinaryProviderType": "bilinmeyen ikili sağlayıcı türü: geçerli sağlayıcılar: 'clear', 'default', 'nuget', 'nugetconfig', 'nugettimeout', 'interactive', 'x-azblob', 'x-gcs', 'x-aws', 'x-aws-config', 'http', ve 'files'", "UnknownBooleanSetting": "{option} \"{value}\" için bilinmeyen boole ayarı. Geçerli değerler: '', '1', '0', 'ON', 'OFF', 'TRUE' ve 'FALSE'.", - "UnknownOptions": "'{command_name}' komutu için bilinmeyen seçenek(ler):", "UnknownParameterForIntegrate": "İntegralini almak için '{value}' bilinmeyen parametresi.", - "UnknownPolicySetting": "'{value}' ilkesi için bilinmeyen ayar: {option}", + "UnknownPolicySetting": "Bilinmeyen {cmake_var} ayarı: {value}. Geçerli ilke değerleri: '', 'disabled' ve 'enabled'.", "UnknownSettingForBuildType": "VCPKG_BUILD_TYPE {option} için bilinmeyen ayar. Geçerli ayarlar: '', 'debug', ve 'release'.", "UnknownTool": "vcpkg, bu platform için bu araçla ilgili bir tanım içermiyor.", "UnknownTopic": "bilinmeyen konu {value}", @@ -1054,7 +1023,6 @@ "UnsupportedFeatureSupportsExpressionWarning": "{feature_spec}, yalnızca {triplet} ile eşleşmeyen '{supports_expression}' üzerinde desteklenir. Bu genellikle diğer platformları oluştururken bilinen derleme hataları veya çalışma zamanı sorunları olduğu anlamına gelir. '--allow-unsupported' nedeniyle yine de devam ediliyor.", "UnsupportedPort": "{package_name} bağlantı noktası desteklenmiyor.", "UnsupportedPortDependency": "- bağımlılık {value} desteklenmiyor.", - "UnsupportedShortOptions": "kısa seçenekler desteklenmiyor: '{value}'", "UnsupportedSyntaxInCDATA": "]]> CDATA bloğunda desteklenmiyor", "UnsupportedSystemName": "VCPKG_CMAKE_SYSTEM_NAME '{system_name}', vcvarsall platformuna eşlenemedi. Desteklenen sistem adları: '', 'Windows' ve 'WindowsStore'.", "UnsupportedToolchain": "{triplet} üçlüsünde: İstenen hedef mimari {arch} için geçerli araç zinciri bulunamıyor.\nSeçili Visual Studio örneği {path} konumunda\nKullanılabilir araç zinciri bileşimleri: {list}", @@ -1068,21 +1036,18 @@ "UpdateBaselineUpdatedBaseline": "'{url}' kayıt defteri güncellendi: taban çizgisi '{old_value}' -> '{new_value}'", "UpgradeInManifest": "Yükseltme, klasik mod yüklemesini yükseltir ve bu nedenle bildirim modunu desteklemez. Vcpkg x-update-baseline ile temel değerinizi geçerli bir değere güncelleştirerek ve vcpkg yüklemesini çalıştırarak bağımlılıklarınızı güncelleştirmeyi deneyin.", "UpgradeRunWithNoDryRun": "Yukarıdaki paketleri yeniden derlemek istediğinizden eminseniz bu komutu --no-dry-run seçeneğiyle çalıştırın.", - "UploadedBinaries": "İkili dosyalar şuraya yüklendi: {count} {vendor}.", - "UploadedPackagesToVendor": "{count} paket {vendor} tarafına {elapsed} içinde yüklendi", "UploadingBinariesToVendor": "'{spec}' için ikili dosyalar şuraya yükleniyor: '{vendor}' kaynak \"{path}\".", - "UploadingBinariesUsingVendor": "'{spec}' için ikili dosyalar '{vendor}' \"{path}\" kullanılarak karşıya yükleniyor.", + "UsageInstallInstructions": "kullanım dosyasını aşağıdaki CMake ile yükleyebilirsiniz", + "UsageTextHere": "kullanım dosyası burada", "UseEnvVar": "-- {env_var} ortam değişkenlerini kullanma.", "UserWideIntegrationDeleted": "Kullanıcı genelinde entegrasyon yüklü değil.", "UserWideIntegrationRemoved": "Kullanıcı genelinde integral alma kaldırıldı.", - "UsingCommunityTriplet": "-- Topluluk üçlü {triplet} kullanılıyor. Bu üçlü yapılandırmanın başarılı olması garanti değildir.", "UsingManifestAt": "{path} konumunda bildirim dosyası kullanılıyor.", "Utf8ConversionFailed": "UTF-8'e dönüştürülemedi", "VSExaminedInstances": "Şu Visual Studio örnekleri değerlendirildi:", "VSExaminedPaths": "Visual Studio örnekleri için şu yollar incelendi:", "VSNoInstances": "Tam bir Visual Studio örneği bulunamadı", "VcpkgCeIsExperimental": "vcpkg-artifacts deneyseldir ve herhangi bir zamanda değişebilir.", - "VcpkgCommitTableHeader": "VCPKG İşlemesi", "VcpkgCompletion": "vcpkg {value} tamamlama zaten \"{path}\" dosyanıza aktarıldı.\nAşağıdaki girdiler bulundu:", "VcpkgDisallowedClassicMode": "Geçerli çalışma dizininin üzerinde bir bildirim (vcpkg.json) bulunamadı.\nBu vcpkg dağıtımında klasik mod örneği yok.", "VcpkgHasCrashed": "vcpkg kilitlendi. Lütfen şu anda https://github.com/microsoft/vcpkg ve aşağıdaki bilgilerle ilgili kısa bir özet içeren bir sorun oluşturun.", @@ -1095,17 +1060,22 @@ "VcpkgUsage": "kullanım: vcpkg [--switches] [--options=values] [bağımsız değişkenler] @response_file", "VcvarsRunFailed": "Visual Studio ortamı elde etmek için vcvarsall.bat çalıştırılamadı", "VcvarsRunFailedExitCode": "bir Visual Studio ortamı edinmeye çalışırken vcvarsall.bat, {exit_code} döndürdü", - "VersionBaselineMismatch": "En son sürüm {expected}, ancak temel dosya {actual} içeriyor.\nÇalıştır:\nvcpkg x-add-version {package_name}\ngit add versions\ngit commit -m \"Update version database\"\nyazarak temel sürümü güncelleştirin.", + "VersionBaselineMatch": "{version_spec} mevcut taban çizgisiyle eşleşiyor", + "VersionBaselineMismatch": "{package_name}, {actual} olarak atandı, ancak yerel bağlantı noktası {expected}", "VersionBuiltinPortTreeEntryMissing": "({actual}) kullanıma alınmış bağlantı noktaları ağacı sürümü kullanan {expected} öğesinde {package_name} için sürüm veritabanı girişi yok.", "VersionCommandHeader": "vcpkg paket yönetimi programı sürüm {version}\n\nLisans bilgileri için bkz. LICENSE.txt.", "VersionConflictXML": "{path} sürümü: [{expected_version}] bekleniyordu, ancak sürüm şuydu: [{actual_version}]. Lütfen bootstrap-vcpkg'yi yeniden çalıştırın.", + "VersionConstraintNotInDatabase1": "{package_name}'in geçersiz kılınması, sürüm veritabanında mevcut olmayan {version} sürümünü adlandırır. Tüm sürümlerin vcpkg tarafından yorumlanabilmesi için sürüm veritabanında mevcut olması gerekir.", + "VersionConstraintNotInDatabase2": "sürüm kısıtlamasını kaldırmayı veya burada bildirilen bir değeri seçmeyi düşünün", + "VersionConstraintOk": "tüm sürüm kısıtlamaları sürüm veritabanıyla tutarlıdır", "VersionConstraintPortVersionMustBePositiveInteger": "\"version>=\" içinde ('#' karakterinden sonra gelen) port-version pozitif bir tamsayı olmalıdır", - "VersionConstraintUnresolvable": "{spec} öğesinden {package_name} bağımlılığı için minimum kısıtlama çözümlenemiyor.\nBağımlılık, paketin o anda var olmadığını gösteren temelde bulunamadı. Bu, \"geçersiz kılmalar\" alanı aracılığıyla ya da temelin güncelleştirilmesi yoluyla açık bir geçersiz kılma sürümü sağlanarak düzeltilebilir.\nDaha fazla bilgi için 'vcpkg yardım sürümü oluşturma' bölümüne bakın.", "VersionConstraintViolated": "{spec} bağımlılığının en az {expected_version} sürümü olması bekleniyordu, ancak şu anda {actual_version}.", "VersionDatabaseEntryMissing": "{version} öğesinde {package_name} için sürüm girdisi yok.", - "VersionDatabaseFileMissing": "{path} öğesinde {package_name} sürüm veritabanı dosyası eksik\nÇalıştır:\nvcpkg x-add-version {package_name}\nyazarak sürümler dosyasını oluşturun.", + "VersionDatabaseFileMissing": "bu bağlantı noktası sürüm veritabanında değil", + "VersionDatabaseFileMissing2": "sürüm veritabanı dosyası burada olmalıdır", + "VersionDatabaseFileMissing3": "sürüm veritabanı dosyasını oluşturmak için '{command_line}' komutunu çalıştırın", "VersionGitEntryMissing": "{version} sürümünde {package_name} için bir sürüm veritabanı girişi yok.\nKullanılabilir sürümler:", - "VersionInDeclarationDoesNotMatch": "Dosyada tanımlanan sürüm kullanıma alınan sürümle eşleşmiyor: {version}", + "VersionInDeclarationDoesNotMatch": "{git_tree_sha}'nın {expected} içerdiği bildirildi ancak {actual} içerdiği görülüyor", "VersionIncomparable1": "{spec} üzerinde sürüm çakışması: {constraint_origin} için {expected} gerekli ve sürüm {actual} temel sürümüyle karşılaştırılamıyor.", "VersionIncomparable2": "{version_spec}, {new_scheme} düzenine sahip", "VersionIncomparable3": "Bu, tercih edilen sürüme açık bir geçersiz kılma ekleyerek çözülebilir. Örneğin:", @@ -1117,17 +1087,29 @@ "VersionInvalidSemver": "'{version}' geçerli bir anlamsal sürüm değil, adresine başvurun.", "VersionMissing": "sürüm oluşturma alanı bekleniyordu (version, version-date, version-semver veya version-string kodlarından biri)", "VersionMissingRequiredFeature": "{version_spec}, {constraint_origin} için gerekli olan {feature} gerekli özelliğine sahip değil", - "VersionNotFound": "{expected} kullanılamıyor, yalnızca {actual} kullanılabilir", - "VersionNotFoundInVersionsFile": "{version} sürümü, {package_name} adlı paketin sürüm dosyasında bulunamadı.\nÇalıştır:\nvcpkg x-add-version {package_name}\nyazarak yeni bağlantı noktası sürümünü ekleyin.", + "VersionNotFoundInVersionsFile2": "{version_spec} sürüm veritabanında bulunamadı", + "VersionNotFoundInVersionsFile3": "sürüm bu dosyada olmalı", + "VersionNotFoundInVersionsFile4": "yeni bağlantı noktası sürümünü eklemek için '{command_line}' komutunu çalıştırın", + "VersionOverrideNotInVersionDatabase": "sürüm geçersiz kılma {package_name} sürüm veritabanında mevcut değil; o port mevcut mu?", + "VersionOverrideVersionNotInVersionDatabase1": "{package_name}'in geçersiz kılınması, sürüm veritabanında mevcut olmayan {version} sürümünü adlandırır. Bu bağlantı noktasının en üst düzeye yüklenmesi, söz konusu sürüm çözümlenemeyeceğinden başarısız olacaktır.", + "VersionOverrideVersionNotInVersionDatabase2": "Sürüm geçersiz kılmayı kaldırmayı veya burada bildirilen bir değeri seçmeyi düşünün", + "VersionOverwriteVersion": "şunu çalıştırarak doğru yerel değerleri {version_spec} üzerine yazabilirsiniz:", "VersionRejectedDueToBaselineMissing": "{path}, \"{json_field}\" kullandığı ve \"builtin-baseline\" olmadığı için reddedildi. Bu, \"{json_field}\" kullanımları kaldırılarak veya bir \"builtin-baseline\" eklenerek düzeltilebilir.\nDaha fazla bilgi için `vcpkg yardım sürümü oluşturma` konusuna bakın.", "VersionRejectedDueToFeatureFlagOff": "{path}, \"{json_field}\" kullandığı ve `versions` özellik işareti devre dışı bırakıldığı için reddedildi. Bu, \"{json_field}\" kaldırılarak veya `versions` özellik bayrağı etkinleştirilerek düzeltilebilir.\nDaha fazla bilgi için `vcpkg yardım sürümü oluşturma` konusuna bakın.", - "VersionSchemeMismatch": "Sürüm veritabanı, {version} öğesini {expected} olarak tanımlıyor, ancak {path} bunu bir {actual} olarak tanımlıyor. Farklı düzenlerle tanımlanmış olsalar bile sürümler benzersiz olmalıdır.\nÇalıştır:\nvcpkg x-add-version {package_name} --overwrite-version\nyazarak sürüm veritabanında tanımlanan düzeni bağlantı noktasında tanımlanan düzenin üzerine yazın.", - "VersionShaMismatch": "{version}, {expected} ile tanımlanmış, ancak yerel bağlantı noktasında farklı bir SHA {actual} mevcut.\nLütfen bağlantı noktasının sürüm alanlarını güncelleştirin ve sonra şu komutu çalıştırın:\nvcpkg x-add-version {package_name}\ngit add versions\ngit commit -m \"Update version database\"\nve yeni sürümü ekleyin.", - "VersionShaMissing": "{package_name} doğrulanırken, Git SHA eksik.\nÇalıştır:\ngit add \"{path}\"\ngit commit -m \"wip\"\nvcpkg x-add-version {package_name}\ngit add versions\ngit commit --amend -m \"[{package_name}] Add new port\"\nyazarak yeni bağlantı noktasını yürütün ve bu bağlantı noktasının sürüm dosyasını oluşturun.", + "VersionSchemeMismatch1": "{version}, {expected} olarak bildirildi, ancak {package_name}, {actual} ile bildirildi", + "VersionSchemeMismatch1Old": "{version}, {expected} olarak bildirildi, ancak {package_name}@{git_tree_sha}, {actual} ile bildirildi", + "VersionSchemeMismatch2": "farklı şemalarla bildirilseler bile sürümlerin benzersiz olması gerekir", + "VersionShaMismatch1": "{version_spec} git ağacı {git_tree_sha} bağlantı noktası diziniyle eşleşmiyor", + "VersionShaMismatch2": "bağlantı noktası dizininde git ağacı {git_tree_sha} var", + "VersionShaMismatch3": "{version_spec} zaten yayınlanmışsa, bu dosyayı yeni bir sürümle veya bağlantı noktası sürümüyle güncelleştirin, kaydedin ve ardından aşağıdakileri çalıştırarak yeni sürümü ekleyin:", + "VersionShaMismatch4": "{version_spec} henüz yayınlanmadıysa aşağıdaki komutu çalıştırarak önceki git ağacının üzerine yazın:", + "VersionShaMissing1": "bağlantı noktası dizininin git ağacı belirlenemedi. Bu genellikle taahhüt edilmemiş değişikliklerden kaynaklanır.", + "VersionShaMissing2": "aşağıdakileri çalıştırarak değişikliklerinizi uygulayabilir ve bunları sürüm veritabanına ekleyebilirsiniz:", + "VersionShaMissing3": "wip", + "VersionShaMissing4": "[{package_name}] Yeni bağlantı noktası ekle", "VersionSharpMustBeFollowedByPortVersion": "Sürüm metnindeki '#' karakterinden sonra bir bağlantı noktası sürümü gelmelidir", "VersionSharpMustBeFollowedByPortVersionNonNegativeInteger": "Sürüm metnindeki '#' karakterinden sonra bir bağlantı noktası sürümü (negatif olmayan bir tamsayı) gelmelidir", "VersionSpecMismatch": "Sürümler tutarsız olduğundan bağlantı noktası yüklenemedi. Dosya \"{path}\" {actual_version} sürümünü içeriyor, ancak sürüm veritabanı onun {expected_version} olması gerektiğini belirtiyor.", - "VersionTableHeader": "Sürüm", "VersionVerifiedOK": "{version_spec}, sürüm veritabanında ({git_tree_sha}) doğru", "WaitingForChildrenToExit": "Alt işlemlerin çıkışı bekleniyor...", "WaitingToTakeFilesystemLock": "{path} yolunda dosya sistemi kilidi almak için bekleniyor...", @@ -1136,8 +1118,7 @@ "WhileCheckingOutBaseline": "{commit_sha} temelini kullanıma alırken", "WhileCheckingOutPortTreeIsh": "{git_tree_sha} git ağacıyla {package_name} bağlantı noktasını kullanıma alırken", "WhileGettingLocalTreeIshObjectsForPorts": "bağlantı noktaları için yerel ağaç nesneleri alınırken", - "WhileLoadingLocalPort": "{package_name} yerel bağlantı noktası yüklenmeye çalışılırken", - "WhileLoadingPortFromGitTree": "{commit_sha} öğesinden bağlantı noktası yüklenmeye çalışılırken", + "WhileLoadingBaselineVersionForPort": "{package_name} için temel sürüm yüklenirken", "WhileLoadingPortVersion": "{version_spec} yüklenirken", "WhileLookingForSpec": "{spec} aranırken:", "WhileParsingVersionsForPort": "{path} öğesinden {package_name} için sürümler ayrıştırılırken", @@ -1165,7 +1146,7 @@ "descriptionShouldBeOfTypestringFound$": "açıklama 'string' türünde olmalıdır, '${p0}' bulundu", "optionsShouldBeASequenceFound$": "seçenekler bir dizi olmalıdır, '${p0}' bulundu", "DuplicateKeysDetectedInManifest$": "Bildirimde yinelenen anahtarlar algılandı: '${p0}'", - "noPostscriptFileRerunWithTheVcpkgShellFunctionRatherThanExecutable": "postscript dosyası yok: yürütülebilir dosya yerine vcpkg kabuk işleviyle yeniden çalıştırın", + "noPostscriptFileRunVcpkgshellWithTheSameArguments": "postscript dosyası yok: vcpkg-shell'i aynı bağımsız değişkenlerle çalıştırın", "DuplicateDefine$DuringActivationNewValueWillReplaceOld": "Etkinleştirme sırasında yinelenen ${p0} tanımı. Yeni değer eskinin yerini alacak.", "DuplicateToolDeclared$DuringActivationNewValueWillReplaceOld": "Etkinleştirme sırasında yinelenen araç ${p0} bildirildi. Yeni değer eskinin yerini alacak.", "DuplicateAliasDeclared$DuringActivationNewValueWillReplaceOld": "Etkinleştirme sırasında yinelenen diğer ad ${p0} bildirildi. Yeni değer eskinin yerini alacak.", @@ -1257,7 +1238,7 @@ "MultipleArtifactsSpecifiedButNotAnEqualNumberOf$Switches": "Birden çok yapıt belirtildi, ancak eşit sayıda ${p0} anahtarı belirtilmedi", "TriedToAddAnArtifact$$ButCouldNotDetermineTheRegistryToUse": "[${p0}]:${p1} yapıtı eklenmeye çalışıldı ancak kullanılacak kayıt defteri belirlenemedi.", "TriedToAddRegistry$As$ButItWasAlready$PleaseAdd$ToThisProjectManuallyAndReattempt": "${p0} kayıt defteri ${p1} olarak eklenmeye çalışıldı ancak zaten ${p2}. Lütfen bu projeye el ile ${p3} ekleyin ve yeniden deneyin.", - "RunvcpkgActivateToApplyToTheCurrentTerminal": "Geçerli terminale uygulamak için \\`vcpkg activate\\` komutunu çalıştırın", + "RunvcpkgshellActivateToApplyToTheCurrentTerminal": "Geçerli terminale uygulamak için \\`vcpkg-shell activate\\` komutunu çalıştırın", "DownloadsFolderCleared$": "İndirmeler klasörü temizlendi (${p0}) ", "InstalledArtifactFolderCleared$": "Yüklü Yapıt klasörü temizlendi (${p0}) ", "CacheFolderCleared$": "Önbellek klasörü temizlendi (${p0}) ", diff --git a/locales/messages.zh-Hans.json b/locales/messages.zh-Hans.json index c151a32563..b938d3063e 100644 --- a/locales/messages.zh-Hans.json +++ b/locales/messages.zh-Hans.json @@ -46,7 +46,6 @@ "AVersionOfAnyType": "任何类型的版本", "AddArtifactOnlyOne": "“{command_line}” 一次只能添加一个项目。", "AddCommandFirstArg": "要添加的第一个参数必须是 “artifact” 或 “port”。", - "AddFirstArgument": "“{command_line}”的第一个参数必须是 “artifact” 或 “port”。", "AddPortRequiresManifest": "“{command_line}”需要活动清单文件。", "AddPortSucceeded": "已成功将端口添加到 vcpkg.json 文件。", "AddRecurseOption": "如果确定要移除它们,请使用 --recurse 选项运行命令。", @@ -54,12 +53,11 @@ "AddVersionAddedVersionToFile": "已将版本 {version} 添加到 {path}", "AddVersionArtifactsOnly": "--version 仅适用于项目,不能与 vcpkg 添加端口一起使用", "AddVersionCommitChangesReminder": "是否记得提交更改?", - "AddVersionCommitResultReminder": "别忘了提交结果!", "AddVersionDetectLocalChangesError": "由于 git 状态输出出现意外格式而跳过对本地更改的检测", "AddVersionFileNotFound": "找不到所需的文件 {path}", "AddVersionFormatPortSuggestion": "运行 `{command_line}` 以设置文件格式", "AddVersionIgnoringOptionAll": "忽略 --{option},因为已提供端口名称参数", - "AddVersionLoadPortFailed": "无法加载端口 {package_name}", + "AddVersionInstructions": "你可以运行以下命令来自动添加 {package_name} 的当前版本:", "AddVersionNewFile": "(新建文件)", "AddVersionNewShaIs": "新 SHA: {commit_sha}", "AddVersionNoFilesUpdated": "未更新任何文件", @@ -70,8 +68,8 @@ "AddVersionPortFilesShaChanged": "{package_name} 的已签入文件已更改,但版本未更新", "AddVersionPortFilesShaUnchanged": "{package_name} 的已签入文件与版本 {version} 没有更改", "AddVersionPortHasImproperFormat": "{package_name} 格式不正确", - "AddVersionSuggestNewVersionScheme": "在端口“{package_name}”中使用版本方案“{new_scheme}”而不是“{old_scheme}”。\n使用 --{option} 来禁用此检查。", - "AddVersionUnableToParseVersionsFile": "无法分析版本文件 {path}", + "AddVersionSuggestVersionDate": "“{package_name}”的版本格式使用了 “version-string”,但可以接受该格式作为 “version-date”。如果此格式实际上旨在表示 ISO 8601 日期,请将格式更改为 “version-date”,然后重新运行此命令。否则,请通过重新运行此命令并添加 --skip-version-format-check 来禁用此检查。", + "AddVersionSuggestVersionRelaxed": "“{package_name}”的版本格式使用了 “version-string”,但可以接受该格式作为 “version”。如果此端口的版本可使用宽松版本规则进行排序,请将格式更改为 “version”,然后重新运行此命令。宽松版本规则按每个数字组件对版本进行排序。然后,具有短划线后缀的版本按字典顺序排在前面。加号内部版本标记将被忽略。示例:\n1.0 < 1.1-alpha < 1.1-b < 1.1 < 1.1.1 < 1.2+内部版本 = 1.2 < 2.0\n请特别注意,短划线后缀排在 *前面*,而不是后面。1.0-任何内容 < 1.0\n请注意,此排序顺序与语义版本控制中选择的排序顺序相同(请参阅 https://semver.org),即使语义部分实际上并不适用。\n如果此端口的版本未按这些规则排序,请通过重新运行此命令并添加 --skip-version-format-check 来禁用此检查。", "AddVersionUncommittedChanges": "{package_name} 存在未提交的更改", "AddVersionUpdateVersionReminder": "是否记得更新版本或端口版本?", "AddVersionUseOptionAll": "没有参数的 {command_name} 需要传递 --{option} 才能一次性更新所有端口版本", @@ -82,7 +80,7 @@ "AdditionalPackagesToRemove": "需要移除其他包(*)才能完成此操作。", "AllFormatArgsRawArgument": "格式字符串 \"{value}\" 包含原始格式参数", "AllFormatArgsUnbalancedBraces": "格式字符串中的不均衡大括号 \"{value}\"", - "AllPackagesAreUpdated": "所有已安装的包都通过本地端口文件保持最新。", + "AllPackagesAreUpdated": "所有已安装的包都是最新的。", "AlreadyInstalled": "已安装 {spec}", "AlreadyInstalledNotHead": "已安装 {spec} - 未从 HEAD 生成", "AmbiguousConfigDeleteConfigFile": "清单和配置文件提供的 vcpkg 配置不明确。\n-- 请删除配置文件 {path}", @@ -110,7 +108,6 @@ "ApplocalProcessing": "正在部署依赖项", "ArtifactsBootstrapFailed": "vcpkg-artifacts 未安装,无法启动。", "ArtifactsNotInstalledReadonlyRoot": "未安装 vcpkg-artifacts,也无法安装,因为假定 VCPKG_ROOT 是只读的。使用“一行代码”重新安装 vcpkg 可能会解决此问题。", - "ArtifactsNotOfficialWarning": "与非官方用户一起使用 vcpkg-artifacts", "ArtifactsOptionIncompatibility": "--{option} 对查找项目没有影响。", "ArtifactsOptionJson": "记录环境变量和其他属性的 JSON 文件的完整路径", "ArtifactsOptionMSBuildProps": "将写入 MSBuild 属性的文件的完整路径", @@ -118,12 +115,10 @@ "ArtifactsOptionVersionMismatch": "--version 开关的数目必须与命名项目数匹配", "ArtifactsSwitchARM": "获取项目时强制对 ARM 进行主机检测", "ArtifactsSwitchARM64": "获取项目时强制对 ARM64 进行主机检测", - "ArtifactsSwitchAll": "更新所有已知项目注册表", "ArtifactsSwitchAllLanguages": "获取项目时获取所有语言文件", "ArtifactsSwitchForce": "如果已获取项目,则强制重新查询", "ArtifactsSwitchFreebsd": "获取项目时强制对 FreeBSD 进行主机检测", "ArtifactsSwitchLinux": "获取项目时强制对 Linux 进行主机检测", - "ArtifactsSwitchNormalize": "应用任何弃用修补程序", "ArtifactsSwitchOnlyOneHostPlatform": "只能设置一个主机平台 (--x64, --x86, --arm, --arm64)。", "ArtifactsSwitchOnlyOneOperatingSystem": "只能设置一个操作系统 (--windows, --osx, --linux, --freebsd)。", "ArtifactsSwitchOnlyOneTargetPlatform": "只能设置一个目标平台 (--target:x64, --target:x86, --target:arm, --target:arm64)。", @@ -135,9 +130,12 @@ "ArtifactsSwitchWindows": "获取项目时强制对 Windows 进行主机检测", "ArtifactsSwitchX64": "获取项目时强制对 x64 进行主机检测", "ArtifactsSwitchX86": "获取项目时强制对 x86 进行主机检测", + "AssetCacheHit": "{path} 的资产缓存命中;已从 {url} 下载", + "AssetCacheMiss": "资产缓存失误;正在从 {url} 下载", + "AssetCacheMissBlockOrigin": "{path} 的资产缓存失误,x-block-origin 阻止下载。", "AssetCacheProviderAcceptsNoArguments": "意外参数:“{value}”不接受参数", + "AssetCacheSuccesfullyStored": "已成功将 {path} 存储到 {url}。", "AssetSourcesArg": "缓存添加源。请参阅“vcpkg 帮助 assetcaching”。", - "AttemptingToFetchPackagesFromVendor": "正在尝试从 {vendor} 提取 {count} 个包", "AttemptingToSetBuiltInBaseline": "尝试在 vcpkg.json 中设置内置基线,同时重写 vcpkg-configuration.json 中的 default-registry。\n系统将使用 vcpkg-configuration.json 中的 default-registry。", "AuthenticationMayRequireManualAction": "一个或多个 {vendor} 凭据提供程序请求手动操作。添加二进制源 “interactive” 以允许交互。", "AutoSettingEnvVar": "-- 正在将 {env_var} 环境变量自动设置为“{url}”。", @@ -147,12 +145,11 @@ "AzUrlAssetCacheRequiresBaseUrl": "意外参数: 资产配置“azurl”需要基 URL", "AzUrlAssetCacheRequiresLessThanFour": "意外参数: 资产配置 \"azurl\" 需要的参数少于 4 个", "BaselineConflict": "在清单文件中指定 vcpkg-configuration.default-registry 的操作与内置基线冲突。\n请删除其中一个冲突设置。", - "BaselineFileNoDefaultField": "提交 {commit_sha} 处的基线文件无效(无“默认”字段)。", "BaselineGitShowFailed": "提交 '{commit_sha}' 签出基线时,无法“git show”版本/基线.json。可以通过使用“git fetch”提取提交来修复此问题。", - "BaselineMissing": "找不到基线版本。运行:\nvcpkg x-add-version {package_name}\ngit add versions\ngit commit -m \"Update version database\"\n以将 {version} 设置为基线版本。", - "BinaryCacheVendorHTTP": "HTTP 服务器", + "BaselineMissing": "{package_name} 未分配版本", + "BinariesRelativeToThePackageDirectoryHere": "二进制文件相对于此处的 ${{CURRENT_PACKAGES_DIR}}", "BinarySourcesArg": "二进制缓存源。请参阅“vcpkg 帮助 binarycaching”。", - "BinaryWithInvalidArchitecture": "{path}\n 应为: {expected},但为 {actual}", + "BinaryWithInvalidArchitecture": "{path} 专为 {arch} 生成", "BuildAlreadyInstalled": "已安装{spec};请在尝试生成之前先删除{spec}。", "BuildDependenciesMissing": "内部版本命令要求已安装所有依赖项。\n缺少以下依赖项:", "BuildResultBuildFailed": "BUILD_FAILED", @@ -170,22 +167,19 @@ "BuildTroubleshootingMessage1": "请确保使用具有“git pull” 和 “vcpkg update”的最新端口文件。\n然后,在以下位置查看已知问题:", "BuildTroubleshootingMessage2": "可在以下位置提交新问题:", "BuildTroubleshootingMessage3": "在 Bug 报告标题中包含“[{package_name}] 内部版本错误”,bug 描述中的以下版本信息,并从上面附加任何相关的失败日志。", - "BuildTroubleshootingMessage4": "报告问题时,请使用 {path} 中的预填充模板。", "BuildTroubleshootingMessageGH": "还可通过运行来提交问题(必须安装 GitHub CLI):", "BuildingFromHead": "正在从 HEAD 生成 {spec}...", "BuildingPackage": "正在生成 {spec}...", "BuildingPackageFailed": "生成 {spec} 失败,结果为: {build_result}", "BuildingPackageFailedDueToMissingDeps": "由于缺少以下依赖项:", "BuiltInTriplets": "内置三元组:", - "BuiltWithIncorrectArchitecture": "为不正确的体系结构生成了以下文件:", - "CISettingsExclude": "要跳过的端口的列表(端口间以逗号分隔)", + "BuiltWithIncorrectArchitecture": "三元组要求为 {arch} 生成二进制文件,但以下二进制文件是为其他体系结构生成的。这通常表示工具链信息未正确传递给二进制文件的生成系统。若要抑制此消息,请添加 set(VCPKG_POLICY_SKIP_ARCHITECTURE_CHECK enabled)", "CISettingsOptCIBase": "ci.baseline.txt 文件的路径。用于跳过端口和检测回归。", "CISettingsOptExclude": "要跳过的端口的列表(端口间以逗号分隔)", "CISettingsOptFailureLogs": "将故障日志复制到的目录", "CISettingsOptHostExclude": "主机三元组要跳过的端口列表(端口间以逗号分隔)", "CISettingsOptOutputHashes": "用于输出所有已确定的包哈希的文件", "CISettingsOptParentHashes": "用于读取父 CI 状态的包哈希的文件,可减少已更改的包集", - "CISettingsOptSkippedCascadeCount": "断言跳过的 --exclude 和支持的数量正好等于此数字", "CISettingsOptXUnit": "用于以 XUnit 格式输出结果的文件", "CISettingsVerifyGitTree": "验证每个 git 树对象是否与其声明的版本匹配(速度非常慢)", "CISettingsVerifyVersion": "打印每个端口的结果,而不是仅打印错误", @@ -200,8 +194,6 @@ "CMakeTargetsUsageHeuristicMessage": "# 这是启发式生成的,并且可能不正确", "CMakeToolChainFile": "CMake 项目应使用:“-DCMAKE_TOOLCHAIN_FILE={path}”", "CMakeUsingExportedLibs": "要在 CMake 项目中使用导出的库,请将 {value} 添加到 CMake 命令行。", - "CheckedOutGitSha": "签出的 Git SHA: {commit_sha}", - "CheckedOutObjectMissingManifest": "签出对象不包含 CONTROL 文件或 vcpkg.json 文件。", "ChecksFailedCheck": "vcpkg 已崩溃;没有其他详细信息可用。", "ChecksUnreachableCode": "已访问无法访问的代码", "ChecksUpdateVcpkg": "通过重新运行 bootstrap-vcpkg 更新 vcpkg 可能会解决此故障。", @@ -235,14 +227,11 @@ "CmdBuildExternalExample2": "vcpkg build-external zlib2 C:\\path\\to\\dir\\with\\vcpkg.json", "CmdBuildExternalSynopsis": "从路径生成端口", "CmdBuildSynopsis": "生成端口", - "CmdCacheExample1": "vcpkg 缓存 ", - "CmdCacheSynopsis": "列出包的规格", "CmdCheckSupportExample1": "vcpkg x-check-support ", "CmdCheckSupportSynopsis": "测试在不生成端口的情况下是否支持端口", "CmdCiCleanSynopsis": "清除所有文件以准备 CI 运行", "CmdCiSynopsis": "尝试生成用于 CI 测试的所有端口", "CmdCiVerifyVersionsSynopsis": "检查版本数据库的完整性", - "CmdContactOptSurvey": "启动当前 vcpkg 调查的默认浏览器", "CmdCreateExample1": "vcpkg 创建 ", "CmdCreateExample2": "vcpkg 创建 my-fancy-port https://example.com/sources.zip", "CmdCreateExample3": "vcpkg 创建 ", @@ -265,7 +254,7 @@ "CmdEditOptBuildTrees": "打开编辑器以进入特定于端口的生成树子文件夹", "CmdEnvOptions": "将安装的 {path} 添加到 {env_var}", "CmdExportEmptyPlan": "拒绝创建零包导出。在导出之前安装包。", - "CmdExportExample1": "vcpkg 导出 [--nuget] [--directory=out_dir]", + "CmdExportExample1": "vcpkg export [--nuget] [--output-dir=out_dir]", "CmdExportOpt7Zip": "导出为 7zip (.7z)文件", "CmdExportOptChocolatey": "导出 Chocolatey 包(实验性)", "CmdExportOptDebug": "启用预制调试", @@ -376,8 +365,10 @@ "CmdZExtractExample2": "vcpkg z-extract source.zip source_dir --strip 2", "CmdZExtractOptStrip": "要从所有路径中去除的前导目录数", "CommandEnvExample2": "vcpkg env \"ninja -C \" --triplet x64-windows", - "CommandFailed": "命令:\n{command_line}\n失败,结果如下:", + "CommandFailed": "命令:\n{command_line}\n失败,输出如下:", + "CommandFailedCode": "命令:\n{command_line}\n已失败,退出代码 {exit_code},输出如下:", "CommunityTriplets": "社区三元组:", + "CompilerPath": "已找到编译器: {path}", "CompressFolderFailed": "无法压缩文件夹“{path}”:", "ComputingInstallPlan": "正在计算安装计划...", "ConfigurationErrorRegistriesWithoutBaseline": "{path} 中定义的配置无效。\n\n使用注册表需要为默认注册表设置基线,或者默认注册表为 null。\n\n有关更多详细信息,请参阅 {url}。", @@ -386,11 +377,10 @@ "ConsideredVersions": "考虑了以下可执行文件,但由于 {version} 的版本要求而被放弃:", "ConstraintViolation": "发现约束冲突:", "ContinueCodeUnitInStart": "在“开始”位置找到了继续码位", - "ControlAndManifestFilesPresent": "端口目录中同时存在清单文件和 CONTROL 文件: {path}", "ControlCharacterInString": "字符串中的控件字符", "ControlSupportsMustBeAPlatformExpression": "“Supports”必须是平台表达式", - "CopyrightIsDir": "已弃用作为目录的 `{path}`。", - "CorruptedDatabase": "数据库已损坏。", + "CopyrightIsDir": "此端口将 ${{CURRENT_PACKAGES_DIR}}/share/${{PORT}}/copyright 设置为目录,但它应该是一个文件。请考虑使用 vcpkg_install_copyright 将单独的 copyright 文件组合成一个文件。若要抑制此消息,请添加 set(VCPKG_POLICY_SKIP_COPYRIGHT_CHECK enabled)", + "CorruptedDatabase": "vcpkg 的安装数据库已损坏。这可能是 vcpkg 中的 bug,也可能是其他内容以意外方式修改了“已安装”目录的内容。可以通过删除“已安装”目录并重新安装要使用的内容来解决此问题。如果此问题持续发生,请在 https://github.com/microsoft/vcpkg 提交 bug。", "CorruptedInstallTree": "你的 vcpkg “installed” 树已损坏。", "CouldNotDeduceNugetIdAndVersion": "无法从文件名推导出 nuget ID 和版本: {path}", "CouldNotFindBaselineInCommit": "在 {url} 的 {commit_sha} 中找不到 {package_name} 的基线。", @@ -403,14 +393,12 @@ "CreatingNugetPackage": "正在创建 NuGet 包...", "CreatingZipArchive": "正在创建 zip 存档...", "CreationFailed": "创建 {path} 失败。", - "CurlFailedToExecute": "curl 无法执行,退出代码为 {exit_code}。", "CurlFailedToPut": "curl 无法将文件放入 {url},退出代码为 {exit_code}。", "CurlFailedToPutHttp": "curl 无法将文件放入 {url},退出代码为 {exit_code},http 代码为 {value}。", - "CurlReportedUnexpectedResults": "curl 向 vcpkg 报告了意外结果,vcpkg 无法继续。\n请查看以下文本以获取敏感信息,并在 Microsoft/vcpkg GitHub 上打开问题以帮助解决此问题!\ncmd: {command_line}\n=== curl 输出 ===\n{actual}\n=== 结束 curl 输出 ===", - "CurlReturnedUnexpectedResponseCodes": "curl 返回的响应代码数不同于请求的预期数量({actual} 与预期的 {expected})。", + "CurlResponseTruncatedRetrying": "curl 返回了部分响应;正在等待 {value} 毫秒,然后重试", + "CurlTimeout": "curl 无法执行所有请求的 HTTP 操作,即使在超时和重试之后也是如此。最后一个命令行是: {command_line}", "CurrentCommitBaseline": "可以将当前提交用作基线,即:\n\t\"builtin-baseline\": \"{commit_sha}\"", "CycleDetectedDuring": "在 {spec} 期间检测到循环:", - "DateTableHeader": "日期", "DefaultBinaryCachePlatformCacheRequiresAbsolutePath": "环境变量 VCPKG_DEFAULT_BINARY_CACHE 必须是目录(曾为: {path})", "DefaultBinaryCacheRequiresAbsolutePath": "环境变量 VCPKG_DEFAULT_BINARY_CACHE 必须是绝对(曾为: {path})", "DefaultBinaryCacheRequiresDirectory": "环境变量 VCPKG_DEFAULT_BINARY_CACHE 必须是目录(曾为: {path})", @@ -419,15 +407,18 @@ "DefaultFeatureIdentifier": "默认功能的名称必须是标识符", "DefaultFlag": "默认为 --{option} 处于打开状态。", "DefaultRegistryIsArtifact": "默认注册表不能是项目注册表。", - "DefaultTripletChanged": "在 2023 年 9 月版本中,vcpkg 库的默认三元组从 x86-windows 更改为检测到的主机三元组({triplet})。对于旧行为,请添加 --triplet x86-windows。要取消显示此消息,请添加 --triplet {triplet}。", "DeleteVcpkgConfigFromManifest": "-- 或从清单文件 {path} 中删除 \"vcpkg-configuration\"。", "DependencyFeatureCore": "功能“核心”不能位于依赖项的功能列表中。要关闭默认功能,请改为添加 \"default-features\": false。", "DependencyFeatureDefault": "功能“默认”不能位于依赖项的功能列表中。要打开默认功能,请改为添加“default-features”: true。", "DependencyGraphCalculation": "已启用依赖项关系图提交。", "DependencyGraphFailure": "依赖项关系图提交失败。", "DependencyGraphSuccess": "依赖项关系图提交成功。", + "DependencyInFeature": "依赖项位于名为 {feature} 的功能中", + "DependencyNotInVersionDatabase": "版本数据库中不存在依赖项 {package_name};该端口是否存在?", "DeprecatedPrefabDebugOption": "--prefab-debug 现已弃用。", "DetectCompilerHash": "正在检测三元组 {triplet} 的编译器哈希...", + "DirectoriesRelativeToThePackageDirectoryHere": "目录相对于此处的 ${{CURRENT_PACKAGES_DIR}}", + "DllsRelativeToThePackageDirectoryHere": "DLL 相对于此处的 ${{CURRENT_PACKAGES_DIR}}", "DocumentedFieldsSuggestUpdate": "如果这些是应识别的文档字段,请尝试更新 vcpkg 工具。", "DownloadAvailable": "此工具的可下载副本可用,可通过取消设置 {env_var} 使用它。", "DownloadFailedCurl": "{url}: curl 下载失败,退出代码为 {exit_code}", @@ -437,8 +428,7 @@ "DownloadRootsDir": "下载目录(默认值: {env_var})", "DownloadWinHttpError": "{url}: {system_api} 失败,退出代码为 {exit_code}", "DownloadedSources": "已下载的 {spec} 源", - "DownloadingPortableToolVersionX": "找不到合适的{tool_name}版本(所需版本为 {version})。正在下载可移植版本 {tool_name} {version}...", - "DownloadingTool": "正在下载{tool_name}...\n{url}->{path}", + "DownloadingPortableToolVersionX": "找不到合适的 {tool_name} 版本(所需的 v{version})。", "DownloadingUrl": "正在下载 {url}", "DownloadingVcpkgStandaloneBundle": "正在下载独立捆绑包 {version}。", "DownloadingVcpkgStandaloneBundleLatest": "正在下载最新的独立捆绑包。", @@ -449,7 +439,6 @@ "DuplicatePackagePatternRegistry": "注册表: {url}", "DuplicatedKeyInObj": "重复的密钥 \"{value}\" 在对象中", "ElapsedForPackage": "处理 {spec} 所用时间: {elapsed}", - "ElapsedInstallTime": "总运行时间: {count}", "ElapsedTimeForChecks": "确定通过/失败所用的时间: {elapsed}", "EmailVcpkgTeam": "向 {url} 发送电子邮件并提供任何反馈。", "EmbeddingVcpkgConfigInManifest": "在清单文件中嵌入 `vcpkg-configuration` 是一项实验性功能。", @@ -479,25 +468,23 @@ "ErrorWhileFetchingBaseline": "从存储库提取基线 `\"{value}\"` 时 {package_name}:", "ErrorWhileParsing": "分析 {path} 时出错。", "ErrorWhileWriting": "写入 {path} 时出错。", - "ErrorsFound": "发现以下错误:", "ExamplesHeader": "示例:", "ExceededRecursionDepth": "已超过递归深度。", "ExcludedPackage": "已排除 {spec}", "ExcludedPackages": "已排除以下包:", + "ExecutablesRelativeToThePackageDirectoryHere": "可执行文件相对于此处的 ${{CURRENT_PACKAGES_DIR}}", "ExpectedAnObject": "应为对象", "ExpectedAtMostOneSetOfTags": "在 block:\n{value} 中找到了 {count} 组 {old_value}.*{new_value} 集,但应最多为 1", "ExpectedCharacterHere": "此处应为“{expected}”", "ExpectedDefaultFeaturesList": "默认功能列表中应为 \",\" 或文本结尾", "ExpectedDependenciesList": "依赖项列表中应为 \",\" 或文本结尾", "ExpectedDigitsAfterDecimal": "小数点后的预期数字", - "ExpectedEof": "应为 eof", "ExpectedExplicitTriplet": "应为显式三重", "ExpectedFailOrSkip": "此处应为“失败”、“跳过”或“通过”", "ExpectedFeatureListTerminal": "功能列表中应为 \",\" 或 \"]\"", "ExpectedFeatureName": "应为功能名称(必须为小写、数字、\"-\")", "ExpectedOneSetOfTags": "在 block:\n{value} 中找到了 {count} 组 {old_value}.*{new_value} 集,但应恰好为 1", "ExpectedOneVersioningField": "应只有一个版本控制字段", - "ExpectedPackageSpecifier": "应为包说明符", "ExpectedPathToExist": "提取后应存在 {path}", "ExpectedPortName": "此处应为端口名称(必须为小写、数字、\"-\")", "ExpectedReadWriteReadWrite": "意外参数: 应为“read”、“readwrite”或“write”", @@ -505,7 +492,6 @@ "ExpectedTripletName": "此处应为三重名称(必须为小写、数字、\"-\")", "ExportArchitectureReq": "导出预制需要至少面向以下当前体系结构之一: arm64-v8a、armeabi-v7a、x86_64、x86。", "ExportPrefabRequiresAndroidTriplet": "导出预制需要使用 Android 三件套。", - "ExportUnsupportedInManifest": "考虑到将来的设计,vcpkg 导出不支持清单模式。可以通过在基于清单的项目外部运行 vcpkg 在经典模式下使用导出。", "Exported7zipArchive": "7zip 存档导出位置: {path}", "ExportedZipArchive": "Zip 存档导出位置: {path}", "ExportingAlreadyBuiltPackages": "已生成并将导出以下包:", @@ -514,14 +500,12 @@ "ExtendedDocumentationAtUrl": "可在“{url}”上找到扩展文档。", "ExtractHelp": "提取存档。", "ExtractingTool": "正在提取{tool_name}...", - "FailedPostBuildChecks": "发现 {count} 个生成后检查问题。要将这些端口提交到特选目录,请首先更正端口文件: {path}", + "FailedPostBuildChecks": "发现 {count} 个生成后检查问题。这些通常是由 portfile.cmake 或上游生成系统中的 bug 引起的。请先更正这些内容,然后再将此端口提交到特选注册表。", "FailedToAcquireMutant": "无法获取变体 {path}", "FailedToCheckoutRepo": "未能从存储库 {package_name} 签出“版本”", "FailedToDeleteDueToFile": "由于 {path},无法 remove_all({value}): ", "FailedToDeleteInsideDueToFile": "由于 {path},无法 remove_all_inside({value}): ", - "FailedToDetermineArchitecture": "无法确定 {path} 的体系结构。\n{command_line}", "FailedToDetermineCurrentCommit": "无法确定当前提交:", - "FailedToDownloadFromMirrorSet": "未能从镜像集下载", "FailedToExtract": "无法提取“{path}”:", "FailedToFetchRepo": "无法提取 {url}。", "FailedToFindPortFeature": "{package_name} 没有名为 {feature} 的功能。", @@ -530,27 +514,20 @@ "FailedToLoadManifest": "未能从目录 {path} 加载清单", "FailedToLocateSpec": "未能在图形中定位规范: {spec}", "FailedToObtainDependencyVersion": "找不到所需的依赖项版本。", - "FailedToObtainLocalPortGitSha": "无法获取本地端口的 git SHA。", "FailedToObtainPackageVersion": "找不到所需的包版本。", "FailedToOpenAlgorithm": "无法打开 {value}", "FailedToParseBaseline": "无法分析基线: {path}", "FailedToParseCMakeConsoleOut": "未能分析 CMake 控制台输出以定位块开始/结束标记。", "FailedToParseConfig": "无法分析配置: {path}", - "FailedToParseControl": "无法分析 CONTROL 文件: {path}", - "FailedToParseManifest": "未能分析清单文件: {path}", "FailedToParseNoTopLevelObj": "无法分析 {path},该路径应为顶级对象。", "FailedToParseNoVersionsArray": "无法分析 {path},应为 \"versions\" 数组。", "FailedToParseSerializedBinParagraph": "[健全性检查]无法分析序列化二进制段落。\n请在 https://github.com/microsoft/vcpkg 提出问题,附加以下输出: \n{error_msg}\n序列化二进制段落:", + "FailedToParseVersionFile": "未能分析版本文件: {path}", "FailedToParseVersionXML": "无法分析工具{tool_name}的版本。版本字符串为: {version}", - "FailedToParseVersionsFile": "无法分析版本文件 {path}", - "FailedToProvisionCe": "未能预配 vcpkg-artifacts。", - "FailedToReadParagraph": "无法从 {path} 读取段落", - "FailedToRemoveControl": "未能删除控制文件 {path}", "FailedToRunToolToDetermineVersion": "无法运行“{path}”以确定 {tool_name} 版本。", - "FailedToStoreBackToMirror": "无法存储回镜像:", + "FailedToStoreBackToMirror": "未能将 {path} 存储到 {url}。", "FailedToStoreBinaryCache": "无法存储二进制缓存 {path}", "FailedToTakeFileSystemLock": "未能获取文件系统锁", - "FailedToWriteManifest": "未能写入清单文件 {path}", "FailedVendorAuthentication": "一个或多个 {vendor} 凭据提供程序无法进行身份验证。有关如何提供凭据的更多详细信息,请参阅“{url}”。", "FetchingBaselineInfo": "正在从 {package_name} 提取基线信息...", "FetchingRegistryInfo": "正在从 {url} ({value}) 提取注册表信息...", @@ -559,11 +536,13 @@ "FileNotFound": "{path}: 未找到文件", "FileReadFailed": "未能从 {path} 的 {byte_offset} 偏移处读取 {count} 个字节。", "FileSeekFailed": "未能在 {path} 中找到位置 {byte_offset}。", - "FileSystemOperationFailed": "文件系统操作失败:", - "FilesContainAbsolutePath1": "安装的包中不应有绝对路径,如下所示:", - "FilesContainAbsolutePath2": "在以下文件中找到了绝对路径:", + "FilesContainAbsolutePath1": "安装的包中不得有绝对路径,如下所示。若要抑制此消息,请添加 set(VCPKG_POLICY_SKIP_ABSOLUTE_PATHS_CHECK enabled)", + "FilesContainAbsolutePath2": "在此找到绝对路径", + "FilesContainAbsolutePathPkgconfigNote": "添加对 `vcpkg_fixup_pkgconfig()` 的调用可能会修复 .pc 文件中的绝对路径", "FilesExported": "文件导出位置: {path}", - "FindHelp": "搜索指示的项目或端口。在 \"artifact\" 或 \"port\" 后无参数时,显示所有内容。", + "FilesRelativeToTheBuildDirectoryHere": "文件相对于此处的生成目录", + "FilesRelativeToThePackageDirectoryHere": "文件相对于此处的 ${{CURRENT_PACKAGES_DIR}}", + "FindCommandFirstArg": "'find' 的第一个参数必须是 'artifact' 或 'port'。", "FindVersionArtifactsOnly": "--version 不能与 vcpkg 搜索或 vcpkg 查找端口一起使用", "FishCompletion": "已在“{path}”下添加 vcpkg fish 完成。", "FloatingPointConstTooBig": "浮点常量太大: {count}", @@ -581,6 +560,7 @@ "GeneratingRepo": "正在生成存储库 {path}...", "GetParseFailureInfo": "使用 “--debug” 获取有关分析失败的详细信息。", "GitCommandFailed": "执行 {command_line} 失败", + "GitCommitUpdateVersionDatabase": "git commit -m \"更新版本数据库\"", "GitFailedToFetch": "无法从存储库 {url} 中提取引用 {value}", "GitFailedToInitializeLocalRepository": "初始化本地存储库 {path} 失败", "GitRegistryMustHaveBaseline": "git 注册表 \"{url}\" 必须具有“baseline”字段,该字段是有效的 git 提交 SHA (40 个十六进制字符)。\n若要使用当前最新版本,请将基线设置为该存储库的 HEAD,\"{commit_sha}\"。", @@ -623,10 +603,7 @@ "HelpEnvCommand": "创建用于开发或编译的干净 shell 环境", "HelpExampleCommand": "有关更多帮助(包括示例),请参阅 https://learn.microsoft.com/vcpkg", "HelpExampleManifest": "示例清单:", - "HelpExportCommand": "导出包。", - "HelpHashCommand": "按特定算法哈希文件,默认为 SHA512。", "HelpInstallCommand": "安装包", - "HelpListCommand": "列出安装的包", "HelpManifestConstraints": "清单可以对所使用的版本施加三种约束", "HelpMinVersion": "Vcpkg 将选择找到的与所有适用约束匹配的最低版本,包括在顶级指定的基线中的版本以及图中的任何 “version>=” 约束。", "HelpOverrides": "当用作顶级清单(例如在目录中运行 `vcpkg install` 时),替代允许清单短路依赖项解析,并精确指定要使用的版本。可将这些用于处理版本冲突,例如使用 `version-string` 依赖项。如果以可传递方式以来它们,则将不会考虑它们。", @@ -674,7 +651,6 @@ "IllegalPlatformSpec": "此上下文中不允许使用平台限定符", "ImproperShaLength": "SHA512 必须是 128 个十六进制字符: {value}", "IncorrectArchiveFileSignature": "存档文件签名不正确", - "IncorrectPESignature": "PE 签名不正确", "InfoSetEnvVar": "还可以将 {env_var} 设置为所选编辑器。", "InitRegistryFailedNoRepo": "无法在 {path} 下创建注册表,因为这不是 git 存储库根路径。\n请使用“git init {command_line}”在此文件夹中创建 git 存储库。", "InstallCopiedFile": "{path_source} -> {path_destination} 已完成", @@ -688,8 +664,8 @@ "InstalledBy": "已由 {path} 安装", "InstalledPackages": "已安装以下包:", "InstalledRequestedPackages": "当前已安装所有请求的包。", - "InstallingFromLocation": "-- 正从以下位置安装端口: {path}", "InstallingMavenFile": "{path} 安装 maven 文件", + "InstallingOverlayPort": "正在从此处安装覆盖端口", "InstallingPackage": "正在安装 {action_index}/{count} 个 {spec}...", "IntegrateBashHelp": "启用 bash Tab-completion。仅限非 Windows", "IntegrateFishHelp": "启用 fish 选项卡补全。仅限非 Windows", @@ -725,7 +701,7 @@ "InvalidBundleDefinition": "捆绑包定义无效。", "InvalidCharacterInFeatureList": "功能名称中的字符无效(必须为小写、数字、\"-\" 或 \"*\")", "InvalidCharacterInFeatureName": "功能名称中的字符无效(必须为小写、数字、\"-\")", - "InvalidCharacterInPackageName": "包名称中的字符无效(必须为小写、数字、\"-\")", + "InvalidCharacterInPortName": "端口名称中的字符无效(必须为小写、数字、\"-\")", "InvalidCodePoint": "传递给 utf8_encoded_code_point_count 的码位无效", "InvalidCodeUnit": "代码单元无效", "InvalidCommandArgSort": "--sort 的值必须是 “lexicographical”、“topological”、“reverse” 之一。", @@ -743,7 +719,6 @@ "InvalidLinkage": "{system_name} 链接类型无效: [{value}]", "InvalidLogicExpressionUnexpectedCharacter": "逻辑表达式无效,意外字符", "InvalidLogicExpressionUsePipe": "逻辑表达式无效,请使用 \"|\" 而不是 \"or\"", - "InvalidNoVersions": "文件不包含任何版本。", "InvalidOptionForRemove": "“remove” 接受库或 “--outdated”", "InvalidPortVersonName": "找到无效的端口版本文件名: `{path}`。", "InvalidSharpInVersion": "版本文本中的字符 \"#\" 无效", @@ -751,6 +726,8 @@ "InvalidString": "传递给 Value::string(std::string) 的 utf8 无效", "InvalidTriplet": "三元组 {triplet} 无效", "InvalidUri": "无法分析 URI: {value}", + "InvalidValueHashAdditionalFiles": "变量 VCPKG_HASH_ADDITIONAL_FILES 包含无效的文件路径:“{path}”。该值必须是已存在文件的绝对路径。", + "InvalidValuePostPortfileIncludes": "变量 VCPKG_POST_PORTFILE_INCLUDES 包含无效的文件路径: '{path}'。此值必须是指向现有 cmake 文件的绝对路径。", "IrregularFile": "路径不是常规文件: {path}", "JsonErrorMustBeAnObject": "预期的“{path}”应为对象。", "JsonFieldNotObject": "[\"{json_field}\"] 的值必须是对象", @@ -786,11 +763,11 @@ "LinkageStaticDebug": "静态调试(/MTd)", "LinkageStaticRelease": "静态发布(/MT)", "ListHelp": "列出安装的库", - "LoadingCommunityTriplet": "-- [COMMUNITY] 正在从以下位置加载三联配置: {path}", + "LoadedCommunityTriplet": "已从此处加载社区三元组。社区三元组未内置在特选注册表中,因此不太可能成功。", + "LoadedOverlayTriplet": "已从此处加载覆盖三元组。", "LoadingDependencyInformation": "正在加载 {count} 个包的依赖项信息...", - "LoadingOverlayTriplet": "-- [OVERLAY] 正在从以下位置加载三联配置: {path}", - "LocalPortfileVersion": "使用本地端口文件版本。若要更新本地端口文件,请使用 `git pull`。", - "ManifestConflict": "在端口“{path}”中找到了清单和 CONTROL 文件;请重命名一个或另一个", + "LocalPortfileVersion": "正在使用本地端口版本。若要更新本地端口,请使用 `git pull`。", + "ManifestConflict2": "同时找到了一个清单和一个 CONTROL 文件;请重命名其中一个", "ManifestFormatCompleted": "已成功设置清单文件的格式。", "MismatchedBinParagraphs": "序列化二进制段落不同于原始二进制段落。请在 https://github.com/microsoft/vcpkg 提出问题,附加以下输出:", "MismatchedFiles": "要存储的文件与哈希不匹配", @@ -802,6 +779,7 @@ "MissingAndroidEnv": "缺少 ANDROID_NDK_HOME 环境变量", "MissingAndroidHomeDir": "ANDROID_NDK_HOME 目录不存在: {path}", "MissingArgFormatManifest": "已传递 format-manifest --convert-control 而不使用 “--all”。\n这不执行任何操作: 显式传递的控件文件将自动转换。", + "MissingAssetBlockOrigin": "{path} 缺失,x-block-origin 阻止下载。", "MissingClosingParen": "缺少右括号 )", "MissingDependency": "已安装包 {spec},但未安装依赖项 {package_name}。", "MissingExtension": "缺少“{extension}”扩展名。", @@ -810,9 +788,9 @@ "MissingPortSuggestPullRequest": "如果未列出你的端口,请在发出和/或考虑发出拉取请求时开立问题。", "MissingRequiredField": "缺少必填字段 \"{json_field}\" ({json_type})", "MissingRequiredField2": "缺少必填字段 \"{json_field}\"", + "MissingShaVariable": "如果使用其他变量,必须在模板中使用 {{sha}} 变量。", "MixingBooleanOperationsNotAllowed": "不允许使用混合的 & 和 |;使用 () 指定操作顺序", "MonoInstructions": "这可能是由于 mono 安装不完整所导致的。通过 `sudo apt install mono-complete` 可以在某些系统上完整的 mono。Ubuntu 18.04 用户可能需要较新版本的 mono。要获取该版本,请访问 https://www.mono-project.com/download/stable/", - "MsiexecFailedToExtract": "msiexec 在提取“{path}”时失败,启动或退出代码 {exit_code} 和消息:", "MultiArch": "多体系结构必须“相同”,但此前为 {option}", "MultipleFeatures": "{package_name} 多次声明 {feature};请确保功能具有不同的名称", "MutuallyExclusiveOption": "--{value} 不能与 --{option} 一起使用。", @@ -822,10 +800,8 @@ "NewOnlyOneVersionKind": "只能指定 --version-relaxed、--version-date 或 --version-string 中的一个。", "NewSpecifyNameVersionOrApplication": "指定 --name 和 --version 以生成用于 C++ 库的清单,或指定 --application 以指示不将清单用作端口。", "NewVersionCannotBeEmpty": "--version 不能为空。", - "NoArgumentsForOption": "选项 --{option} 不接受参数。", "NoError": "无错误", "NoInstalledPackages": "未安装任何包。你指的是“search”吗?", - "NoLocalizationForMessages": "没有针对以下内容的本地化消息: ", "NoOutdatedPackages": "没有过时的包。", "NoRegistryForPort": "没有为端口 {package_name} 配置注册表", "NoUrlsAndHashSpecified": "未指定用于下载 SHA 的 URL: {sha}", @@ -866,7 +842,6 @@ "PackageManipulationHeader": "包操作", "PackageRootDir": "包目录(实验性)", "PackagesToInstall": "将生成并安装以下包:", - "PackagesToInstallDirectly": "将直接安装以下包:", "PackagesToModify": "将修改其他包(*)以完成此操作。", "PackagesToRebuild": "将重新生成以下包:", "PackagesToRebuildSuggestRecurse": "如果确实要重新生成上述包,请使用 --recurse 选项运行命令。", @@ -882,47 +857,50 @@ "ParseFeatureNameError": "“{package_name}”不是有效的功能名称。功能名称必须由小写字母数字字符和连字符组成,且不得为预留值(有关详细信息,请参阅 {url})。", "ParseIdentifierError": "\"{value}\" 不是有效的标识符。标识符必须由小写字母数字字符和连字符组成,且不得为预留值(有关详细信息,请参阅 {url})。", "ParsePackageNameError": "“{package_name}”不是有效的包名称。包名称必须由小写字母数字字符和连字符组成,且不得为预留值(有关详细信息,请参阅 {url})。", + "ParsePackageNameNotEof": "预期输入末尾分析包名称;这通常意味着端口名称中不允许使用所指字符。端口名称全部为小写字母数字 + 连字符且不是保留内容(有关详细信息,请参阅 {url})。", "ParsePackagePatternError": "“{package_name}”不是有效的包模式。包模式只能使用一个通配符(*),并且它必须是模式中的最后一个字符(有关详细信息,请参阅 {url})。", + "ParseQualifiedSpecifierNotEof": "预期输入末尾分析包规范;这通常意味着指示的字符不允许出现在包规范中。端口、三元组和功能名称均为小写字母数字 + 连字符。", + "ParseQualifiedSpecifierNotEofSquareBracket": "预期输入末尾分析包规范;你是否指的是 {version_spec}?", "PathMustBeAbsolute": "环境变量 X_VCPKG_REGISTRIES_CACHE 的值不是绝对值: {path}", - "PerformingPostBuildValidation": "-- 执行生成后验证", - "PortBugAllowRestrictedHeaders": "在特殊情况下,可以通过 {env_var} 禁用此策略", - "PortBugBinDirExists": "静态生成中不应存在 bin\\ 目录,但存在 {path}。", - "PortBugDebugBinDirExists": "静态生成中不应存在 debug\\bin\\ 目录,但存在 {path}。", - "PortBugDebugShareDir": "/debug/share 不应存在。请重新组织任何重要文件,然后使用\nfile(REMOVE_RECURSE \"${{CURRENT_PACKAGES_DIR}}/debug/share\")", - "PortBugDllAppContainerBitNotSet": "必须为 Windows 应用商店应用设置应用容器位。以下 DLL 未设置应用容器位:", - "PortBugDllInLibDir": "在 /lib 或 /debug/lib 中找到以下 dll。请将它们分别移动到 /bin 或 /debug/bin。", - "PortBugDuplicateIncludeFiles": "不应将包含文件复制到 /debug/include 目录中。如果无法在项目 cmake 中禁用此功能,请使用\nfile(REMOVE_RECURSE \"${{CURRENT_PACKAGES_DIR}}/debug/include\")", - "PortBugFoundCopyrightFiles": "以下文件是可能的版权文件:", - "PortBugFoundDebugBinaries": "找到 {count} 个调试二进制文件:", - "PortBugFoundDllInStaticBuild": "静态生成中不应存在 DLL,但找到了以下 DLL:", - "PortBugFoundEmptyDirectories": "{path} 中不应存在空目录。找到了以下空目录:", - "PortBugFoundExeInBinDir": "在 /bin 或 /debug/bin 中找到以下 EXE。EXE 不是有效的分发目标。", - "PortBugFoundReleaseBinaries": "找到 {count} 个版本二进制文件:", - "PortBugIncludeDirInCMakeHelperPort": "文件夹 /include 存在于 cmake 帮助程序端口中;这不正确,因为只应安装 cmake 文件", - "PortBugInspectFiles": "要检查 {extension} 文件,请使用:", - "PortBugInvalidCrtLinkage": "以下二进制文件应使用 {expected} CRT。", - "PortBugInvalidCrtLinkageEntry": "{path} 链接,带有:", - "PortBugKernel32FromXbox": "所选三元组面向的是 Xbox,但下面的 DLL 与 kernel32 链接。无法在没有 kernel32 的 Xbox 上加载这些 DLL。出现此问题通常是因为与 kernel32.lib 链接,而不是与 onecore_apiset.lib 或 xgameplatform.lib 等适当的伞库(umbrella library)。", - "PortBugMergeLibCMakeDir": "应将 /lib/cmake 文件夹与 /debug/lib/cmake 合并,然后将其移动到 /share/{package_name}/cmake。请使用端口 `vcpkg-cmake-config` 中的帮助程序函数 `vcpkg_cmake_config_fixup()`。", - "PortBugMismatchedNumberOfBinaries": "调试和发布二进制文件的数量不匹配。", - "PortBugMisplacedCMakeFiles": "在 /share/{spec} 外部找到以下 cmake 文件。请将 cmake 文件放在 /share/{spec} 中。", - "PortBugMisplacedFiles": "以下文件放置在 {path} 中:", - "PortBugMisplacedFilesCont": "这些目录中不能存在文件。", - "PortBugMisplacedPkgConfigFiles": "pkgconfig 目录应为 share/pkgconfig(仅用于仅限标头库)、lib/pkgconfig 或 lib/debug/pkgconfig 之一。找到了以下错放的 pkgconfig 文件:", + "PerformingPostBuildValidation": "正在执行生成后验证", + "PortBugBinDirExists": "存在 ${{CURRENT_PACKAGES_DIR}}/{path},但它不应在静态生成中。若要抑制此消息,请添加 set(VCPKG_POLICY_DLLS_IN_STATIC_LIBRARY enabled)", + "PortBugDebugShareDir": "${{CURRENT_PACKAGES_DIR}}/debug/share 不应存在。请重新组织任何重要文件,然后通过添加 `file(REMOVE_RECURSE \"${{CURRENT_PACKAGES_DIR}}/debug/share\")` 来删除所有剩余文件。若要抑制此消息,请添加 set(VCPKG_POLICY_ALLOW_DEBUG_SHARE enabled)", + "PortBugDllAppContainerBitNotSet": "必须为 Windows 应用商店应用中的所有 DLL 设置应用容器位,并且三元组要求面向 Windows 应用商店,但是以下 DLL 不是使用位集生成的。这通常表示工具链链接器标志未正确传播,或者正在使用的链接器不支持 /APPCONTAINER 开关。若要抑制此消息,请添加 set(VCPKG_POLICY_SKIP_APPCONTAINER_CHECK enabled)", + "PortBugDllInLibDir": "在 ${{CURRENT_PACKAGES_DIR}}/lib 或 ${{CURRENT_PACKAGES_DIR}}/debug/lib 中找到以下 DLL。请将它们分别移动到 {{CURRENT_PACKAGES_DIR}}/bin 或 ${{CURRENT_PACKAGES_DIR}}/debug/bin。", + "PortBugDuplicateIncludeFiles": "${{CURRENT_PACKAGES_DIR}}/debug/include 不应存在。若要抑制此消息,请添加 set(VCPKG_POLICY_ALLOW_DEBUG_INCLUDE enabled)", + "PortBugDuplicateIncludeFilesFixIt": "如果此目录是由不允许在要禁用的调试中安装标头的生成系统创建的,请使用 file(REMOVE_RECURSE \"${{CURRENT_PACKAGES_DIR}}/debug/include\") 删除重复目录", + "PortBugFoundCopyrightFiles": "以下文件是可能的版权文件", + "PortBugFoundDebugBinaries": "以下是调试二进制文件:", + "PortBugFoundDllInStaticBuild": "静态生成中不应存在 DLL,但是发现了以下 DLL。若要抑制此消息,请添加 set(VCPKG_POLICY_DLLS_IN_STATIC_LIBRARY enabled)", + "PortBugFoundEmptyDirectories": "不得有已安装的空目录。空目录对于一些二进制缓存提供程序和 Git 存储库是不可表示的,并且不被视为语义生成输出。应在每个空目录中创建常规文件,或者使用以下 CMake 删除它们。若要抑制此消息,请添加 set(VCPKG_POLICY_ALLOW_EMPTY_FOLDERS enabled)", + "PortBugFoundExeInBinDir": "在 ${{CURRENT_PACKAGES_DIR}}/bin or ${{CURRENT_PACKAGES_DIR}}/debug/bin 中找到以下可执行文件。可执行文件不是有效的分发目标。如果这些可执行文件是生成工具,请考虑使用 `vcpkg_copy_tools`。若要抑制此消息,请添加 set(VCPKG_POLICY_ALLOW_EXES_IN_BIN enabled)", + "PortBugFoundReleaseBinaries": "以下是发布二进制文件:", + "PortBugIncludeDirInCMakeHelperPort": "CMake 帮助程序端口中存在 ${{CURRENT_PACKAGES_DIR}}/include 文件夹;这不正确,因为只应安装 CMake 文件。若要抑制此消息,请移除 set(VCPKG_POLICY_CMAKE_HELPER_PORT enabled)。", + "PortBugInvalidCrtLinkageCrtGroup": "以下二进制文件应仅链接: {expected}", + "PortBugInvalidCrtLinkageEntry": "{path} 与以下对象链接: {actual}", + "PortBugInvalidCrtLinkageHeader": "此端口生成的二进制文件与 C 运行时(\"CRT\") 链接,这与三元组和部署结构请求的运行时不一致。如果三元组打算只使用发布 CRT,应将 set(VCPKG_POLICY_ONLY_RELEASE_CRT enabled) 添加到 triplet .cmake 文件中。若要完全取消此检查,请将 set(VCPKG_POLICY_SKIP_CRT_LINKAGE_CHECK enabled) 添加到 triplet .cmake (如果范围是三元组),或者将其添加到 portfile.cmake (如果这特定于端口)。以使用以下方式检查二进制文件: dumpbin.exe/directives mylibfile.lib", + "PortBugKernel32FromXbox": "所选三元组面向 Xbox,但以下 DLL 与 kernel32 链接。无法在没有 kernel32 的 Xbox 上加载这些 DLL。这通常是由于与 kernel32.lib 而不是适合的 umbrella 库(例如 onecore_apiset.lib 或 xgameplatform.lib)链接而导致的。可使用 `dumpbin.exe /dependents mylibfile.dll` 检查 DLL 的依赖项。若要抑制此消息,请添加 set(VCPKG_POLICY_ALLOW_KERNEL32_FROM_XBOX enabled)", + "PortBugMergeLibCMakeDir": "此端口会创建 ${{CURRENT_PACKAGES_DIR}}/lib/cmake 和/或 ${{CURRENT_PACKAGES_DIR}}/debug/lib/cmake,这应会合并并移动到 ${{CURRENT_PACKAGES_DIR}}/share/${{PORT}}/cmake。请使用 vcpkg-cmake-config 端口中的帮助程序函数 vcpkg_cmake_config_fixup()。若要抑制此消息,请添加 set(VCPKG_POLICY_SKIP_LIB_CMAKE_MERGE_CHECK enabled)", + "PortBugMismatchingNumberOfBinaries": "调试二进制文件和发布二进制文件数量不匹配。这通常表示 portfile.cmake 或生成系统中的调试或发布处理不正确。如果目的是仅为此三元组生成发布组件,则三元组应将 set(VCPKG_BUILD_TYPE release) 添加到其 .cmake 文件。若要抑制此消息,请添加 set(VCPKG_POLICY_MISMATCHED_NUMBER_OF_BINARIES enabled)", + "PortBugMisplacedCMakeFiles": "此端口在不需要 CMake 文件的位置安装以下 CMake 文件。应在 ${{CURRENT_PACKAGES_DIR}}/share/${{PORT}} 中安装 CMake 文件。若要抑制此消息,请添加 set(VCPKG_POLICY_SKIP_MISPLACED_CMAKE_FILES_CHECK enabled)", + "PortBugMisplacedFiles": "以下常规文件安装到可能没有安装常规文件的位置。这些文件应安装在子目录中。若要抑制此消息,请添加 set(VCPKG_POLICY_SKIP_MISPLACED_REGULAR_FILES_CHECK enabled)", + "PortBugMisplacedPkgConfigFiles": "已安装以下已放错位置的 pkgconfig 目录。pkgconf 或 pkg-config 无法正确找到错放的 pkgconfig 文件。pkgconfig 目录应为 ${{CURRENT_PACKAGES_DIR}}/share/pkgconfig (仅适用于与体系结构无关的库/仅限标头的库)、${{CURRENT_PACKAGES_DIR}}/lib/pkgconfig (适用于发布依赖项)或 ${{CURRENT_PACKAGES_DIR}}/debug/lib/pkgconfig (适用于调试依赖项)。若要抑制此消息,请添加 set(VCPKG_POLICY_SKIP_PKGCONFIG_CHECK enabled)", + "PortBugMissingCMakeHelperPortFile": "不存在 ${{CURRENT_PACKAGES_DIR}}/share/${{PORT}}/vcpkg-port-config.cmake 文件。对于 CMake 帮助程序端口,必须存在此文件。若要抑制此消息,请移除 set(VCPKG_POLICY_CMAKE_HELPER_PORT enabled)", "PortBugMissingDebugBinaries": "找不到调试二进制文件。", - "PortBugMissingFile": "/{path} 文件不存在。对于 CMake 帮助程序端口,此文件必须存在。", - "PortBugMissingImportedLibs": "{path} 中不存在导入库。\n如果希望这样,请在端口文件:\nset(已启用 VCPKG_POLICY_DLLS_WITHOUT_LIBS)中添加以下行", - "PortBugMissingIncludeDir": "文件夹 /include 为空或不存在。这表示库未正确安装。", - "PortBugMissingLicense": "必须在 ${{CURRENT_PACKAGES_DIR}}/share/{package_name}/copyright 中提供软件许可证", - "PortBugMissingProvidedUsage": "端口提供了“使用情况”,但忘记安装到 /share/{package_name}/usage,请在端口文件中添加以下行:", + "PortBugMissingImportedLibs": "似乎缺少已安装的 DLL 的导入库。如果是有意为之,则添加 set(VCPKG_POLICY_DLLS_WITHOUT_LIBS enabled)", + "PortBugMissingIncludeDir": "${{CURRENT_PACKAGES_DIR}}/include 文件夹为空或不存在。这通常表示未正确安装标头。如果这是 CMake 帮助程序端口,请添加 set(VCPKG_POLICY_CMAKE_HELPER_PORT enabled)。如果这不是 CMake 帮助程序端口,但这是有意为之,请添加 set(VCPKG_POLICY_EMPTY_INCLUDE_FOLDER enabled) 以抑制此消息。", + "PortBugMissingLicense": "该许可证未安装到 ${{CURRENT_PACKAGES_DIR}}/share/${{PORT}}/copyright。可添加对 vcpkg_install_copyright 的调用来解决此问题。若要抑制此消息,请添加 set(VCPKG_POLICY_SKIP_COPYRIGHT_CHECK enabled)", + "PortBugMissingLicenseFixIt": "请考虑添加: {value}", + "PortBugMissingProvidedUsage": "此端口包含名为 \"usage\" 的文件,但未将其安装到 ${{CURRENT_PACKAGES_DIR}}/share/${{PORT}}/usage。如果此文件不打算用作用法文本,请考虑选择其他名称;否则,请安装它。若要抑制此消息,请添加 set(VCPKG_POLICY_SKIP_USAGE_INSTALL_CHECK enabled)", "PortBugMissingReleaseBinaries": "找不到版本二进制文件。", "PortBugMovePkgConfigFiles": "可以使用类似于以下的命令移动 pkgconfig 文件:", - "PortBugOutdatedCRT": "在以下文件中检测到过时的动态 CRT:", - "PortBugRemoveBinDir": "如果无法禁用 bin\\ 和/或 debug\\bin\\ 的创建,请在端口文件中使用此项移除它们", - "PortBugRemoveEmptyDirectories": "如果应填充但未填充目录,这可能表示端口文件中存在错误。\n如果不需要目录并且无法禁用其创建,请在端口文件中使用如下所示的内容来移除它们:", + "PortBugOutdatedCRT": "已安装与过时的 C 运行时(\"CRT\") DLL 链接的 DLL。已安装的 DLL 应与支持中的 CRT 链接。可使用 `dumpbin.exe /dependents mylibfile.dll` 检查 DLL 的依赖项。如果使用的是面向旧 CRT 的自定义三元组,请将 set(VCPKG_POLICY_ALLOW_OBSOLETE_MSVCRT enabled) 到三元组 .cmake 文件。若要抑制此端口的此消息,请添加 set(VCPKG_POLICY_ALLOW_OBSOLETE_MSVCRT enabled)", + "PortBugRemoveBinDir": "如果无法禁用这些目录的创建,可在 portfile.cmake 中添加以下内容来移除它们", "PortBugRemoveEmptyDirs": "file(REMOVE_RECURSE 上述重命名留下的空目录)", - "PortBugRestrictedHeaderPaths": "以下受限标头可以阻止核心 C++ 运行时和其他包正确编译。在特殊情况下,可以设置 CMake 变量 VCPKG_POLICY_ALLOW_RESTRICTED_HEADERS in portfile.cmake 以禁用此策略。", - "PortBugSetDllsWithoutExports": "不带任何导出的 DLL 可能是生成脚本中的 bug。如果希望这样,请在端口文件:\nset(已启用 VCPKG_POLICY_DLLS_WITHOUT_EXPORTS)\n中添加以下行: 以下 DLL 没有导出:", + "PortBugRestrictedHeaderPaths": "使用以下受限标头可能会阻止核心 C++ 运行时和其他包正确编译。应重命名它们或转而将其存储在子目录中。在特殊情况下,可通过添加 set(VCPKG_POLICY_ALLOW_RESTRICTED_HEADERS enabled) 来抑制此警告", + "PortBugRestrictedHeaderPathsNote": "标头相对于此处的 ${{CURRENT_PACKAGES_DIR}}/include", + "PortBugSetDllsWithoutExports": "在没有任何导出的情况下生成以下 DLL。没有导出的 DLL 可能是生成脚本中的 bug。如果是有意为之,则添加 set(VCPKG_POLICY_DLLS_WITHOUT_EXPORTS enabled)", + "PortDeclaredHere": "{package_name} 已在此处声明", "PortDependencyConflict": "端口 {package_name} 具有以下不受支持的依赖项:", "PortDoesNotExist": "{package_name} 不存在", "PortMissingManifest2": "缺少 {package_name} 端口清单(无 vcpkg.json 或 CONTROL 文件)", @@ -932,7 +910,6 @@ "PortVersionControlMustBeANonNegativeInteger": "“Port-Version”必须是非负整数", "PortVersionMultipleSpecification": "\"port_version\" 不能与版本中嵌入的 \"#\" 组合使用", "PortsAdded": "添加了以下 {count} 个端口:", - "PortsDiffHelp": "参数应为要签出的分支/标记/哈希。", "PortsNoDiff": "两次提交之间的端口没有变化。", "PortsRemoved": "删除了以下 {count} 个端口:", "PortsUpdated": "以下 {count} 个端口已更新:", @@ -957,7 +934,6 @@ "RestoredPackagesFromNuGet": "{elapsed} 后从 NuGet 还原了 {count} 个包。使用 --debug 了解更多详细信息。", "ResultsHeader": "结果", "ScriptAssetCacheRequiresScript": "应为参数: 资产配置 \"x-script\" 要求将 exec 模板精确用作参数", - "SearchHelp": "参数应为要搜索的子字符串,或没有用于显示所有库的参数。", "SecretBanner": "*** 机密 ***", "SeeURL": "有关详细信息,请参阅 {url}。", "SerializedBinParagraphHeader": "\n序列化二进制段落", @@ -966,6 +942,7 @@ "ShaPassedWithConflict": "已传递 SHA512,但也传递了 --skip-sha512;请仅执行两者其中之一。", "ShallowRepositoryDetected": "vcpkg 已克隆为 {path} 中的浅层存储库\n请使用完整的 vcpkg 克隆重试。", "SkipClearingInvalidDir": "正在跳过清除 {path} 的内容,因为它不是目录。", + "SkippingPostBuildValidationDueTo": "由于 {cmake_var},正在跳过生成后验证", "SourceFieldPortNameMismatch": "CONTROL 文件中的“Source”字段或 vcpkg.json 文件中的“name”字段具有名称 {package_name},并且与端口目录“{path}”不匹配。", "SpecifiedFeatureTurnedOff": "已专门禁用“{command_name}”功能,但已指定 --{option}。", "SpecifyHostArch": "主机三元组。请参阅“vcpkg 帮助三元组”(默认值:“{env_var}”)", @@ -973,10 +950,8 @@ "StartCodeUnitInContinue": "在“继续”位置找到了起始代码单元", "StoreOptionMissingSha": "--store 选项无效,没有 sha512", "StoredBinariesToDestinations": "{elapsed} 后在 {count} 个目标中存储了二进制文件。", - "StoredBinaryCache": "存储的二进制缓存:“{path}”", "SuccessfulyExported": "已将 {package_name} 导出到 {path}", "SuggestGitPull": "结果可能已过时。运行 `git pull` 以获取最新结果。", - "SuggestResolution": "要尝试一次性解决所有错误,请运行:\nvcpkg {command_name} --{option}", "SuggestStartingBashShell": "请确保已启动新的 bash shell 以使更改生效。", "SupportedPort": "支持端口 {package_name}。", "SwitchUsedMultipleTimes": "已多次指定开关“{option}”", @@ -1004,7 +979,6 @@ "UnexpectedByteSize": "应写入 {expected} 个字节,但已写入 {actual}。", "UnexpectedCharExpectedCloseBrace": "意外字符;应为属性或右大括号", "UnexpectedCharExpectedColon": "意外字符;应为冒号", - "UnexpectedCharExpectedComma": "意外字符;应为逗号或右大括号", "UnexpectedCharExpectedName": "意外字符;应为属性名称", "UnexpectedCharExpectedValue": "意外字符;预期值", "UnexpectedCharMidArray": "数组中间出现意外字符", @@ -1023,26 +997,21 @@ "UnexpectedEOFMidKeyword": "关键字中间出现意外的 EOF", "UnexpectedEOFMidString": "字符串中间出现意外的 EOF", "UnexpectedEOFMidUnicodeEscape": "在 unicode 转义中间出现意外的文件结尾", - "UnexpectedErrorDuringBulkDownload": "批量下载期间出现意外错误。", "UnexpectedEscapeSequence": "意外的转义序列延续", - "UnexpectedExtension": "非预期的存档扩展名:“{extension}”。", - "UnexpectedFeatureList": "意外的功能列表", "UnexpectedField": "意外字段 \"{json_field}\"", "UnexpectedFieldSuggest": "意外字段 \"{json_field}\",你的意思是 \"{value}\" 吗?", "UnexpectedFormat": "预期格式为 [{expected}],但实际为 [{actual}]。", "UnexpectedOption": "意外选项: {option}", - "UnexpectedPlatformExpression": "意外的平台表达式", "UnexpectedPortName": "端口 {expected} 在 {path} 中声明为 {actual}", "UnexpectedPortversion": "没有版本控制字段的意外 \"port-version\"", "UnexpectedSwitch": "意外开关: {option}", "UnexpectedToolOutput": "{tool_name} ({path}) 在尝试确定版本时生成了意外输出:", "UnexpectedWindowsArchitecture": "意外的 Windows 主机体系结构: {actual}", "UnknownBaselineFileContent": "无法识别的基线条目;应为 “port:triplet=(fail|skip|pass)”", - "UnknownBinaryProviderType": "未知的二进制提供程序类型: 有效提供程序为 “clear”、“default”、“nuget”、“nugetconfig”“nugettimeout”、“\"interactive”、“x-azblob”、“x-gcs”、“x-aws”、“x-aws-config”、“http” 和 “files”", + "UnknownBinaryProviderType": "未知的二进制提供程序类型: 有效提供程序为 “clear”、“default”、“nuget”、“nugetconfig”、“nugettimeout”、“\"interactive”、“x-azblob”、“x-gcs”、“x-aws”、“x-aws-config”、“http” 和 “files”", "UnknownBooleanSetting": "{option} 的布尔值设置未知: \"{value}\"。有效值为 \"\"、\"1\"、\"0\"、\"ON\"、\"OFF\"、\"TRUE\" 和 \"FALSE\"。", - "UnknownOptions": "命令“{command_name}”的未知选项:", "UnknownParameterForIntegrate": "用于集成的参数“{value}”未知。", - "UnknownPolicySetting": "策略“{value}”的设置未知: {option}", + "UnknownPolicySetting": "{cmake_var} 的设置未知: {value}。有效的策略值为“已禁用”和“已启用”。", "UnknownSettingForBuildType": "VCPKG_BUILD_TYPE {option} 的设置未知。有效设置为 ''、“debug” 和 “release”。", "UnknownTool": "vcpkg 没有为适用于此平台的这一工具提供定义。", "UnknownTopic": "未知主题 {value}", @@ -1054,7 +1023,6 @@ "UnsupportedFeatureSupportsExpressionWarning": "{feature_spec} 仅在“{supports_expression}”上受支持,这与 {triplet} 不匹配。这通常意味着在生成其他平台时存在已知的生成失败或运行时问题。但由于 `--allow-unsported`,请仍然继续操作。", "UnsupportedPort": "不支持端口 {package_name}。", "UnsupportedPortDependency": "- 不支持依赖项 {value}。", - "UnsupportedShortOptions": "不支持短选项:“{value}”", "UnsupportedSyntaxInCDATA": "]]> 在 CDATA 块中不受支持", "UnsupportedSystemName": "无法将 VCPKG_CMAKE_SYSTEM_NAME “{system_name}” 映射到 vcvarsall 平台。支持的系统名称为 ''、“Windows” 和 “WindowsStore”。", "UnsupportedToolchain": "在三元组 {triplet} 中: 无法为请求的目标体系结构 {arch} 找到有效的工具链。\n所选 Visual Studio 实例位于: {path}\n可用的工具链组合为 {list}", @@ -1068,21 +1036,18 @@ "UpdateBaselineUpdatedBaseline": "已更新注册表“{url}”: 基线“{old_value}”->“{new_value}”", "UpgradeInManifest": "升级 升级经典模式安装,因此不支持清单模式。请考虑通过使用 vcpkg x-update-baseline 将基线更新为当前值,并运行 vcpkg 安装来更新依赖项。", "UpgradeRunWithNoDryRun": "如果确实要重新生成上述包,请使用 --no-dry-run 选项运行此命令。", - "UploadedBinaries": "已将二进制文件上传到 {count} 个 {vendor}。", - "UploadedPackagesToVendor": "已在 {elapsed} 内将 {count} 个包上传到 {vendor}", "UploadingBinariesToVendor": "正在将“{spec}”的二进制文件上传到“{vendor}”源“{path}”。", - "UploadingBinariesUsingVendor": "正在使用“{vendor}”“{path}”上传“{spec}”的二进制文件。", + "UsageInstallInstructions": "可使用以下 CMake 安装 usage 文件", + "UsageTextHere": "usage 文件位于此处", "UseEnvVar": "-- 正在使用环境变量中的 {env_var}。", "UserWideIntegrationDeleted": "未安装用户范围的集成。", "UserWideIntegrationRemoved": "已删除用户范围的集成。", - "UsingCommunityTriplet": "-- 正在使用社区三联 {triplet}。此三联配置不能保证成功。", "UsingManifestAt": "正在 {path} 使用清单文件。", "Utf8ConversionFailed": "未能转换为 UTF-8", "VSExaminedInstances": "考虑了以下 Visual Studio 实例:", "VSExaminedPaths": "检查了 Visual Studio 实例的以下路径:", "VSNoInstances": "找不到完整的 Visual Studio 实例", "VcpkgCeIsExperimental": "vcpkg-artifact 是实验性的,可能会随时发生更改。", - "VcpkgCommitTableHeader": "VCPKG 提交", "VcpkgCompletion": "vcpkg {value}完成已导入到“{path}”文件。\n找到以下条目:", "VcpkgDisallowedClassicMode": "无法在当前工作目录之上找到清单(vcpkg.json)。\n此 vcpkg 分发没有经典模式实例。", "VcpkgHasCrashed": "vcpkg 已崩溃。请在 https://github.com/microsoft/vcpkg 创建一个问题,其中包含你尝试执行的操作的简短摘要以及以下信息。", @@ -1095,17 +1060,22 @@ "VcpkgUsage": "用法: vcpkg [--switches] [--options=values] [arguments] @response_file", "VcvarsRunFailed": "无法运行 vcvarsall.bat 以获取 Visual Studio 环境", "VcvarsRunFailedExitCode": "尝试获取 Visual Studio 环境时,vcvarsall.bat 返回了 {exit_code}", - "VersionBaselineMismatch": "最新版本为 {expected},但基线文件包含 {actual}。\n运行:\nvcpkg x-add-version {package_name}\ngit add versions\ngit commit -m \"Update version database\"\n以更新基线版本。", + "VersionBaselineMatch": "{version_spec} 与当前基线匹配", + "VersionBaselineMismatch": "{package_name} 已分配 {actual},但本地端口为 {expected}", "VersionBuiltinPortTreeEntryMissing": "{expected} 处没有 {package_name} 的版本数据库条目;使用签出的端口树版本 ({actual})。", "VersionCommandHeader": "vcpkg 包管理程序版本 {version}\n\n查看 LICENSE.txt 获取许可证信息。", "VersionConflictXML": "{path} 版本应为 [{expected_version}],但实际为 [{actual_version}]。请重新运行 bootstrap-vcpkg。", + "VersionConstraintNotInDatabase1": "版本数据库中不存在的 {package_name} 名称版本 {version} 的 \"version>=\" 约束。所有版本都必须存在于版本数据库中才能由 vcpkg 进行解释。", + "VersionConstraintNotInDatabase2": "考虑移除版本约束或选择此处声明的值", + "VersionConstraintOk": "所有版本约束都与版本数据库一致", "VersionConstraintPortVersionMustBePositiveInteger": "“version>=” 中的 port-version (在 “#” 之后)必须为负整数", - "VersionConstraintUnresolvable": "无法从 {spec} 解析依赖项 {package_name} 的最小约束。\n基线中找不到依赖项,表示该包当时不存在。可以通过“替代”字段或通过更新基线来提供显式替代版本,从而修复此问题。\n有关详细信息,请参阅“vcpkg 帮助版本控制”。", "VersionConstraintViolated": "依赖项 {spec} 应至少为 {expected_version} 版本,但目前为 {actual_version}。", "VersionDatabaseEntryMissing": "{version} 处没有 {package_name} 的版本条目。", - "VersionDatabaseFileMissing": "{package_name} 在 {path} 处缺少版本数据库文件\n运行:\nvcpkg x-add-version {package_name}\n以创建版本文件。", + "VersionDatabaseFileMissing": "此端口不在版本数据库中", + "VersionDatabaseFileMissing2": "版本数据库文件应在此处", + "VersionDatabaseFileMissing3": "运行 \"{command_line}\" 以创建版本数据库文件", "VersionGitEntryMissing": "{version} 处没有 {package_name} 的版本数据库条目。\n可用版本:", - "VersionInDeclarationDoesNotMatch": "文件中声明的版本与签出版本不匹配: {version}", + "VersionInDeclarationDoesNotMatch": "{git_tree_sha} 已声明为包含 {expected},但似乎包含的是 {actual}", "VersionIncomparable1": "{spec} 上的版本冲突:需要 {constraint_origin} {expected},这无法与基线版本 {actual} 进行比较。", "VersionIncomparable2": "“{version_spec}”具有方案“{new_scheme}”", "VersionIncomparable3": "可以将显式替代添加到首选版本以解决此问题,例如:", @@ -1117,17 +1087,29 @@ "VersionInvalidSemver": "“{version}”不是有效的语义版本,请参阅 。", "VersionMissing": "需要版本控制字段(版本、版本日期、版本-semver 或版本字符串)之一", "VersionMissingRequiredFeature": "“{version_spec}”没有“{constraint_origin}”所需的功能“{feature}”", - "VersionNotFound": "{expected} 不可用,只有 {actual} 可用", - "VersionNotFoundInVersionsFile": "“{package_name}”版本文件中找不到版本“{version}”。\n运行:\nvcpkg x-add-version {package_name}\n以新增端口版本。", + "VersionNotFoundInVersionsFile2": "在版本数据库中找不到 {version_spec}", + "VersionNotFoundInVersionsFile3": "该版本应在此文件中", + "VersionNotFoundInVersionsFile4": "运行 \"{command_line}\" 以添加新的端口版本", + "VersionOverrideNotInVersionDatabase": "版本数据库中不存在版本替代项 {package_name};该端口是否存在?", + "VersionOverrideVersionNotInVersionDatabase1": "版本数据库中不存在的 {package_name} 名称版本 {version} 的替代项。在顶层安装此端口将失败,因为该版本将无法解析。", + "VersionOverrideVersionNotInVersionDatabase2": "考虑移除版本替代项或选择此处声明的值", + "VersionOverwriteVersion": "你可以通过运行以下命令,来使用正确的本地值覆盖 {version_spec}:", "VersionRejectedDueToBaselineMissing": "{path} 被拒绝,因为它使用了 \"{json_field}\",并且没有“内置基线”。可以通过停止使用 \"{json_field}\" 或添加“内置基线”来修复此问题。\n有关详细信息,请参阅 `vcpkg help versioning`。", "VersionRejectedDueToFeatureFlagOff": "{path} 被拒绝,因为它使用了 \"{json_field}\",并且禁用了 `versions` 功能标志。可以通过停止使用 \"{json_field}\" 或启用 `versions` 功能标志来修复此问题。\n有关详细信息,请参阅 `vcpkg help versioning`。", - "VersionSchemeMismatch": "版本数据库将 {version} 声明为 {expected},但 {path} 将其声明为 {actual}。版本必须具有唯一性,即使它们使用不同的方案声明。\n运行:\nvcpkg x-add-version {package_name} --overwrite-version\n以使用端口中声明的方案覆盖版本数据库中声明的方案。", - "VersionShaMismatch": "{version} 使用 {expected} 声明,但本地端口具有不同的 SHA {actual}。\n请更新该端口的版本字段,然后运行:\n vcpkg x-add-version {package_name}\ngit add versions\ngit commit -m \"Update version database\"\n以新增版本。", - "VersionShaMissing": "验证 {package_name} 时,缺少 Git SHA。\n运行:\ngit add \"{path}\"\ngit commit -m \"wip\"\nvcpkg x-add-version {package_name}\ngit add versions\ngit commit --amend -m \"[{package_name}] Add new port\"\n以提交新端口并创建其版本文件。", + "VersionSchemeMismatch1": "{version} 已声明为 {expected},但 {package_name} 是使用 {actual} 声明的", + "VersionSchemeMismatch1Old": "{version} 已声明为 {expected},但 {package_name}@{git_tree_sha} 是使用 {actual} 声明的", + "VersionSchemeMismatch2": "版本必须是唯一的,即使它们是使用不同的方案声明的", + "VersionShaMismatch1": "{version_spec} git 树 {git_tree_sha} 与端口目录不匹配", + "VersionShaMismatch2": "端口目录包含 git 树 {git_tree_sha}", + "VersionShaMismatch3": "如果 {version_spec} 已发布,请使用新版本或端口版本更新此文件,提交该文件,然后通过运行以下命令来添加新版本:", + "VersionShaMismatch4": "如果 {version_spec} 尚未发布,请通过运行以下命令来覆盖上一个 git 树:", + "VersionShaMissing1": "无法确定端口目录的 git 树。这通常是由未提交的更改引起的。", + "VersionShaMissing2": "你可以通过运行以下命令来提交更改并将其添加到版本数据库:", + "VersionShaMissing3": "wip", + "VersionShaMissing4": "[{package_name}] 添加新端口", "VersionSharpMustBeFollowedByPortVersion": "版本文本中的 \"#\" 必须后跟端口版本", "VersionSharpMustBeFollowedByPortVersionNonNegativeInteger": "版本文本中的 \"#\" 后面必须跟端口版本(非负整数)", "VersionSpecMismatch": "无法加载端口,因为版本不一致。文件“{path}”包含版本 {actual_version},但版本数据库指示它应为 {expected_version}。", - "VersionTableHeader": "版本", "VersionVerifiedOK": "{version_spec} 正确位于版本数据库({git_tree_sha})中", "WaitingForChildrenToExit": "正在等待子进程退出...", "WaitingToTakeFilesystemLock": "正在等待锁定 {path} 上的文件系统...", @@ -1136,8 +1118,7 @@ "WhileCheckingOutBaseline": "签出基线 {commit_sha} 时", "WhileCheckingOutPortTreeIsh": "用 git 树 {git_tree_sha} 签出端口 {package_name} 时", "WhileGettingLocalTreeIshObjectsForPorts": "获取端口的本地树状对象时", - "WhileLoadingLocalPort": "尝试加载本地端口 {package_name} 时", - "WhileLoadingPortFromGitTree": "尝试从 {commit_sha} 加载端口时", + "WhileLoadingBaselineVersionForPort": "加载 {package_name} 的基线版本期间", "WhileLoadingPortVersion": "加载 {version_spec} 时", "WhileLookingForSpec": "查找 {spec} 时:", "WhileParsingVersionsForPort": "分析来自 {path} 的 {package_name} 版本时", @@ -1165,7 +1146,7 @@ "descriptionShouldBeOfTypestringFound$": "描述的类型应为“string”,但找到的是“${p0}”", "optionsShouldBeASequenceFound$": "选项应为序列,找到的是“${p0}”", "DuplicateKeysDetectedInManifest$": "在清单中检测到重复的密钥:“${p0}”", - "noPostscriptFileRerunWithTheVcpkgShellFunctionRatherThanExecutable": "无 postscript 文件: 使用 vcpkg shell 函数(而不是可执行文件)重新运行", + "noPostscriptFileRunVcpkgshellWithTheSameArguments": "无 postscript 文件:使用相同的参数运行 vcpkg-shell", "DuplicateDefine$DuringActivationNewValueWillReplaceOld": "激活过程中重复定义 ${p0}。新值将替换旧值。", "DuplicateToolDeclared$DuringActivationNewValueWillReplaceOld": "激活过程中声明了重复的工具 ${p0}。新值将替换旧值。", "DuplicateAliasDeclared$DuringActivationNewValueWillReplaceOld": "激活过程中声明了重复的别名 ${p0}。新值将替换旧值。", @@ -1257,7 +1238,7 @@ "MultipleArtifactsSpecifiedButNotAnEqualNumberOf$Switches": "指定了多个项目,但 ${p0} 个切换的数量不相等", "TriedToAddAnArtifact$$ButCouldNotDetermineTheRegistryToUse": "尝试添加项目 [${p0}]:${p1} 但无法确定要使用的注册表。", "TriedToAddRegistry$As$ButItWasAlready$PleaseAdd$ToThisProjectManuallyAndReattempt": "尝试将注册表 ${p0} 添加为 ${p1},但它已经是 ${p2}。请手动将 ${p3} 添加到此项目并重新尝试。", - "RunvcpkgActivateToApplyToTheCurrentTerminal": "运行\\`vcpkg activate\\`以应用于当前终端", + "RunvcpkgshellActivateToApplyToTheCurrentTerminal": "运行\\`vcpkg-shell activate\\`以应用于当前终端", "DownloadsFolderCleared$": "下载文件夹已清除(${p0}) ", "InstalledArtifactFolderCleared$": "已安装的项目文件夹已清除(${p0}) ", "CacheFolderCleared$": "缓存文件夹已清除(${p0}) ", diff --git a/locales/messages.zh-Hant.json b/locales/messages.zh-Hant.json index 860d8d44a2..e1b9fed068 100644 --- a/locales/messages.zh-Hant.json +++ b/locales/messages.zh-Hant.json @@ -46,7 +46,6 @@ "AVersionOfAnyType": "任何類型的版本", "AddArtifactOnlyOne": "'{command_line}'一次只能新增一個成品。", "AddCommandFirstArg": "要新增的第一個參數必須是 'artifact' 或 'port'。", - "AddFirstArgument": "'{command_line}'的第一個引數必須是 'artifact' 或 'port'。", "AddPortRequiresManifest": "'{command_line}' 需要使用中的資訊清單檔案。", "AddPortSucceeded": "已成功將連接埠新增到 vcpkg.json 檔案。", "AddRecurseOption": "如果您確定要移除它們,請以 --recurse 選項執行命令。", @@ -54,12 +53,11 @@ "AddVersionAddedVersionToFile": "已將版本 {version} 新增到 {path}", "AddVersionArtifactsOnly": "--version 只是成品,無法與 vcpkg add port 一起使用", "AddVersionCommitChangesReminder": "您是否記得要提交變更?", - "AddVersionCommitResultReminder": "別忘了要提交結果!", "AddVersionDetectLocalChangesError": "因為 Git 狀態輸出中有未預期的格式,所以略過偵測本機變更", "AddVersionFileNotFound": "找不到必要的檔案 {path}", "AddVersionFormatPortSuggestion": "執行 `{command_line}` 以格式化檔案", "AddVersionIgnoringOptionAll": "正在忽略 --{option},因為已提供連接埠名稱引數", - "AddVersionLoadPortFailed": "無法載入連接埠 {package_name}", + "AddVersionInstructions": "您可以執行下列命令以自動新增 {package_name} 的目前版本:", "AddVersionNewFile": "(new file)", "AddVersionNewShaIs": "新 SHA: {commit_sha}", "AddVersionNoFilesUpdated": "未更新任何檔案", @@ -70,8 +68,8 @@ "AddVersionPortFilesShaChanged": "{package_name} 的簽入檔案已變更,但版本未更新", "AddVersionPortFilesShaUnchanged": "{package_name} 的簽入檔案與版本 {version} 為不變的", "AddVersionPortHasImproperFormat": "{package_name} 的格式不正確", - "AddVersionSuggestNewVersionScheme": "在連接埠 \"{package_name}\" 中使用版本配置 \"{new_scheme}\" 而不是 \"{old_scheme}\"。\n使用 --{option} 以停用此檢查。", - "AddVersionUnableToParseVersionsFile": "無法剖析版本檔案 {path}", + "AddVersionSuggestVersionDate": "\"{package_name}\" 的版本格式使用 \"version-string\",但格式可接受為 \"version-date\"。如果此格式實際上是 ISO 8601 日期,請將格式變更為 \"version-date\",然後重新執行此命令。否則,請重新執行此命令並新增 --skip-version-format-check,以停用此檢查。", + "AddVersionSuggestVersionRelaxed": "\"{package_name}\" 的版本格式使用 \"version-string\",但該格式可接受為 \"version\"。如果此連接埠的版本可使用寬鬆版本規則排序,請將格式變更為 \"version\",然後重新執行此命令。寬鬆版本規則會依每個數值元件排序版本。然後,具有虛線後綴的版本之前會依語匯排序。忽略 Plus'd 組建標籤。範例:\n1.0 < 1.1-alpha < 1.1-b < 1.1 < 1.1.1 < 1.2+build = 1.2 < 2.0\n特別請注意,虛線後綴排序*之前*,而非之後。1.0-anything < 1.0\n請注意,此排序順序與語意版本設定中選擇的順序相同,即使實際語意部分不適用,(仍會看到 https://semver.org)。\n如果此連接埠的版本未依這些規則排序,請重新執行此命令並新增 --skip-version-format-check 以停用此檢查。", "AddVersionUncommittedChanges": "{package_name} 有未承諾的變更", "AddVersionUpdateVersionReminder": "您是否記得要更新版本或連接埠版本?", "AddVersionUseOptionAll": "沒有引數的 {command_name} 需要傳遞 --{option} 以一次更新所有連接埠的版本", @@ -82,7 +80,7 @@ "AdditionalPackagesToRemove": "必須移除其他套件 (*) 才能完成此作業。", "AllFormatArgsRawArgument": "格式字串 \"{value}\" 包含原始格式引數", "AllFormatArgsUnbalancedBraces": "格式字符串 \"{value}\" 中出現不對等大括號", - "AllPackagesAreUpdated": "所有已安裝的套件都使用最新的本機 portfile。", + "AllPackagesAreUpdated": "所有安裝的套件都是最新的。", "AlreadyInstalled": "{spec} 已安裝", "AlreadyInstalledNotHead": "{spec} 已安裝 -- 未從 HEAD 建立", "AmbiguousConfigDeleteConfigFile": "資訊清單和設定檔案提供的不明確 vcpkg 設定。\n-- 刪除設定檔 {path}", @@ -110,7 +108,6 @@ "ApplocalProcessing": "部署相依性", "ArtifactsBootstrapFailed": "未安裝 vcpkg-artifacts,因此無法啟動載入。", "ArtifactsNotInstalledReadonlyRoot": "未安裝 vcpkg-artifacts,而且無法安裝,因為 VCPKG_ROOT 假設為唯讀。使用 'one liner' 重新安裝 vcpkg 可能可以修正此問題。", - "ArtifactsNotOfficialWarning": "使用 vcpkg-artifacts 搭配非官方", "ArtifactsOptionIncompatibility": "--{option} 對尋找成品不會影響。", "ArtifactsOptionJson": "記錄環境變數和其他屬性之 JSON 檔案的完整路徑", "ArtifactsOptionMSBuildProps": "將寫入 MSBuild 屬性之檔案的完整路徑", @@ -118,12 +115,10 @@ "ArtifactsOptionVersionMismatch": "--version 切換數目必須與具名成品數目相符", "ArtifactsSwitchARM": "取得成品時強制主機偵測為 ARM", "ArtifactsSwitchARM64": "取得成品時強制主機偵測為 ARM64", - "ArtifactsSwitchAll": "更新所有已知的成品登錄", "ArtifactsSwitchAllLanguages": "取得成品時取得所有語言檔案", "ArtifactsSwitchForce": "如果已取得成品,則強制重新取得", "ArtifactsSwitchFreebsd": "取得成品時強制主機偵測為 FreeBSD", "ArtifactsSwitchLinux": "取得成品時強制主機偵測為 Linux", - "ArtifactsSwitchNormalize": "套用任何取代修復", "ArtifactsSwitchOnlyOneHostPlatform": "只能設定一個主機平台 (--x64、--x86、--arm、--arm64)。", "ArtifactsSwitchOnlyOneOperatingSystem": "只能設定一個作業系統 (--windows、--osx、--linux、--freebsd)。", "ArtifactsSwitchOnlyOneTargetPlatform": "只能設定一個目標平台 (--target:x64、--target:x86、--target:arm、--target:arm64)。", @@ -135,9 +130,12 @@ "ArtifactsSwitchWindows": "取得成品時強制主機偵測為 Windows", "ArtifactsSwitchX64": "取得成品時強制主機偵測為 x64", "ArtifactsSwitchX86": "取得成品時強制主機偵測為 x86", + "AssetCacheHit": "{path} 的資產快取命中; 已從 {url} 下載", + "AssetCacheMiss": "資產快取遺漏; 正在從 {url} 下載", + "AssetCacheMissBlockOrigin": "{path} 資產快取遺漏且 x-block-origin 封鎖了下載。", "AssetCacheProviderAcceptsNoArguments": "非預期的引數: '{value}' 不接受引數", + "AssetCacheSuccesfullyStored": "已成功將 {path} 儲存到 {url}。", "AssetSourcesArg": "資產快取來源。請參閱 'vcpkg help assetcaching'", - "AttemptingToFetchPackagesFromVendor": "正在嘗試從 {vendor} 擷取 {count} 個套件", "AttemptingToSetBuiltInBaseline": "嘗試在 vcpkg.json 中設定 builtin-baseline,同時會使用 vcpkg-configuration.json.\n使用 vcpkg-configuration.json 中的 default-registry。", "AuthenticationMayRequireManualAction": "一或多個 {vendor} 認證提供者要求手動動作。新增二進位來源 'interactive' 以允許互動。", "AutoSettingEnvVar": "-- 正在自動將 {env_var} 環境變數設為 \"{url}\"。", @@ -147,12 +145,11 @@ "AzUrlAssetCacheRequiresBaseUrl": "未預期的引數: 資產設定 'azurl' 需要基底 URL", "AzUrlAssetCacheRequiresLessThanFour": "未預期的引數: 資產設定 'azurl' 需要少於 4 個引數", "BaselineConflict": "在資訊清單檔案中指定 vcpkg-configuration.default-registry 與內建基準衝突。\n請移除其中一個衝突設定。", - "BaselineFileNoDefaultField": "位於認可 {commit_sha} 的基準檔案無效 (沒有 \"default\" 欄位)。", "BaselineGitShowFailed": "從認可 '{commit_sha}' 中簽出基準時,無法 `git show` versions/baseline.json。使用 `git fetch` 擷取認可以修正這個問題。", - "BaselineMissing": "找不到基準版本。執行:\nvcpkg x-add-version {package_name}\ngit add versions\ngit commit -m \"Update version database\"\n以將 {version} 設為基準版本。", - "BinaryCacheVendorHTTP": "HTTP 伺服器", + "BaselineMissing": "{package_name} 未獲指派版本", + "BinariesRelativeToThePackageDirectoryHere": "二進位檔案是相對於這裡的 ${{CURRENT_PACKAGES_DIR}}", "BinarySourcesArg": "二進位快取來源。請參閱 'vcpkg help binarycaching'", - "BinaryWithInvalidArchitecture": "{path}\n 預期: {expected},但已{actual}", + "BinaryWithInvalidArchitecture": "{path} 是專為 {arch} 打造", "BuildAlreadyInstalled": "{spec} 已安裝; 請先移除 {spec},再嘗試建置。", "BuildDependenciesMissing": "建置命令需要已安裝所有相依性。\n遺失下列相依性:", "BuildResultBuildFailed": "BUILD_FAILED", @@ -170,22 +167,19 @@ "BuildTroubleshootingMessage1": "請確定您使用最新的連接埠檔案與 'git pull' 和 'vcpkg update'。\n然後在下列位置查看已知問題:", "BuildTroubleshootingMessage2": "您可以在下列位置提交新問題:", "BuildTroubleshootingMessage3": "在錯誤報表標題中包含 '[{package_name}] 組建錯誤'、在錯誤描述中包含下列版本資訊,以及附加上述任何相關的失敗記錄。", - "BuildTroubleshootingMessage4": "回報問題時,請使用 {path} 的預先填入範本。", "BuildTroubleshootingMessageGH": "您也可以執行下列來提交問題 (必須安裝 GitHub CLI):", "BuildingFromHead": "從 HEAD 建立 {spec}...", "BuildingPackage": "正在建立 {spec}...", "BuildingPackageFailed": "建置 {spec} 失敗,原因: {build_result}", "BuildingPackageFailedDueToMissingDeps": "因為下列缺少相依性:", "BuiltInTriplets": "內建三元組:", - "BuiltWithIncorrectArchitecture": "下列檔案是針對不正確的架構所建置:", - "CISettingsExclude": "要跳過的連接埠的逗號分隔清單", + "BuiltWithIncorrectArchitecture": "三元組要求二進位檔案針對 {arch} 建立,但下列二進位檔案是針對不同的架構建立。這通常表示工具鏈資訊不正確地傳遞至二進位檔案的建置系統。若要隱藏此訊息,請新增 set(VCPKG_POLICY_SKIP_ARCHITECTURE_CHECK enabled)", "CISettingsOptCIBase": "ci.baseline.txt 檔案的路徑。用來跳過連接埠及偵測迴歸。", "CISettingsOptExclude": "要跳過的以逗號分隔的連接埠清單", "CISettingsOptFailureLogs": "將複製失敗記錄的目錄", "CISettingsOptHostExclude": "要跳過主機三元組的逗號分隔連接埠清單", "CISettingsOptOutputHashes": "要輸出所有已判斷套件雜湊的檔案", "CISettingsOptParentHashes": "用於讀取父代 CI 狀態套件雜湊的檔案,以減少已變更套件的集合", - "CISettingsOptSkippedCascadeCount": "判斷提示 --exclude 和支援跳過的數值會完全等於這個數字", "CISettingsOptXUnit": "以 XUnit 格式輸出結果的檔案", "CISettingsVerifyGitTree": "驗證每個 Git 樹狀目錄物件是否符合其宣告的版本 (這會非常緩慢)", "CISettingsVerifyVersion": "列印每個連接埠的結果,而不只是錯誤", @@ -200,8 +194,6 @@ "CMakeTargetsUsageHeuristicMessage": "#這是啟發式產生的,可能不正確", "CMakeToolChainFile": "CMake 專案應使用: \"-DCMAKE_TOOLCHAIN_FILE={path}\"", "CMakeUsingExportedLibs": "若要在 CMake 專案中使用匯出的程式庫,請將 {value} 新增至 CMake 命令列。", - "CheckedOutGitSha": "已簽出 Git SHA: {commit_sha}", - "CheckedOutObjectMissingManifest": "簽出的物件不包含 CONTROL 檔案或 vcpkg.json 檔案。", "ChecksFailedCheck": "vcpkg 已損毀; 沒有其他詳細資料。", "ChecksUnreachableCode": "已連線到無法連線的代碼", "ChecksUpdateVcpkg": "重新執行 bootstrap-vcpkg 來更新 vcpkg 或許可以解決此失敗問題。", @@ -235,14 +227,11 @@ "CmdBuildExternalExample2": "vcpkg build-external zlib2 C:\\path\\to\\dir\\with\\vcpkg.json", "CmdBuildExternalSynopsis": "從路徑建置連接埠", "CmdBuildSynopsis": "組建連接埠", - "CmdCacheExample1": "vcpkg cache <搜尋子字串>", - "CmdCacheSynopsis": "列出封裝的規格", "CmdCheckSupportExample1": "vcpkg x-check-support <連接埠名稱>", "CmdCheckSupportSynopsis": "測試是否支援連接埠而不組建連接埠", "CmdCiCleanSynopsis": "清除所有檔案以準備 CI 執行", "CmdCiSynopsis": "嘗試組建所有連接埠以進行 CI 測試", "CmdCiVerifyVersionsSynopsis": "檢查版本資料庫的完整性", - "CmdContactOptSurvey": "啟動預設瀏覽器至目前的 vcpkg 問卷", "CmdCreateExample1": "vcpkg create <連接埠名稱> ", "CmdCreateExample2": "vcpkg create my-fancy-port https://example.com/sources.zip", "CmdCreateExample3": "vcpkg create <連接埠名稱> <下載的檔案名稱>", @@ -265,7 +254,7 @@ "CmdEditOptBuildTrees": "開啟編輯器進入連接埠特定的 buildtree 子資料夾", "CmdEnvOptions": "將已安裝的 {path} 新增至 {env_var}", "CmdExportEmptyPlan": "拒絕建立零套件的匯出。匯出之前請先安裝套件。", - "CmdExportExample1": "vcpkg export <連接埠名稱> [--nuget] [--directory=out_dir]", + "CmdExportExample1": "vcpkg export <連接埠名稱> [--nuget] [--output-dir=out_dir]", "CmdExportOpt7Zip": "匯出至 7zip (.7z) 檔案", "CmdExportOptChocolatey": "匯出 Chocolatey 套件 (實驗性)", "CmdExportOptDebug": "啟用 Prefab 偵錯", @@ -376,8 +365,10 @@ "CmdZExtractExample2": "vcpkg z-extract source.zip source_dir --strip 2", "CmdZExtractOptStrip": "從所有路徑中移除前置目錄的數目。", "CommandEnvExample2": "vcpkg env \"ninja -C <路徑>\" --triplet x64-windows", - "CommandFailed": "命令: \n{command_line}\n 失敗,結果如下:", + "CommandFailed": "命令:\n{command_line}\n失敗,輸出如下:", + "CommandFailedCode": "命令:\n{command_line}\n失敗,結束代碼為 {exit_code},輸出如下:", "CommunityTriplets": "社群三元組:", + "CompilerPath": "已找到編譯器: {path}", "CompressFolderFailed": "無法壓縮資料夾 \"{path}\":", "ComputingInstallPlan": "正在計算安裝計畫...", "ConfigurationErrorRegistriesWithoutBaseline": "{path} 中定義的設定無效。\n\n使用登錄需要為預設登錄設定基準,或預設登錄為 Null。\n\n如需詳細資料,請參閱 {url}。", @@ -386,11 +377,10 @@ "ConsideredVersions": "由於 {version} 的版本需求,已考慮下列可執行檔,但已捨棄:", "ConstraintViolation": "發現強制違規:", "ContinueCodeUnitInStart": "在開始位置找到繼續字碼單位", - "ControlAndManifestFilesPresent": "資訊清單檔案和 CONTROL 檔案同時存在於連接埠目錄中: {path}", "ControlCharacterInString": "字串中的控制字元", "ControlSupportsMustBeAPlatformExpression": "\"Supports\" 必須是平台運算式", - "CopyrightIsDir": "'{path}' 是已被取代的目錄。", - "CorruptedDatabase": "資料庫已損壞。", + "CopyrightIsDir": "此連接埠將 ${{CURRENT_PACKAGES_DIR}}/share/${{PORT}}/copyright 設定為目錄,但它應該是檔案。考慮使用 vcpkg_install_copyright 將個別的著作權檔案合併成一個。若要隱藏此訊息,請新增 set(VCPKG_POLICY_SKIP_COPYRIGHT_CHECK enabled)", + "CorruptedDatabase": "vcpkg 的安裝資料庫已損毀。這是 vcpkg 中的錯誤,或是有其他專案以非預期的方式修改了 'installed' 目錄的內容。您可以刪除 'installed' 目錄,然後重新安裝您想要使用的項目,以修正此問題。如果此問題持續發生,請於 https://github.com/microsoft/vcpkg 回報錯誤 (bug)。", "CorruptedInstallTree": "您的 vcpkg 'installed' 樹狀目錄已損毀。", "CouldNotDeduceNugetIdAndVersion": "無法從檔案名推斷 nuget 識別碼和版本: {path}", "CouldNotFindBaselineInCommit": "無法為 {package_name} 在 {commit_sha} 的 {url} 中找到基準。", @@ -403,14 +393,12 @@ "CreatingNugetPackage": "正在建立 NuGet 套件...", "CreatingZipArchive": "正在建立 zip 保存...", "CreationFailed": "建立 {path} 失敗。", - "CurlFailedToExecute": "curl 無法執行,出現結束代碼 {exit_code}。", "CurlFailedToPut": "Curl 無法將檔案置於 {url},結束代碼為 {exit_code}。", "CurlFailedToPutHttp": "Curl 無法將檔案置於 {url},結束代碼為 {exit_code},HTTP 代碼為{value}。", - "CurlReportedUnexpectedResults": "curl 已向 vcpkg 報告未預期的結果,vcpkg 無法繼續。\n請參閱下列文字以尋找敏感性資訊,並在 Microsoft/vcpkg GitHub 上開啟問題以協助修正此問題!\ncmd: {command_line}\n=== curl 輸出 ===\n{actual}\n=== 結束 curl 輸出 ===", - "CurlReturnedUnexpectedResponseCodes": "curl 傳回的回應碼數目與針對要求所預期的不同 ({actual} 與預期 {expected})。", + "CurlResponseTruncatedRetrying": "curl 傳回部分回應; 等待 {value} 毫秒後再試一次", + "CurlTimeout": "curl 無法執行所有要求的 HTTP 作業,即使在逾時後重試也一樣。最後一個命令列為: {command_line}", "CurrentCommitBaseline": "您可以使用目前的提交做為基準,即:\n\t\"builtin-baseline\": \"{commit_sha}\"", "CycleDetectedDuring": "在 {spec} 期間偵測到循環:", - "DateTableHeader": "日期", "DefaultBinaryCachePlatformCacheRequiresAbsolutePath": "環境變數 VCPKG_DEFAULT_BINARY_CACHE 必須是目錄 (是: {path})", "DefaultBinaryCacheRequiresAbsolutePath": "環境變數 VCPKG_DEFAULT_BINARY_CACHE 必須是絕對 (是: {path})", "DefaultBinaryCacheRequiresDirectory": "環境變數 VCPKG_DEFAULT_BINARY_CACHE 必須是目錄 (是: {path})", @@ -419,15 +407,18 @@ "DefaultFeatureIdentifier": "預設功能的名稱必須是識別碼", "DefaultFlag": "預設為 --{option} 開啟。", "DefaultRegistryIsArtifact": "預設登錄不可以是成品登錄。", - "DefaultTripletChanged": "在 2023 年 9 月的發行版本中,vcpkg 程式庫的預設 triplet 已從 x86-windows 變更為偵測到的主機三色元組 ({triplet})。針對舊行為,請新增 --triplet x86-windows。若要解決此訊息,請新增 --triplet {triplet}。", "DeleteVcpkgConfigFromManifest": "-- 或從資訊清單檔案 {path} 移除 \"vcpkg-configuration\"。", "DependencyFeatureCore": "「核心」功能不能位在相依性的功能清單中。若要關閉預設功能,請改為新增「預設功能」:false。", "DependencyFeatureDefault": "功能「預設」不能位在相依性的功能清單中。若要開啟預設功能,請改為新增「預設功能」:true。", "DependencyGraphCalculation": "相依性圖形提交已啟用。", "DependencyGraphFailure": "相依性圖形提交失敗。", "DependencyGraphSuccess": "相依性圖形提交成功。", + "DependencyInFeature": "相依性位於名為 {feature} 的功能中", + "DependencyNotInVersionDatabase": "版本資料庫中沒有相依性 {package_name};該連接埠存在嗎?", "DeprecatedPrefabDebugOption": "--prefab-debug 現已取代。", "DetectCompilerHash": "正在偵測三重 {triplet} 的編譯器雜湊...", + "DirectoriesRelativeToThePackageDirectoryHere": "目錄是相對於這裡的 ${{CURRENT_PACKAGES_DIR}}", + "DllsRelativeToThePackageDirectoryHere": "DLL 是相對於這裡的 ${{CURRENT_PACKAGES_DIR}}", "DocumentedFieldsSuggestUpdate": "如果這些是應被辨識的已記錄欄位,請嘗試更新 vcpkg 工具。", "DownloadAvailable": "此工具的可下載複本可用,而且可以透過取消設定 {env_var} 使用。", "DownloadFailedCurl": "{url}: Curl 無法下載,結束代碼為 {exit_code}", @@ -437,8 +428,7 @@ "DownloadRootsDir": "下載目錄 (預設值: {env_var})", "DownloadWinHttpError": "{url}: {system_api} 失敗,結束代碼為 {exit_code}", "DownloadedSources": "已下載 {spec} 的來源", - "DownloadingPortableToolVersionX": "找不到適合的 {tool_name} 版本 (需要 v{version})。正在下載可攜式 {tool_name} {version}...", - "DownloadingTool": "正在下載 {tool_name}...\n{url}->{path}", + "DownloadingPortableToolVersionX": "找不到合適版本的 {tool_name},需要第 {version} 版。", "DownloadingUrl": "正在下載 {url}", "DownloadingVcpkgStandaloneBundle": "正在下載獨立搭售方案 {version}。", "DownloadingVcpkgStandaloneBundleLatest": "正在下載最新的獨立搭售方案。", @@ -449,7 +439,6 @@ "DuplicatePackagePatternRegistry": "登錄: {url}", "DuplicatedKeyInObj": "物件中重複的金鑰 \"{value}\"", "ElapsedForPackage": "處理 {spec} 已耗用時間: {elapsed}", - "ElapsedInstallTime": "已耗用時間總計: {count}", "ElapsedTimeForChecks": "判斷通過/失敗的時間: {elapsed}", "EmailVcpkgTeam": "若有任何意見反應,請傳送電子郵件給 {url}。", "EmbeddingVcpkgConfigInManifest": "在資訊清單檔案中內嵌 `vcpkg-configuration` 是實驗性功能。", @@ -479,25 +468,23 @@ "ErrorWhileFetchingBaseline": "從存放庫 {package_name} 擷取基準 `\"{value}\"` 時:", "ErrorWhileParsing": "剖析 {path} 時發生錯誤。", "ErrorWhileWriting": "寫入 {path} 時發生錯誤。", - "ErrorsFound": "找到下列錯誤:", "ExamplesHeader": "範例:", "ExceededRecursionDepth": "超過遞迴深度。", "ExcludedPackage": "已排除 {spec}", "ExcludedPackages": "已排除下列套件:", + "ExecutablesRelativeToThePackageDirectoryHere": "可執行檔案是相對於這裡的 ${{CURRENT_PACKAGES_DIR}}", "ExpectedAnObject": "預期為物件", "ExpectedAtMostOneSetOfTags": "發現 {count} 組 {old_value}.*{new_value},但預期為最多 1 組,於區塊: \n{value}", "ExpectedCharacterHere": "這裡預期為 '{expected}'", "ExpectedDefaultFeaturesList": "預設功能清單中必須要有 ',' 或是文字結尾", "ExpectedDependenciesList": "相依性清單中必須要有 ',' 或是文字結尾", "ExpectedDigitsAfterDecimal": "小數點之後預期為數字", - "ExpectedEof": "必須要有 EOF", "ExpectedExplicitTriplet": "必須要有明確三元組", "ExpectedFailOrSkip": "在此預期有 'fail'、'skip' 或 'pass'", "ExpectedFeatureListTerminal": "功能清單中必須要有 ',' 或 ']'", "ExpectedFeatureName": "必須要有功能名稱 (必須是小寫、數字、'-')", "ExpectedOneSetOfTags": "發現 {count} 組 {old_value}.*{new_value},但預期為確切 1 組,於區塊: \n{value}", "ExpectedOneVersioningField": "只能有一個版本設定欄位", - "ExpectedPackageSpecifier": "必須要有封裝指定名稱", "ExpectedPathToExist": "預期 {path} 會於擷取後存在", "ExpectedPortName": "這裡必須要有連接埠名稱 (必須是小寫、數字、'-')", "ExpectedReadWriteReadWrite": "未預期的引數: 預期為 'read'、readwrite' 或 'write'", @@ -505,7 +492,6 @@ "ExpectedTripletName": "這裡必須要有三元組名稱 (必須是小寫、數字、'-')", "ExportArchitectureReq": "匯出 prefab 至少需要以下其中一個架構為目標: arm64-v8a、armeabi-v7a、x86_64、x86。", "ExportPrefabRequiresAndroidTriplet": "匯出 prefab 需要 Android 三元組。", - "ExportUnsupportedInManifest": "vcpkg 匯出不支援資訊清單模式,以允許未來的設計考量。您可以在傳統模式中使用匯出,方法是在資訊清單式專案外部執行 vcpkg。", "Exported7zipArchive": "7zip 封存已匯出於: {path}", "ExportedZipArchive": "Zip 封存已匯出於: {path}", "ExportingAlreadyBuiltPackages": "下列套件已建置且將匯出:", @@ -514,14 +500,12 @@ "ExtendedDocumentationAtUrl": "可在 '{url}' 上找到擴充文件。", "ExtractHelp": "擷取封存。", "ExtractingTool": "正在擷取 {tool_name}...", - "FailedPostBuildChecks": "()發現{count}建置後檢查問題。若要將這些埠提交給策劃的目錄,請先更正 portfile: {path}", + "FailedPostBuildChecks": "發現 {count} 個建置檢查問題。這些通常是由於 portfile.cmake 或上游建置系統的錯誤所造成。請先修正這些問題,再將此連接埠提交至策劃的登錄。", "FailedToAcquireMutant": "無法取得 mutant {path}", "FailedToCheckoutRepo": "無法從存放庫 {package_name} 簽出 `versions`", "FailedToDeleteDueToFile": "無法 remove_all({value}),因為 {path}: ", "FailedToDeleteInsideDueToFile": "無法 remove_all_inside({value}),因為 {path}: ", - "FailedToDetermineArchitecture": "無法判斷{path}的架構。\n{command_line}", "FailedToDetermineCurrentCommit": "無法判斷目前的認可:", - "FailedToDownloadFromMirrorSet": "無法從鏡像集下載", "FailedToExtract": "無法擷取 \"{path}\":", "FailedToFetchRepo": "無法擷取 {url}。", "FailedToFindPortFeature": "{package_name} 沒有名為 {feature} 的功能。", @@ -530,27 +514,20 @@ "FailedToLoadManifest": "無法從目錄 {path} 載入資訊清單", "FailedToLocateSpec": "在圖形中找不到規格: {spec}", "FailedToObtainDependencyVersion": "找不到所需的相依性版本。", - "FailedToObtainLocalPortGitSha": "無法取得本機連接埠的 Git SHA。", "FailedToObtainPackageVersion": "找不到想要的套件版本。", "FailedToOpenAlgorithm": "無法開啟 {value}", "FailedToParseBaseline": "無法剖析基準: {path}", "FailedToParseCMakeConsoleOut": "無法剖析 CMake 主控台輸出以找出區塊啟動/結束記號。", "FailedToParseConfig": "無法剖析設定: {path}", - "FailedToParseControl": "無法剖析 CONTROL 檔案: {path}", - "FailedToParseManifest": "無法剖析資訊清單檔案: {path}", "FailedToParseNoTopLevelObj": "無法剖析 {path},預期為頂層物件。", "FailedToParseNoVersionsArray": "無法剖析 {path},必須要有 'versions' 陣列。", "FailedToParseSerializedBinParagraph": "[例行性檢查] 無法剖析序列化二進位段落。\n請於 https://github.com/microsoft/vcpkg 開啟具有下列輸出的問題:\n{error_msg}\n序列化二進位段落:", + "FailedToParseVersionFile": "無法剖析版本檔案:{path}", "FailedToParseVersionXML": "無法剖析工具 {tool_name} 的版本。版本字串為: {version}", - "FailedToParseVersionsFile": "無法剖析版本檔案 {path}", - "FailedToProvisionCe": "無法佈建 vcpkg-artifacts。", - "FailedToReadParagraph": "無法從 {path} 讀取段落", - "FailedToRemoveControl": "無法移除控制檔案 {path}", "FailedToRunToolToDetermineVersion": "無法執行 \"{path}\" 以判斷 {tool_name} 版本。", - "FailedToStoreBackToMirror": "無法儲存回鏡像:", + "FailedToStoreBackToMirror": "無法將 {path} 儲存到 {url}。", "FailedToStoreBinaryCache": "無法儲存二進位快取 {path}", "FailedToTakeFileSystemLock": "無法進行檔案系統鎖定", - "FailedToWriteManifest": "無法寫入資訊清單檔案 {path}", "FailedVendorAuthentication": "無法驗證一或多個 {vendor} 認證提供者。如需如何提供認證的詳細資料,請參閱 '{url}'。", "FetchingBaselineInfo": "正在從 {package_name} 擷取基準資訊...", "FetchingRegistryInfo": "正在從 {url} ({value}) 擷取註冊資訊...", @@ -559,11 +536,13 @@ "FileNotFound": "{path}: 找不到檔案", "FileReadFailed": "無法從位移 {byte_offset} 的 {path} 讀取 {count} 位元組。", "FileSeekFailed": "無法在 {path} 中搜尋至位置 {byte_offset}。", - "FileSystemOperationFailed": "檔案系統操作失敗:", - "FilesContainAbsolutePath1": "在安裝的套件中不應該有絕對路徑,例如下列路徑:", - "FilesContainAbsolutePath2": "在下列檔案中發現絕對路徑:", + "FilesContainAbsolutePath1": "在安裝的套件中不應該有絕對路徑,例如下列路徑。若要隱藏此訊息,請新增 set(VCPKG_POLICY_SKIP_ABSOLUTE_PATHS_CHECK enabled)", + "FilesContainAbsolutePath2": "在此處找到了絕對路徑", + "FilesContainAbsolutePathPkgconfigNote": "新增 'vcpkg_fixup_pkgconfig()' 的呼叫可能會修正 .pc 檔案中的絕對路徑", "FilesExported": "檔案匯出於: {path}", - "FindHelp": "搜尋指定的成品或連接埠。在 'artifact' 或 'port' 後若沒有參數,則會顯示所有項目。", + "FilesRelativeToTheBuildDirectoryHere": "檔案是相對於這裡的建置目錄", + "FilesRelativeToThePackageDirectoryHere": "檔案是相對於這裡的 ${{CURRENT_PACKAGES_DIR}}", + "FindCommandFirstArg": "'find' 的第一個引數必須是 'artifact' 或 'port'。", "FindVersionArtifactsOnly": "--version 無法與 vcpkg search 或 vcpkg find port 一起使用", "FishCompletion": "vcpkg fish 完成已新增於 \"{path}\"。", "FloatingPointConstTooBig": "浮點常數太大: {count}", @@ -581,6 +560,7 @@ "GeneratingRepo": "正在產生存放庫 {path}...", "GetParseFailureInfo": "使用 '--debug' 取得剖析失敗的詳細資訊。", "GitCommandFailed": "無法執行: {command_line}", + "GitCommitUpdateVersionDatabase": "git 認可 -m “Update version database”", "GitFailedToFetch": "無法從存放庫 {url} 擷取 ref {value}", "GitFailedToInitializeLocalRepository": "無法初始化本機存放庫 {path}", "GitRegistryMustHaveBaseline": "git 登錄 \"{url}\" 必須有 [基準] 欄位,且該欄位是有效的 git 認可 SHA (40 個十六進位字元)。\n若要使用目前的最新版本,請將基準設為該存放庫的 [標題] \"{commit_sha}\"。", @@ -591,7 +571,7 @@ "GitUnexpectedCommandOutputCmd": "Git 執行 {command_line} 時產生未預期的輸出", "GraphCycleDetected": "在圖形中偵測到循環,於 {package_name}:", "HashFileFailureToRead": "無法讀取檔案 \"{path}\" 進行雜湊: ", - "HashPortManyFiles": "{package_name} 包含 {count} 個檔案。判斷二進位快取的 ABI 雜湊時,雜湊這些內容可能需要很長的時間。請考慮減少檔案數目。此問題的常見原因是意外簽出來源,或將檔案建置到連接埠的目錄。", + "HashPortManyFiles": "{package_name} 包含 {count} 個檔案。判斷二進位快取的 ABI 雜湊時,雜湊這些內容可能需要很長的時間。請考慮減少檔案數目。常見的原因是意外簽出來源或將檔案建置到連接埠的目錄。", "HeaderOnlyUsage": "{package_name} 為僅標頭,可透過下列方式從 CMake 使用:", "HelpAssetCaching": "**實驗性功能: 這可能會隨時變更或移除**\n\nvcpkg 可以使用鏡像來快取已下載的資產,以確保即使原始來源變更或消失,仍可繼續作業。\n\n資產快取可透過將環境變數 X_VCPKG_ASSET_SOURCES 設為以分號分隔的來源清單,或傳遞一連串 --x-asset-sources= 命令列選項來設定。命令列來源會在環境來源之後解譯。可以使用 backtick (') 逸出逗號、分號和反引號。\n\n特定字串的選擇性參數可控制其存取方式。可以指定為「read」、「write」或「readwrite」,並預設為「read」。\n\n有效來源:", "HelpAssetCachingAzUrl": "新增 Azure Blob 儲存體來源,選擇性地使用共用存取簽章驗證。URL 應包含容器路徑,並以尾端「/」結尾。若已定義,則首碼應為「?」。如果非 Azure 伺服器回應以下格式的 GET 和 PUT 要求,則也會運作: 「」。", @@ -623,10 +603,7 @@ "HelpEnvCommand": "建立用於開發或編譯的全新殼層環境", "HelpExampleCommand": "如需更多說明 (包括範例),請參閱 https://learn.microsoft.com/vcpkg", "HelpExampleManifest": "範例資訊清單:", - "HelpExportCommand": "匯出套件。", - "HelpHashCommand": "依特定演算法雜湊檔案,預設 SHA512。", "HelpInstallCommand": "安裝套件", - "HelpListCommand": "列出已安裝的套件", "HelpManifestConstraints": "資訊清單可以在使用的版本上實施三種限制式", "HelpMinVersion": "Vcpkg 將會選取所找到符合所有適用限制式的最低版本,包括在最上層指定的基準版本,以及圖表中的任何 \"version>=\" 限制式。", "HelpOverrides": "做為最上層資訊清單時 (例如,在目錄中執行 `vcpkg install` 時),覆寫會允許資訊清單讓相依性解決方案中斷,並指定要使用的確切版本。這些可用來處理版本衝突,例如使用 `version-string` 相依性。可轉移依據它們的時候不會加以考慮。", @@ -674,7 +651,6 @@ "IllegalPlatformSpec": "此內容不允許平台限定詞", "ImproperShaLength": "SHA512 必須是 128 十六進位字元: {value}", "IncorrectArchiveFileSignature": "不正確的封存檔案簽章", - "IncorrectPESignature": "不正確的 PE 簽章", "InfoSetEnvVar": "您也可以將 {env_var} 設為您所選擇的編輯器。", "InitRegistryFailedNoRepo": "無法在 {path} 建立登錄,因為這不是 GIT 儲存機制根路徑。\n使用 `git init {command_line}` 在此資料夾中建立 Git 存放庫。", "InstallCopiedFile": "{path_source} -> {path_destination} 完成", @@ -688,8 +664,8 @@ "InstalledBy": "由 {path} 安裝", "InstalledPackages": "已安装下列套件:", "InstalledRequestedPackages": "目前已安装所有要求的套件。", - "InstallingFromLocation": "-- 正在從位置安裝連接埠: {path}", "InstallingMavenFile": "{path} 安裝 Maven 檔案", + "InstallingOverlayPort": "正在從這裡安裝重疊連接埠", "InstallingPackage": "正在安裝 {action_index}/{count} {spec}...", "IntegrateBashHelp": "啟用 bash Tab 鍵自動完成。僅限非 Windows", "IntegrateFishHelp": "啟用 fish Tab 鍵自動完成。僅限非 Windows", @@ -725,7 +701,7 @@ "InvalidBundleDefinition": "無效的搭售方案定義。", "InvalidCharacterInFeatureList": "功能名稱中的字元無效 (必須是小寫、數字、'-' 或 '*')", "InvalidCharacterInFeatureName": "功能名稱中的字元無效 (必須是小寫、數字、'-')", - "InvalidCharacterInPackageName": "封裝名稱中的字元無效 (必須是小寫、數字、'-')", + "InvalidCharacterInPortName": "連接埠名稱中的字元無效 (必須是小寫、數字、'-')", "InvalidCodePoint": "傳遞至 utf8_encoded_code_point_count 的字碼元素無效", "InvalidCodeUnit": "字碼元素無效", "InvalidCommandArgSort": "--sort 的值必須是 'lexicographical'、'topological'、'reverse' 其中之一。", @@ -743,7 +719,6 @@ "InvalidLinkage": "不正確 {system_name} 連結類型: [{value}]", "InvalidLogicExpressionUnexpectedCharacter": "邏輯運算式無效,非預期的字元", "InvalidLogicExpressionUsePipe": "邏輯運算式無效,請使用 '|' 而非 'or'", - "InvalidNoVersions": "檔案未包含任何版本。", "InvalidOptionForRemove": "'remove' 接受程式庫或 '--outdated'", "InvalidPortVersonName": "發現無效的連接埠版本檔案名稱: `{path}`。", "InvalidSharpInVersion": "版本文字中有無效字元 '#'", @@ -751,6 +726,8 @@ "InvalidString": "傳遞至 Value::string(std::string) 的 utf8 無效", "InvalidTriplet": "無效的三元組: {triplet}", "InvalidUri": "無法剖析 URI: {value}", + "InvalidValueHashAdditionalFiles": "變數 VCPKG_HASH_ADDITIONAL_FILES 包含的檔案路徑無效: '{path}'。值必須是現存檔案的絕對路徑。", + "InvalidValuePostPortfileIncludes": "變數 VCPKG_POST_PORTFILE_INCLUDES 包含無效的檔案路徑: '{path}'。值必須是現存 cmake 檔案的絕對路徑。", "IrregularFile": "路徑不是一般檔案: {path}", "JsonErrorMustBeAnObject": "預期的 \"{path}\" 應該為物件。", "JsonFieldNotObject": "[\"{json_field}\"] 的值必須是物件", @@ -786,11 +763,11 @@ "LinkageStaticDebug": "靜態偵錯 (/MTd)", "LinkageStaticRelease": "靜態發行 (/MT)", "ListHelp": "列出已安裝的程式庫", - "LoadingCommunityTriplet": "-- [COMMUNITY] 正在從下列位置載入三重設定: {path}", + "LoadedCommunityTriplet": "已從這裡載入社群三元組。社群三元組並非內建在策展的登錄,因此較不可能成功。", + "LoadedOverlayTriplet": "已從這裡載入重疊三元組", "LoadingDependencyInformation": "正在載入 {count} 個套件的相依性資訊...", - "LoadingOverlayTriplet": "-- [OVERLAY] 正在從下列位置載入三重設定: {path}", - "LocalPortfileVersion": "使用本機 portfile 版本。若要更新本機 portfile,請使用 `git pull`。", - "ManifestConflict": "在連接埠「{path}」中找到一個資訊清單和 CONTROL 檔案; 請重新命名其中一個", + "LocalPortfileVersion": "使用本機連接埠版本。若要更新本機連接埠,請使用 `git pull`。", + "ManifestConflict2": "找到資訊清單和 CONTROL 檔案;請重新命名其中一個", "ManifestFormatCompleted": "已成功格式化資訊清單檔案。", "MismatchedBinParagraphs": "序列化二進位段落與原始二進位段落不同。請在 https://github.com/microsoft/vcpkg 開啟具有下列輸出的問題:", "MismatchedFiles": "要儲存的檔案與雜湊不相符", @@ -802,6 +779,7 @@ "MissingAndroidEnv": "ANDROID_NDK_HOME 環境變數遺失", "MissingAndroidHomeDir": "ANDROID_NDK_HOME 目錄不存在: {path}", "MissingArgFormatManifest": "已傳遞 format-manifest --convert-control 但沒有 '--all'。\n這不會執行任何動作: 明確傳遞的控制檔案會自動轉換。", + "MissingAssetBlockOrigin": "缺少 {path} 且 x-block-origin 封鎖了下載。", "MissingClosingParen": "遺漏右括弧 )", "MissingDependency": "套件 {spec} 已安装,但相依性 {package_name} 沒有安裝。", "MissingExtension": "缺少 '{extension}' 延伸模組", @@ -810,9 +788,9 @@ "MissingPortSuggestPullRequest": "若未列出您的連接埠,請於及/或考慮提出提取要求以開啟問題。", "MissingRequiredField": "缺少必要欄位 '{json_field}' ({json_type})", "MissingRequiredField2": "缺少必要欄位 '{json_field}'", + "MissingShaVariable": "如使用其他變數,則必須在範本中使用 {{sha}} 變數。", "MixingBooleanOperationsNotAllowed": "不允許混合 & 與 |; 使用 () 來指定作業的順序", "MonoInstructions": "這可能是因為未完成的 Mono 安裝所造成。您可透過 'sudo apt install mono-complete' 在某些系統上獲得完整 Mono。Ubuntu 18.04 使用者可能需要較新版的 Mono,可在 https://www.mono-project.com/download/stable/ 下載", - "MsiexecFailedToExtract": "使用啟動或結束代碼 {exit_code} 和訊息解壓縮\"{path}\" 時 msiexec 失敗:", "MultiArch": "Multi-Arch 必須是 'same',但 {option}", "MultipleFeatures": "{package_name} 多次宣告 {feature}; 請確定功能具有相異名稱", "MutuallyExclusiveOption": "--{value} 不能搭配 --{option} 使用。", @@ -822,10 +800,8 @@ "NewOnlyOneVersionKind": "只能指定 --version-relaxed、--version-date 或 --version-string 其中之一。", "NewSpecifyNameVersionOrApplication": "請指定 --name 或 --version 以產生適合 C++ 程式庫的資訊清單,或指定 --application 以表示資訊清單不是用來作為連接埠。", "NewVersionCannotBeEmpty": "--version 不得為空白。", - "NoArgumentsForOption": "選項 --{option} 不接受引數。", "NoError": "沒有錯誤", "NoInstalledPackages": "未安裝任何套件。您是要「搜尋」的意思?", - "NoLocalizationForMessages": "下列項目沒有當地語系化的訊息: ", "NoOutdatedPackages": "沒有過期的套件。", "NoRegistryForPort": "未設定連接埠 {package_name} 的登錄", "NoUrlsAndHashSpecified": "未指定要下載 SHA 的 URL: {sha}", @@ -866,7 +842,6 @@ "PackageManipulationHeader": "套件操作", "PackageRootDir": "套件目錄 (實驗性)", "PackagesToInstall": "下列套件將重建並安裝:", - "PackagesToInstallDirectly": "下列套件將直接安裝:", "PackagesToModify": "將修改其他套件 (*) 以完成此作業。", "PackagesToRebuild": "下列套件將重建:", "PackagesToRebuildSuggestRecurse": "如果您確定要重建上述套件,請以 --recurse 選項執行命令。", @@ -882,47 +857,50 @@ "ParseFeatureNameError": "\"{package_name}\" 並非有效的功能名稱。功能名稱必須是小寫英數字元+連字號,且未保留 (如需詳細資訊,請參閱 {url})", "ParseIdentifierError": "\"{value}\" 並非有效的識別碼。識別碼必須是小寫英數字元+連字號,且未保留 (如需詳細資訊,請參閱 {url})。", "ParsePackageNameError": "\"{package_name}\" 並非有效的套件名稱。套件名稱必須是小寫英數字元+連字號,且未保留 (如需詳細資訊,請參閱 {url})。", + "ParsePackageNameNotEof": "預期輸入剖析套件名稱的結尾; 這通常表示指示的字元不能位於連接埠名稱中。連接埠名稱都必須是小寫英數字元+連字號,且未保留 (如需詳細資訊,請參閱 {url})。", "ParsePackagePatternError": "\"{package_name}\" 並非有效的套件模式。套件模式僅可使用一個萬用字元 (*),且其必須是模式中的最後一個字元 (如需詳細資訊,請參閱 {url})。", + "ParseQualifiedSpecifierNotEof": "預期輸入剖析套件規格的結尾; 這通常表示指示的字元不能位於套件規格中。連接埠、三元組和功能名稱都必須是小寫英數字元+連字號。", + "ParseQualifiedSpecifierNotEofSquareBracket": "預期輸入剖析套件規格的結尾; 您是指 {version_spec} 嗎?", "PathMustBeAbsolute": "環境變數 X_VCPKG_REGISTRIES_CACHE 的值不是絕對: {path}", - "PerformingPostBuildValidation": "-- 正在執行組建後驗證", - "PortBugAllowRestrictedHeaders": "在例外狀況下,可透過 {env_var} 停用此原則", - "PortBugBinDirExists": "靜態組建中不應有 bin\\ 目錄,但會存在 {path}。", - "PortBugDebugBinDirExists": "靜態組建中不應有 debug\\bin\\ 目錄,但存在 {path}。", - "PortBugDebugShareDir": "/debug/share 不應該存在。請重新組織所有重要檔案,然後使用\n檔案(REMOVE_RECURSE 「${{CURRENT_PACKAGES_DIR}}/debug/share」)", - "PortBugDllAppContainerBitNotSet": "必須為 Windows Store 應用程式設定應用程式容器位元。下列 DLL 未設定應用程式容器位元:", - "PortBugDllInLibDir": "在 /lib 或 /debug/lib 中找到下列 dll。請分別將它們移至 /bin 或 /debug/bin。", - "PortBugDuplicateIncludeFiles": "不應將包含檔案複製到 /debug/include 目錄。如果無法在專案 Cmake 中停用此功能,請使用\n檔案(REMOVE_RECURSE 「${{CURRENT_PACKAGES_DIR}}/debug/include」)", - "PortBugFoundCopyrightFiles": "下列檔案是潛在的著作權檔案:", - "PortBugFoundDebugBinaries": "找到 {count} 偵錯二進位檔:", - "PortBugFoundDllInStaticBuild": "DLL 不應存在於靜態組建中,但卻找到下列 DLL:", - "PortBugFoundEmptyDirectories": "{path}中不應有空白目錄。找到下列空白目錄:", - "PortBugFoundExeInBinDir": "在 /bin 或 /debug/bin 中找到下列 EXE。EXE 不是有效的散發目標。", - "PortBugFoundReleaseBinaries": "找到 {count} 版本二進位檔:", - "PortBugIncludeDirInCMakeHelperPort": "cmake 協助程式連接埠中存在資料夾 /include;這是不正確的,因為應該只安裝 cmake 檔案", - "PortBugInspectFiles": "若要檢查{extension}檔案,請使用:", - "PortBugInvalidCrtLinkage": "下列二進位檔案應該使用 {expected} CRT。", - "PortBugInvalidCrtLinkageEntry": "{path} 連結包含:", - "PortBugKernel32FromXbox": "選取的三元組設定目標為 Xbox,並非下列具有 kernel32 的 DLL 連結。這些 DLL 無法在 kernel32 不存在的 Xbox 上載入。這通常是由於連結了 kernel32.lib 而非適當的傘程式庫 (例如 onecore_apiset.lib 或 xgameplatform.lib) 所造成。", - "PortBugMergeLibCMakeDir": "應將 /lib/cmake 資料夾與 /debug/lib/cmake 合併,並移至 /share/{package_name}/cmake。請使用連接埠 vcpkg-cmake-config 的協助程式函式 `vcpkg_cmake_config_fixup()`。", - "PortBugMismatchedNumberOfBinaries": "偵錯和版本二進位檔的數目不相符。", - "PortBugMisplacedCMakeFiles": "在 /share/{spec} 之外找到下列 cmake 檔案。請在 /share/{spec} 中放置 cmake 檔案。", - "PortBugMisplacedFiles": "將下列檔案放置在{path}中:", - "PortBugMisplacedFilesCont": "檔案不能出現在那些目錄中。", - "PortBugMisplacedPkgConfigFiles": "pkgconfig 目錄應為只有)、lib/pkgconfig 或 lib/debug/pkgconfig 的標頭程式庫才可以是 share/pkgconfig (其中之一。找到下列錯置的 pkgconfig 檔案:", + "PerformingPostBuildValidation": "正在執行建置後驗證", + "PortBugBinDirExists": "${{CURRENT_PACKAGES_DIR}}/{path} 存在,但不應在靜態組建中。若要隱藏此訊息,請新增 set(VCPKG_POLICY_DLLS_IN_STATIC_LIBRARY enabled)", + "PortBugDebugShareDir": "${{CURRENT_PACKAGES_DIR}}/debug/share 不應該存在。請重新組織任何重要的檔案,然後新增 `file(REMOVE_RECURSE \"${{CURRENT_PACKAGES_DIR}}/debug/share\")` 來刪除任何剩餘的檔案。若要隱藏此訊息,請新增 set(VCPKG_POLICY_ALLOW_DEBUG_SHARE enabled)", + "PortBugDllAppContainerBitNotSet": "必須針對 Windows Store 應用程式中的所有 DLL,以及以 Windows Store 為目標的三元組要求設定應用程式容器位元,但下列 DLL 並未使用位元集建置。這通常表示工具鏈連接器旗標未正確傳播,或使用中的連結器不支援 /APPCONTAINER 參數。若要隱藏此訊息,請新增 set(VCPKG_POLICY_SKIP_APPCONTAINER_CHECK enabled)", + "PortBugDllInLibDir": "在 ${{CURRENT_PACKAGES_DIR}}/lib 或 ${{CURRENT_PACKAGES_DIR}}/debug/lib 中發現下列 DLL。請分別將它們移至 ${{CURRENT_PACKAGES_DIR}}/bin 或 ${{CURRENT_PACKAGES_DIR}}/debug/bin。", + "PortBugDuplicateIncludeFiles": "${{CURRENT_PACKAGES_DIR}}/debug/include 應該不存在。若要隱藏此訊息,請新增 set(VCPKG_POLICY_ALLOW_DEBUG_INCLUDE enabled)", + "PortBugDuplicateIncludeFilesFixIt": "如果此目錄是由不允許停用在偵錯中安裝標頭的建置系統所建立,請使用 file(REMOVE_RECURSE \"${{CURRENT_PACKAGES_DIR}}/debug/include\") 刪除重複的目錄", + "PortBugFoundCopyrightFiles": "下列檔案是潛在的著作權檔案", + "PortBugFoundDebugBinaries": "以下是偵錯二進位檔案:", + "PortBugFoundDllInStaticBuild": "DLL 不應存在於靜態組建中,但發現下列 DLL。若要隱藏此訊息,請新增 set(VCPKG_POLICY_DLLS_IN_STATIC_LIBRARY enabled)", + "PortBugFoundEmptyDirectories": "不應該安裝空白目錄。空白目錄無法向數個二進位檔案快取提供者、git 存放庫呈現,且不被視為語意建置輸出。您應該在每個空白目錄內建立標準檔案,或是使用下列 CMake 刪除它們。若要隱藏此訊息,請新增 set(VCPKG_POLICY_ALLOW_EMPTY_FOLDERS enabled)", + "PortBugFoundExeInBinDir": "在 ${{CURRENT_PACKAGES_DIR}}/bin 或 ${{CURRENT_PACKAGES_DIR}}/debug/bin 中發現下列可執行檔。可執行檔不是有效的發佈目標。如果這些可執行檔是建置工具,請考慮使用 `vcpkg_copy_tools`。若要隱藏此訊息,請新增 set(VCPKG_POLICY_ALLOW_EXES_IN_BIN enabled)", + "PortBugFoundReleaseBinaries": "以下是發行版本二進位檔案:", + "PortBugIncludeDirInCMakeHelperPort": "CMake 協助程式連接埠中存在資料夾 ${{CURRENT_PACKAGES_DIR}}/include; 這是不正確的,因為只應該安裝 CMake 檔案。若要隱藏此訊息,請移除 set(VCPKG_POLICY_CMAKE_HELPER_PORT enabled)。", + "PortBugInvalidCrtLinkageCrtGroup": "下列二進位檔案應該只與 {expected} 連結", + "PortBugInvalidCrtLinkageEntry": "{path} 個連結具有: {actual}", + "PortBugInvalidCrtLinkageHeader": "此連接埠建置的二進位檔案與 C RunTimes (\"CRT\") 連結,與三元組和部署結構所要求的不一致。如果三元組只用來使用發行版本 CRT,您應該將 set(VCPKG_POLICY_ONLY_RELEASE_CRT enabled) 新增到三元組 .cmake 檔案。若要完全隱藏此檢查,請新增 set(VCPKG_POLICY_SKIP_CRT_LINKAGE_CHECK enabled) 到三元組 .cmake (如果這是三倍寬),或新增到 portfile.cmake (如果這是連接埠特有)。您可以使用以下命令檢查二進位檔案: dumpbin.exe /directives mylibfile.lib", + "PortBugKernel32FromXbox": "選取的三元組以 Xbox 為目標,但下列 DLL 與 kernel32 連結。無法在 Xbox 上載入這些 DLL,其中不存在 kernel32。這通常是因為連結具有 kernel32.lib 而非適當的保護傘程式庫所造成,例如 onecore_apiset.lib 或 xgameplatform.lib。您可以使用 `dumpbin.exe /dependents mylibfile.dll` 來檢查 DLL 的相依性。若要隱藏此訊息,請新增 set(VCPKG_POLICY_ALLOW_KERNEL32_FROM_XBOX enabled)", + "PortBugMergeLibCMakeDir": "此連接埠會建立 ${{CURRENT_PACKAGES_DIR}}/lib/cmake 和/或 ${{CURRENT_PACKAGES_DIR}}/debug/lib/cmake,其應合併並移至 ${{CURRENT_PACKAGES_DIR}}/share/${{PORT}}/cmake。請使用來自連接埠 vcpkg-cmake-config 的協助程式函式 vcpkg_cmake_config_fixup()。若要隱藏此訊息,請新增 set(VCPKG_POLICY_SKIP_LIB_CMAKE_MERGE_CHECK enabled)", + "PortBugMismatchingNumberOfBinaries": "偵錯和發行版本二進位檔案的數目不符。這通常表示 portfile.cmake 或建置系統中未正確處理偵錯或發行版本。如果目的是要只產生此三元組的發行版本元件,則三元組應該已經將 set(VCPKG_BUILD_TYPE release) 新增到其 .cmake 檔案。若要隱藏此訊息,請移除 set(VCPKG_POLICY_MISMATCHED_NUMBER_OF_BINARIES enabled)", + "PortBugMisplacedCMakeFiles": "此連接埠在不需要 CMake 檔案的位置中安裝下列 CMake 檔案。CMake 檔案應該安裝在 ${{CURRENT_PACKAGES_DIR}}/share/${{PORT}}。若要隱藏此訊息,請新增 set(VCPKG_POLICY_SKIP_MISPLACED_CMAKE_FILES_CHECK enabled)", + "PortBugMisplacedFiles": "下列標準檔案會安裝到可能未安裝標準檔案的位置。這些檔案應該安裝在子目錄中。若要隱藏此訊息,請新增 set(VCPKG_POLICY_SKIP_MISPLACED_REGULAR_FILES_CHECK enabled)", + "PortBugMisplacedPkgConfigFiles": "已安裝下列位置錯誤的 pkgconfig 目錄。pkgconf 或 pkg-config 無法正確找到位置錯誤的 pkgconfig 檔案。pkgconfig 目錄應為 ${{CURRENT_PACKAGES_DIR}}/share/pkgconfig (針對架構無關/僅限標頭程式庫)、${{CURRENT_PACKAGES_DIR}}/lib/pkgconfig (針對發行版本相依性) 或 ${{CURRENT_PACKAGES_DIR}}/debug/lib/pkgconfig (針對偵錯相依性)。若要隱藏此訊息,請新增 set(VCPKG_POLICY_SKIP_PKGCONFIG_CHECK enabled)", + "PortBugMissingCMakeHelperPortFile": "${{CURRENT_PACKAGES_DIR}}/share/${{PORT}}/vcpkg-port-config.cmake 檔案不存在。針對 CMake 協助程式連接埠,必須存在此檔案。若要隱藏此訊息,請移除 set(VCPKG_POLICY_CMAKE_HELPER_PORT enabled)", "PortBugMissingDebugBinaries": "找不到偵錯二進位檔。", - "PortBugMissingFile": "/{path} 檔案不存在。CMake 協助程式連接埠必須有此檔案。", - "PortBugMissingImportedLibs": "匯入程式庫不存在於{path}中。\n如果這是想要的,請在 portfile 中新增下列行:\n已啟用 set(VCPKG_POLICY_DLLS_WITHOUT_LIBS)", - "PortBugMissingIncludeDir": "資料夾 /include 是空白的或不存在。這表示未正確安裝程式庫。", - "PortBugMissingLicense": "軟體授權必須在 ${{CURRENT_PACKAGES_DIR}}/share/{package_name}/copyright 提供", - "PortBugMissingProvidedUsage": "連接埠提供了 \"usage\",但忘記安裝至 /share/{package_name}/usage,請在 portfile 中新增下列行:", + "PortBugMissingImportedLibs": "已安裝的 DLL 的匯入程式庫似乎遺失。如果這是預期用途,請新增 set(VCPKG_POLICY_DLLS_WITHOUT_LIBS enabled)", + "PortBugMissingIncludeDir": "資料夾 ${{CURRENT_PACKAGES_DIR}}/include 是空的或不存在。這通常表示標頭未正確安裝。如果這是 CMake 協助程式連接埠,請新增 set(VCPKG_POLICY_CMAKE_HELPER_PORT enabled)。如果這不是 CMake 協助程式埠,但這是刻意的,請新增 set(VCPKG_POLICY_EMPTY_INCLUDE_FOLDER enabled) 來隱藏此訊息。", + "PortBugMissingLicense": "授權未安裝到 ${{CURRENT_PACKAGES_DIR}}/share/${{PORT}}/copyright。您可以新增 vcpkg_install_copyright 的呼叫來修正此問題。若要隱藏此訊息,請新增 set(VCPKG_POLICY_SKIP_COPYRIGHT_CHECK enabled)", + "PortBugMissingLicenseFixIt": "考慮新增: {value}", + "PortBugMissingProvidedUsage": "此連接埠包含名為 \"usage\" 的檔案,但並未安裝到 ${{CURRENT_PACKAGES_DIR}}/share/${{PORT}}/usage。如果此檔案並非要成為 usage 文字,請考慮選擇其他名稱; 否則,請安裝它。若要隱藏此訊息,請新增 set(VCPKG_POLICY_SKIP_USAGE_INSTALL_CHECK enabled)", "PortBugMissingReleaseBinaries": "找不到版本二進位檔。", "PortBugMovePkgConfigFiles": "您可以移動具有類似下列命令的 pkgconfig 檔案:", - "PortBugOutdatedCRT": "在下列檔案中偵測到過期的動態 CRT:", - "PortBugRemoveBinDir": "如果無法停用 bin\\ 和/或 debug\\bin\\ 的建立,請在設定檔中使用此選項來移除它們", - "PortBugRemoveEmptyDirectories": "如果應該填入目錄但未填入,這可能表示設定檔中出現錯誤。\n如果不需要目錄且無法停用其建立,請使用設定檔中的類似內容來移除它們:", + "PortBugOutdatedCRT": "已安裝與過時 C RunTime (\"CRT\") DLL 連結的 DLL。已安裝的 DLL 應該與支援中的 CRT 連結。您可以使用 `dumpbin.exe /dependents mylibfile.dll` 來檢查 DLL 的相依性。如果您使用以舊 CRT 為目標的自訂三元組,請新增 set(VCPKG_POLICY_ALLOW_OBSOLETE_MSVCRT enabled) 到三元組的 .cmake 檔案。若要針對此連接埠隱藏此訊息,請新增 set(VCPKG_POLICY_ALLOW_OBSOLETE_MSVCRT enabled)", + "PortBugRemoveBinDir": "如果無法停用這些目錄的建立,您可以在 portfile.cmake 中新增下列項目以將它們移除", "PortBugRemoveEmptyDirs": "file(REMOVE_RECURSE 以上重新命名留下的空白目錄)", - "PortBugRestrictedHeaderPaths": "下列受限制的標頭可能會防止核心 C++ 執行時間和其他套件正確編譯。在特殊情況下,您可以在 portfile.cmake 中設定 CMake 變數 VCPKG_POLICY_ALLOW_RESTRICTED_HEADERS 來停用此原則。", - "PortBugSetDllsWithoutExports": "沒有匯出的 DLL 可能是組建指令碼中的錯誤。如果這是想要的,請在設定檔中新增下列行:\n已啟用 set(VCPKG_POLICY_DLLS_WITHOUT_EXPORTS)\n下列 DLL 沒有匯出:", + "PortBugRestrictedHeaderPaths": "使用下列受限標頭可能會防止核心 C++ 執行階段及其他封裝正確編譯。這些應重新命名或改為儲存在子目錄中。在特殊情況下,新增 set(VCPKG_POLICY_ALLOW_RESTRICTED_HEADERS enabled) 即可抑制此警告", + "PortBugRestrictedHeaderPathsNote": "標頭是相對於這裡的 ${{CURRENT_PACKAGES_DIR}}/include", + "PortBugSetDllsWithoutExports": "建置下列 DLL 時沒有任何匯出。沒有匯出的 DLL 可能是建置指令碼中的錯誤。如果這是預期用途,請新增 set(VCPKG_POLICY_DLLS_WITHOUT_EXPORTS enabled)", + "PortDeclaredHere": "{package_name} 在這裡宣告", "PortDependencyConflict": "連接埠 {package_name} 具有下列不支援的相依性:", "PortDoesNotExist": "{package_name} 不存在", "PortMissingManifest2": "{package_name} 連接埠清單遺失 (沒有 vcpkg.json 或 CONTROL 檔案)", @@ -932,7 +910,6 @@ "PortVersionControlMustBeANonNegativeInteger": "\"Port-Version\" 必須是非負整數", "PortVersionMultipleSpecification": "\"port_version\" 無法與版本中的內嵌 '#' 結合", "PortsAdded": "已新增下列 {count} 個連接埠:", - "PortsDiffHelp": "引數應為要簽出的分支/標籤/雜湊。", "PortsNoDiff": "兩個認可之間的連接埠中沒有變更。", "PortsRemoved": "已移除下列 {count} 個連接埠:", "PortsUpdated": "已更新下列 {count} 個連接埠:", @@ -957,7 +934,6 @@ "RestoredPackagesFromNuGet": "已從 {elapsed} 中的 NuGet 還原 ({count}) 個封裝。使用 --debug 以查看更多詳細資料。", "ResultsHeader": "結果", "ScriptAssetCacheRequiresScript": "預期的引數: 資產設定 'x-script' 需要完全符合 exec 範本做為引數", - "SearchHelp": "引數應為可搜尋的 substring,或沒有參數以顯示所有程式庫。", "SecretBanner": "***祕密***", "SeeURL": "請參閱 {url} 以了解更多資訊。", "SerializedBinParagraphHeader": "\n序列化二進位段落", @@ -966,6 +942,7 @@ "ShaPassedWithConflict": "SHA512 通過,但 --skip-sha512 也通過; 只執行一個或另一個。", "ShallowRepositoryDetected": "vcpkg 已複製為下列其中的淺層存放庫: {path}\n請使用完整的 vcpkg 複製品再試一次。", "SkipClearingInvalidDir": "正在跳過清除 {path} 的內容,因為它不是目錄。", + "SkippingPostBuildValidationDueTo": "由於 {cmake_var},正在略過建置後驗證", "SourceFieldPortNameMismatch": "CONTROL 檔案內的 'Source' 欄位或 vcpkg.json 檔案內的 \"name\" 欄位名稱為 {package_name},與連接埠目錄 \"{path}\" 不相符。", "SpecifiedFeatureTurnedOff": "'{command_name}' 功能已特別關閉,但已指定 --{option}。", "SpecifyHostArch": "主機三元組。請參閱 'vcpkg help triplet' (預設值: {env_var})", @@ -973,10 +950,8 @@ "StartCodeUnitInContinue": "在繼續位置找到開始字碼單位", "StoreOptionMissingSha": "--store 選項無效,沒有 sha512", "StoredBinariesToDestinations": "已將二進位檔儲存在 {elapsed} 中的 {count} 個目的地。", - "StoredBinaryCache": "儲存的二進位快取: \"{path}\"", "SuccessfulyExported": "已將 {package_name} 匯出至 {path}", "SuggestGitPull": "結果可能已過期。執行 `git pull` 以取得最新結果。", - "SuggestResolution": "若要嘗試一次解決所有錯誤,請執行:\nvcpkg {command_name} --{option}", "SuggestStartingBashShell": "請確定您已啟動新的 Bash 殼層,才能讓變更生效。", "SupportedPort": "支援連接埠 {package_name}。", "SwitchUsedMultipleTimes": "已多次指定切換 '{option}'", @@ -1004,7 +979,6 @@ "UnexpectedByteSize": "預期寫入 {expected} 個位元組,但寫入 {actual}。", "UnexpectedCharExpectedCloseBrace": "未預期的字元; 預期為屬性或右大括弧", "UnexpectedCharExpectedColon": "未預期的字元; 預期為冒號", - "UnexpectedCharExpectedComma": "未預期的字元; 預期為逗號或右大括弧", "UnexpectedCharExpectedName": "未預期的字元; 預期為屬性名稱", "UnexpectedCharExpectedValue": "未預期的字元; 預期為值", "UnexpectedCharMidArray": "陣列中間未預期的字元", @@ -1023,26 +997,21 @@ "UnexpectedEOFMidKeyword": "關鍵字中間未預期的 EOF", "UnexpectedEOFMidString": "字串中間未預期的 EOF", "UnexpectedEOFMidUnicodeEscape": "Unicode 逸出中間未預期的檔案結尾", - "UnexpectedErrorDuringBulkDownload": "大量下載期間發生意外的錯誤。", "UnexpectedEscapeSequence": "未預期的逸出序列接續", - "UnexpectedExtension": "未預期的封存延伸模組: '{extension}'。", - "UnexpectedFeatureList": "未預期的功能清單", "UnexpectedField": "未預期的欄位 '{json_field}'", "UnexpectedFieldSuggest": "未預期的欄位 '{json_field}',您指的是 '{value}'?", "UnexpectedFormat": "預期的格式必須是 [{expected}],但卻是 [{actual}]。", "UnexpectedOption": "未預期的選項: {option}", - "UnexpectedPlatformExpression": "未預期的平台運算式", "UnexpectedPortName": "連接埠 {expected} 在 {path} 中宣告為 {actual}", "UnexpectedPortversion": "未預期的 \"port-version\" 沒有版本設定欄位", "UnexpectedSwitch": "未預期的切換: {option}", "UnexpectedToolOutput": "{tool_name} ({path})嘗試判斷版本時產生未預期的輸出:", "UnexpectedWindowsArchitecture": "未預期的 Windows 主機架構: {actual}", "UnknownBaselineFileContent": "無法辨識的基準項目; 預期為 'port:triplet=(fail|skip|pass)'", - "UnknownBinaryProviderType": "未知的二進位提供者類型: 有效的提供者為 'clear', 'default', 'nuget', 'nugetconfig','nugettimeout', 'interactive', 'x-azblob', 'x-gcs', 'x-aws', 'x-aws-config', 'http', 和 'files'", + "UnknownBinaryProviderType": "未知的二進位提供者類型: 有效的提供者為 'clear'、'default'、'nuget'、'nugetconfig'、'nugettimeout'、'interactive'、'x-azblob'、'x-gcs'、'x-aws'、'x-aws-config'、'http' 和 'files'", "UnknownBooleanSetting": "{option} 的布林值設定未知: \"{value}\"。有效值為 ''、'1'、'0'、'ON'、'OFF'、'TRUE' 和 'FALSE'。", - "UnknownOptions": "命令 '{command_name}' 的未知選項:", "UnknownParameterForIntegrate": "用於整合的參數'{value} 不明。", - "UnknownPolicySetting": "原則 '{value}' 的未知的設定: {option}", + "UnknownPolicySetting": "{cmake_var} 未知的設定: {value}。有效的原則值為 ''、'disabled' 和 'enabled'。", "UnknownSettingForBuildType": "未知的 VCPKG_BUILD_TYPE {option} 設定。有效的設定為 ''、'debug' 和 'release'。", "UnknownTool": "vcpkg 沒有為適用於此平台的這一工具提供定義。", "UnknownTopic": "未知的主題 {value}", @@ -1054,7 +1023,6 @@ "UnsupportedFeatureSupportsExpressionWarning": "僅在 '{supports_expression}' 上支援 {feature_spec},其不符合 {triplet}。這通常表示建置其他平台時,有已知的建置失敗或執行階段問題。由於 `--allow-unsupported`,仍要繼續。", "UnsupportedPort": "不支援連接埠 {package_name}。", "UnsupportedPortDependency": "- 不支援相依性 {value}。", - "UnsupportedShortOptions": "不支援簡短選項: '{value}'", "UnsupportedSyntaxInCDATA": "CDATA 區塊中不支援 ]]>", "UnsupportedSystemName": "無法將 VCPKG_CMAKE_SYSTEM_NAME '{system_name}' 與 vcvarsall 平台進行比對。支援的系統名稱為 ''、'Windows' 和 'WindowsStore'。", "UnsupportedToolchain": "在三個二進制元素位元組 {triplet} 中: 找不到有效的工具鏈。要求的目標架構為 {arch}。\n選取的 Visual Studio 執行個體位於: {path}\n可用的工具鏈組合為: {list}", @@ -1068,21 +1036,18 @@ "UpdateBaselineUpdatedBaseline": "已更新登錄 '{url}': 比較基準 '{old_value}' -> '{new_value}'", "UpgradeInManifest": "升級會升級傳統模式安裝,因此不支援資訊清單模式。請考慮使用 vcpkg x-update-baseline 將基準更新為目前的值,並執行 vcpkg 安裝,以更新您的相依性。", "UpgradeRunWithNoDryRun": "如果您確定要重建上述套件,請以 --no-dry-run 選項執行此命令。", - "UploadedBinaries": "已將二進位檔上傳至 {count} 位 {vendor}。", - "UploadedPackagesToVendor": "已在 {elapsed} 中上傳 {count} 個套件至 {vendor}", "UploadingBinariesToVendor": "正在將 '{spec}' 的二進位檔上傳到 '{vendor} '來源 \"{path}\"。", - "UploadingBinariesUsingVendor": "正在使用 '{vendor}' \"{path}\" 上傳 '{spec}' 二進位檔。", + "UsageInstallInstructions": "您可以使用下列 CMake 來安裝 usage 檔案", + "UsageTextHere": "usage 檔案在這裡", "UseEnvVar": "-- 正在環境變數中使用 {env_var}。", "UserWideIntegrationDeleted": "未安裝整個使用者整合。", "UserWideIntegrationRemoved": "已移除整個使用者整合。", - "UsingCommunityTriplet": "-- 正在使用社群三重 {triplet}。這個三重設定不保證成功。", "UsingManifestAt": "使用位於 {path} 的資訊清單檔案。", "Utf8ConversionFailed": "無法轉換成 UTF-8", "VSExaminedInstances": "已考慮下列 Visual Studio 執行個體:", "VSExaminedPaths": "已檢查 Visual Studio 執行個體的下列路徑:", "VSNoInstances": "找不到完整的 Visual Studio 執行個體", "VcpkgCeIsExperimental": "vcpkg-artifacts 為實驗性,隨時可能會變更。", - "VcpkgCommitTableHeader": "VCPKG 認可", "VcpkgCompletion": "已將 vcpkg {value} 完成匯入到您的 \"{path}\" 檔案。\n找到下列項目:", "VcpkgDisallowedClassicMode": "找不到目前工作目錄上方的資訊清單 (vcpkg.json)。\n這個 vcpkg 發佈沒有傳統模式執行個體。", "VcpkgHasCrashed": "vcpkg 已損毀。請在 https://github.com/microsoft/vcpkg 建立問題,其中包含您嘗試執行之動作的簡短摘要以及下列資訊。", @@ -1095,17 +1060,22 @@ "VcpkgUsage": "使用方式: vcpkg [--switches] [--options=values] [arguments] @response_file", "VcvarsRunFailed": "無法執行 vcvarsall.bat 以取得 Visual Studio 環境", "VcvarsRunFailedExitCode": "嘗試取得 Visual Studio 環境時,vcvarsall.ba 已傳回 {exit_code}", - "VersionBaselineMismatch": "最新版本為 {expected},但基準檔案包含 {actual}.\n執行:\nvcpkg x-add-version {package_name}\ngit add versions\ngit commit -m \"Update version database\"\n以更新基準版本。", + "VersionBaselineMatch": "{version_spec} 符合目前的基準", + "VersionBaselineMismatch": "{package_name} 已獲指派 {actual},但本機連接埠為 {expected}", "VersionBuiltinPortTreeEntryMissing": "沒有 {package_name} 為 {expected} 的版本資料庫項目; 請使用簽出的連接埠樹狀版本 ({actual})。", "VersionCommandHeader": "vcpkg 套件管理程式版本 {version}\n\n請參閱 LICENSE.txt 以尋找授權資訊。", "VersionConflictXML": "預期的 {path} 版本: [{expected_version}],但為 [{actual_version}]。請重新執行 bootstrap-vcpkg。", + "VersionConstraintNotInDatabase1": "對 {package_name} 名稱版本 {version} 的 \"version>=\" 限制式覆寫不存在於版本資料庫中。所有版本都必須存在於版本資料庫中,才能由 vcpkg 進行解譯。", + "VersionConstraintNotInDatabase2": "請考慮移除版本限制式,或選擇一個在這裡宣告的值", + "VersionConstraintOk": "所有版本條件約束都與版本資料庫一致", "VersionConstraintPortVersionMustBePositiveInteger": "\"version>=\" 中的 port-version ('#' 之後) 必須是非負整數", - "VersionConstraintUnresolvable": "無法解析來自 {spec} 之相依性 {package_name} 的最小限制式。\n在基準中找不到相依性,這表示該封裝在當時並不存在。可以透過 [覆寫] 欄位提供明確覆寫版本,或更新基準來修正此問題。\n如需詳細資訊,請參閱「vcpkg 說明版本設定」。", "VersionConstraintViolated": "相依性 {spec} 應至少為 {expected_version} 版本,但目前是 {actual_version}。", "VersionDatabaseEntryMissing": "{version} 沒有 {package_name} 的版本項目。", - "VersionDatabaseFileMissing": "{package_name} 在 {path} 遺漏版本資料庫檔案\n執行:\nvcpkg x-add-version {package_name}\n以建立版本檔案。", + "VersionDatabaseFileMissing": "此連接埠不在版本資料庫中", + "VersionDatabaseFileMissing2": "資料庫檔案的版本應該在這裡", + "VersionDatabaseFileMissing3": "執行 '{command_line}' 以建立版本資料庫檔案", "VersionGitEntryMissing": "{version} 沒有 {package_name} 的版本資料庫項目。\n可用的版本:", - "VersionInDeclarationDoesNotMatch": "檔案中宣告的版本與簽出的版本不符: {version}", + "VersionInDeclarationDoesNotMatch": "{git_tree_sha} 已宣告為包含 {expected},但似乎包含 {actual}", "VersionIncomparable1": "{spec} 的版本衝突: {constraint_origin} 需要 {expected},無法與基準版本 {actual} 進行比較。", "VersionIncomparable2": "{version_spec} 有配置 {new_scheme}", "VersionIncomparable3": "若要解決此問題,請將明確覆寫新增至慣用版本。例如:", @@ -1117,17 +1087,29 @@ "VersionInvalidSemver": "'{version}' 不是有效的語意版本,請參閱 。", "VersionMissing": "必須是版本設定欄位 (version、version-date、version-semver 或 version-string 其中一個)", "VersionMissingRequiredFeature": "{version_spec} 沒有 {constraint_origin} 所需的必要功能 {feature}", - "VersionNotFound": "{expected} 無法使用,只可使用 {actual}", - "VersionNotFoundInVersionsFile": "在 {package_name} 版本檔案中找不到版本 {version}。\n執行:\nvcpkg x-add-version {package_name}\n以新增新連接埠版本。", + "VersionNotFoundInVersionsFile2": "在版本資料庫中找不到 {version_spec}", + "VersionNotFoundInVersionsFile3": "版本應該在此檔案中", + "VersionNotFoundInVersionsFile4": "執行 '{command_line}' 以新增新的連接埠版本", + "VersionOverrideNotInVersionDatabase": "版本資料庫中沒有版本覆寫 {package_name};該連接埠存在嗎?", + "VersionOverrideVersionNotInVersionDatabase1": "{package_name} 名稱版本 {version} 的覆寫不存在於版本資料庫中。在最上層安裝此連接埠將會失敗,因為該版本將無法解析。", + "VersionOverrideVersionNotInVersionDatabase2": "請考慮移除版本覆寫,或選擇一個在這裡宣告的值", + "VersionOverwriteVersion": "您可以執行下列動作以用正確的本機值覆寫 {version_spec}:", "VersionRejectedDueToBaselineMissing": "已拒絕 {path},因為它使用 \"{json_field}\" ,而且沒有 \"builtin-baseline\"。若要修正此問題,請移除 \"{json_field}\" 或新增 \"builtin-baseline\"。\n如需詳細資訊,請參閱 'vcpkg help versioning'。", "VersionRejectedDueToFeatureFlagOff": "已拒絕 {path},因為它使用 \"{json_field}\" 且 'versions' 功能旗標已停用。若要修正此問題,請移除 \"{json_field}\" 或啟用 `versions` 功能旗標。\n如需詳細資訊,請參閱 'vcpkg help versioning'。", - "VersionSchemeMismatch": "版本資料庫宣告 {version} 為 {expected},但 {path} 將其宣告為 {actual}。版本必須是唯一的,即使宣告為不同的配置也一樣。\n執行:\nvcpkg x-add-version {package_name} --overwrite-version\n以使用連接埠中宣告的配置覆寫版本資料庫中宣告的配置。", - "VersionShaMismatch": "已使用 {expected} 宣告 {version},但本機連接埠有不同的 SHA {actual}。\n請更新連接埠的版本欄位,然後執行:\nvcpkg x-add-version {package_name}\ngit add versions\ngit commit -m \"Update version database\"\n以新增新版本。", - "VersionShaMissing": "驗證 {package_name} 時遺漏 Git SHA。\n執行:\ngit add \"{path}\"\ngit commit -m \"wip\"\nvcpkg x-add-version {package_name}\ngit add versions\ngit commit --amend -m \"[{package_name}] Add new port\"\n以認可新連接埠並建立其版本檔案。", + "VersionSchemeMismatch1": "{version} 已宣告為 {expected},但已使用 {actual} 宣告 {package_name}", + "VersionSchemeMismatch1Old": "{version} 已宣告為 {expected},但已使用 {actual} 宣告 {package_name}@{git_tree_sha}", + "VersionSchemeMismatch2": "版本必須是唯一的,即使它們是以不同的結構描述宣告", + "VersionShaMismatch1": "{version_spec} git 樹狀 {git_tree_sha} 不符合連接埠目錄", + "VersionShaMismatch2": "連接埠目錄具有 git 樹狀 {git_tree_sha}", + "VersionShaMismatch3": "如果 {version_spec} 已發佈,請使用新版本或連接埠版本更新此檔案,認可檔案,然後執行下列動作以新增新版本:", + "VersionShaMismatch4": "如果 {version_spec} 尚未發佈,請執行下列動作覆寫先前的 Git 樹狀:", + "VersionShaMissing1": "無法判斷連接埠目錄的 GIT 樹狀。這通常是因為未認可的變更所造成。", + "VersionShaMissing2": "您可以認可您的變更,並執行下列動作將其新增至版本資料庫:", + "VersionShaMissing3": "WIP", + "VersionShaMissing4": "[{package_name}] 新增新連接埠", "VersionSharpMustBeFollowedByPortVersion": "版本文字中的 '#' 後面必須接連接埠版本", "VersionSharpMustBeFollowedByPortVersionNonNegativeInteger": "版本文字中的 '#' 後面必須接連接埠版本 (非負整數)", "VersionSpecMismatch": "無法載入連接埠,因為版本不一致。檔案 \"{path}\" 包含版本{actual_version},但版本資料庫指出應該為版本 {expected_version}。", - "VersionTableHeader": "版本", "VersionVerifiedOK": "{version_spec} 在版本資料庫 ({git_tree_sha}) 中正確", "WaitingForChildrenToExit": "正在等待子行程離開...", "WaitingToTakeFilesystemLock": "正在等候 {path} 上的檔案系統鎖定...", @@ -1136,8 +1118,7 @@ "WhileCheckingOutBaseline": "簽出基準 {commit_sha} 時", "WhileCheckingOutPortTreeIsh": "使用 git tree {git_tree_sha} 簽出移植 {package_name} 時", "WhileGettingLocalTreeIshObjectsForPorts": "取得連接埠的本機樹狀結構物件時", - "WhileLoadingLocalPort": "嘗試載入本機連接埠 {package_name} 時", - "WhileLoadingPortFromGitTree": "當嘗試從以下位置載入連接埠時: {commit_sha}", + "WhileLoadingBaselineVersionForPort": "載入 {package_name} 的基準版本時", "WhileLoadingPortVersion": "當載入 {version_spec} 時", "WhileLookingForSpec": "尋找 {spec} 時:", "WhileParsingVersionsForPort": "當剖析來自 {path} 的 {package_name} 版本時", @@ -1165,7 +1146,7 @@ "descriptionShouldBeOfTypestringFound$": "description 的類型應為 'string',找到 '${p0}'", "optionsShouldBeASequenceFound$": "options 應為序列,找到 '${p0}'", "DuplicateKeysDetectedInManifest$": "在資訊清單中偵測到重複的金鑰: '${p0}'", - "noPostscriptFileRerunWithTheVcpkgShellFunctionRatherThanExecutable": "沒有 postscript 檔案: 使用 vcpkg 殼層函數重新執行,而不使用可執行檔", + "noPostscriptFileRunVcpkgshellWithTheSameArguments": "沒有 postscript 檔案: 使用相同的引數執行 vcpkg-shell", "DuplicateDefine$DuringActivationNewValueWillReplaceOld": "啟用期間定義了重複項 ${p0}。新值將取代舊值。", "DuplicateToolDeclared$DuringActivationNewValueWillReplaceOld": "啟用期間宣告了重複的工具 ${p0}。新值將取代舊值。", "DuplicateAliasDeclared$DuringActivationNewValueWillReplaceOld": "啟用期間宣告了重複的別名 ${p0}。新值將取代舊值。", @@ -1257,7 +1238,7 @@ "MultipleArtifactsSpecifiedButNotAnEqualNumberOf$Switches": "已指定多個成品,但不等於 ${p0} 參數的數目", "TriedToAddAnArtifact$$ButCouldNotDetermineTheRegistryToUse": "已嘗試新增成品 [${p0}]:${p1},但無法判斷要使用的登錄。", "TriedToAddRegistry$As$ButItWasAlready$PleaseAdd$ToThisProjectManuallyAndReattempt": "已嘗試將登錄 ${p0} 新增為 ${p1},但它已為 ${p2}。請手動將 ${p3} 新增至此專案,然後重新嘗試。", - "RunvcpkgActivateToApplyToTheCurrentTerminal": "執行 \\'vcpkg activate\\' 以套用至目前的終端", + "RunvcpkgshellActivateToApplyToTheCurrentTerminal": "執行 \\`vcpkg-shell activate\\` 以套用至目前的終端機", "DownloadsFolderCleared$": "已清除下載資料夾 (${p0}) ", "InstalledArtifactFolderCleared$": "已清除已安裝的成品資料夾 (${p0}) ", "CacheFolderCleared$": "已清除快取資料夾 (${p0}) ", diff --git a/scripts/posh-vcpkg.psd1 b/scripts/posh-vcpkg.psd1 new file mode 100644 index 0000000000..3fb94fe7dc --- /dev/null +++ b/scripts/posh-vcpkg.psd1 @@ -0,0 +1,31 @@ +@{ + +# Script module or binary module file associated with this manifest. +ModuleToProcess = 'posh-vcpkg.psm1' + +# Version number of this module. +ModuleVersion = '0.0.1' + +# ID used to uniquely identify this module +GUID = '948f02ab-fc99-4a53-8335-b6556eef129b' + +# Minimum version of the Windows PowerShell engine required by this module +PowerShellVersion = '5.0' + +FunctionsToExport = @('TabExpansion') +CmdletsToExport = @() +VariablesToExport = @() +AliasesToExport = @() + +# Private data to pass to the module specified in RootModule/ModuleToProcess. +# This may also contain a PSData hashtable with additional module metadata used by PowerShell. +PrivateData = +@{ + PSData = + @{ + # Tags applied to this module. These help with module discovery in online galleries. + Tags = @('vcpkg', 'tab', 'tab-completion', 'tab-expansion', 'tabexpansion') + } +} + +} diff --git a/scripts/verifyMessages.ps1 b/scripts/verifyMessages.ps1 new file mode 100644 index 0000000000..2b938345f6 --- /dev/null +++ b/scripts/verifyMessages.ps1 @@ -0,0 +1,52 @@ +#! /usr/bin/env pwsh + +# Define paths relative to the script's directory +$SEARCH_DIR = Resolve-Path -Path (Join-Path -Path $PSScriptRoot -ChildPath "..\") +$CPP_MESSAGES = Resolve-Path -Path (Join-Path -Path $PSScriptRoot -ChildPath "..\locales\messages.json") +$ARITFACT_MESSAGES = Resolve-Path -Path (Join-Path -Path $PSScriptRoot -ChildPath "..\vcpkg-artifacts\locales\messages.json") + +Write-Host "Processing message declarations..." + +# Read JSON file into a hashtable to accommodate case-sensitive keys +$jsonContent = Get-Content $CPP_MESSAGES -Raw | ConvertFrom-Json -AsHashTable +$declared_messages = @($jsonContent.Keys) | Where-Object { -not $_.EndsWith('.comment') } + +# Read the JSON file with messages to remove into another hashtable +$jsonToRemove = Get-Content $ARITFACT_MESSAGES -Raw | ConvertFrom-Json -AsHashTable +$messages_to_remove = @($jsonToRemove.Keys) | Where-Object { -not $_.EndsWith('.comment') } + +# Subtract the artifact messages +$declared_messages = Compare-Object -ReferenceObject $declared_messages -DifferenceObject $messages_to_remove -PassThru + +# Find all instances of 'msg' prefixed variables in .cpp and .h files and store them in an array +$used_messages = Get-ChildItem -Path $SEARCH_DIR -Include @('*.cpp', '*.h') -Recurse | + Select-String -Pattern '\bmsg[A-Za-z0-9_]+\b' -AllMatches | + ForEach-Object { $_.Matches } | + ForEach-Object { $_.Value } | + Sort-Object -Unique + +# Initialize array for unused messages +$unused_messages = @() + +# Check each declared message against used messages +foreach ($msg in $declared_messages) { + $prefixed_msg = "msg$msg" + if ($used_messages -notcontains $prefixed_msg) { + $unused_messages += $msg + } +} + +# Remove any empty or whitespace-only entries from unused messages just before reporting +$unused_messages = $unused_messages | Where-Object { ![string]::IsNullOrWhiteSpace($_) } + +# Report findings +Write-Host "Total messages declared: $($declared_messages.Count)" +Write-Host "Total unused messages: $($unused_messages.Count)" + +if ($unused_messages.Count -gt 0) { + Write-Host "Please remove the following messages:" + foreach ($msg in $unused_messages) { + Write-Host "`n$msg" + } + exit 1 +} diff --git a/src/localization/cs/messages.json.lcl b/src/localization/cs/messages.json.lcl index bdfcfcf569..d2bcced3f0 100644 --- a/src/localization/cs/messages.json.lcl +++ b/src/localization/cs/messages.json.lcl @@ -523,18 +523,6 @@ - - - - - - - - - - - - @@ -601,15 +589,6 @@ - - - - - - - - - @@ -646,11 +625,11 @@ - + - + - + @@ -751,23 +730,20 @@ - + - + - + - - - - + - + - + @@ -882,10 +858,13 @@ - + - + + + + @@ -1144,15 +1123,6 @@ - - - - - - - - - @@ -1222,18 +1192,6 @@ - - - - - - - - - - - - @@ -1282,18 +1240,6 @@ - - - - - - - - - - - - @@ -1417,6 +1363,33 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -1426,6 +1399,15 @@ + + + + + + + + + @@ -1447,15 +1429,6 @@ - - - - - - - - - @@ -1537,15 +1510,6 @@ - - - - - - - - - @@ -1557,18 +1521,21 @@ - + - + + + + - + - + - + @@ -1587,10 +1554,13 @@ - + - + + + + @@ -1756,18 +1726,6 @@ - - - - - - - - - - - - @@ -1828,21 +1786,15 @@ - - - - - - - - - - + - + - + + + + @@ -1900,15 +1852,6 @@ - - - - - - - - - @@ -2080,24 +2023,6 @@ - - - - - - - - - - - - - - - - - - @@ -2440,24 +2365,6 @@ - - - ]]> - - ]]> - - - - - - - - - - - - - ]]> @@ -2503,15 +2410,6 @@ - - - - - - - - - ]]> @@ -2736,10 +2634,13 @@ - [--nuget]5D; [--directory=out_dir]5D;]]> + [--nuget]5D; [--output-dir=out_dir]5D;]]> [--nuget]5D; [--directory=out_dir]5D;]]> + + [--nuget]5D; [--directory=out_dir]5D;]]> + @@ -3891,16 +3792,25 @@ - + - + - + + + + + + + + + + @@ -3913,6 +3823,15 @@ + + + + + + + + + @@ -3988,15 +3907,6 @@ - - - - - - - - - @@ -4024,21 +3934,27 @@ - + - + - + + + + - + - + + + + @@ -4177,15 +4093,6 @@ - - - - - - - - - @@ -4204,23 +4111,20 @@ - + - + - + - - - - + - + - + @@ -4246,15 +4150,6 @@ - - - - - - - - - @@ -4336,15 +4231,6 @@ - - - - - - - - - @@ -4417,6 +4303,24 @@ + + + + + + + + + + + + + + + + + + @@ -4438,6 +4342,24 @@ + + + + + + + + + + + + + + + + + + @@ -4545,19 +4467,13 @@ - - - - - - - - - - {path}]]> + - {path}]]> + + + + @@ -4705,15 +4621,6 @@ - - - - - - - - - @@ -5032,15 +4939,6 @@ - - - - - - - - - @@ -5077,6 +4975,15 @@ + + + + + + + + + @@ -5167,15 +5074,6 @@ - - - - - - - - - @@ -5251,15 +5149,6 @@ - - - - - - - - - @@ -5329,15 +5218,6 @@ - - - - - - - - - @@ -5421,10 +5301,13 @@ - + - + + + + @@ -5473,29 +5356,11 @@ - + - + - - - - - - - - - - - - - - - - - - - + @@ -5587,15 +5452,6 @@ - - - - - - - - - @@ -5644,27 +5500,6 @@ - - - - - - - - - - - - - - - - - - - - - @@ -5692,50 +5527,20 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - + - + - + - + - + @@ -5761,12 +5566,15 @@ - + - + - + + + + @@ -5794,15 +5602,6 @@ - - - - - - - - - @@ -5902,29 +5701,35 @@ - + - + - + + + + - + - + - + + + + - + - + - + @@ -5938,11 +5743,29 @@ - + + + + + + + + + + + + + + + + + + + - + - + @@ -6112,6 +5935,15 @@ + + + + + + + + + @@ -6219,10 +6051,13 @@ - + - + + + + @@ -6523,24 +6358,6 @@ - - - - - - - - - - - - - - - - - - @@ -6553,18 +6370,6 @@ - - - - - - - - - - - - @@ -7090,15 +6895,6 @@ - - - - - - - - - @@ -7258,15 +7054,6 @@ - - - - - - - - - @@ -7279,6 +7066,15 @@ + + + + + + + + + @@ -7639,11 +7435,11 @@ - + - + - + @@ -7816,15 +7612,6 @@ - - - - - - - - - @@ -7897,6 +7684,24 @@ + + + + + + + + + + + + + + + + + + @@ -8221,47 +8026,50 @@ - + - + - + - + - + - + - + - + - + - + - + + + + - + - + - + @@ -8374,6 +8182,15 @@ + + + + + + + + + @@ -8458,6 +8275,15 @@ + + + + + + + + + @@ -8485,18 +8311,6 @@ - - - - - - - - - - - - @@ -8590,15 +8404,6 @@ - - - - - - - - - @@ -8653,18 +8458,6 @@ - - - - - - - - - - - - @@ -9043,15 +8836,6 @@ - - - - - - - - - @@ -9223,6 +9007,15 @@ + + + + + + + + + @@ -9235,242 +9028,302 @@ - + - + - + - + - + - + - + - + - + - + - + - + + + + - + - + - + + + + - + - + + + + - + - + + + + - + - + + + + - + + + + + + + + + + + + + - + - + - + + + + - + - + - + + + + - + - + + + + - + - + - + + + + - + - + + + + - + - + - + + + + - + - + + + + - + - + - + - + - + - + - + - + - + - + - + - + + + + - + - + - + - + - + - + - + - + - + - + + + + - + - + - + + + + - + - + - + + + + - + - + - + @@ -9484,51 +9337,60 @@ - + - + - + + + + - + - + - + + + + - + - + - + + + + - + - + - + - - - - + - + - + + + + @@ -9552,60 +9414,78 @@ - + - + + + + - + - + + + + - + - + - + + + + - + - + - + - + - + - + - + + + + + + + + + + - + - + - + - + @@ -9694,15 +9574,6 @@ - - - - - - - - - @@ -9970,11 +9841,11 @@ - + - + - + @@ -9988,15 +9859,6 @@ - - - - - - - - - @@ -10069,6 +9931,15 @@ + + + + + + + + + @@ -10153,18 +10024,6 @@ - - - - - - - - - - - - @@ -10183,15 +10042,6 @@ - - - - - - - - - @@ -10546,7 +10396,7 @@ - + @@ -10582,15 +10432,6 @@ - - - - - - - - - @@ -10762,15 +10603,6 @@ - - - - - - - - - @@ -10780,24 +10612,6 @@ - - - - - - - - - - - - - - - - - - @@ -10834,15 +10648,6 @@ - - - - - - - - - @@ -10902,12 +10707,12 @@ - + - + @@ -10930,15 +10735,6 @@ - - - - - - - - - @@ -10950,10 +10746,13 @@ - + - + + + + @@ -11092,15 +10891,6 @@ - - - - - - - - - is not supported in CDATA block]]> @@ -11257,56 +11047,41 @@ - + - + - + - + - + - + - + - + - + - + - - - - + - + - - - - - - - - - - - - - + @@ -11338,15 +11113,6 @@ - - - - - - - - - @@ -11422,15 +11188,6 @@ - - - - - - - - - @@ -11560,12 +11317,24 @@ + + + + + + + + + - + - + + + + @@ -11596,27 +11365,45 @@ - + - =" must be a non-negative integer]]> + =" constraint to {package_name} names version {version} which does not exist in the version database. All versions must exist in the version database to be interpreted by vcpkg.]]> - =“ musí být kladné celé číslo.]]> + =" pro {package_name} uvádí verzi {version}, která v databázi verzí neexistuje. Všechny verze musí existovat v databázi verzí, aby je vcpkg mohl interpretovat.]]> - - =" must be a positive integer]]> - - + - + - + + + + + + + + + + + + + =" must be a non-negative integer]]> + + =“ musí být kladné celé číslo.]]> + + + =" must be a positive integer]]> + + + + @@ -11635,11 +11422,32 @@ - + + + + + + + + + + + + + + + + + + + + + + - + - + @@ -11655,10 +11463,13 @@ - + - + + + + @@ -11785,15 +11596,66 @@ - + - + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - @@ -11815,29 +11677,101 @@ - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - + - + - + - + - + - + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -11872,15 +11806,6 @@ - - - - - - - - - @@ -11959,20 +11884,11 @@ - - - - - - - - - - + - + - + @@ -12169,11 +12085,11 @@ - + - + - + diff --git a/src/localization/de/messages.json.lcl b/src/localization/de/messages.json.lcl index 4b63147f7a..1421117708 100644 --- a/src/localization/de/messages.json.lcl +++ b/src/localization/de/messages.json.lcl @@ -523,18 +523,6 @@ - - - - - - - - - - - - @@ -601,15 +589,6 @@ - - - - - - - - - @@ -646,11 +625,11 @@ - + - + - + @@ -751,23 +730,20 @@ - + - + - + - - - - + - + - + @@ -882,10 +858,13 @@ - + - + + + + @@ -1144,15 +1123,6 @@ - - - - - - - - - @@ -1222,18 +1192,6 @@ - - - - - - - - - - - - @@ -1282,18 +1240,6 @@ - - - - - - - - - - - - @@ -1417,6 +1363,33 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -1426,6 +1399,15 @@ + + + + + + + + + @@ -1447,15 +1429,6 @@ - - - - - - - - - @@ -1537,15 +1510,6 @@ - - - - - - - - - @@ -1557,18 +1521,21 @@ - + - + + + + - + - + - + @@ -1587,10 +1554,13 @@ - + - + + + + @@ -1756,18 +1726,6 @@ - - - - - - - - - - - - @@ -1828,21 +1786,15 @@ - - - - - - - - - - + - + - + + + + @@ -1900,15 +1852,6 @@ - - - - - - - - - @@ -2080,24 +2023,6 @@ - - - - - - - - - - - - - - - - - - @@ -2440,24 +2365,6 @@ - - - ]]> - - ]]> - - - - - - - - - - - - - ]]> @@ -2503,15 +2410,6 @@ - - - - - - - - - ]]> @@ -2736,10 +2634,13 @@ - [--nuget]5D; [--directory=out_dir]5D;]]> + [--nuget]5D; [--output-dir=out_dir]5D;]]> - [--nuget]5D; [--directory=out_dir]5D;]]> + [--nuget]5D; [--output-dir=out_dir]5D;]]> + + [--nuget]5D; [--directory=out_dir]5D;]]> + @@ -3891,16 +3792,25 @@ - + - + - + + + + + + + + + + @@ -3913,6 +3823,15 @@ + + + + + + + + + @@ -3988,15 +3907,6 @@ - - - - - - - - - @@ -4024,21 +3934,27 @@ - + - + - + + + + - + - + + + + @@ -4177,15 +4093,6 @@ - - - - - - - - - @@ -4204,23 +4111,20 @@ - + - + - + - - - - + - + - + @@ -4246,15 +4150,6 @@ - - - - - - - - - @@ -4336,15 +4231,6 @@ - - - - - - - - - @@ -4417,6 +4303,24 @@ + + + + + + + + + + + + + + + + + + @@ -4438,6 +4342,24 @@ + + + + + + + + + + + + + + + + + + @@ -4545,19 +4467,13 @@ - - - - - - - - - - {path}]]> + - {path}]]> + + + + @@ -4705,15 +4621,6 @@ - - - - - - - - - @@ -5032,15 +4939,6 @@ - - - - - - - - - @@ -5077,6 +4975,15 @@ + + + + + + + + + @@ -5167,15 +5074,6 @@ - - - - - - - - - @@ -5251,15 +5149,6 @@ - - - - - - - - - @@ -5329,15 +5218,6 @@ - - - - - - - - - @@ -5421,10 +5301,13 @@ - + - + + + + @@ -5473,15 +5356,6 @@ - - - - - - - - - @@ -5491,15 +5365,6 @@ - - - - - - - - - @@ -5587,15 +5452,6 @@ - - - - - - - - - @@ -5644,27 +5500,6 @@ - - - - - - - - - - - - - - - - - - - - - @@ -5692,50 +5527,20 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - + - + - + - + - + @@ -5761,12 +5566,15 @@ - + - + - + + + + @@ -5794,15 +5602,6 @@ - - - - - - - - - @@ -5902,29 +5701,35 @@ - + - + - + + + + - + - + - + + + + - + - + - + @@ -5938,11 +5743,29 @@ - + + + + + + + + + + + + + + + + + + + - + - + @@ -6112,6 +5935,15 @@ + + + + + + + + + @@ -6219,10 +6051,13 @@ - + + + + @@ -6523,24 +6358,6 @@ - - - - - - - - - - - - - - - - - - @@ -6553,18 +6370,6 @@ - - - - - - - - - - - - @@ -7090,15 +6895,6 @@ - - - - - - - - - @@ -7258,15 +7054,6 @@ - - - - - - - - - @@ -7279,6 +7066,15 @@ + + + + + + + + + @@ -7639,11 +7435,11 @@ - + - + - + @@ -7816,15 +7612,6 @@ - - - - - - - - - @@ -7897,6 +7684,24 @@ + + + + + + + + + + + + + + + + + + @@ -8221,47 +8026,50 @@ - + - + - + - + - + - + - + - + - + - + - + + + + - + - + - + @@ -8374,6 +8182,15 @@ + + + + + + + + + @@ -8455,6 +8272,15 @@ + + + + + + + + + @@ -8482,18 +8308,6 @@ - - - - - - - - - - - - @@ -8587,15 +8401,6 @@ - - - - - - - - - @@ -8650,18 +8455,6 @@ - - - - - - - - - - - - @@ -9040,15 +8833,6 @@ - - - - - - - - - @@ -9220,6 +9004,15 @@ + + + + + + + + + @@ -9232,242 +9025,302 @@ - + - + - + - + - + - + - + - + - + - + - + - + + + + - + - + - + + + + - + - + + + + - + - + + + + - + - + + + + - + + + + + + + + + + + + + - + - + - + + + + - + - + - + + + + - + - + + + + - + - + - + + + + - + - + + + + - + - + - + + + + - + - + + + + - + - + - + - + - + - + - + - + - + - + - + - + + + + - + - + - + - + - + - + - + - + - + - + + + + - + - + - + + + + - + - + - + + + + - + - + - + @@ -9481,51 +9334,60 @@ - + - + - + + + + - + - + - + - + + + + - + - + - + + + + - + - + - + - - - - + - + - + + + + @@ -9549,60 +9411,78 @@ - + - + + + + - + - + + + + - + - + - + + + + - + - + - + - + - + + + + + + + + + + - + - + - + - + - + - + @@ -9691,15 +9571,6 @@ - - - - - - - - - @@ -9967,11 +9838,11 @@ - + - + - + @@ -9985,15 +9856,6 @@ - - - - - - - - - @@ -10066,6 +9928,15 @@ + + + + + + + + + @@ -10150,18 +10021,6 @@ - - - - - - - - - - - - @@ -10180,15 +10039,6 @@ - - - - - - - - - @@ -10543,7 +10393,7 @@ - + @@ -10579,15 +10429,6 @@ - - - - - - - - - @@ -10759,15 +10600,6 @@ - - - - - - - - - @@ -10777,24 +10609,6 @@ - - - - - - - - - - - - - - - - - - @@ -10831,15 +10645,6 @@ - - - - - - - - - @@ -10899,12 +10704,12 @@ - + - + @@ -10927,15 +10732,6 @@ - - - - - - - - - @@ -10947,10 +10743,13 @@ - + - + + + + @@ -11089,15 +10888,6 @@ - - - - - - - - - is not supported in CDATA block]]> @@ -11254,56 +11044,41 @@ - + - + - + - + - - - - - - - - - - + - + - + - - - - + - + - + - - - - + - + - + @@ -11335,15 +11110,6 @@ - - - - - - - - - @@ -11419,15 +11185,6 @@ - - - - - - - - - @@ -11557,12 +11314,24 @@ + + + + + + + + + - + - + + + + @@ -11593,27 +11362,45 @@ - + - =" must be a non-negative integer]]> + =" constraint to {package_name} names version {version} which does not exist in the version database. All versions must exist in the version database to be interpreted by vcpkg.]]> - =" muss eine nicht negative ganze Zahl sein.]]> + =“ für „{package_name}“ nennt Version „{version}, die in der Versionsdatenbank nicht vorhanden ist. Alle Versionen müssen in der Versionsdatenbank vorhanden sein, damit sie von vcpkg interpretiert werden können.]]> - - =" must be a positive integer]]> - - + - + - + + + + + + + + + + + + + =" must be a non-negative integer]]> + + =" muss eine nicht negative ganze Zahl sein.]]> + + + =" must be a positive integer]]> + + + + @@ -11632,11 +11419,32 @@ - + + + + + + + + + + + + + - + - + + + + + + + + + + @@ -11652,10 +11460,13 @@ - + - + + + + @@ -11782,15 +11593,66 @@ - + - + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - @@ -11812,29 +11674,101 @@ - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - + - + - + - + - + - + - + @@ -11869,15 +11803,6 @@ - - - - - - - - - @@ -11956,20 +11881,11 @@ - - - - - - - - - - + - + - + @@ -12166,11 +12082,11 @@ - + - + - + diff --git a/src/localization/es/messages.json.lcl b/src/localization/es/messages.json.lcl index e92a788a56..a25aae64f1 100644 --- a/src/localization/es/messages.json.lcl +++ b/src/localization/es/messages.json.lcl @@ -523,18 +523,6 @@ - - - - - - - - - - - - @@ -601,15 +589,6 @@ - - - - - - - - - @@ -646,11 +625,11 @@ - + - + - + @@ -751,23 +730,20 @@ - + - + - + - - - - + - + - + @@ -882,10 +858,13 @@ - + - + + + + @@ -1144,15 +1123,6 @@ - - - - - - - - - @@ -1222,18 +1192,6 @@ - - - - - - - - - - - - @@ -1282,18 +1240,6 @@ - - - - - - - - - - - - @@ -1417,6 +1363,33 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -1426,6 +1399,15 @@ + + + + + + + + + @@ -1447,15 +1429,6 @@ - - - - - - - - - @@ -1537,15 +1510,6 @@ - - - - - - - - - @@ -1557,18 +1521,21 @@ - + - + + + + - + - + - + @@ -1587,10 +1554,13 @@ - + - + + + + @@ -1756,18 +1726,6 @@ - - - - - - - - - - - - @@ -1828,21 +1786,15 @@ - - - - - - - - - - + - + - + + + + @@ -1900,15 +1852,6 @@ - - - - - - - - - @@ -2080,24 +2023,6 @@ - - - - - - - - - - - - - - - - - - @@ -2440,24 +2365,6 @@ - - - ]]> - - ]]> - - - - - - - - - - - - - ]]> @@ -2503,15 +2410,6 @@ - - - - - - - - - ]]> @@ -2736,10 +2634,13 @@ - [--nuget]5D; [--directory=out_dir]5D;]]> + [--nuget]5D; [--output-dir=out_dir]5D;]]> - [--nuget]5D; [--directory=out_dir]5D;]]> + [--nuget]5D; [--output-dir=out_dir]5D;]]> + + [--nuget]5D; [--directory=out_dir]5D;]]> + @@ -3891,16 +3792,25 @@ - + - + - + + + + + + + + + + @@ -3913,6 +3823,15 @@ + + + + + + + + + @@ -3988,15 +3907,6 @@ - - - - - - - - - @@ -4024,21 +3934,27 @@ - + - + - + + + + - + - + + + + @@ -4177,15 +4093,6 @@ - - - - - - - - - @@ -4204,23 +4111,20 @@ - + - + - + - - - - + - + - + @@ -4246,15 +4150,6 @@ - - - - - - - - - @@ -4336,15 +4231,6 @@ - - - - - - - - - @@ -4417,6 +4303,24 @@ + + + + + + + + + + + + + + + + + + @@ -4438,6 +4342,24 @@ + + + + + + + + + + + + + + + + + + @@ -4545,19 +4467,13 @@ - - - - - - - - - - {path}]]> + - {path}]]> + + + + @@ -4705,15 +4621,6 @@ - - - - - - - - - @@ -5032,15 +4939,6 @@ - - - - - - - - - @@ -5077,6 +4975,15 @@ + + + + + + + + + @@ -5167,15 +5074,6 @@ - - - - - - - - - @@ -5251,15 +5149,6 @@ - - - - - - - - - @@ -5329,15 +5218,6 @@ - - - - - - - - - @@ -5421,10 +5301,13 @@ - + - + + + + @@ -5473,15 +5356,6 @@ - - - - - - - - - @@ -5491,15 +5365,6 @@ - - - - - - - - - @@ -5587,15 +5452,6 @@ - - - - - - - - - @@ -5644,27 +5500,6 @@ - - - - - - - - - - - - - - - - - - - - - @@ -5692,50 +5527,20 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - + - + - + - + - + @@ -5761,12 +5566,15 @@ - + - + - + + + + @@ -5794,15 +5602,6 @@ - - - - - - - - - @@ -5902,29 +5701,35 @@ - + - + - + + + + - + - + - + + + + - + - + - + @@ -5938,11 +5743,29 @@ - + + + + + + + + + + + + + + + + + + + - + - + @@ -6112,6 +5935,15 @@ + + + + + + + + + @@ -6219,10 +6051,13 @@ - + - + + + + @@ -6523,24 +6358,6 @@ - - - - - - - - - - - - - - - - - - @@ -6553,18 +6370,6 @@ - - - - - - - - - - - - @@ -7090,15 +6895,6 @@ - - - - - - - - - @@ -7258,15 +7054,6 @@ - - - - - - - - - @@ -7279,6 +7066,15 @@ + + + + + + + + + @@ -7639,11 +7435,11 @@ - + - + - + @@ -7816,15 +7612,6 @@ - - - - - - - - - @@ -7897,6 +7684,24 @@ + + + + + + + + + + + + + + + + + + @@ -8221,47 +8026,50 @@ - + - + - + - + - + - + - + - + - + - + - + + + + - + - + - + @@ -8374,6 +8182,15 @@ + + + + + + + + + @@ -8455,6 +8272,15 @@ + + + + + + + + + @@ -8482,18 +8308,6 @@ - - - - - - - - - - - - @@ -8587,15 +8401,6 @@ - - - - - - - - - @@ -8650,18 +8455,6 @@ - - - - - - - - - - - - @@ -9040,15 +8833,6 @@ - - - - - - - - - @@ -9220,6 +9004,15 @@ + + + + + + + + + @@ -9232,242 +9025,302 @@ - + - + - + - + - + - + - + - + - + - + - + - + + + + - + - + - + + + + - + - + + + + - + - + + + + - + - + + + + - + + + + + + + + + + + + + - + - + - + + + + - + - + - + + + + - + - + + + + - + - + - + + + + - + - + + + + - + - + - + + + + - + - + + + + - + - + - + - + - + - + - + - + - + - + - + - + + + + - + - + - + - + - + - + - + - + - + - + + + + - + - + - + + + + - + - + - + + + + - + - + - + @@ -9481,51 +9334,60 @@ - + - + - + + + + - + - + - + - + + + + - + - + - + + + + - + - + - + - - - - + - + - + + + + @@ -9549,60 +9411,78 @@ - + - + + + + - + - + + + + - + - + - + + + + - + - + - + - + - + + + + + + + + + + - + - + - + - + - + - + @@ -9691,15 +9571,6 @@ - - - - - - - - - @@ -9967,11 +9838,11 @@ - + - + - + @@ -9985,15 +9856,6 @@ - - - - - - - - - @@ -10066,6 +9928,15 @@ + + + + + + + + + @@ -10150,18 +10021,6 @@ - - - - - - - - - - - - @@ -10180,15 +10039,6 @@ - - - - - - - - - @@ -10543,7 +10393,7 @@ - + @@ -10579,15 +10429,6 @@ - - - - - - - - - @@ -10759,15 +10600,6 @@ - - - - - - - - - @@ -10777,24 +10609,6 @@ - - - - - - - - - - - - - - - - - - @@ -10831,15 +10645,6 @@ - - - - - - - - - @@ -10899,12 +10704,12 @@ - + - + @@ -10927,15 +10732,6 @@ - - - - - - - - - @@ -10947,10 +10743,13 @@ - + - + + + + @@ -11089,15 +10888,6 @@ - - - - - - - - - is not supported in CDATA block]]> @@ -11254,56 +11044,41 @@ - + - + - + - + - - - - - - - - - - + - + - + - - - - + - + - + - - - - + - + - + @@ -11335,15 +11110,6 @@ - - - - - - - - - @@ -11419,15 +11185,6 @@ - - - - - - - - - @@ -11557,12 +11314,24 @@ + + + + + + + + + - + - + + + + @@ -11593,27 +11362,45 @@ - + - =" must be a non-negative integer]]> + =" constraint to {package_name} names version {version} which does not exist in the version database. All versions must exist in the version database to be interpreted by vcpkg.]]> - =" debe ser un número no negativo]]> + =" a {package_name} nombres versión {version} que no existe en la base de datos de versión. Todas las versiones deben existir en la base de datos de versiones para que vcpkg las interprete.]]> - - =" must be a positive integer]]> - - + - + - + + + + + + + + + + + + + =" must be a non-negative integer]]> + + =" debe ser un número no negativo]]> + + + =" must be a positive integer]]> + + + + @@ -11632,11 +11419,32 @@ - + + + + + + + + + + + + + - + - + + + + + + + + + + @@ -11652,10 +11460,13 @@ - + - + + + + @@ -11782,15 +11593,66 @@ - + - + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - @@ -11812,29 +11674,101 @@ - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - + - + - + - + - + - + - + @@ -11869,15 +11803,6 @@ - - - - - - - - - @@ -11956,20 +11881,11 @@ - - - - - - - - - - + - + - + @@ -12166,11 +12082,11 @@ - + - + - + diff --git a/src/localization/fr/messages.json.lcl b/src/localization/fr/messages.json.lcl index fd4c6ca2c7..23845a0905 100644 --- a/src/localization/fr/messages.json.lcl +++ b/src/localization/fr/messages.json.lcl @@ -523,18 +523,6 @@ - - - - - - - - - - - - @@ -601,15 +589,6 @@ - - - - - - - - - @@ -646,11 +625,11 @@ - + - + - + @@ -751,23 +730,20 @@ - + - + - + - - - - + - + - + @@ -882,10 +858,13 @@ - + - + + + + @@ -1144,15 +1123,6 @@ - - - - - - - - - @@ -1222,18 +1192,6 @@ - - - - - - - - - - - - @@ -1282,18 +1240,6 @@ - - - - - - - - - - - - @@ -1417,6 +1363,33 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -1426,6 +1399,15 @@ + + + + + + + + + @@ -1447,15 +1429,6 @@ - - - - - - - - - @@ -1537,15 +1510,6 @@ - - - - - - - - - @@ -1557,18 +1521,21 @@ - + - + + + + - + - + - + @@ -1587,10 +1554,13 @@ - + - + + + + @@ -1756,18 +1726,6 @@ - - - - - - - - - - - - @@ -1828,21 +1786,15 @@ - - - - - - - - - - + - + - + + + + @@ -1900,15 +1852,6 @@ - - - - - - - - - @@ -2080,24 +2023,6 @@ - - - - - - - - - - - - - - - - - - @@ -2440,24 +2365,6 @@ - - - ]]> - - ]]> - - - - - - - - - - - - - ]]> @@ -2503,15 +2410,6 @@ - - - - - - - - - ]]> @@ -2736,10 +2634,13 @@ - [--nuget]5D; [--directory=out_dir]5D;]]> + [--nuget]5D; [--output-dir=out_dir]5D;]]> - [--nuget]5D; [--directory=out_dir]5D;]]> + [--nuget]5D; [--output-dir=out_dir]5D;]]> + + [--nuget]5D; [--directory=out_dir]5D;]]> + @@ -3891,16 +3792,25 @@ - + - + - + + + + + + + + + + @@ -3913,6 +3823,15 @@ + + + + + + + + + @@ -3988,15 +3907,6 @@ - - - - - - - - - @@ -4024,21 +3934,27 @@ - + - + - + + + + - + - + + + + @@ -4177,15 +4093,6 @@ - - - - - - - - - @@ -4204,23 +4111,20 @@ - + - + - + - - - - + - + - + @@ -4246,15 +4150,6 @@ - - - - - - - - - @@ -4336,15 +4231,6 @@ - - - - - - - - - @@ -4417,6 +4303,24 @@ + + + + + + + + + + + + + + + + + + @@ -4438,6 +4342,24 @@ + + + + + + + + + + + + + + + + + + @@ -4545,19 +4467,13 @@ - - - - - - - - - - {path}]]> + - {path}]]> + + + + @@ -4705,15 +4621,6 @@ - - - - - - - - - @@ -5032,15 +4939,6 @@ - - - - - - - - - @@ -5077,6 +4975,15 @@ + + + + + + + + + @@ -5167,15 +5074,6 @@ - - - - - - - - - @@ -5251,15 +5149,6 @@ - - - - - - - - - @@ -5329,15 +5218,6 @@ - - - - - - - - - @@ -5421,10 +5301,13 @@ - + - + + + + @@ -5473,29 +5356,11 @@ - + - + - - - - - - - - - - - - - - - - - - - + @@ -5587,15 +5452,6 @@ - - - - - - - - - @@ -5644,27 +5500,6 @@ - - - - - - - - - - - - - - - - - - - - - @@ -5692,50 +5527,20 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - + - + - + - + - + @@ -5761,12 +5566,15 @@ - + - + - + + + + @@ -5794,15 +5602,6 @@ - - - - - - - - - @@ -5902,29 +5701,35 @@ - + - + - + + + + - + - + - + + + + - + - + - + @@ -5938,11 +5743,29 @@ - + + + + + + + + + + + + + + + + + + + - + - + @@ -6112,6 +5935,15 @@ + + + + + + + + + @@ -6219,10 +6051,13 @@ - + + + + @@ -6523,24 +6358,6 @@ - - - - - - - - - - - - - - - - - - @@ -6553,18 +6370,6 @@ - - - - - - - - - - - - @@ -7090,15 +6895,6 @@ - - - - - - - - - @@ -7258,15 +7054,6 @@ - - - - - - - - - @@ -7279,6 +7066,15 @@ + + + + + + + + + @@ -7639,11 +7435,11 @@ - + - + - + @@ -7816,15 +7612,6 @@ - - - - - - - - - @@ -7897,6 +7684,24 @@ + + + + + + + + + + + + + + + + + + @@ -8221,47 +8026,50 @@ - + - + - + - + - + - + - + - + - + - + - + + + + - + - + - + @@ -8374,6 +8182,15 @@ + + + + + + + + + @@ -8455,6 +8272,15 @@ + + + + + + + + + @@ -8482,18 +8308,6 @@ - - - - - - - - - - - - @@ -8587,15 +8401,6 @@ - - - - - - - - - @@ -8650,18 +8455,6 @@ - - - - - - - - - - - - @@ -9040,15 +8833,6 @@ - - - - - - - - - @@ -9220,6 +9004,15 @@ + + + + + + + + + @@ -9232,242 +9025,302 @@ - + - + - + - + - + - + - + - + - + - + - + - + + + + - + - + - + + + + - + - + + + + - + - + + + + - + - + + + + - + + + + + + + + + + + + + - + - + - + + + + - + - + - + + + + - + - + + + + - + - + - + + + + - + - + + + + - + - + - + + + + - + - + + + + - + - + - + - + - + - + - + - + - + - + - + - + + + + - + - + - + - + - + - + - + - + - + - + + + + - + - + - + + + + - + - + - + + + + - + - + - + @@ -9481,51 +9334,60 @@ - + - + - + + + + - + - + - + + + + - + - + - + + + + - + - + - + - - - - + - + - + + + + @@ -9549,60 +9411,78 @@ - + - + + + + - + - + + + + - + - + - + + + + - + - + - + - + - + - + - + + + + + + + + + + - + - + - + - + @@ -9691,15 +9571,6 @@ - - - - - - - - - @@ -9967,11 +9838,11 @@ - + - + - + @@ -9985,15 +9856,6 @@ - - - - - - - - - @@ -10066,6 +9928,15 @@ + + + + + + + + + @@ -10150,18 +10021,6 @@ - - - - - - - - - - - - @@ -10180,15 +10039,6 @@ - - - - - - - - - @@ -10543,7 +10393,7 @@ - + @@ -10579,15 +10429,6 @@ - - - - - - - - - @@ -10759,15 +10600,6 @@ - - - - - - - - - @@ -10777,24 +10609,6 @@ - - - - - - - - - - - - - - - - - - @@ -10831,15 +10645,6 @@ - - - - - - - - - @@ -10899,12 +10704,12 @@ - + - + - + @@ -10927,15 +10732,6 @@ - - - - - - - - - @@ -10947,10 +10743,13 @@ - + - + + + + @@ -11089,15 +10888,6 @@ - - - - - - - - - is not supported in CDATA block]]> @@ -11254,56 +11044,41 @@ - + - + - + - + - + - + - + - + - + - + - - - - + - + - - - - - - - - - - - - - + @@ -11335,15 +11110,6 @@ - - - - - - - - - @@ -11419,15 +11185,6 @@ - - - - - - - - - @@ -11557,12 +11314,24 @@ + + + + + + + + + - + - + + + + @@ -11593,27 +11362,45 @@ - + - =" must be a non-negative integer]]> + =" constraint to {package_name} names version {version} which does not exist in the version database. All versions must exist in the version database to be interpreted by vcpkg.]]> - = » doit être un entier non négatif]]> + =" vers {package_name} nomme la version {version} qui n’existe pas dans la base de données des versions. Toutes les versions doivent exister dans la base de données de versions pour être interprétées par vcpkg.]]> - - =" must be a positive integer]]> - - + - + - + + + + + + + + + + + + + =" must be a non-negative integer]]> + + = » doit être un entier non négatif]]> + + + =" must be a positive integer]]> + + + + @@ -11632,11 +11419,32 @@ - + + + + + + + + + + + + + + + + + + + + + + - + - + @@ -11652,10 +11460,13 @@ - + - + + + + @@ -11782,15 +11593,66 @@ - + - + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - @@ -11812,29 +11674,101 @@ - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - + - + - + - + - + - + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -11869,15 +11803,6 @@ - - - - - - - - - @@ -11956,20 +11881,11 @@ - - - - - - - - - - + - + - + @@ -12166,11 +12082,11 @@ - + - + - + diff --git a/src/localization/it/messages.json.lcl b/src/localization/it/messages.json.lcl index 3d40786bf5..25063afedf 100644 --- a/src/localization/it/messages.json.lcl +++ b/src/localization/it/messages.json.lcl @@ -523,18 +523,6 @@ - - - - - - - - - - - - @@ -601,15 +589,6 @@ - - - - - - - - - @@ -646,11 +625,11 @@ - + - + - + @@ -751,23 +730,20 @@ - + - + - + - - - - + - + - + @@ -882,10 +858,13 @@ - + - + + + + @@ -1144,15 +1123,6 @@ - - - - - - - - - @@ -1222,18 +1192,6 @@ - - - - - - - - - - - - @@ -1282,18 +1240,6 @@ - - - - - - - - - - - - @@ -1417,6 +1363,33 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -1426,6 +1399,15 @@ + + + + + + + + + @@ -1447,15 +1429,6 @@ - - - - - - - - - @@ -1537,15 +1510,6 @@ - - - - - - - - - @@ -1557,18 +1521,21 @@ - + - + + + + - + - + - + @@ -1587,10 +1554,13 @@ - + - + + + + @@ -1756,18 +1726,6 @@ - - - - - - - - - - - - @@ -1828,21 +1786,15 @@ - - - - - - - - - - + - + - + + + + @@ -1900,15 +1852,6 @@ - - - - - - - - - @@ -2080,24 +2023,6 @@ - - - - - - - - - - - - - - - - - - @@ -2440,24 +2365,6 @@ - - - ]]> - - ]]> - - - - - - - - - - - - - ]]> @@ -2503,15 +2410,6 @@ - - - - - - - - - ]]> @@ -2736,10 +2634,13 @@ - [--nuget]5D; [--directory=out_dir]5D;]]> + [--nuget]5D; [--output-dir=out_dir]5D;]]> - [--nuget]5D; [--directory=out_dir]5D;]]> + [--nuget]5D; [--output-dir=out_dir]5D;]]> + + [--nuget]5D; [--directory=out_dir]5D;]]> + @@ -3891,16 +3792,25 @@ - + - + - + + + + + + + + + + @@ -3913,6 +3823,15 @@ + + + + + + + + + @@ -3988,15 +3907,6 @@ - - - - - - - - - @@ -4024,21 +3934,27 @@ - + - + - + + + + - + - + + + + @@ -4177,15 +4093,6 @@ - - - - - - - - - @@ -4204,23 +4111,20 @@ - + - + - + - - - - + - + - + @@ -4246,15 +4150,6 @@ - - - - - - - - - @@ -4336,15 +4231,6 @@ - - - - - - - - - @@ -4417,6 +4303,24 @@ + + + + + + + + + + + + + + + + + + @@ -4438,6 +4342,24 @@ + + + + + + + + + + + + + + + + + + @@ -4545,19 +4467,13 @@ - - - - - - - - - - {path}]]> + - {path}]]> + + + + @@ -4705,15 +4621,6 @@ - - - - - - - - - @@ -5032,15 +4939,6 @@ - - - - - - - - - @@ -5077,6 +4975,15 @@ + + + + + + + + + @@ -5167,15 +5074,6 @@ - - - - - - - - - @@ -5251,15 +5149,6 @@ - - - - - - - - - @@ -5329,15 +5218,6 @@ - - - - - - - - - @@ -5421,10 +5301,13 @@ - + - + + + + @@ -5473,15 +5356,6 @@ - - - - - - - - - @@ -5491,16 +5365,7 @@ - - - - - - - - - - + @@ -5587,15 +5452,6 @@ - - - - - - - - - @@ -5644,27 +5500,6 @@ - - - - - - - - - - - - - - - - - - - - - @@ -5692,50 +5527,20 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - + - + - + - + - + @@ -5761,12 +5566,15 @@ - + - + - + + + + @@ -5794,15 +5602,6 @@ - - - - - - - - - @@ -5902,29 +5701,35 @@ - + - + - + + + + - + - + - + + + + - + - + - + @@ -5938,11 +5743,29 @@ - + + + + + + + + + + + + + + + + + + + - + - + @@ -6112,6 +5935,15 @@ + + + + + + + + + @@ -6219,10 +6051,13 @@ - + + + + @@ -6523,24 +6358,6 @@ - - - - - - - - - - - - - - - - - - @@ -6553,18 +6370,6 @@ - - - - - - - - - - - - @@ -7090,15 +6895,6 @@ - - - - - - - - - @@ -7258,15 +7054,6 @@ - - - - - - - - - @@ -7279,6 +7066,15 @@ + + + + + + + + + @@ -7639,11 +7435,11 @@ - + - + - + @@ -7816,15 +7612,6 @@ - - - - - - - - - @@ -7897,6 +7684,24 @@ + + + + + + + + + + + + + + + + + + @@ -8221,47 +8026,50 @@ - + - + - + - + - + - + - + - + - + - + - + + + + - + - + - + @@ -8374,6 +8182,15 @@ + + + + + + + + + @@ -8458,6 +8275,15 @@ + + + + + + + + + @@ -8485,18 +8311,6 @@ - - - - - - - - - - - - @@ -8590,15 +8404,6 @@ - - - - - - - - - @@ -8653,18 +8458,6 @@ - - - - - - - - - - - - @@ -9043,15 +8836,6 @@ - - - - - - - - - @@ -9223,6 +9007,15 @@ + + + + + + + + + @@ -9235,242 +9028,302 @@ - + - + - + - + - + - + - + - + - + - + - + - + + + + - + - + - + + + + - + - + + + + - + - + + + + - + - + + + + - + + + + + + + + + + + + + - + - + - + + + + - + - + - + + + + - + - + + + + - + - + - + + + + - + - + + + + - + - + - + + + + - + - + + + + - + - + - + - + - + - + - + - + - + - + - + - + + + + - + - + - + - + - + - + - + - + - + - + + + + - + - + - + + + + - + - + - + + + + - + - + - + @@ -9484,51 +9337,60 @@ - + - + - + + + + - + - + - + + + + - + - + - + + + + - + - + - + - - - - + - + - + + + + @@ -9552,60 +9414,78 @@ - + - + + + + - + - + + + + - + - + - + + + + - + - + - + - + - + + + + + + + + + + - + - + - + - + - + - + @@ -9694,15 +9574,6 @@ - - - - - - - - - @@ -9970,11 +9841,11 @@ - + - + - + @@ -9988,15 +9859,6 @@ - - - - - - - - - @@ -10069,6 +9931,15 @@ + + + + + + + + + @@ -10153,18 +10024,6 @@ - - - - - - - - - - - - @@ -10183,15 +10042,6 @@ - - - - - - - - - @@ -10546,7 +10396,7 @@ - + @@ -10582,15 +10432,6 @@ - - - - - - - - - @@ -10762,15 +10603,6 @@ - - - - - - - - - @@ -10780,24 +10612,6 @@ - - - - - - - - - - - - - - - - - - @@ -10834,15 +10648,6 @@ - - - - - - - - - @@ -10902,12 +10707,12 @@ - + - + @@ -10930,15 +10735,6 @@ - - - - - - - - - @@ -10950,10 +10746,13 @@ - + - + + + + @@ -11092,15 +10891,6 @@ - - - - - - - - - is not supported in CDATA block]]> @@ -11257,56 +11047,41 @@ - + - + - + - + - - - - - - - - - - + - + - + - - - - + - + - + - - - - + - + - + @@ -11338,15 +11113,6 @@ - - - - - - - - - @@ -11422,15 +11188,6 @@ - - - - - - - - - @@ -11560,12 +11317,24 @@ + + + + + + + + + - + - + + + + @@ -11596,24 +11365,42 @@ - + - =" must be a non-negative integer]]> + =" constraint to {package_name} names version {version} which does not exist in the version database. All versions must exist in the version database to be interpreted by vcpkg.]]> - =" deve essere un numero intero non negativo]]> + =" a {package_name} nomi versione {version} che non esiste nel database delle versioni. Tutte le versioni devono essere presenti nel database delle versioni per essere interpretate da vcpkg.]]> + + + + + + + + + + + + + + + + + + - - =" must be a positive integer]]> - - + - + =" must be a non-negative integer]]> - + =" deve essere un numero intero non negativo]]> + + =" must be a positive integer]]> + @@ -11635,11 +11422,32 @@ - + + + + + + + + + + + + + + + + + + + + + + - + - + @@ -11655,10 +11463,13 @@ - + - + + + + @@ -11785,15 +11596,66 @@ - + - + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - @@ -11815,29 +11677,101 @@ - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - + - + - + - + - + - + - + @@ -11872,15 +11806,6 @@ - - - - - - - - - @@ -11959,20 +11884,11 @@ - - - - - - - - - - + - + - + @@ -12169,11 +12085,11 @@ - + - + - + diff --git a/src/localization/ja/messages.json.lcl b/src/localization/ja/messages.json.lcl index bfa2b72880..e03111e672 100644 --- a/src/localization/ja/messages.json.lcl +++ b/src/localization/ja/messages.json.lcl @@ -523,18 +523,6 @@ - - - - - - - - - - - - @@ -601,15 +589,6 @@ - - - - - - - - - @@ -646,11 +625,11 @@ - + - + - + @@ -751,23 +730,20 @@ - + - + - + - - - - + - + - + @@ -882,10 +858,13 @@ - + - + + + + @@ -1144,15 +1123,6 @@ - - - - - - - - - @@ -1222,18 +1192,6 @@ - - - - - - - - - - - - @@ -1282,18 +1240,6 @@ - - - - - - - - - - - - @@ -1417,6 +1363,33 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -1426,6 +1399,15 @@ + + + + + + + + + @@ -1447,15 +1429,6 @@ - - - - - - - - - @@ -1537,15 +1510,6 @@ - - - - - - - - - @@ -1557,18 +1521,21 @@ - + - + + + + - + - + - + @@ -1587,10 +1554,13 @@ - + - + + + + @@ -1756,18 +1726,6 @@ - - - - - - - - - - - - @@ -1828,21 +1786,15 @@ - - - - - - - - - - + - + - + + + + @@ -1900,15 +1852,6 @@ - - - - - - - - - @@ -2080,24 +2023,6 @@ - - - - - - - - - - - - - - - - - - @@ -2440,24 +2365,6 @@ - - - ]]> - - ]]> - - - - - - - - - - - - - ]]> @@ -2503,15 +2410,6 @@ - - - - - - - - - ]]> @@ -2736,10 +2634,13 @@ - [--nuget]5D; [--directory=out_dir]5D;]]> + [--nuget]5D; [--output-dir=out_dir]5D;]]> - [--nuget]5D; [--directory=out_dir]5D;]]> + [--nuget]5D; [--output-dir=out_dir]5D;]]> + + [--nuget]5D; [--directory=out_dir]5D;]]> + @@ -3891,16 +3792,25 @@ - + - + - + + + + + + + + + + @@ -3913,6 +3823,15 @@ + + + + + + + + + @@ -3988,15 +3907,6 @@ - - - - - - - - - @@ -4024,21 +3934,27 @@ - + - + - + + + + - + - + + + + @@ -4177,15 +4093,6 @@ - - - - - - - - - @@ -4204,23 +4111,20 @@ - + - + - + - - - - + - + - + @@ -4246,15 +4150,6 @@ - - - - - - - - - @@ -4336,15 +4231,6 @@ - - - - - - - - - @@ -4417,6 +4303,24 @@ + + + + + + + + + + + + + + + + + + @@ -4438,6 +4342,24 @@ + + + + + + + + + + + + + + + + + + @@ -4545,19 +4467,13 @@ - - - - - - - - - - {path}]]> + - {path}]]> + + + + @@ -4705,15 +4621,6 @@ - - - - - - - - - @@ -5032,15 +4939,6 @@ - - - - - - - - - @@ -5077,6 +4975,15 @@ + + + + + + + + + @@ -5167,15 +5074,6 @@ - - - - - - - - - @@ -5251,15 +5149,6 @@ - - - - - - - - - @@ -5329,15 +5218,6 @@ - - - - - - - - - @@ -5421,10 +5301,13 @@ - + - + + + + @@ -5473,29 +5356,11 @@ - + - + - - - - - - - - - - - - - - - - - - - + @@ -5587,15 +5452,6 @@ - - - - - - - - - @@ -5644,27 +5500,6 @@ - - - - - - - - - - - - - - - - - - - - - @@ -5692,50 +5527,20 @@ - - - - - - - - - - + - + - - - - - - - - - - - - - - - - - - - - - - + - + - + @@ -5761,12 +5566,15 @@ - + - + - + + + + @@ -5794,15 +5602,6 @@ - - - - - - - - - @@ -5902,29 +5701,35 @@ - + - + - + + + + - + - + - + + + + - + - + - + @@ -5938,11 +5743,29 @@ - + + + + + + + + + + + + + + + + + + + - + - + @@ -6112,6 +5935,15 @@ + + + + + + + + + @@ -6219,10 +6051,13 @@ - + + + + @@ -6523,24 +6358,6 @@ - - - - - - - - - - - - - - - - - - @@ -6553,18 +6370,6 @@ - - - - - - - - - - - - @@ -7090,15 +6895,6 @@ - - - - - - - - - @@ -7258,15 +7054,6 @@ - - - - - - - - - @@ -7279,6 +7066,15 @@ + + + + + + + + + @@ -7639,11 +7435,11 @@ - + - + - + @@ -7816,15 +7612,6 @@ - - - - - - - - - @@ -7897,6 +7684,24 @@ + + + + + + + + + + + + + + + + + + @@ -8221,47 +8026,50 @@ - + - + - + - + - + - + - + - + - + - + - + + + + - + - + - + @@ -8374,6 +8182,15 @@ + + + + + + + + + @@ -8458,6 +8275,15 @@ + + + + + + + + + @@ -8485,18 +8311,6 @@ - - - - - - - - - - - - @@ -8590,15 +8404,6 @@ - - - - - - - - - @@ -8653,18 +8458,6 @@ - - - - - - - - - - - - @@ -9043,15 +8836,6 @@ - - - - - - - - - @@ -9223,6 +9007,15 @@ + + + + + + + + + @@ -9235,242 +9028,302 @@ - + - + - + - + - + - + - + - + - + - + - + - + + + + - + - + - + + + + - + - + + + + - + - + + + + - + - + + + + - + + + + + + + + + + + + + - + - + - + + + + - + - + - + + + + - + - + + + + - + - + - + + + + - + - + + + + - + - + - + + + + - + - + + + + - + - + - + - + - + - + - + - + - + - + - + - + + + + - + - + - + - + - + - + - + - + - + - + + + + - + - + - + - + + + + - + - + - + + + + - + - + - + @@ -9484,51 +9337,60 @@ - + - + - + + + + - + - + - + + + + - + - + - + + + + - + - + - + - - - - + - + - + + + + @@ -9552,60 +9414,78 @@ - + - + + + + - + - + + + + - + - + - + + + + - + - + - + - + - + - + - + + + + + + + + + + - + - + - + - + @@ -9694,15 +9574,6 @@ - - - - - - - - - @@ -9970,11 +9841,11 @@ - + - + - + @@ -9988,15 +9859,6 @@ - - - - - - - - - @@ -10069,6 +9931,15 @@ + + + + + + + + + @@ -10153,18 +10024,6 @@ - - - - - - - - - - - - @@ -10183,15 +10042,6 @@ - - - - - - - - - @@ -10546,7 +10396,7 @@ - + @@ -10582,15 +10432,6 @@ - - - - - - - - - @@ -10762,15 +10603,6 @@ - - - - - - - - - @@ -10780,24 +10612,6 @@ - - - - - - - - - - - - - - - - - - @@ -10834,15 +10648,6 @@ - - - - - - - - - @@ -10902,12 +10707,12 @@ - + - + @@ -10930,15 +10735,6 @@ - - - - - - - - - @@ -10950,10 +10746,13 @@ - + - + + + + @@ -11092,15 +10891,6 @@ - - - - - - - - - is not supported in CDATA block]]> @@ -11257,56 +11047,41 @@ - + - + - + - + - + - + - + - + - + - + - - - - + - + - - - - - - - - - - - - - + @@ -11338,15 +11113,6 @@ - - - - - - - - - @@ -11422,15 +11188,6 @@ - - - - - - - - - @@ -11560,12 +11317,24 @@ + + + + + + + + + - + - + + + + @@ -11596,27 +11365,45 @@ - + - =" must be a non-negative integer]]> + =" constraint to {package_name} names version {version} which does not exist in the version database. All versions must exist in the version database to be interpreted by vcpkg.]]> - =" 内の port-version ('#' の後) は負ではない整数である必要があります]]> + =" 制約により、バージョン データベースに存在しないバージョン {version} が指定されます。vcpkg で解釈するには、すべてのバージョンがバージョン データベースに存在する必要があります。]]> + + + + + + + + + - - =" must be a positive integer]]> - - + - + - + + + + =" must be a non-negative integer]]> + + =" 内の port-version ('#' の後) は負ではない整数である必要があります]]> + + + =" must be a positive integer]]> + + + + @@ -11635,11 +11422,32 @@ - + - + - + + + + + + + + + + + + + + + + + + + + + + @@ -11655,10 +11463,13 @@ - + - + + + + @@ -11785,15 +11596,66 @@ - + - + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - @@ -11815,29 +11677,101 @@ - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - + - + - + - + - + - + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -11872,15 +11806,6 @@ - - - - - - - - - @@ -11959,20 +11884,11 @@ - - - - - - - - - - + - + - + @@ -12169,11 +12085,11 @@ - + - + - + diff --git a/src/localization/ko/messages.json.lcl b/src/localization/ko/messages.json.lcl index e1badbc94a..61870159fb 100644 --- a/src/localization/ko/messages.json.lcl +++ b/src/localization/ko/messages.json.lcl @@ -523,18 +523,6 @@ - - - - - - - - - - - - @@ -601,15 +589,6 @@ - - - - - - - - - @@ -646,11 +625,11 @@ - + - + - + @@ -751,23 +730,20 @@ - + - + - + - - - - + - + - + @@ -882,10 +858,13 @@ - + - + + + + @@ -1144,15 +1123,6 @@ - - - - - - - - - @@ -1222,18 +1192,6 @@ - - - - - - - - - - - - @@ -1282,18 +1240,6 @@ - - - - - - - - - - - - @@ -1417,6 +1363,33 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -1426,6 +1399,15 @@ + + + + + + + + + @@ -1447,15 +1429,6 @@ - - - - - - - - - @@ -1537,15 +1510,6 @@ - - - - - - - - - @@ -1557,18 +1521,21 @@ - + - + + + + - + - + - + @@ -1587,10 +1554,13 @@ - + - + + + + @@ -1756,18 +1726,6 @@ - - - - - - - - - - - - @@ -1828,21 +1786,15 @@ - - - - - - - - - - + - + - + + + + @@ -1900,15 +1852,6 @@ - - - - - - - - - @@ -2080,24 +2023,6 @@ - - - - - - - - - - - - - - - - - - @@ -2440,24 +2365,6 @@ - - - ]]> - - ]]> - - - - - - - - - - - - - ]]> @@ -2503,15 +2410,6 @@ - - - - - - - - - ]]> @@ -2736,10 +2634,13 @@ - [--nuget]5D; [--directory=out_dir]5D;]]> + [--nuget]5D; [--output-dir=out_dir]5D;]]> - [--nuget]5D; [--directory=out_dir]5D;]]> + [--nuget]5D; [--output-dir=out_dir]5D;]]> + + [--nuget]5D; [--directory=out_dir]5D;]]> + @@ -3891,16 +3792,25 @@ - + - + - + + + + + + + + + + @@ -3913,6 +3823,15 @@ + + + + + + + + + @@ -3988,15 +3907,6 @@ - - - - - - - - - @@ -4024,21 +3934,27 @@ - + - + - + + + + - + - + + + + @@ -4177,15 +4093,6 @@ - - - - - - - - - @@ -4204,23 +4111,20 @@ - + - + - + - - - - + - + - + @@ -4246,15 +4150,6 @@ - - - - - - - - - @@ -4336,15 +4231,6 @@ - - - - - - - - - @@ -4417,6 +4303,24 @@ + + + + + + + + + + + + + + + + + + @@ -4438,6 +4342,24 @@ + + + + + + + + + + + + + + + + + + @@ -4545,19 +4467,13 @@ - - - - - - - - - - {path}]]> + - {path}]]> + + + + @@ -4705,15 +4621,6 @@ - - - - - - - - - @@ -5032,15 +4939,6 @@ - - - - - - - - - @@ -5077,6 +4975,15 @@ + + + + + + + + + @@ -5167,15 +5074,6 @@ - - - - - - - - - @@ -5251,15 +5149,6 @@ - - - - - - - - - @@ -5329,15 +5218,6 @@ - - - - - - - - - @@ -5421,10 +5301,13 @@ - + - + + + + @@ -5473,29 +5356,11 @@ - + - + - - - - - - - - - - - - - - - - - - - + @@ -5587,15 +5452,6 @@ - - - - - - - - - @@ -5644,27 +5500,6 @@ - - - - - - - - - - - - - - - - - - - - - @@ -5692,50 +5527,20 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - + - + - + - + - + @@ -5761,12 +5566,15 @@ - + - + - + + + + @@ -5794,15 +5602,6 @@ - - - - - - - - - @@ -5902,29 +5701,35 @@ - + - + - + + + + - + - + - + + + + - + - + - + @@ -5938,11 +5743,29 @@ - + + + + + + + + + + + + + + + + + + + - + - + @@ -6112,6 +5935,15 @@ + + + + + + + + + @@ -6219,10 +6051,13 @@ - + + + + @@ -6523,24 +6358,6 @@ - - - - - - - - - - - - - - - - - - @@ -6553,18 +6370,6 @@ - - - - - - - - - - - - @@ -7090,15 +6895,6 @@ - - - - - - - - - @@ -7258,15 +7054,6 @@ - - - - - - - - - @@ -7279,6 +7066,15 @@ + + + + + + + + + @@ -7639,11 +7435,11 @@ - + - + - + @@ -7816,15 +7612,6 @@ - - - - - - - - - @@ -7897,6 +7684,24 @@ + + + + + + + + + + + + + + + + + + @@ -8221,47 +8026,50 @@ - + - + - + - + - + - + - + - + - + - + - + + + + - + - + - + @@ -8374,6 +8182,15 @@ + + + + + + + + + @@ -8455,6 +8272,15 @@ + + + + + + + + + @@ -8482,18 +8308,6 @@ - - - - - - - - - - - - @@ -8587,15 +8401,6 @@ - - - - - - - - - @@ -8650,18 +8455,6 @@ - - - - - - - - - - - - @@ -9040,15 +8833,6 @@ - - - - - - - - - @@ -9220,6 +9004,15 @@ + + + + + + + + + @@ -9232,242 +9025,302 @@ - + - + - + - + - + - + - + - + - + - + - + - + + + + - + - + - + + + + - + - + + + + - + - + + + + - + - + + + + - + + + + + + + + + + + + + - + - + + + + - + - + - + + + + - + - + + + + - + - + - + + + + - + - + + + + - + - + - + + + + - + - + + + + - + - + - + - + - + - + - + - + - + - + - + - + + + + - + - + - + - + - + - + - + - + - + - + + + + - + - + - + + + + - + - + - + + + + - + - + - + @@ -9481,51 +9334,60 @@ - + - + - + + + + - + - + - + + + + - + - + - + + + + - + - + - + - - - - + - + - + + + + @@ -9549,60 +9411,78 @@ - + - + + + + - + - + + + + - + - + - + + + + - + - + - + - + - + - + - + + + + + + + + + + - + - + - + - + @@ -9691,15 +9571,6 @@ - - - - - - - - - @@ -9967,11 +9838,11 @@ - + - + - + @@ -9985,15 +9856,6 @@ - - - - - - - - - @@ -10066,6 +9928,15 @@ + + + + + + + + + @@ -10150,18 +10021,6 @@ - - - - - - - - - - - - @@ -10180,15 +10039,6 @@ - - - - - - - - - @@ -10543,7 +10393,7 @@ - + @@ -10579,15 +10429,6 @@ - - - - - - - - - @@ -10759,15 +10600,6 @@ - - - - - - - - - @@ -10777,24 +10609,6 @@ - - - - - - - - - - - - - - - - - - @@ -10831,15 +10645,6 @@ - - - - - - - - - @@ -10899,12 +10704,12 @@ - + - + - + @@ -10927,15 +10732,6 @@ - - - - - - - - - @@ -10947,10 +10743,13 @@ - + - + + + + @@ -11089,15 +10888,6 @@ - - - - - - - - - is not supported in CDATA block]]> @@ -11254,56 +11044,41 @@ - + - + - + - + - + - + - + - + - + - + - - - - + - + - - - - - - - - - - - - - + @@ -11335,15 +11110,6 @@ - - - - - - - - - @@ -11419,15 +11185,6 @@ - - - - - - - - - @@ -11557,12 +11314,24 @@ + + + + + + + + + - + - + + + + @@ -11593,27 +11362,45 @@ - + - =" must be a non-negative integer]]> + =" constraint to {package_name} names version {version} which does not exist in the version database. All versions must exist in the version database to be interpreted by vcpkg.]]> - ="의 port-version('#' 이후)은 음수가 아닌 정수여야 함]]> + =" 제약 조건입니다. vcpkg에서 해석하려면 모든 버전이 버전 데이터베이스에 있어야 합니다.]]> - - =" must be a positive integer]]> - - + - + - + + + + + + + + + + + + + =" must be a non-negative integer]]> + + ="의 port-version('#' 이후)은 음수가 아닌 정수여야 함]]> + + + =" must be a positive integer]]> + + + + @@ -11632,11 +11419,32 @@ - + + + + + + + + + + + + + + + + + + + + + + - + - + @@ -11652,10 +11460,13 @@ - + - + + + + @@ -11782,15 +11593,66 @@ - + - + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - @@ -11812,29 +11674,101 @@ - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - + - + - + - + - + - + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -11869,15 +11803,6 @@ - - - - - - - - - @@ -11956,20 +11881,11 @@ - - - - - - - - - - + - + - + @@ -12166,11 +12082,11 @@ - + - + - + diff --git a/src/localization/pl/messages.json.lcl b/src/localization/pl/messages.json.lcl index 732c456d2f..fd040d7b95 100644 --- a/src/localization/pl/messages.json.lcl +++ b/src/localization/pl/messages.json.lcl @@ -523,18 +523,6 @@ - - - - - - - - - - - - @@ -601,15 +589,6 @@ - - - - - - - - - @@ -646,11 +625,11 @@ - + - + - + @@ -751,23 +730,20 @@ - + - + - + - - - - + - + - + @@ -882,10 +858,13 @@ - + - + + + + @@ -1144,15 +1123,6 @@ - - - - - - - - - @@ -1222,18 +1192,6 @@ - - - - - - - - - - - - @@ -1282,18 +1240,6 @@ - - - - - - - - - - - - @@ -1417,6 +1363,33 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -1426,6 +1399,15 @@ + + + + + + + + + @@ -1447,15 +1429,6 @@ - - - - - - - - - @@ -1537,15 +1510,6 @@ - - - - - - - - - @@ -1557,18 +1521,21 @@ - + - + + + + - + - + - + @@ -1587,10 +1554,13 @@ - + - + + + + @@ -1756,18 +1726,6 @@ - - - - - - - - - - - - @@ -1828,21 +1786,15 @@ - - - - - - - - - - + - + - + + + + @@ -1900,15 +1852,6 @@ - - - - - - - - - @@ -2080,24 +2023,6 @@ - - - - - - - - - - - - - - - - - - @@ -2440,24 +2365,6 @@ - - - ]]> - - ]]> - - - - - - - - - - - - - ]]> @@ -2503,15 +2410,6 @@ - - - - - - - - - ]]> @@ -2736,10 +2634,13 @@ - [--nuget]5D; [--directory=out_dir]5D;]]> + [--nuget]5D; [--output-dir=out_dir]5D;]]> - [--nuget]5D; [--directory=out_dir]5D;]]> + [--nuget]5D; [--output-dir=out_dir]5D;]]> + + [--nuget]5D; [--directory=out_dir]5D;]]> + @@ -3891,16 +3792,25 @@ - + - + - + + + + + + + + + + @@ -3913,6 +3823,15 @@ + + + + + + + + + @@ -3988,15 +3907,6 @@ - - - - - - - - - @@ -4024,21 +3934,27 @@ - + - + - + + + + - + - + + + + @@ -4177,15 +4093,6 @@ - - - - - - - - - @@ -4204,23 +4111,20 @@ - + - + - + - - - - + - + - + @@ -4246,15 +4150,6 @@ - - - - - - - - - @@ -4336,15 +4231,6 @@ - - - - - - - - - @@ -4417,6 +4303,24 @@ + + + + + + + + + + + + + + + + + + @@ -4438,6 +4342,24 @@ + + + + + + + + + + + + + + + + + + @@ -4545,19 +4467,13 @@ - - - - - - - - - - {path}]]> + - {path}]]> + + + + @@ -4705,15 +4621,6 @@ - - - - - - - - - @@ -5032,15 +4939,6 @@ - - - - - - - - - @@ -5077,6 +4975,15 @@ + + + + + + + + + @@ -5167,15 +5074,6 @@ - - - - - - - - - @@ -5251,15 +5149,6 @@ - - - - - - - - - @@ -5329,15 +5218,6 @@ - - - - - - - - - @@ -5421,10 +5301,13 @@ - + - + + + + @@ -5473,34 +5356,16 @@ - + - + - + - - - - - - - - - - - - - - - - - - - + @@ -5587,15 +5452,6 @@ - - - - - - - - - @@ -5644,27 +5500,6 @@ - - - - - - - - - - - - - - - - - - - - - @@ -5692,50 +5527,20 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - + - + - + - + - + @@ -5761,12 +5566,15 @@ - + - + - + + + + @@ -5794,15 +5602,6 @@ - - - - - - - - - @@ -5902,29 +5701,35 @@ - + - + - + + + + - + - + - + + + + - + - + - + @@ -5938,11 +5743,29 @@ - + + + + + + + + + + + + + + + + + + + - + - + @@ -6112,6 +5935,15 @@ + + + + + + + + + @@ -6219,10 +6051,13 @@ - + - + + + + @@ -6523,24 +6358,6 @@ - - - - - - - - - - - - - - - - - - @@ -6553,18 +6370,6 @@ - - - - - - - - - - - - @@ -7090,15 +6895,6 @@ - - - - - - - - - @@ -7258,15 +7054,6 @@ - - - - - - - - - @@ -7279,6 +7066,15 @@ + + + + + + + + + @@ -7639,11 +7435,11 @@ - + - + - + @@ -7816,15 +7612,6 @@ - - - - - - - - - @@ -7897,6 +7684,24 @@ + + + + + + + + + + + + + + + + + + @@ -8221,47 +8026,50 @@ - + - + - + - + - + - + - + - + - + - + - + + + + - + - + - + @@ -8374,6 +8182,15 @@ + + + + + + + + + @@ -8455,6 +8272,15 @@ + + + + + + + + + @@ -8482,18 +8308,6 @@ - - - - - - - - - - - - @@ -8587,15 +8401,6 @@ - - - - - - - - - @@ -8650,18 +8455,6 @@ - - - - - - - - - - - - @@ -9040,15 +8833,6 @@ - - - - - - - - - @@ -9220,6 +9004,15 @@ + + + + + + + + + @@ -9232,242 +9025,302 @@ - + - + - + - + - + - + - + - + - + - + - + - + + + + - + - + - + + + + - + - + + + + - + - + + + + - + - + + + + - + + + + + + + + + + + + + - + - + + + + - + - + - + + + + - + - + + + + - + - + - + + + + - + - + + + + - + - + - + + + + - + - + + + + - + - + - + - + - + - + - + - + - + - + - + - + + + + - + - + - + - + - + - + - + - + - + - + - + + + + - + - + - + + + + - + - + - + + + + - + - + - + @@ -9481,51 +9334,60 @@ - + - + - + + + + - + - + - + + + + - + - + - + + + + - + - + - + - - - - + - + - + + + + @@ -9549,60 +9411,78 @@ - + - + + + + - + - + + + + - + - + - + + + + - + - + - + - + - + + + + + + + + + + - + - + - + - + - + - + @@ -9691,15 +9571,6 @@ - - - - - - - - - @@ -9967,11 +9838,11 @@ - + - + - + @@ -9985,15 +9856,6 @@ - - - - - - - - - @@ -10066,6 +9928,15 @@ + + + + + + + + + @@ -10150,18 +10021,6 @@ - - - - - - - - - - - - @@ -10180,15 +10039,6 @@ - - - - - - - - - @@ -10543,7 +10393,7 @@ - + @@ -10579,15 +10429,6 @@ - - - - - - - - - @@ -10759,15 +10600,6 @@ - - - - - - - - - @@ -10777,24 +10609,6 @@ - - - - - - - - - - - - - - - - - - @@ -10831,15 +10645,6 @@ - - - - - - - - - @@ -10899,12 +10704,12 @@ - + - + @@ -10927,15 +10732,6 @@ - - - - - - - - - @@ -10947,10 +10743,13 @@ - + - + + + + @@ -11089,15 +10888,6 @@ - - - - - - - - - is not supported in CDATA block]]> @@ -11254,56 +11044,41 @@ - + - + - + - + - + - + - + - + - + - + - - - - + - + - - - - - - - - - - - - - + @@ -11335,15 +11110,6 @@ - - - - - - - - - @@ -11419,15 +11185,6 @@ - - - - - - - - - @@ -11557,12 +11314,24 @@ + + + + + + + + + - + - + + + + @@ -11593,27 +11362,45 @@ - + - =" must be a non-negative integer]]> + =" constraint to {package_name} names version {version} which does not exist in the version database. All versions must exist in the version database to be interpreted by vcpkg.]]> - =” musi być nieujemną liczbą całkowitą]]> + =” do wersji {version} nazw pakietu {package_name}, która nie istnieje w bazie danych wersji. Wszystkie wersje muszą istnieć w bazie danych wersji, aby mogły być interpretowane przez program vcpkg.]]> + + + + + + + + + - - =" must be a positive integer]]> - - + - + - + + + + =" must be a non-negative integer]]> + + =” musi być nieujemną liczbą całkowitą]]> + + + =" must be a positive integer]]> + + + + @@ -11632,11 +11419,32 @@ - + - + - + + + + + + + + + + + + + + + + + + + + + + @@ -11652,10 +11460,13 @@ - + - + + + + @@ -11782,15 +11593,66 @@ - + - + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - @@ -11812,29 +11674,101 @@ - + + + + + + + + + + - + - + - + - + - + - + - + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -11869,15 +11803,6 @@ - - - - - - - - - @@ -11956,20 +11881,11 @@ - - - - - - - - - - + - + - + @@ -12166,11 +12082,11 @@ - + - + - + diff --git a/src/localization/pt-BR/messages.json.lcl b/src/localization/pt-BR/messages.json.lcl index aa8b1acb6e..b3fbf41d53 100644 --- a/src/localization/pt-BR/messages.json.lcl +++ b/src/localization/pt-BR/messages.json.lcl @@ -523,18 +523,6 @@ - - - - - - - - - - - - @@ -601,15 +589,6 @@ - - - - - - - - - @@ -646,11 +625,11 @@ - + - + - + @@ -751,23 +730,20 @@ - + - + - + - - - - + - + - + @@ -882,10 +858,13 @@ - + - + + + + @@ -1144,15 +1123,6 @@ - - - - - - - - - @@ -1222,18 +1192,6 @@ - - - - - - - - - - - - @@ -1282,18 +1240,6 @@ - - - - - - - - - - - - @@ -1417,6 +1363,33 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -1426,6 +1399,15 @@ + + + + + + + + + @@ -1447,15 +1429,6 @@ - - - - - - - - - @@ -1537,15 +1510,6 @@ - - - - - - - - - @@ -1557,18 +1521,21 @@ - + - + + + + - + - + - + @@ -1587,10 +1554,13 @@ - + - + + + + @@ -1756,18 +1726,6 @@ - - - - - - - - - - - - @@ -1828,21 +1786,15 @@ - - - - - - - - - - + - + - + + + + @@ -1900,15 +1852,6 @@ - - - - - - - - - @@ -2080,24 +2023,6 @@ - - - - - - - - - - - - - - - - - - @@ -2440,24 +2365,6 @@ - - - ]]> - - ]]> - - - - - - - - - - - - - ]]> @@ -2503,15 +2410,6 @@ - - - - - - - - - ]]> @@ -2736,10 +2634,13 @@ - [--nuget]5D; [--directory=out_dir]5D;]]> + [--nuget]5D; [--output-dir=out_dir]5D;]]> - [--nuget]5D; [--directory=out_dir]5D;]]> + [--nuget]5D; [--output-dir=out_dir]5D;]]> + + [--nuget]5D; [--directory=out_dir]5D;]]> + @@ -3891,16 +3792,25 @@ - + - + - + + + + + + + + + + @@ -3913,6 +3823,15 @@ + + + + + + + + + @@ -3988,15 +3907,6 @@ - - - - - - - - - @@ -4024,21 +3934,27 @@ - + - + - + + + + - + - + + + + @@ -4177,15 +4093,6 @@ - - - - - - - - - @@ -4204,23 +4111,20 @@ - + - + - + - - - - + - + - + @@ -4246,15 +4150,6 @@ - - - - - - - - - @@ -4336,15 +4231,6 @@ - - - - - - - - - @@ -4417,6 +4303,24 @@ + + + + + + + + + + + + + + + + + + @@ -4438,6 +4342,24 @@ + + + + + + + + + + + + + + + + + + @@ -4545,19 +4467,13 @@ - - - - - - - - - - {path}]]> + - {path}]]> + + + + @@ -4705,15 +4621,6 @@ - - - - - - - - - @@ -5032,15 +4939,6 @@ - - - - - - - - - @@ -5077,6 +4975,15 @@ + + + + + + + + + @@ -5167,15 +5074,6 @@ - - - - - - - - - @@ -5251,15 +5149,6 @@ - - - - - - - - - @@ -5329,15 +5218,6 @@ - - - - - - - - - @@ -5421,10 +5301,13 @@ - + - + + + + @@ -5473,34 +5356,16 @@ - + - + - + - - - - - - - - - - - - - - - - - - - + @@ -5587,15 +5452,6 @@ - - - - - - - - - @@ -5644,27 +5500,6 @@ - - - - - - - - - - - - - - - - - - - - - @@ -5692,50 +5527,20 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - + - + - + - + - + @@ -5761,12 +5566,15 @@ - + - + - + + + + @@ -5794,15 +5602,6 @@ - - - - - - - - - @@ -5902,29 +5701,35 @@ - + - + - + + + + - + - + - + + + + - + - + - + @@ -5938,11 +5743,29 @@ - + + + + + + + + + + + + + + + + + + + - + - + @@ -6112,6 +5935,15 @@ + + + + + + + + + @@ -6219,10 +6051,13 @@ - + - + + + + @@ -6523,24 +6358,6 @@ - - - - - - - - - - - - - - - - - - @@ -6553,18 +6370,6 @@ - - - - - - - - - - - - @@ -7090,15 +6895,6 @@ - - - - - - - - - @@ -7258,15 +7054,6 @@ - - - - - - - - - @@ -7279,6 +7066,15 @@ + + + + + + + + + @@ -7639,11 +7435,11 @@ - + - + - + @@ -7816,15 +7612,6 @@ - - - - - - - - - @@ -7897,6 +7684,24 @@ + + + + + + + + + + + + + + + + + + @@ -8221,47 +8026,50 @@ - + - + - + - + - + - + - + - + - + - + - + + + + - + - + - + @@ -8374,6 +8182,15 @@ + + + + + + + + + @@ -8455,6 +8272,15 @@ + + + + + + + + + @@ -8482,18 +8308,6 @@ - - - - - - - - - - - - @@ -8587,15 +8401,6 @@ - - - - - - - - - @@ -8650,18 +8455,6 @@ - - - - - - - - - - - - @@ -9040,15 +8833,6 @@ - - - - - - - - - @@ -9220,6 +9004,15 @@ + + + + + + + + + @@ -9232,242 +9025,302 @@ - + - + - + - + - + - + - + - + - + - + - + - + + + + - + - + - + + + + - + - + + + + - + - + + + + - + - + + + + - + + + + + + + + + + + + + - + - + - + + + + - + - + - + + + + - + - + + + + - + - + - + + + + - + - + + + + - + - + - + + + + - + - + + + + - + - + - + - + - + - + - + - + - + - + - + - + + + + - + - + - + - + - + - + - + - + - + - + + + + - + - + - + - + + + + - + - + - + + + + - + - + - + @@ -9481,51 +9334,60 @@ - + - + - + + + + - + - + - + + + + - + - + - + + + + - + - + - + - - - - + - + - + + + + @@ -9549,60 +9411,78 @@ - + - + + + + - + - + + + + - + - + - + + + + - + - + - + - + - + - + - + + + + + + + + + + - + - + - + - + @@ -9691,15 +9571,6 @@ - - - - - - - - - @@ -9967,11 +9838,11 @@ - + - + - + @@ -9985,15 +9856,6 @@ - - - - - - - - - @@ -10066,6 +9928,15 @@ + + + + + + + + + @@ -10150,18 +10021,6 @@ - - - - - - - - - - - - @@ -10180,15 +10039,6 @@ - - - - - - - - - @@ -10543,7 +10393,7 @@ - + @@ -10579,15 +10429,6 @@ - - - - - - - - - @@ -10759,15 +10600,6 @@ - - - - - - - - - @@ -10777,24 +10609,6 @@ - - - - - - - - - - - - - - - - - - @@ -10831,15 +10645,6 @@ - - - - - - - - - @@ -10899,12 +10704,12 @@ - + - + - + @@ -10927,15 +10732,6 @@ - - - - - - - - - @@ -10947,10 +10743,13 @@ - + - + + + + @@ -11089,15 +10888,6 @@ - - - - - - - - - is not supported in CDATA block]]> @@ -11254,56 +11044,41 @@ - + - + - + - + - + - + - + - + - + - + - - - - + - + - - - - - - - - - - - - - + @@ -11335,15 +11110,6 @@ - - - - - - - - - @@ -11419,15 +11185,6 @@ - - - - - - - - - @@ -11557,12 +11314,24 @@ + + + + + + + + + - + - + + + + @@ -11593,27 +11362,45 @@ - + - =" must be a non-negative integer]]> + =" constraint to {package_name} names version {version} which does not exist in the version database. All versions must exist in the version database to be interpreted by vcpkg.]]> - =" deve ser um número inteiro não negativo]]> + =" para a versão {version} dos nomes do {package_name}, que não existe no banco de dados da versão. Todas as versões precisam existir no banco de dados da versão para serem interpretadas pelo vcpkg.]]> + + + + + + + + + - - =" must be a positive integer]]> - - + - + - + + + + =" must be a non-negative integer]]> + + =" deve ser um número inteiro não negativo]]> + + + =" must be a positive integer]]> + + + + @@ -11632,11 +11419,32 @@ - + - + - + + + + + + + + + + + + + + + + + + + + + + @@ -11652,10 +11460,13 @@ - + - + + + + @@ -11782,15 +11593,66 @@ - + - + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - @@ -11812,29 +11674,101 @@ - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - + - + - + - + - + - + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -11869,15 +11803,6 @@ - - - - - - - - - @@ -11956,20 +11881,11 @@ - - - - - - - - - - + - + - + @@ -12166,11 +12082,11 @@ - + - + - + diff --git a/src/localization/ru/messages.json.lcl b/src/localization/ru/messages.json.lcl index 7bc29ecc90..900c95f95c 100644 --- a/src/localization/ru/messages.json.lcl +++ b/src/localization/ru/messages.json.lcl @@ -523,18 +523,6 @@ - - - - - - - - - - - - @@ -601,15 +589,6 @@ - - - - - - - - - @@ -646,11 +625,11 @@ - + - + - + @@ -751,23 +730,20 @@ - + - + - + - - - - + - + - + @@ -882,10 +858,13 @@ - + - + + + + @@ -1144,15 +1123,6 @@ - - - - - - - - - @@ -1222,18 +1192,6 @@ - - - - - - - - - - - - @@ -1282,18 +1240,6 @@ - - - - - - - - - - - - @@ -1417,6 +1363,33 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -1426,6 +1399,15 @@ + + + + + + + + + @@ -1447,15 +1429,6 @@ - - - - - - - - - @@ -1537,15 +1510,6 @@ - - - - - - - - - @@ -1557,18 +1521,21 @@ - + - + + + + - + - + - + @@ -1587,10 +1554,13 @@ - + - + + + + @@ -1756,18 +1726,6 @@ - - - - - - - - - - - - @@ -1828,21 +1786,15 @@ - - - - - - - - - - + - + - + + + + @@ -1900,15 +1852,6 @@ - - - - - - - - - @@ -2080,24 +2023,6 @@ - - - - - - - - - - - - - - - - - - @@ -2440,24 +2365,6 @@ - - - ]]> - - ]]> - - - - - - - - - - - - - ]]> @@ -2503,15 +2410,6 @@ - - - - - - - - - ]]> @@ -2736,10 +2634,13 @@ - [--nuget]5D; [--directory=out_dir]5D;]]> + [--nuget]5D; [--output-dir=out_dir]5D;]]> - [--nuget]5D; [--directory=out_dir]5D;]]> + [--nuget]5D; [--output-dir=out_dir]5D;]]> + + [--nuget]5D; [--directory=out_dir]5D;]]> + @@ -3891,16 +3792,25 @@ - + - + - + + + + + + + + + + @@ -3913,6 +3823,15 @@ + + + + + + + + + @@ -3988,15 +3907,6 @@ - - - - - - - - - @@ -4024,21 +3934,27 @@ - + - + - + + + + - + - + + + + @@ -4177,15 +4093,6 @@ - - - - - - - - - @@ -4204,23 +4111,20 @@ - + - + - + - - - - + - + - + @@ -4246,15 +4150,6 @@ - - - - - - - - - @@ -4336,15 +4231,6 @@ - - - - - - - - - @@ -4417,6 +4303,24 @@ + + + + + + + + + + + + + + + + + + @@ -4438,6 +4342,24 @@ + + + + + + + + + + + + + + + + + + @@ -4545,19 +4467,13 @@ - - - - - - - - - - {path}]]> + - {path}]]> + + + + @@ -4705,15 +4621,6 @@ - - - - - - - - - @@ -5032,15 +4939,6 @@ - - - - - - - - - @@ -5077,6 +4975,15 @@ + + + + + + + + + @@ -5167,15 +5074,6 @@ - - - - - - - - - @@ -5251,15 +5149,6 @@ - - - - - - - - - @@ -5329,15 +5218,6 @@ - - - - - - - - - @@ -5421,10 +5301,13 @@ - + - + + + + @@ -5473,29 +5356,11 @@ - + - + - - - - - - - - - - - - - - - - - - - + @@ -5587,15 +5452,6 @@ - - - - - - - - - @@ -5644,27 +5500,6 @@ - - - - - - - - - - - - - - - - - - - - - @@ -5692,50 +5527,20 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - + - + - + - + - + @@ -5761,12 +5566,15 @@ - + - + - + + + + @@ -5794,15 +5602,6 @@ - - - - - - - - - @@ -5902,29 +5701,35 @@ - + - + - + + + + - + - + - + + + + - + - + - + @@ -5938,11 +5743,29 @@ - + + + + + + + + + + + + + + + + + + + - + - + @@ -6112,6 +5935,15 @@ + + + + + + + + + @@ -6219,10 +6051,13 @@ - + - + + + + @@ -6523,24 +6358,6 @@ - - - - - - - - - - - - - - - - - - @@ -6553,18 +6370,6 @@ - - - - - - - - - - - - @@ -7090,15 +6895,6 @@ - - - - - - - - - @@ -7258,15 +7054,6 @@ - - - - - - - - - @@ -7279,6 +7066,15 @@ + + + + + + + + + @@ -7639,11 +7435,11 @@ - + - + - + @@ -7816,15 +7612,6 @@ - - - - - - - - - @@ -7897,6 +7684,24 @@ + + + + + + + + + + + + + + + + + + @@ -8221,47 +8026,50 @@ - + - + - + - + - + - + - + - + - + - + - + + + + - + - + - + @@ -8374,6 +8182,15 @@ + + + + + + + + + @@ -8458,6 +8275,15 @@ + + + + + + + + + @@ -8485,18 +8311,6 @@ - - - - - - - - - - - - @@ -8590,15 +8404,6 @@ - - - - - - - - - @@ -8653,18 +8458,6 @@ - - - - - - - - - - - - @@ -9043,15 +8836,6 @@ - - - - - - - - - @@ -9223,6 +9007,15 @@ + + + + + + + + + @@ -9235,242 +9028,302 @@ - + - + - + - + - + - + - + - + - + - + - + - + + + + - + - + - + + + + - + - + + + + - + - + + + + - + - + + + + - + + + + + + + + + + + + + - + - + - + + + + - + - + - + + + + - + - + + + + - + - + - + + + + - + - + + + + - + - + - + + + + - + - + + + + - + - + - + - + - + - + - + - + - + - + - + - + + + + - + - + - + - + - + - + - + - + - + - + + + + - + - + - + + + + - + - + - + + + + - + - + - + @@ -9484,51 +9337,60 @@ - + - + - + + + + - + - + - + + + + - + - + - + + + + - + - + - + - - - - + - + - + + + + @@ -9552,60 +9414,78 @@ - + - + + + + - + - + + + + - + - + - + + + + - + - + - + - + - + - + - + + + + + + + + + + - + - + - + - + @@ -9694,15 +9574,6 @@ - - - - - - - - - @@ -9970,11 +9841,11 @@ - + - + - + @@ -9988,15 +9859,6 @@ - - - - - - - - - @@ -10069,6 +9931,15 @@ + + + + + + + + + @@ -10153,18 +10024,6 @@ - - - - - - - - - - - - @@ -10183,15 +10042,6 @@ - - - - - - - - - @@ -10546,7 +10396,7 @@ - + @@ -10582,15 +10432,6 @@ - - - - - - - - - @@ -10762,15 +10603,6 @@ - - - - - - - - - @@ -10780,24 +10612,6 @@ - - - - - - - - - - - - - - - - - - @@ -10834,15 +10648,6 @@ - - - - - - - - - @@ -10902,12 +10707,12 @@ - + - + - + @@ -10930,15 +10735,6 @@ - - - - - - - - - @@ -10950,10 +10746,13 @@ - + - + + + + @@ -11092,15 +10891,6 @@ - - - - - - - - - is not supported in CDATA block]]> @@ -11257,56 +11047,41 @@ - + - + - + - + - + - + - + - + - + - + - - - - + - + - - - - - - - - - - - - - + @@ -11338,15 +11113,6 @@ - - - - - - - - - @@ -11422,15 +11188,6 @@ - - - - - - - - - @@ -11560,12 +11317,24 @@ + + + + + + + + + - + - + + + + @@ -11596,27 +11365,45 @@ - + - =" must be a non-negative integer]]> + =" constraint to {package_name} names version {version} which does not exist in the version database. All versions must exist in the version database to be interpreted by vcpkg.]]> - =" должен быть неотрицательным целым числом]]> + =" версии {version} имен {package_name}, которая не существует в базе данных версий. Все версии должны существовать в базе данных версий для интерпретации с помощью vcpkg.]]> - - =" must be a positive integer]]> - - + - + - + + + + + + + + + + + + + =" must be a non-negative integer]]> + + =" должен быть неотрицательным целым числом]]> + + + =" must be a positive integer]]> + + + + @@ -11635,11 +11422,32 @@ - + + + + + + + + + + + + + + + + + + + + + + - + - + @@ -11655,10 +11463,13 @@ - + - + + + + @@ -11785,15 +11596,66 @@ - + - + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - @@ -11815,29 +11677,101 @@ - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - + - + - + - + - + - + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -11872,15 +11806,6 @@ - - - - - - - - - @@ -11959,20 +11884,11 @@ - - - - - - - - - - + - + - + @@ -12169,11 +12085,11 @@ - + - + - + diff --git a/src/localization/tr/messages.json.lcl b/src/localization/tr/messages.json.lcl index ddabc16524..0db35aacc2 100644 --- a/src/localization/tr/messages.json.lcl +++ b/src/localization/tr/messages.json.lcl @@ -523,18 +523,6 @@ - - - - - - - - - - - - @@ -601,15 +589,6 @@ - - - - - - - - - @@ -646,11 +625,11 @@ - + - + - + @@ -751,23 +730,20 @@ - + - + - + - - - - + - + - + @@ -882,10 +858,13 @@ - + - + + + + @@ -1144,15 +1123,6 @@ - - - - - - - - - @@ -1222,18 +1192,6 @@ - - - - - - - - - - - - @@ -1282,18 +1240,6 @@ - - - - - - - - - - - - @@ -1417,6 +1363,33 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -1426,6 +1399,15 @@ + + + + + + + + + @@ -1447,15 +1429,6 @@ - - - - - - - - - @@ -1537,15 +1510,6 @@ - - - - - - - - - @@ -1557,18 +1521,21 @@ - + - + + + + - + - + - + @@ -1587,10 +1554,13 @@ - + - + + + + @@ -1756,18 +1726,6 @@ - - - - - - - - - - - - @@ -1828,21 +1786,15 @@ - - - - - - - - - - + - + - + + + + @@ -1900,15 +1852,6 @@ - - - - - - - - - @@ -2080,24 +2023,6 @@ - - - - - - - - - - - - - - - - - - @@ -2440,24 +2365,6 @@ - - - ]]> - - ]]> - - - - - - - - - - - - - ]]> @@ -2503,15 +2410,6 @@ - - - - - - - - - ]]> @@ -2736,10 +2634,13 @@ - [--nuget]5D; [--directory=out_dir]5D;]]> + [--nuget]5D; [--output-dir=out_dir]5D;]]> - [--nuget]5D; [--directory=out_dir]5D;]]> + [--nuget]5D; [--output-dir=out_dir]5D;]]> + + [--nuget]5D; [--directory=out_dir]5D;]]> + @@ -3891,16 +3792,25 @@ - + - + - + + + + + + + + + + @@ -3913,6 +3823,15 @@ + + + + + + + + + @@ -3988,15 +3907,6 @@ - - - - - - - - - @@ -4024,21 +3934,27 @@ - + - + - + + + + - + - + + + + @@ -4177,15 +4093,6 @@ - - - - - - - - - @@ -4204,23 +4111,20 @@ - + - + - + - - - - + - + - + @@ -4246,15 +4150,6 @@ - - - - - - - - - @@ -4336,15 +4231,6 @@ - - - - - - - - - @@ -4417,6 +4303,24 @@ + + + + + + + + + + + + + + + + + + @@ -4438,6 +4342,24 @@ + + + + + + + + + + + + + + + + + + @@ -4545,19 +4467,13 @@ - - - - - - - - - - {path}]]> + - {path}]]> + + + + @@ -4705,15 +4621,6 @@ - - - - - - - - - @@ -5032,15 +4939,6 @@ - - - - - - - - - @@ -5077,6 +4975,15 @@ + + + + + + + + + @@ -5167,15 +5074,6 @@ - - - - - - - - - @@ -5251,15 +5149,6 @@ - - - - - - - - - @@ -5329,15 +5218,6 @@ - - - - - - - - - @@ -5421,10 +5301,13 @@ - + - + + + + @@ -5473,34 +5356,16 @@ - + - + - + - - - - - - - - - - - - - - - - - - - + @@ -5587,15 +5452,6 @@ - - - - - - - - - @@ -5644,27 +5500,6 @@ - - - - - - - - - - - - - - - - - - - - - @@ -5692,50 +5527,20 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - + - + - + - + - + @@ -5761,12 +5566,15 @@ - + - + - + + + + @@ -5794,15 +5602,6 @@ - - - - - - - - - @@ -5902,29 +5701,35 @@ - + - + - + + + + - + - + - + + + + - + - + - + @@ -5938,11 +5743,29 @@ - + + + + + + + + + + + + + + + + + + + - + - + @@ -6112,6 +5935,15 @@ + + + + + + + + + @@ -6219,10 +6051,13 @@ - + + + + @@ -6523,24 +6358,6 @@ - - - - - - - - - - - - - - - - - - @@ -6553,18 +6370,6 @@ - - - - - - - - - - - - @@ -7090,15 +6895,6 @@ - - - - - - - - - @@ -7258,15 +7054,6 @@ - - - - - - - - - @@ -7279,6 +7066,15 @@ + + + + + + + + + @@ -7639,11 +7435,11 @@ - + - + - + @@ -7816,15 +7612,6 @@ - - - - - - - - - @@ -7897,6 +7684,24 @@ + + + + + + + + + + + + + + + + + + @@ -8221,47 +8026,50 @@ - + - + - + - + - + - + - + - + - + - + - + + + + - + - + - + @@ -8374,6 +8182,15 @@ + + + + + + + + + @@ -8458,6 +8275,15 @@ + + + + + + + + + @@ -8485,18 +8311,6 @@ - - - - - - - - - - - - @@ -8590,15 +8404,6 @@ - - - - - - - - - @@ -8653,18 +8458,6 @@ - - - - - - - - - - - - @@ -9043,15 +8836,6 @@ - - - - - - - - - @@ -9223,6 +9007,15 @@ + + + + + + + + + @@ -9235,242 +9028,302 @@ - + - + - + - + - + - + - + - + - + - + - + - + + + + - + - + - + + + + - + - + + + + - + - + + + + - + - + + + + - + + + + + + + + + + + + + - + - + - + + + + - + - + - + + + + - + - + + + + - + - + - + + + + - + - + + + + - + - + - + + + + - + - + + + + - + - + - + - + - + - + - + - + - + - + - + - + + + + - + - + - + - + - + - + - + - + - + - + + + + - + - + - + - + + + + - + - + - + + + + - + - + - + @@ -9484,51 +9337,60 @@ - + - + - + + + + - + - + - + + + + - + - + - + + + + - + - + - + - - - - + - + - + + + + @@ -9552,60 +9414,78 @@ - + - + + + + - + - + + + + - + - + - + + + + - + - + - + - + - + - + - + + + + + + + + + + - + - + - + - + @@ -9694,15 +9574,6 @@ - - - - - - - - - @@ -9970,11 +9841,11 @@ - + - + - + @@ -9988,15 +9859,6 @@ - - - - - - - - - @@ -10069,6 +9931,15 @@ + + + + + + + + + @@ -10153,18 +10024,6 @@ - - - - - - - - - - - - @@ -10183,15 +10042,6 @@ - - - - - - - - - @@ -10546,7 +10396,7 @@ - + @@ -10582,15 +10432,6 @@ - - - - - - - - - @@ -10762,15 +10603,6 @@ - - - - - - - - - @@ -10780,24 +10612,6 @@ - - - - - - - - - - - - - - - - - - @@ -10834,15 +10648,6 @@ - - - - - - - - - @@ -10902,12 +10707,12 @@ - + - + - + @@ -10930,15 +10735,6 @@ - - - - - - - - - @@ -10950,10 +10746,13 @@ - + - + + + + @@ -11092,15 +10891,6 @@ - - - - - - - - - is not supported in CDATA block]]> @@ -11257,56 +11047,41 @@ - + - + - + - + - + - + - + - + - + - + - - - - + - + - - - - - - - - - - - - - + @@ -11338,15 +11113,6 @@ - - - - - - - - - @@ -11422,15 +11188,6 @@ - - - - - - - - - @@ -11560,12 +11317,24 @@ + + + + + + + + + - + - + + + + @@ -11596,27 +11365,45 @@ - + - =" must be a non-negative integer]]> + =" constraint to {package_name} names version {version} which does not exist in the version database. All versions must exist in the version database to be interpreted by vcpkg.]]> - =" içinde ('#' karakterinden sonra gelen) port-version pozitif bir tamsayı olmalıdır]]> + + + + + + + + + + - - =" must be a positive integer]]> - - + - + - + + + + =" must be a non-negative integer]]> + + =" içinde ('#' karakterinden sonra gelen) port-version pozitif bir tamsayı olmalıdır]]> + + + =" must be a positive integer]]> + + + + @@ -11635,11 +11422,32 @@ - + - + - + + + + + + + + + + + + + + + + + + + + + + @@ -11655,10 +11463,13 @@ - + - + + + + @@ -11785,15 +11596,66 @@ - + - + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - @@ -11815,29 +11677,101 @@ - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - + - + - + - + - + - + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -11872,15 +11806,6 @@ - - - - - - - - - @@ -11959,20 +11884,11 @@ - - - - - - - - - - + - + - + @@ -12169,11 +12085,11 @@ - + - + - + diff --git a/src/localization/zh-Hans/messages.json.lcl b/src/localization/zh-Hans/messages.json.lcl index abc6f80aa9..194eb22379 100644 --- a/src/localization/zh-Hans/messages.json.lcl +++ b/src/localization/zh-Hans/messages.json.lcl @@ -523,18 +523,6 @@ - - - - - - - - - - - - @@ -601,15 +589,6 @@ - - - - - - - - - @@ -646,11 +625,11 @@ - + - + - + @@ -751,23 +730,20 @@ - + - + - + - - - - + - + - + @@ -882,10 +858,13 @@ - + - + + + + @@ -1144,15 +1123,6 @@ - - - - - - - - - @@ -1222,18 +1192,6 @@ - - - - - - - - - - - - @@ -1282,18 +1240,6 @@ - - - - - - - - - - - - @@ -1417,6 +1363,33 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -1426,6 +1399,15 @@ + + + + + + + + + @@ -1447,15 +1429,6 @@ - - - - - - - - - @@ -1537,15 +1510,6 @@ - - - - - - - - - @@ -1557,18 +1521,21 @@ - + - + + + + - + - + - + @@ -1587,10 +1554,13 @@ - + - + + + + @@ -1756,18 +1726,6 @@ - - - - - - - - - - - - @@ -1828,21 +1786,15 @@ - - - - - - - - - - + - + - + + + + @@ -1900,15 +1852,6 @@ - - - - - - - - - @@ -2080,24 +2023,6 @@ - - - - - - - - - - - - - - - - - - @@ -2440,24 +2365,6 @@ - - - ]]> - - ]]> - - - - - - - - - - - - - ]]> @@ -2503,15 +2410,6 @@ - - - - - - - - - ]]> @@ -2736,10 +2634,13 @@ - [--nuget]5D; [--directory=out_dir]5D;]]> + [--nuget]5D; [--output-dir=out_dir]5D;]]> - [--nuget]5D; [--directory=out_dir]5D;]]> + [--nuget]5D; [--output-dir=out_dir]5D;]]> + + [--nuget]5D; [--directory=out_dir]5D;]]> + @@ -3891,16 +3792,25 @@ - + - + - + + + + + + + + + + @@ -3913,6 +3823,15 @@ + + + + + + + + + @@ -3988,15 +3907,6 @@ - - - - - - - - - @@ -4024,21 +3934,27 @@ - + - + - + + + + - + - + + + + @@ -4177,15 +4093,6 @@ - - - - - - - - - @@ -4204,23 +4111,20 @@ - + - + - + - - - - + - + - + @@ -4246,15 +4150,6 @@ - - - - - - - - - @@ -4336,15 +4231,6 @@ - - - - - - - - - @@ -4417,6 +4303,24 @@ + + + + + + + + + + + + + + + + + + @@ -4438,6 +4342,24 @@ + + + + + + + + + + + + + + + + + + @@ -4545,19 +4467,13 @@ - - - - - - - - - - {path}]]> + - {path}]]> + + + + @@ -4705,15 +4621,6 @@ - - - - - - - - - @@ -5032,15 +4939,6 @@ - - - - - - - - - @@ -5077,6 +4975,15 @@ + + + + + + + + + @@ -5167,15 +5074,6 @@ - - - - - - - - - @@ -5251,15 +5149,6 @@ - - - - - - - - - @@ -5329,15 +5218,6 @@ - - - - - - - - - @@ -5421,10 +5301,13 @@ - + - + + + + @@ -5473,34 +5356,16 @@ - + - + - + - - - - - - - - - - - - - - - - - - - + @@ -5587,15 +5452,6 @@ - - - - - - - - - @@ -5644,27 +5500,6 @@ - - - - - - - - - - - - - - - - - - - - - @@ -5692,50 +5527,20 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - + - + - + - + - + @@ -5761,12 +5566,15 @@ - + - + - + + + + @@ -5794,15 +5602,6 @@ - - - - - - - - - @@ -5902,29 +5701,35 @@ - + - + - + + + + - + - + - + + + + - + - + - + @@ -5938,11 +5743,29 @@ - + + + + + + + + + + + + + + + + + + + - + - + @@ -6112,6 +5935,15 @@ + + + + + + + + + @@ -6219,10 +6051,13 @@ - + + + + @@ -6523,24 +6358,6 @@ - - - - - - - - - - - - - - - - - - @@ -6553,18 +6370,6 @@ - - - - - - - - - - - - @@ -7090,15 +6895,6 @@ - - - - - - - - - @@ -7258,15 +7054,6 @@ - - - - - - - - - @@ -7279,6 +7066,15 @@ + + + + + + + + + @@ -7639,11 +7435,11 @@ - + - + - + @@ -7816,15 +7612,6 @@ - - - - - - - - - @@ -7897,6 +7684,24 @@ + + + + + + + + + + + + + + + + + + @@ -8221,47 +8026,50 @@ - + - + - + - + - + - + - + - + - + - + - + + + + - + - + - + @@ -8374,6 +8182,15 @@ + + + + + + + + + @@ -8458,6 +8275,15 @@ + + + + + + + + + @@ -8485,18 +8311,6 @@ - - - - - - - - - - - - @@ -8590,15 +8404,6 @@ - - - - - - - - - @@ -8653,18 +8458,6 @@ - - - - - - - - - - - - @@ -9043,15 +8836,6 @@ - - - - - - - - - @@ -9223,6 +9007,15 @@ + + + + + + + + + @@ -9235,242 +9028,302 @@ - + - + - + - + - + - + - + - + - + - + - + - + + + + - + - + - + + + + - + - + + + + - + - + + + + - + - + + + + - + + + + + + + + + + + + + - + - + - + + + + - + - + - + + + + - + - + + + + - + - + - + + + + - + - + + + + - + - + - + + + + - + - + + + + - + - + - + - + - + - + - + - + - + - + - + - + + + + - + - + - + - + - + - + - + - + - + - + + + + - + - + - + - + + + + - + - + - + + + + - + - + - + @@ -9484,51 +9337,60 @@ - + - + - + + + + - + - + - + + + + - + - + - + + + + - + - + - + - - - - + - + - + + + + @@ -9552,60 +9414,78 @@ - + - + + + + - + - + + + + - + - + - + + + + - + - + - + - + - + - + - + + + + + + + + + + - + - + - + - + @@ -9694,15 +9574,6 @@ - - - - - - - - - @@ -9970,11 +9841,11 @@ - + - + - + @@ -9988,15 +9859,6 @@ - - - - - - - - - @@ -10069,6 +9931,15 @@ + + + + + + + + + @@ -10153,18 +10024,6 @@ - - - - - - - - - - - - @@ -10183,15 +10042,6 @@ - - - - - - - - - @@ -10546,7 +10396,7 @@ - + @@ -10582,15 +10432,6 @@ - - - - - - - - - @@ -10762,15 +10603,6 @@ - - - - - - - - - @@ -10780,24 +10612,6 @@ - - - - - - - - - - - - - - - - - - @@ -10834,15 +10648,6 @@ - - - - - - - - - @@ -10902,12 +10707,12 @@ - + - + - + @@ -10930,15 +10735,6 @@ - - - - - - - - - @@ -10950,10 +10746,13 @@ - + - + + + + @@ -11092,15 +10891,6 @@ - - - - - - - - - is not supported in CDATA block]]> @@ -11257,56 +11047,41 @@ - + - + - + - + - + - + - + - + - + - + - - - - + - + - - - - - - - - - - - - - + @@ -11338,15 +11113,6 @@ - - - - - - - - - @@ -11422,15 +11188,6 @@ - - - - - - - - - @@ -11560,12 +11317,24 @@ + + + + + + + + + - + - + + + + @@ -11596,27 +11365,45 @@ - + - =" must be a non-negative integer]]> + =" constraint to {package_name} names version {version} which does not exist in the version database. All versions must exist in the version database to be interpreted by vcpkg.]]> - =” 中的 port-version (在 “#” 之后)必须为负整数]]> + =" 约束。所有版本都必须存在于版本数据库中才能由 vcpkg 进行解释。]]> + + + + + + + + + - - =" must be a positive integer]]> - - + - + - + + + + =" must be a non-negative integer]]> + + =” 中的 port-version (在 “#” 之后)必须为负整数]]> + + + =" must be a positive integer]]> + + + + @@ -11635,11 +11422,32 @@ - + - + - + + + + + + + + + + + + + + + + + + + + + + @@ -11655,10 +11463,13 @@ - + - + + + + @@ -11785,15 +11596,66 @@ - + - + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - @@ -11815,29 +11677,101 @@ - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - + - + - + - + - + - + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -11872,15 +11806,6 @@ - - - - - - - - - @@ -11959,20 +11884,11 @@ - - - - - - - - - - + - + - + @@ -12169,11 +12085,11 @@ - + - + - + diff --git a/src/localization/zh-Hant/messages.json.lcl b/src/localization/zh-Hant/messages.json.lcl index 6c1e77022d..2234a3a2c1 100644 --- a/src/localization/zh-Hant/messages.json.lcl +++ b/src/localization/zh-Hant/messages.json.lcl @@ -523,18 +523,6 @@ - - - - - - - - - - - - @@ -601,15 +589,6 @@ - - - - - - - - - @@ -646,11 +625,11 @@ - + - + - + @@ -751,23 +730,20 @@ - + - + - + - - - - + - + - + @@ -882,10 +858,13 @@ - + - + + + + @@ -1144,15 +1123,6 @@ - - - - - - - - - @@ -1222,18 +1192,6 @@ - - - - - - - - - - - - @@ -1282,18 +1240,6 @@ - - - - - - - - - - - - @@ -1417,6 +1363,33 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -1426,6 +1399,15 @@ + + + + + + + + + @@ -1447,15 +1429,6 @@ - - - - - - - - - @@ -1537,15 +1510,6 @@ - - - - - - - - - @@ -1557,18 +1521,21 @@ - + - + + + + - + - + - + @@ -1587,10 +1554,13 @@ - + - + + + + @@ -1756,18 +1726,6 @@ - - - - - - - - - - - - @@ -1828,21 +1786,15 @@ - - - - - - - - - - + - + - + + + + @@ -1900,15 +1852,6 @@ - - - - - - - - - @@ -2080,24 +2023,6 @@ - - - - - - - - - - - - - - - - - - @@ -2440,24 +2365,6 @@ - - - ]]> - - ]]> - - - - - - - - - - - - - ]]> @@ -2503,15 +2410,6 @@ - - - - - - - - - ]]> @@ -2736,10 +2634,13 @@ - [--nuget]5D; [--directory=out_dir]5D;]]> + [--nuget]5D; [--output-dir=out_dir]5D;]]> - [--nuget]5D; [--directory=out_dir]5D;]]> + [--nuget]5D; [--output-dir=out_dir]5D;]]> + + [--nuget]5D; [--directory=out_dir]5D;]]> + @@ -3891,16 +3792,25 @@ - + - + - + + + + + + + + + + @@ -3913,6 +3823,15 @@ + + + + + + + + + @@ -3988,15 +3907,6 @@ - - - - - - - - - @@ -4024,21 +3934,27 @@ - + - + - + + + + - + - + + + + @@ -4177,15 +4093,6 @@ - - - - - - - - - @@ -4204,23 +4111,20 @@ - + - + - + - - - - + - + - + @@ -4246,15 +4150,6 @@ - - - - - - - - - @@ -4336,15 +4231,6 @@ - - - - - - - - - @@ -4417,6 +4303,24 @@ + + + + + + + + + + + + + + + + + + @@ -4438,6 +4342,24 @@ + + + + + + + + + + + + + + + + + + @@ -4545,19 +4467,13 @@ - - - - - - - - - - {path}]]> + - {path}]]> + + + + @@ -4705,15 +4621,6 @@ - - - - - - - - - @@ -5032,15 +4939,6 @@ - - - - - - - - - @@ -5077,6 +4975,15 @@ + + + + + + + + + @@ -5167,15 +5074,6 @@ - - - - - - - - - @@ -5251,15 +5149,6 @@ - - - - - - - - - @@ -5329,15 +5218,6 @@ - - - - - - - - - @@ -5421,10 +5301,13 @@ - + - + + + + @@ -5473,15 +5356,6 @@ - - - - - - - - - @@ -5491,15 +5365,6 @@ - - - - - - - - - @@ -5587,15 +5452,6 @@ - - - - - - - - - @@ -5644,27 +5500,6 @@ - - - - - - - - - - - - - - - - - - - - - @@ -5692,50 +5527,20 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - + - + - + - + - + @@ -5761,12 +5566,15 @@ - + - + - + + + + @@ -5794,15 +5602,6 @@ - - - - - - - - - @@ -5902,29 +5701,35 @@ - + - + - + + + + - + - + - + + + + - + - + - + @@ -5938,11 +5743,29 @@ - + + + + + + + + + + + + + + + + + + + - + - + @@ -6112,6 +5935,15 @@ + + + + + + + + + @@ -6219,10 +6051,13 @@ - + - + + + + @@ -6523,24 +6358,6 @@ - - - - - - - - - - - - - - - - - - @@ -6553,18 +6370,6 @@ - - - - - - - - - - - - @@ -7090,15 +6895,6 @@ - - - - - - - - - @@ -7258,15 +7054,6 @@ - - - - - - - - - @@ -7279,6 +7066,15 @@ + + + + + + + + + @@ -7639,11 +7435,11 @@ - + - + - + @@ -7816,15 +7612,6 @@ - - - - - - - - - @@ -7897,6 +7684,24 @@ + + + + + + + + + + + + + + + + + + @@ -8221,47 +8026,50 @@ - + - + - + - + - + - + - + - + - + - + - + + + + - + - + - + @@ -8374,6 +8182,15 @@ + + + + + + + + + @@ -8458,6 +8275,15 @@ + + + + + + + + + @@ -8485,18 +8311,6 @@ - - - - - - - - - - - - @@ -8590,15 +8404,6 @@ - - - - - - - - - @@ -8653,18 +8458,6 @@ - - - - - - - - - - - - @@ -9043,15 +8836,6 @@ - - - - - - - - - @@ -9223,6 +9007,15 @@ + + + + + + + + + @@ -9235,242 +9028,302 @@ - + - + - + - + - + - + - + - + - + - + - + - + + + + - + - + - + + + + - + - + + + + - + - + + + + - + - + + + + - + + + + + + + + + + + + + - + - + - + + + + - + - + - + + + + - + - + + + + - + - + - + + + + - + - + + + + - + - + - + + + + - + - + + + + - + - + - + - + - + - + - + - + - + - + - + - + + + + - + - + - + - + - + - + - + - + - + - + + + + - + - + - + + + + - + - + - + + + + - + - + - + @@ -9484,51 +9337,60 @@ - + - + - + + + + - + - + - + - + + + + - + - + - + + + + - + - + - + - - - - + - + - + + + + @@ -9552,60 +9414,78 @@ - + - + + + + - + - + + + + - + - + - + + + + - + - + - + - + - + + + + + + + + + + - + - + - + - + - + - + @@ -9694,15 +9574,6 @@ - - - - - - - - - @@ -9970,11 +9841,11 @@ - + - + - + @@ -9988,15 +9859,6 @@ - - - - - - - - - @@ -10069,6 +9931,15 @@ + + + + + + + + + @@ -10153,18 +10024,6 @@ - - - - - - - - - - - - @@ -10183,15 +10042,6 @@ - - - - - - - - - @@ -10546,7 +10396,7 @@ - + @@ -10582,15 +10432,6 @@ - - - - - - - - - @@ -10762,15 +10603,6 @@ - - - - - - - - - @@ -10780,24 +10612,6 @@ - - - - - - - - - - - - - - - - - - @@ -10834,15 +10648,6 @@ - - - - - - - - - @@ -10902,12 +10707,12 @@ - + - + - + @@ -10930,15 +10735,6 @@ - - - - - - - - - @@ -10950,10 +10746,13 @@ - + - + + + + @@ -11092,15 +10891,6 @@ - - - - - - - - - is not supported in CDATA block]]> @@ -11257,56 +11047,41 @@ - + - + - + - + - - - - - - - - - - + - + - + - - - - + - + - + - - - - + - + - + @@ -11338,15 +11113,6 @@ - - - - - - - - - @@ -11422,15 +11188,6 @@ - - - - - - - - - @@ -11560,12 +11317,24 @@ + + + + + + + + + - + - + + + + @@ -11596,27 +11365,45 @@ - + - =" must be a non-negative integer]]> + =" constraint to {package_name} names version {version} which does not exist in the version database. All versions must exist in the version database to be interpreted by vcpkg.]]> - =" 中的 port-version ('#' 之後) 必須是非負整數]]> + =" 限制式覆寫不存在於版本資料庫中。所有版本都必須存在於版本資料庫中,才能由 vcpkg 進行解譯。]]> - - =" must be a positive integer]]> - - + - + - + + + + + + + + + + + + + =" must be a non-negative integer]]> + + =" 中的 port-version ('#' 之後) 必須是非負整數]]> + + + =" must be a positive integer]]> + + + + @@ -11635,11 +11422,32 @@ - + + + + + + + + + + + + + - + - + + + + + + + + + + @@ -11655,10 +11463,13 @@ - + - + + + + @@ -11785,15 +11596,66 @@ - + - + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - @@ -11815,29 +11677,101 @@ - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - + - + - + - + - + - + - + @@ -11872,15 +11806,6 @@ - - - - - - - - - @@ -11959,20 +11884,11 @@ - - - - - - - - - - + - + - + @@ -12169,11 +12085,11 @@ - + - + - + diff --git a/src/vcpkg-in-development.ps1 b/src/vcpkg-in-development.ps1 index 25df82365e..5259477b07 100644 --- a/src/vcpkg-in-development.ps1 +++ b/src/vcpkg-in-development.ps1 @@ -22,5 +22,7 @@ if (Test-Path $env:Z_VCPKG_POSTSCRIPT) { iex $postscr } - Remove-Item -Force -ea 0 $env:Z_VCPKG_POSTSCRIPT,env:Z_VCPKG_POSTSCRIPT + Remove-Item -Force -ea 0 $env:Z_VCPKG_POSTSCRIPT } + +Remove-Item env:Z_VCPKG_POSTSCRIPT diff --git a/src/vcpkg-test/binarycaching.cpp b/src/vcpkg-test/binarycaching.cpp index 94646b658e..47e0de506e 100644 --- a/src/vcpkg-test/binarycaching.cpp +++ b/src/vcpkg-test/binarycaching.cpp @@ -221,7 +221,8 @@ Build-Depends: bzip scfl, "test_packages_root", RequestType::USER_REQUESTED, - Test::ARM_UWP, + UseHeadVersion::No, + Editable::No, {{"a", {}}, {"b", {}}}, {}, {}); @@ -347,7 +348,8 @@ Version: 1.5 scfl, "test_packages_root", RequestType::USER_REQUESTED, - Test::ARM_UWP, + UseHeadVersion::No, + Editable::No, std::map>{}, std::vector{}, std::vector{}); @@ -424,7 +426,8 @@ Description: a spiffy compression library wrapper scfl, "test_packages_root", RequestType::USER_REQUESTED, - Test::ARM64_WINDOWS, + UseHeadVersion::No, + Editable::No, std::map>{}, std::vector{}, std::vector{}); @@ -452,7 +455,8 @@ Description: a spiffy compression library wrapper scfl2, "test_packages_root", RequestType::USER_REQUESTED, - Test::ARM64_WINDOWS, + UseHeadVersion::No, + Editable::No, std::map>{}, std::vector{}, std::vector{}); diff --git a/src/vcpkg-test/configparser.cpp b/src/vcpkg-test/configparser.cpp index 05cc8470ee..5e8453ef65 100644 --- a/src/vcpkg-test/configparser.cpp +++ b/src/vcpkg-test/configparser.cpp @@ -531,6 +531,35 @@ TEST_CASE ("BinaryConfigParser GCS provider", "[binaryconfigparser]") } } +TEST_CASE ("BinaryConfigParser HTTP provider", "[binaryconfigparser]") +{ + { + auto parsed = parse_binary_provider_configs("http,http://example.org/", {}); + auto state = parsed.value_or_exit(VCPKG_LINE_INFO); + + REQUIRE(state.url_templates_to_get.size() == 1); + REQUIRE(state.url_templates_to_get[0].url_template == "http://example.org/{sha}.zip"); + } + { + auto parsed = parse_binary_provider_configs("http,http://example.org", {}); + auto state = parsed.value_or_exit(VCPKG_LINE_INFO); + + REQUIRE(state.url_templates_to_get.size() == 1); + REQUIRE(state.url_templates_to_get[0].url_template == "http://example.org/{sha}.zip"); + } + { + auto parsed = parse_binary_provider_configs("http,http://example.org/{triplet}/{sha}", {}); + auto state = parsed.value_or_exit(VCPKG_LINE_INFO); + + REQUIRE(state.url_templates_to_get.size() == 1); + REQUIRE(state.url_templates_to_get[0].url_template == "http://example.org/{triplet}/{sha}"); + } + { + auto parsed = parse_binary_provider_configs("http,http://example.org/{triplet}", {}); + REQUIRE(!parsed.has_value()); + } +} + TEST_CASE ("AssetConfigParser azurl provider", "[assetconfigparser]") { CHECK(parse_download_configuration({})); diff --git a/src/vcpkg-test/dependencies.cpp b/src/vcpkg-test/dependencies.cpp index 54d6da2898..4a5e3457e1 100644 --- a/src/vcpkg-test/dependencies.cpp +++ b/src/vcpkg-test/dependencies.cpp @@ -4,6 +4,7 @@ #include #include +#include #include #include #include @@ -219,14 +220,15 @@ static ExpectedL create_versioned_install_plan(const IVersionedPortf const std::vector& overrides, const PackageSpec& toplevel) { - return create_versioned_install_plan(provider, - bprovider, - s_empty_mock_overlay, - var_provider, - deps, - overrides, - toplevel, - {Test::ARM_UWP, "pkgs", UnsupportedPortAction::Error}); + return create_versioned_install_plan( + provider, + bprovider, + s_empty_mock_overlay, + var_provider, + deps, + overrides, + toplevel, + {nullptr, Test::ARM_UWP, "pkgs", UnsupportedPortAction::Error, UseHeadVersion::No, Editable::No}); } static ExpectedL create_versioned_install_plan(const IVersionedPortfileProvider& provider, @@ -237,14 +239,15 @@ static ExpectedL create_versioned_install_plan(const IVersionedPortf const std::vector& overrides, const PackageSpec& toplevel) { - return create_versioned_install_plan(provider, - bprovider, - oprovider, - var_provider, - deps, - overrides, - toplevel, - {Test::ARM_UWP, "pkgs", UnsupportedPortAction::Error}); + return create_versioned_install_plan( + provider, + bprovider, + oprovider, + var_provider, + deps, + overrides, + toplevel, + {nullptr, Test::ARM_UWP, "pkgs", UnsupportedPortAction::Error, UseHeadVersion::No, Editable::No}); } TEST_CASE ("basic version install single", "[versionplan]") @@ -476,7 +479,8 @@ This can be resolved by adding an explicit override to the preferred version. Fo "version": "2with\"quotes" } ] -See `vcpkg help versioning` or https://learn.microsoft.com/vcpkg/users/versioning for more information.)"); +See `vcpkg help versioning` or )" + + docs::troubleshoot_versioning_url + R"( for more information.)"); } TEST_CASE ("version install string port version", "[versionplan]") @@ -1115,7 +1119,8 @@ This can be resolved by adding an explicit override to the preferred version. Fo "version": "1.0.0" } ] -See `vcpkg help versioning` or https://learn.microsoft.com/vcpkg/users/versioning for more information.)"); +See `vcpkg help versioning` or )" + + docs::troubleshoot_versioning_url + R"( for more information.)"); } SECTION ("higher baseline") { @@ -1146,7 +1151,8 @@ This can be resolved by adding an explicit override to the preferred version. Fo "version": "1.0.2" } ] -See `vcpkg help versioning` or https://learn.microsoft.com/vcpkg/users/versioning for more information.)"); +See `vcpkg help versioning` or )" + + docs::troubleshoot_versioning_url + R"( for more information.)"); } } @@ -1239,7 +1245,8 @@ This can be resolved by adding an explicit override to the preferred version. Fo "version": "1" } ] -See `vcpkg help versioning` or https://learn.microsoft.com/vcpkg/users/versioning for more information.)"); +See `vcpkg help versioning` or )" + + docs::troubleshoot_versioning_url + R"( for more information.)"); } SECTION ("lower baseline") { @@ -2366,23 +2373,34 @@ TEST_CASE ("formatting plan 1", "[dependencies]") const Path pr = "packages_root"; InstallPlanAction install_a( - {"a", Test::X64_OSX}, scfl_a, pr, RequestType::AUTO_SELECTED, Test::X64_ANDROID, {}, {}, {}); + {"a", Test::X64_OSX}, scfl_a, pr, RequestType::AUTO_SELECTED, UseHeadVersion::No, Editable::No, {}, {}, {}); REQUIRE(install_a.display_name() == "a:x64-osx@1"); - InstallPlanAction install_b( - {"b", Test::X64_OSX}, scfl_b, pr, RequestType::AUTO_SELECTED, Test::X64_ANDROID, {{"1", {}}}, {}, {}); + InstallPlanAction install_b({"b", Test::X64_OSX}, + scfl_b, + pr, + RequestType::AUTO_SELECTED, + UseHeadVersion::No, + Editable::No, + {{"1", {}}}, + {}, + {}); InstallPlanAction install_c( - {"c", Test::X64_OSX}, scfl_c, pr, RequestType::USER_REQUESTED, Test::X64_ANDROID, {}, {}, {}); + {"c", Test::X64_OSX}, scfl_c, pr, RequestType::USER_REQUESTED, UseHeadVersion::No, Editable::No, {}, {}, {}); InstallPlanAction install_f( - {"f", Test::X64_OSX}, scfl_f, pr, RequestType::USER_REQUESTED, Test::X64_ANDROID, {}, {}, {}); + {"f", Test::X64_OSX}, scfl_f, pr, RequestType::USER_REQUESTED, UseHeadVersion::No, Editable::No, {}, {}, {}); install_f.plan_type = InstallPlanType::EXCLUDED; InstallPlanAction already_installed_d( status_db.get_installed_package_view({"d", Test::X86_WINDOWS}).value_or_exit(VCPKG_LINE_INFO), - RequestType::AUTO_SELECTED); + RequestType::AUTO_SELECTED, + UseHeadVersion::No, + Editable::No); REQUIRE(already_installed_d.display_name() == "d:x86-windows@1"); InstallPlanAction already_installed_e( status_db.get_installed_package_view({"e", Test::X86_WINDOWS}).value_or_exit(VCPKG_LINE_INFO), - RequestType::USER_REQUESTED); + RequestType::USER_REQUESTED, + UseHeadVersion::No, + Editable::No); ActionPlan plan; { @@ -2465,10 +2483,24 @@ TEST_CASE ("dependency graph API snapshot: host and target") { MockVersionedPortfileProvider vp; auto& scfl_a = vp.emplace("a", {"1", 0}); - InstallPlanAction install_a( - {"a", Test::X86_WINDOWS}, scfl_a, "packages_root", RequestType::AUTO_SELECTED, Test::X64_WINDOWS, {}, {}, {}); - InstallPlanAction install_a_host( - {"a", Test::X64_WINDOWS}, scfl_a, "packages_root", RequestType::AUTO_SELECTED, Test::X64_WINDOWS, {}, {}, {}); + InstallPlanAction install_a({"a", Test::X86_WINDOWS}, + scfl_a, + "packages_root", + RequestType::AUTO_SELECTED, + UseHeadVersion::No, + Editable::No, + {}, + {}, + {}); + InstallPlanAction install_a_host({"a", Test::X64_WINDOWS}, + scfl_a, + "packages_root", + RequestType::AUTO_SELECTED, + UseHeadVersion::No, + Editable::No, + {}, + {}, + {}); ActionPlan plan; plan.install_actions.push_back(std::move(install_a)); plan.install_actions.push_back(std::move(install_a_host)); diff --git a/src/vcpkg-test/input.cpp b/src/vcpkg-test/input.cpp index 177d978902..07071c3758 100644 --- a/src/vcpkg-test/input.cpp +++ b/src/vcpkg-test/input.cpp @@ -1,5 +1,6 @@ #include +#include #include #include @@ -94,13 +95,14 @@ TEST_CASE ("check_triplet validates", "[input][check_triplet]") REQUIRE(maybe_check.has_value()); maybe_check = check_triplet("x86-windows", db); REQUIRE(!maybe_check.has_value()); - REQUIRE(maybe_check.error() == LocalizedString::from_raw(R"(error: Invalid triplet: x86-windows + std::string expected_error = R"(error: Invalid triplet: x86-windows Built-in Triplets: Community Triplets: Overlay Triplets from "x64-windows.cmake": x64-windows -See https://learn.microsoft.com/vcpkg/users/triplets for more information. -)")); +See )" + docs::triplets_url + R"( for more information. +)"; + REQUIRE(maybe_check.error() == expected_error); } TEST_CASE ("check_and_get_package_spec validates the triplet", "[input][check_and_get_package_spec]") @@ -120,13 +122,14 @@ TEST_CASE ("check_and_get_package_spec validates the triplet", "[input][check_an maybe_spec = check_and_get_package_spec("zlib:x86-windows", Triplet::from_canonical_name("x64-windows"), db); REQUIRE(!maybe_spec.has_value()); - REQUIRE(maybe_spec.error() == LocalizedString::from_raw(R"(error: Invalid triplet: x86-windows + std::string expected_error = R"(error: Invalid triplet: x86-windows Built-in Triplets: Community Triplets: Overlay Triplets from "x64-windows.cmake": x64-windows -See https://learn.microsoft.com/vcpkg/users/triplets for more information. -)")); +See )" + docs::triplets_url + R"( for more information. +)"; + REQUIRE(maybe_spec.error() == expected_error); } TEST_CASE ("check_and_get_package_spec forbids malformed", "[input][check_and_get_package_spec]") @@ -187,13 +190,14 @@ TEST_CASE ("check_and_get_full_package_spec validates the triplet", "[input][che maybe_spec = check_and_get_full_package_spec("zlib[core]:x86-windows", Triplet::from_canonical_name("x64-windows"), db); REQUIRE(!maybe_spec.has_value()); - REQUIRE(maybe_spec.error() == LocalizedString::from_raw(R"(error: Invalid triplet: x86-windows + std::string expected_error = R"(error: Invalid triplet: x86-windows Built-in Triplets: Community Triplets: Overlay Triplets from "x64-windows.cmake": x64-windows -See https://learn.microsoft.com/vcpkg/users/triplets for more information. -)")); +See )" + docs::triplets_url + R"( for more information. +)"; + REQUIRE(maybe_spec.error() == expected_error); } TEST_CASE ("check_and_get_full_package_spec forbids malformed", "[input][check_and_get_full_package_spec]") diff --git a/src/vcpkg-test/manifests.cpp b/src/vcpkg-test/manifests.cpp index a9d94b2ae7..b144968e52 100644 --- a/src/vcpkg-test/manifests.cpp +++ b/src/vcpkg-test/manifests.cpp @@ -4,6 +4,7 @@ #include +#include #include #include @@ -1418,8 +1419,8 @@ TEST_CASE ("default-feature-empty errors", "[manifests]") REQUIRE(!m_pgh.has_value()); REQUIRE(m_pgh.error().data() == ": error: $.default-features[0] (a feature name): \"\" is not a valid feature name. Feature " - "names must be lowercase alphanumeric+hypens and not reserved (see " - "https://learn.microsoft.com/vcpkg/users/manifests for more information)."); + "names must be lowercase alphanumeric+hypens and not reserved (see " + + docs::manifests_url + " for more information)."); } TEST_CASE ("default-feature-empty-object errors", "[manifests]") @@ -1431,8 +1432,8 @@ TEST_CASE ("default-feature-empty-object errors", "[manifests]") REQUIRE(!m_pgh.has_value()); REQUIRE(m_pgh.error().data() == ": error: $.default-features[0].name (a feature name): \"\" is not a valid feature name. " - "Feature names must be lowercase alphanumeric+hypens and not reserved (see " - "https://learn.microsoft.com/vcpkg/users/manifests for more information)."); + "Feature names must be lowercase alphanumeric+hypens and not reserved (see " + + docs::manifests_url + " for more information)."); } TEST_CASE ("dependency-name-empty errors", "[manifests]") @@ -1444,8 +1445,8 @@ TEST_CASE ("dependency-name-empty errors", "[manifests]") REQUIRE(!m_pgh.has_value()); REQUIRE(m_pgh.error().data() == ": error: $.dependencies[0] (a package name): \"\" is not a valid package name. Package " - "names must be lowercase alphanumeric+hypens and not reserved (see " - "https://learn.microsoft.com/vcpkg/users/manifests for more information)."); + "names must be lowercase alphanumeric+hypens and not reserved (see " + + docs::manifests_url + " for more information)."); } TEST_CASE ("dependency-name-empty-object errors", "[manifests]") @@ -1457,8 +1458,8 @@ TEST_CASE ("dependency-name-empty-object errors", "[manifests]") REQUIRE(!m_pgh.has_value()); REQUIRE(m_pgh.error().data() == ": error: $.dependencies[0].name (a package name): \"\" is not a valid package name. " - "Package names must be lowercase alphanumeric+hypens and not reserved (see " - "https://learn.microsoft.com/vcpkg/users/manifests for more information)."); + "Package names must be lowercase alphanumeric+hypens and not reserved (see " + + docs::manifests_url + " for more information)."); } TEST_CASE ("dependency-feature-name-core errors", "[manifests]") @@ -1544,8 +1545,8 @@ TEST_CASE ("dependency-feature-name-empty errors", "[manifests]") REQUIRE(!m_pgh.has_value()); REQUIRE(m_pgh.error().data() == ": error: $.dependencies[0].features[0] (a feature name): \"\" is not a valid feature name. " - "Feature names must be lowercase alphanumeric+hypens and not reserved (see " - "https://learn.microsoft.com/vcpkg/users/manifests for more information)."); + "Feature names must be lowercase alphanumeric+hypens and not reserved (see " + + docs::manifests_url + " for more information)."); } TEST_CASE ("dependency-feature-name-empty-object errors", "[manifests]") @@ -1562,6 +1563,6 @@ TEST_CASE ("dependency-feature-name-empty-object errors", "[manifests]") REQUIRE(!m_pgh.has_value()); REQUIRE(m_pgh.error().data() == ": error: $.dependencies[0].features[0].name (a feature name): \"\" is not a valid feature " - "name. Feature names must be lowercase alphanumeric+hypens and not reserved (see " - "https://learn.microsoft.com/vcpkg/users/manifests for more information)."); + "name. Feature names must be lowercase alphanumeric+hypens and not reserved (see " + + docs::manifests_url + " for more information)."); } diff --git a/src/vcpkg-test/plan.cpp b/src/vcpkg-test/plan.cpp index 1a50a7b2cf..7c3b06e7a3 100644 --- a/src/vcpkg-test/plan.cpp +++ b/src/vcpkg-test/plan.cpp @@ -62,7 +62,9 @@ static ActionPlan create_feature_install_plan(const PortFileProvider& port_provi View specs, const StatusParagraphs& status_db) { - const CreateInstallPlanOptions create_options{Test::X64_ANDROID, "pkg"}; + const CreateInstallPlanOptions create_options{ + nullptr, Test::X64_ANDROID, "pkg", UnsupportedPortAction::Error, UseHeadVersion::No, Editable::No}; + return create_feature_install_plan(port_provider, var_provider, specs, status_db, create_options); } @@ -72,7 +74,8 @@ static ActionPlan create_feature_install_plan(const PortFileProvider& port_provi const StatusParagraphs& status_db, Triplet host_triplet) { - const CreateInstallPlanOptions create_options{host_triplet, "pkg"}; + const CreateInstallPlanOptions create_options{ + nullptr, host_triplet, "pkg", UnsupportedPortAction::Error, UseHeadVersion::No, Editable::No}; return create_feature_install_plan(port_provider, var_provider, specs, status_db, create_options); } @@ -81,7 +84,7 @@ static ActionPlan create_upgrade_plan(const PortFileProvider& provider, const std::vector& specs, const StatusParagraphs& status_db) { - const CreateInstallPlanOptions create_options{Test::X64_ANDROID, "pkg"}; + const CreateUpgradePlanOptions create_options{nullptr, Test::X64_ANDROID, "pkg", UnsupportedPortAction::Error}; return create_upgrade_plan(provider, var_provider, specs, status_db, create_options); } diff --git a/src/vcpkg-test/registries.cpp b/src/vcpkg-test/registries.cpp index 095c6d0bf8..9525588415 100644 --- a/src/vcpkg-test/registries.cpp +++ b/src/vcpkg-test/registries.cpp @@ -4,6 +4,7 @@ #include #include +#include #include using namespace vcpkg; @@ -120,11 +121,15 @@ TEST_CASE ("check valid package patterns", "[registries]") CHECK(ID::is_ident("rapidjson")); CHECK(ID::is_ident("boost-tuple")); CHECK(ID::is_ident("vcpkg-boost-helper")); + CHECK(ID::is_ident("lpt")); + CHECK(ID::is_ident("com")); // reject invalid characters CHECK(!ID::is_ident("")); + CHECK(!ID::is_ident(" ")); CHECK(!ID::is_ident("boost_tuple")); CHECK(!ID::is_ident("boost.tuple")); + CHECK(!ID::is_ident("boost.")); CHECK(!ID::is_ident("boost@1")); CHECK(!ID::is_ident("boost#1")); CHECK(!ID::is_ident("boost:x64-windows")); @@ -139,8 +144,10 @@ TEST_CASE ("check valid package patterns", "[registries]") CHECK(!ID::is_ident("con")); CHECK(!ID::is_ident("core")); CHECK(!ID::is_ident("default")); - CHECK(!ID::is_ident("lpt1")); - CHECK(!ID::is_ident("com1")); + CHECK(!ID::is_ident("lpt0")); + CHECK(!ID::is_ident("lpt9")); + CHECK(!ID::is_ident("com0")); + CHECK(!ID::is_ident("com9")); // reject incomplete segments CHECK(!ID::is_ident("-a")); @@ -153,11 +160,17 @@ TEST_CASE ("check valid package patterns", "[registries]") CHECK(is_package_pattern("b*")); CHECK(is_package_pattern("boost*")); CHECK(is_package_pattern("boost-*")); + CHECK(is_package_pattern("boost-multi-*")); // reject invalid patterns + CHECK(!is_package_pattern("")); + CHECK(!is_package_pattern(" ")); CHECK(!is_package_pattern("*a")); CHECK(!is_package_pattern("a*a")); CHECK(!is_package_pattern("a**")); + CHECK(!is_package_pattern("a-**")); + CHECK(!is_package_pattern("a--*")); + CHECK(!is_package_pattern("a-*-*")); CHECK(!is_package_pattern("a+")); CHECK(!is_package_pattern("a?")); } @@ -421,16 +434,18 @@ TEST_CASE ("registries report pattern errors", "[registries]") REQUIRE(errors.size() == 3); CHECK(errors[0] == "test: error: $.registries[0].packages[1] (a package pattern): \"\" is not a valid package " "pattern. Package patterns must " - "use only one wildcard character (*) and it must be the last character in the pattern (see " - "https://learn.microsoft.com/vcpkg/users/registries for more information)."); - CHECK(errors[1] == "test: error: $.registries[0].packages[2] (a package pattern): \"a*a\" is not a valid package " - "pattern. Package patterns " - "must use only one wildcard character (*) and it must be the last character in the pattern (see " - "https://learn.microsoft.com/vcpkg/users/registries for more information)."); - CHECK(errors[2] == "test: error: $.registries[0].packages[3] (a package pattern): \"*a\" is not a valid package " - "pattern. Package patterns " - "must use only one wildcard character (*) and it must be the last character in the pattern (see " - "https://learn.microsoft.com/vcpkg/users/registries for more information)."); + "use only one wildcard character (*) and it must be the last character in the pattern (see " + + docs::registries_url + " for more information)."); + CHECK(errors[1] == + "test: error: $.registries[0].packages[2] (a package pattern): \"a*a\" is not a valid package " + "pattern. Package patterns " + "must use only one wildcard character (*) and it must be the last character in the pattern (see " + + docs::registries_url + " for more information)."); + CHECK(errors[2] == + "test: error: $.registries[0].packages[3] (a package pattern): \"*a\" is not a valid package " + "pattern. Package patterns " + "must use only one wildcard character (*) and it must be the last character in the pattern (see " + + docs::registries_url + " for more information)."); } TEST_CASE ("registries ignored patterns warning", "[registries]") diff --git a/src/vcpkg-test/spdx.cpp b/src/vcpkg-test/spdx.cpp index a8fd9b036f..4d6ad1bb19 100644 --- a/src/vcpkg-test/spdx.cpp +++ b/src/vcpkg-test/spdx.cpp @@ -21,7 +21,8 @@ TEST_CASE ("spdx maximum serialization", "[spdx]") cpgh.version_scheme = VersionScheme::Relaxed; cpgh.version = Version{"1.0", 5}; - InstallPlanAction ipa(spec, scfl, "test_packages_root", RequestType::USER_REQUESTED, Test::X86_WINDOWS, {}, {}, {}); + InstallPlanAction ipa( + spec, scfl, "test_packages_root", RequestType::USER_REQUESTED, UseHeadVersion::No, Editable::No, {}, {}, {}); auto& abi = *(ipa.abi_info = AbiInfo{}).get(); abi.package_abi = "ABIHASH"; @@ -41,7 +42,7 @@ TEST_CASE ("spdx maximum serialization", "[spdx]") "name": "zlib:arm-uwp@1.0#5 ABIHASH", "creationInfo": { "creators": [ - "Tool: vcpkg-unknownhash" + "Tool: vcpkg-2999-12-31-unknownhash" ], "created": "now" }, @@ -173,7 +174,8 @@ TEST_CASE ("spdx minimum serialization", "[spdx]") cpgh.version_scheme = VersionScheme::String; cpgh.version = Version{"1.0", 0}; - InstallPlanAction ipa(spec, scfl, "test_packages_root", RequestType::USER_REQUESTED, Test::X86_WINDOWS, {}, {}, {}); + InstallPlanAction ipa( + spec, scfl, "test_packages_root", RequestType::USER_REQUESTED, UseHeadVersion::No, Editable::No, {}, {}, {}); auto& abi = *(ipa.abi_info = AbiInfo{}).get(); abi.package_abi = "deadbeef"; std::vector port_abi{{"vcpkg.json", "hash-vcpkg.json"}, {"portfile.cmake", "hash-portfile.cmake"}}; @@ -190,7 +192,7 @@ TEST_CASE ("spdx minimum serialization", "[spdx]") "name": "zlib:arm-uwp@1.0 deadbeef", "creationInfo": { "creators": [ - "Tool: vcpkg-unknownhash" + "Tool: vcpkg-2999-12-31-unknownhash" ], "created": "now+1" }, @@ -297,7 +299,8 @@ TEST_CASE ("spdx concat resources", "[spdx]") cpgh.version_scheme = VersionScheme::String; cpgh.version = Version{"1.0", 0}; - InstallPlanAction ipa(spec, scfl, "test_packages_root", RequestType::USER_REQUESTED, Test::X86_WINDOWS, {}, {}, {}); + InstallPlanAction ipa( + spec, scfl, "test_packages_root", RequestType::USER_REQUESTED, UseHeadVersion::No, Editable::No, {}, {}, {}); auto& abi = *(ipa.abi_info = AbiInfo{}).get(); abi.package_abi = "deadbeef"; @@ -330,7 +333,7 @@ TEST_CASE ("spdx concat resources", "[spdx]") "name": "zlib:arm-uwp@1.0 deadbeef", "creationInfo": { "creators": [ - "Tool: vcpkg-unknownhash" + "Tool: vcpkg-2999-12-31-unknownhash" ], "created": "now+1" }, diff --git a/src/vcpkg-test/specifier.cpp b/src/vcpkg-test/specifier.cpp index 3575baa03e..9eb9bce6df 100644 --- a/src/vcpkg-test/specifier.cpp +++ b/src/vcpkg-test/specifier.cpp @@ -2,6 +2,7 @@ #include +#include #include using namespace vcpkg; @@ -118,7 +119,8 @@ TEST_CASE ("specifier parsing", "[specifier]") REQUIRE( s.error() == LocalizedString::from_raw( - R"(error: expected the end of input parsing a package name; this usually means the indicated character is not allowed to be in a port name. Port names are all lowercase alphanumeric+hypens and not reserved (see https://learn.microsoft.com/vcpkg/reference/vcpkg-json#name for more information). + R"(error: expected the end of input parsing a package name; this usually means the indicated character is not allowed to be in a port name. Port names are all lowercase alphanumeric+hypens and not reserved (see )" + + docs::vcpkg_json_ref_name + R"( for more information). on expression: zlib# ^)")); } diff --git a/src/vcpkg-test/system.process.cpp b/src/vcpkg-test/system.process.cpp index 565f289d60..f2b031df36 100644 --- a/src/vcpkg-test/system.process.cpp +++ b/src/vcpkg-test/system.process.cpp @@ -60,3 +60,66 @@ TEST_CASE ("no closes-stdout crash", "[system.process]") REQUIRE(run.exit_code == 0); REQUIRE(run.output == "hello world"); } + +TEST_CASE ("command try_append", "[system.process]") +{ + { + Command a; + REQUIRE(a.try_append(Command{"b"})); + REQUIRE(a.command_line() == "b"); + } + + { + Command a{"a"}; + REQUIRE(a.try_append(Command{})); + REQUIRE(a.command_line() == "a"); + } + + { + Command a{"a"}; + REQUIRE(a.try_append(Command{"b"})); + REQUIRE(a.command_line() == "a b"); + } + + // size limits + + std::string one_string(1, 'a'); + std::string big_string(Command::maximum_allowed, 'a'); + std::string bigger_string(Command::maximum_allowed + 1, 'a'); + Command empty_cmd; + Command one_cmd{one_string}; + Command big_cmd{big_string}; + Command bigger_cmd{bigger_string}; + + REQUIRE(!bigger_cmd.try_append(empty_cmd)); + REQUIRE(bigger_cmd.command_line() == bigger_string); + + REQUIRE(big_cmd.try_append(empty_cmd)); + REQUIRE(big_cmd.command_line() == big_string); + + { + auto cmd = empty_cmd; + REQUIRE(!cmd.try_append(bigger_cmd)); + REQUIRE(cmd.empty()); + REQUIRE(cmd.try_append(big_cmd)); + REQUIRE(cmd.command_line() == big_string); + } + + { + auto cmd = one_cmd; + REQUIRE(!cmd.try_append(big_cmd)); + REQUIRE(cmd.command_line() == one_string); + // does not fit due to the needed space + std::string almost_string(Command::maximum_allowed - 1, 'a'); + Command almost_cmd{almost_string}; + REQUIRE(!cmd.try_append(almost_cmd)); + REQUIRE(cmd.command_line() == one_string); + // fits exactly + std::string ok_string(Command::maximum_allowed - 2, 'a'); + Command ok_cmd{ok_string}; + REQUIRE(cmd.try_append(ok_cmd)); + auto expected = big_string; + expected[1] = ' '; + REQUIRE(cmd.command_line() == expected); + } +} diff --git a/src/vcpkg-test/tools.cpp b/src/vcpkg-test/tools.cpp index eeeef4dc28..cc902cc70c 100644 --- a/src/vcpkg-test/tools.cpp +++ b/src/vcpkg-test/tools.cpp @@ -3,8 +3,6 @@ #include #include -#include - using namespace vcpkg; TEST_CASE ("parse_tool_version_string", "[tools]") diff --git a/src/vcpkg-test/util-tests.cpp b/src/vcpkg-test/util-tests.cpp index b7583b5e4b..5a3db89171 100644 --- a/src/vcpkg-test/util-tests.cpp +++ b/src/vcpkg-test/util-tests.cpp @@ -82,7 +82,7 @@ TEST_CASE ("append", "[util]") b.emplace_back("jkl"); b.emplace_back("mno"); b.emplace_back("pqr"); - vcpkg::Util::Vectors::append(&a, std::move(b)); + vcpkg::Util::Vectors::append(a, std::move(b)); REQUIRE(b.size() == 3); REQUIRE(b[0] == ""); REQUIRE(a.size() == 6); @@ -96,7 +96,7 @@ TEST_CASE ("append", "[util]") b.emplace_back("jkl"); b.emplace_back("mno"); b.emplace_back("pqr"); - vcpkg::Util::Vectors::append(&a, b); + vcpkg::Util::Vectors::append(a, b); REQUIRE(b.size() == 3); REQUIRE(b[0] == "jkl"); REQUIRE(a.size() == 6); @@ -111,7 +111,7 @@ TEST_CASE ("append", "[util]") "mno", "pqr", }; - vcpkg::Util::Vectors::append(&a, b); + vcpkg::Util::Vectors::append(a, b); REQUIRE(b.size() == 3); REQUIRE(b[0] == "jkl"); REQUIRE(a.size() == 6); diff --git a/src/vcpkg-test/versionplan.cpp b/src/vcpkg-test/versionplan.cpp index d67dfbca2f..1b1fda3b69 100644 --- a/src/vcpkg-test/versionplan.cpp +++ b/src/vcpkg-test/versionplan.cpp @@ -87,7 +87,8 @@ TEST_CASE ("qualified dependency", "[dependencies]") MockCMakeVarProvider var_provider; var_provider.dep_info_vars[{"a", Test::X64_LINUX}].emplace("VCPKG_CMAKE_SYSTEM_NAME", "Linux"); - const CreateInstallPlanOptions create_options{Test::X64_ANDROID, "pkg"}; + const CreateInstallPlanOptions create_options{ + nullptr, Test::X64_ANDROID, "pkg", UnsupportedPortAction::Error, UseHeadVersion::No, Editable::No}; auto plan = vcpkg::create_feature_install_plan(map_port, var_provider, Test::parse_test_fspecs("a"), {}, create_options); diff --git a/src/vcpkg/abi.cpp b/src/vcpkg/abi.cpp index d5882b82c9..44e308842b 100644 --- a/src/vcpkg/abi.cpp +++ b/src/vcpkg/abi.cpp @@ -99,6 +99,19 @@ namespace vcpkg } } + for (size_t i = 0; i < pre_build_info.post_portfile_includes.size(); ++i) + { + auto& file = pre_build_info.post_portfile_includes[i]; + if (file.is_relative() || !fs.is_regular_file(file) || file.extension() != ".cmake") + { + Checks::msg_exit_with_message(VCPKG_LINE_INFO, msgInvalidValuePostPortfileIncludes, msg::path = file); + } + + abi_tag_entries.emplace_back( + fmt::format("post_portfile_include_{}", i), + Hash::get_file_hash(fs, file, Hash::Algorithm::Sha256).value_or_exit(VCPKG_LINE_INFO)); + } + if (pre_build_info.target_is_xbox) { abi_tag_entries.emplace_back("grdk.h", grdk_hash(fs, pre_build_info)); @@ -126,7 +139,7 @@ namespace vcpkg static AbiEntries get_cmake_script_hashes(const Filesystem& fs, const Path& scripts_dir) { auto files = fs.get_regular_files_non_recursive(scripts_dir / "cmake", VCPKG_LINE_INFO); - Util::erase_remove_if(files, [](const Path& file) { return file.filename() == ".DS_Store"; }); + Util::erase_remove_if(files, [](const Path& file) { return file.filename() == FileDotDsStore; }); AbiEntries helpers(files.size()); @@ -247,12 +260,12 @@ namespace vcpkg abi_info.toolset.emplace(toolset); // return when using editable or head flags - if (action.build_options.use_head_version == UseHeadVersion::Yes) + if (action.use_head_version == UseHeadVersion::Yes) { Debug::print("Binary caching for package ", action.spec, " is disabled due to --head\n"); return; } - if (action.build_options.editable == Editable::Yes) + if (action.editable == Editable::Yes) { Debug::print("Binary caching for package ", action.spec, " is disabled due to --editable\n"); return; @@ -288,8 +301,8 @@ namespace vcpkg View common_abi, View cmake_script_hashes) { - if (action.build_options.use_head_version == UseHeadVersion::Yes || - action.build_options.editable == Editable::Yes) + if (action.use_head_version == UseHeadVersion::Yes || + action.editable == Editable::Yes) { return nullopt; } @@ -300,7 +313,7 @@ namespace vcpkg // portfile hashes/contents auto&& [port_files_abi, cmake_contents] = get_port_files(fs, scfl); - Util::Vectors::append(&abi_entries, port_files_abi); + Util::Vectors::append(abi_entries, port_files_abi); // cmake helpers for (auto&& helper : cmake_script_hashes) @@ -346,7 +359,7 @@ namespace vcpkg auto& fs = paths.get_filesystem(); auto& abi_info = *action.abi_info.get(); auto abi_tag_entries = std::move(private_abi.abi_entries); - Util::Vectors::append(&abi_tag_entries, dependency_abis); + Util::Vectors::append(abi_tag_entries, std::move(dependency_abis)); abi_tag_entries.emplace_back("triplet_abi", *abi_info.triplet_abi.get()); @@ -462,13 +475,10 @@ namespace vcpkg } AbiEntries dependency_abis; - if (!Util::Enum::to_bool(action.build_options.only_downloads)) + dependency_abis = get_dependency_abis(action_plan.install_actions.begin(), it, status_db); + if (!check_dependency_hashes(dependency_abis, action.spec)) { - dependency_abis = get_dependency_abis(action_plan.install_actions.begin(), it, status_db); - if (!check_dependency_hashes(dependency_abis, action.spec)) - { - continue; - } + continue; } make_abi_tag(paths, action, std::move(dependency_abis), std::move(*private_abis[i].get())); diff --git a/src/vcpkg/archives.cpp b/src/vcpkg/archives.cpp index d53db08120..71f16fe443 100644 --- a/src/vcpkg/archives.cpp +++ b/src/vcpkg/archives.cpp @@ -1,3 +1,4 @@ +#include #include #include #include @@ -360,7 +361,7 @@ namespace vcpkg .string_arg(destination) .string_arg("*") .string_arg("--exclude") - .string_arg(".DS_Store"), + .string_arg(FileDotDsStore), settings), "zip"); #endif diff --git a/src/vcpkg/base/checks.cpp b/src/vcpkg/base/checks.cpp index 0597690d58..00099ce411 100644 --- a/src/vcpkg/base/checks.cpp +++ b/src/vcpkg/base/checks.cpp @@ -146,6 +146,7 @@ namespace vcpkg [[noreturn]] void Checks::msg_exit_maybe_upgrade(const LineInfo& line_info, const LocalizedString& error_message) { msg::write_unlocalized_text_to_stderr(Color::error, error_message); + msg::write_unlocalized_text_to_stderr(Color::none, "\n"); display_upgrade_message(); exit_fail(line_info); } diff --git a/src/vcpkg/base/downloads.cpp b/src/vcpkg/base/downloads.cpp index 3d70de6953..9f2e44cfd3 100644 --- a/src/vcpkg/base/downloads.cpp +++ b/src/vcpkg/base/downloads.cpp @@ -11,6 +11,7 @@ #include #include #include +#include #include @@ -371,150 +372,115 @@ namespace vcpkg return Unit{}; } - static void url_heads_inner(View urls, - View headers, - std::vector* out, - View secrets) + static std::vector curl_bulk_operation(View operation_args, + StringLiteral prefixArgs, + View headers, + View secrets) { - static constexpr StringLiteral guid_marker = "8a1db05f-a65d-419b-aa72-037fb4d0672e"; - - const size_t start_size = out->size(); - - auto cmd = Command{"curl"} - .string_arg("--head") - .string_arg("--location") - .string_arg("-w") - .string_arg(guid_marker.to_string() + " %{http_code}\\n"); - for (auto&& header : headers) +#define GUID_MARKER "5ec47b8e-6776-4d70-b9b3-ac2a57bc0a1c" + static constexpr StringLiteral guid_marker = GUID_MARKER; + Command prefix_cmd{"curl"}; + if (!prefixArgs.empty()) { - cmd.string_arg("-H").string_arg(header); + prefix_cmd.raw_arg(prefixArgs); } - for (auto&& url : urls) - { - cmd.string_arg(url_encode_spaces(url)); - } - - std::vector lines; - auto res = cmd_execute_and_stream_lines(cmd, [out, &lines](StringView line) { - lines.push_back(line.to_string()); - if (Strings::starts_with(line, guid_marker)) - { - out->push_back(std::strtol(line.data() + guid_marker.size(), nullptr, 10)); - } - }).value_or_exit(VCPKG_LINE_INFO); - - if (res != 0) - { - Checks::msg_exit_with_error(VCPKG_LINE_INFO, msgCurlFailedToExecute, msg::exit_code = res); - } - - if (out->size() != start_size + urls.size()) - { - auto command_line = replace_secrets(std::move(cmd).extract(), secrets); - auto actual = replace_secrets(Strings::join("\n", lines), secrets); - Checks::msg_exit_with_error(VCPKG_LINE_INFO, - msgCurlReportedUnexpectedResults, - msg::command_line = command_line, - msg::actual = actual); - } - } - std::vector url_heads(View urls, View headers, View secrets) - { - static constexpr size_t batch_size = 100; + prefix_cmd.string_arg("-L").string_arg("-w").string_arg(GUID_MARKER "%{http_code}\\n"); +#undef GUID_MARKER std::vector ret; + ret.reserve(operation_args.size()); - size_t i = 0; - for (; i + batch_size <= urls.size(); i += batch_size) - { - url_heads_inner({urls.data() + i, batch_size}, headers, &ret, secrets); - } - - if (i != urls.size()) + for (auto&& header : headers) { - url_heads_inner({urls.begin() + i, urls.end()}, headers, &ret, secrets); + prefix_cmd.string_arg("-H").string_arg(header); } - Checks::check_exit(VCPKG_LINE_INFO, ret.size() == urls.size()); - return ret; - } + static constexpr auto initial_timeout_delay_ms = 100; + auto timeout_delay_ms = initial_timeout_delay_ms; + static constexpr auto maximum_timeout_delay_ms = 100000; - static void download_files_inner(const Filesystem&, - View> url_pairs, - View headers, - std::vector* out) - { - for (auto i : {100, 1000, 10000, 0}) + while (ret.size() != operation_args.size()) { - size_t start_size = out->size(); - static constexpr StringLiteral guid_marker = "5ec47b8e-6776-4d70-b9b3-ac2a57bc0a1c"; - - auto cmd = Command{"curl"} - .string_arg("--create-dirs") - .string_arg("--location") - .string_arg("-w") - .string_arg(guid_marker.to_string() + " %{http_code}\\n"); - for (StringView header : headers) + // there's an edge case that we aren't handling here where not even one operation fits with the configured + // headers but this seems unlikely + + // form a maximum length command line of operations: + auto batch_cmd = prefix_cmd; + size_t last_try_op = ret.size(); + while (last_try_op != operation_args.size() && batch_cmd.try_append(operation_args[last_try_op])) { - cmd.string_arg("-H").string_arg(header); + ++last_try_op; } - for (auto&& url : url_pairs) + + // actually run curl + auto this_batch_result = cmd_execute_and_capture_output(batch_cmd).value_or_exit(VCPKG_LINE_INFO); + if (this_batch_result.exit_code != 0) { - cmd.string_arg(url_encode_spaces(url.first)).string_arg("-o").string_arg(url.second); + Checks::msg_exit_with_error(VCPKG_LINE_INFO, + msgCommandFailedCode, + msg::command_line = + replace_secrets(std::move(batch_cmd).extract(), secrets), + msg::exit_code = this_batch_result.exit_code); } - auto res = - cmd_execute_and_stream_lines(cmd, [out](StringView line) { - if (Strings::starts_with(line, guid_marker)) - { - out->push_back(static_cast(std::strtol(line.data() + guid_marker.size(), nullptr, 10))); - } - }).value_or_exit(VCPKG_LINE_INFO); - if (res != 0) + // extract HTTP response codes + for (auto&& line : Strings::split(this_batch_result.output, '\n')) { - Checks::msg_exit_with_error(VCPKG_LINE_INFO, msgCurlFailedToExecute, msg::exit_code = res); + if (Strings::starts_with(line, guid_marker)) + { + ret.push_back(static_cast(std::strtol(line.data() + guid_marker.size(), nullptr, 10))); + } } - if (start_size + url_pairs.size() > out->size()) + // check if we got a partial response, and, if so, issue a timed delay + if (ret.size() == last_try_op) { - // curl stopped before finishing all downloads; retry after some time - msg::println_warning(msgUnexpectedErrorDuringBulkDownload); - std::this_thread::sleep_for(std::chrono::milliseconds(i)); - url_pairs = - View>{url_pairs.begin() + out->size() - start_size, url_pairs.end()}; + timeout_delay_ms = initial_timeout_delay_ms; } else { - break; + // curl stopped before finishing all operations; retry after some time + if (timeout_delay_ms >= maximum_timeout_delay_ms) + { + Checks::msg_exit_with_error(VCPKG_LINE_INFO, + msgCurlTimeout, + msg::command_line = + replace_secrets(std::move(batch_cmd).extract(), secrets)); + } + + msg::println_warning(msgCurlResponseTruncatedRetrying, msg::value = timeout_delay_ms); + std::this_thread::sleep_for(std::chrono::milliseconds(timeout_delay_ms)); + timeout_delay_ms *= 10; } } - } - std::vector download_files(const Filesystem& fs, - View> url_pairs, - View headers) - { - static constexpr size_t batch_size = 50; - - std::vector ret; - size_t i = 0; - for (; i + batch_size <= url_pairs.size(); i += batch_size) - { - download_files_inner(fs, {url_pairs.data() + i, batch_size}, headers, &ret); - } + return ret; + } - if (i != url_pairs.size()) - { - download_files_inner(fs, {url_pairs.begin() + i, url_pairs.end()}, headers, &ret); - } + std::vector url_heads(View urls, View headers, View secrets) + { + return curl_bulk_operation( + Util::fmap(urls, [](const std::string& url) { return Command{}.string_arg(url_encode_spaces(url)); }), + "--head", + headers, + secrets); + } - Checks::msg_check_exit(VCPKG_LINE_INFO, - ret.size() == url_pairs.size(), - msgCurlReturnedUnexpectedResponseCodes, - msg::actual = ret.size(), - msg::expected = url_pairs.size()); - return ret; + std::vector download_files(View> url_pairs, + View headers, + View secrets) + { + return curl_bulk_operation(Util::fmap(url_pairs, + [](const std::pair& url_pair) { + return Command{} + .string_arg(url_encode_spaces(url_pair.first)) + .string_arg("-o") + .string_arg(url_pair.second); + }), + "--create-dirs", + headers, + secrets); } bool send_snapshot_to_api(const std::string& github_token, @@ -614,7 +580,9 @@ namespace vcpkg msgCurlFailedToPutHttp, msg::exit_code = *pres, msg::url = url, msg::value = code); } } - + msg::println(msgAssetCacheSuccesfullyStored, + msg::path = file.filename(), + msg::url = replace_secrets(url.to_string(), secrets)); return res; } @@ -626,9 +594,7 @@ namespace vcpkg return url; } - std::string query = Strings::join("&", query_params); - - return url + "?" + query; + return url + "?" + Strings::join("&", query_params); } ExpectedL invoke_http_request(StringView method, @@ -751,7 +717,6 @@ namespace vcpkg fs.create_directories(dir, VCPKG_LINE_INFO); const auto sanitized_url = replace_secrets(url, secrets); - msg::println(msgDownloadingUrl, msg::url = sanitized_url); static auto s = WinHttpSession::make(sanitized_url).value_or_exit(VCPKG_LINE_INFO); for (size_t trials = 0; trials < 4; ++trials) { @@ -795,12 +760,25 @@ namespace vcpkg download_path_part_path += ".part"; #if defined(_WIN32) - if (headers.size() == 0) + auto maybe_https_proxy_env = get_environment_variable(EnvironmentVariableHttpsProxy); + bool needs_proxy_auth = false; + if (maybe_https_proxy_env) + { + const auto& proxy_url = maybe_https_proxy_env.value_or_exit(VCPKG_LINE_INFO); + needs_proxy_auth = proxy_url.find('@') != std::string::npos; + } + if (headers.size() == 0 && !needs_proxy_auth) { auto split_uri = split_uri_view(url).value_or_exit(VCPKG_LINE_INFO); - auto authority = split_uri.authority.value_or_exit(VCPKG_LINE_INFO).substr(2); if (split_uri.scheme == "https" || split_uri.scheme == "http") { + auto maybe_authority = split_uri.authority.get(); + if (!maybe_authority) + { + Checks::msg_exit_with_error(VCPKG_LINE_INFO, msgInvalidUri, msg::value = url); + } + + auto authority = maybe_authority->substr(2); // This check causes complex URLs (non-default port, embedded basic auth) to be passed down to curl.exe if (Strings::find_first_of(authority, ":@") == authority.end()) { @@ -905,6 +883,10 @@ namespace vcpkg return s_headers; } + bool DownloadManager::get_block_origin() const { return m_config.m_block_origin; } + + bool DownloadManager::asset_cache_configured() const { return m_config.m_read_url_template.has_value(); } + void DownloadManager::download_file(const Filesystem& fs, const std::string& url, View headers, @@ -949,6 +931,9 @@ namespace vcpkg errors, progress_sink)) { + msg::println(msgAssetCacheHit, + msg::path = download_path.filename(), + msg::url = replace_secrets(read_url, m_config.m_secrets)); return read_url; } } @@ -1008,12 +993,17 @@ namespace vcpkg fs, urls, headers, download_path, sha512, m_config.m_secrets, errors, progress_sink); if (auto url = maybe_url.get()) { + m_config.m_read_url_template.has_value() ? msg::println(msgAssetCacheMiss, msg::url = urls[0]) + : msg::println(msgDownloadingUrl, msg::url = urls[0]); + if (auto hash = sha512.get()) { auto maybe_push = put_file_to_mirror(fs, download_path, *hash); if (!maybe_push) { - msg::println_warning(msgFailedToStoreBackToMirror); + msg::println_warning(msgFailedToStoreBackToMirror, + msg::path = download_path.filename(), + msg::url = replace_secrets(download_path.c_str(), m_config.m_secrets)); msg::println(maybe_push.error()); } } @@ -1022,7 +1012,16 @@ namespace vcpkg } } } - msg::println_error(msgFailedToDownloadFromMirrorSet); + // Asset cache is not configured and x-block-origin enabled + if (m_config.m_read_url_template.has_value()) + { + msg::println(msgAssetCacheMissBlockOrigin, msg::path = download_path.filename()); + } + else + { + msg::println_error(msgMissingAssetBlockOrigin, msg::path = download_path.filename()); + } + for (LocalizedString& error : errors) { msg::println(error); diff --git a/src/vcpkg/base/files.cpp b/src/vcpkg/base/files.cpp index 0e5031e813..057ab65b70 100644 --- a/src/vcpkg/base/files.cpp +++ b/src/vcpkg/base/files.cpp @@ -1172,6 +1172,46 @@ namespace vcpkg } } + void Path::make_generic() + { + char* first = m_str.data(); + char* last = first + m_str.size(); + char* after_root_name = const_cast(find_root_name_end(first, last)); + char* after_root_directory = std::find_if_not(after_root_name, last, is_slash); +#if defined(_WIN32) + // \\server\share must remain \\server but it can be \\server/share + std::replace(first, after_root_name, '/', '\\'); +#endif // _WIN32 + char* target = after_root_name; + if (after_root_name != after_root_directory) + { + *target = '/'; + ++target; + } + + first = after_root_directory; + for (;;) + { + char* next_slash = std::find_if(first, last, is_slash); + auto length = next_slash - first; + if (first != target) + { + memmove(target, first, static_cast(length)); + } + + target += length; + if (next_slash == last) + { + m_str.erase(target - m_str.data()); + return; + } + + *target = '/'; + ++target; + first = std::find_if_not(next_slash + 1, last, is_slash); + } + } + Path Path::lexically_normal() const { // copied from microsoft/STL, stl/inc/filesystem:lexically_normal() @@ -1685,6 +1725,25 @@ namespace vcpkg return maybe_directories; } + std::vector ReadOnlyFilesystem::get_directories_recursive_lexically_proximate(const Path& dir, + LineInfo li) const + { + return this->try_get_directories_recursive_lexically_proximate(dir).value_or_exit(li); + } + + ExpectedL> ReadOnlyFilesystem::try_get_directories_recursive_lexically_proximate( + const Path& dir) const + { + std::error_code ec; + auto maybe_directories = this->get_directories_recursive_lexically_proximate(dir, ec); + if (ec) + { + return format_filesystem_call_error(ec, __func__, {dir}); + } + + return maybe_directories; + } + std::vector ReadOnlyFilesystem::get_directories_non_recursive(const Path& dir, LineInfo li) const { return this->try_get_directories_non_recursive(dir).value_or_exit(li); @@ -2475,6 +2534,21 @@ namespace vcpkg return get_directories_impl(dir, ec); } + virtual std::vector get_directories_recursive_lexically_proximate(const Path& dir, + std::error_code& ec) const override + { + auto ret = this->get_directories_recursive(dir, ec); + if (!ec) + { + const auto base = to_stdfs_path(dir); + for (auto& p : ret) + { + p = from_stdfs_path(to_stdfs_path(p).lexically_proximate(base)); + } + } + return ret; + } + virtual std::vector get_directories_non_recursive(const Path& dir, std::error_code& ec) const override { return get_directories_impl(dir, ec); @@ -2781,6 +2855,15 @@ namespace vcpkg return result; } + virtual std::vector get_directories_recursive_lexically_proximate(const Path& dir, + std::error_code& ec) const override + { + std::vector result; + Path out_base; + get_files_recursive_impl(result, dir, out_base, ec, true, false, false); + return result; + } + virtual std::vector get_directories_non_recursive(const Path& dir, std::error_code& ec) const override { std::vector result; diff --git a/src/vcpkg/base/json.cpp b/src/vcpkg/base/json.cpp index 960ca343ef..83c2d58ffd 100644 --- a/src/vcpkg/base/json.cpp +++ b/src/vcpkg/base/json.cpp @@ -8,6 +8,8 @@ #include +#include + #include #include @@ -1078,12 +1080,13 @@ namespace vcpkg::Json if (sv.size() < 5) { + // see https://learn.microsoft.com/en-us/windows/win32/fileio/naming-a-file#naming-conventions if (sv == "prn" || sv == "aux" || sv == "nul" || sv == "con" || sv == FeatureNameCore) { return false; // we're a reserved identifier } if (sv.size() == 4 && (Strings::starts_with(sv, "lpt") || Strings::starts_with(sv, "com")) && - sv[3] >= '1' && sv[3] <= '9') + sv[3] >= '0' && sv[3] <= '9') { return false; // we're a reserved identifier } @@ -1472,6 +1475,22 @@ namespace vcpkg::Json .append_raw(msg)); } + LocalizedString Reader::join() const + { + LocalizedString res; + for (const auto& e : m_errors) + { + if (!res.empty()) res.append_raw("\n"); + res.append(e); + } + for (const auto& w : m_warnings) + { + if (!res.empty()) res.append_raw("\n"); + res.append(w); + } + return res; + } + std::string Reader::path() const noexcept { std::string p("$"); diff --git a/src/vcpkg/base/strings.cpp b/src/vcpkg/base/strings.cpp index 0d2fbe7708..c308819c9e 100644 --- a/src/vcpkg/base/strings.cpp +++ b/src/vcpkg/base/strings.cpp @@ -14,8 +14,6 @@ #include #include -#include - using namespace vcpkg; namespace vcpkg::Strings::details diff --git a/src/vcpkg/base/system.process.cpp b/src/vcpkg/base/system.process.cpp index 64e5fd3a6e..ac4215365c 100644 --- a/src/vcpkg/base/system.process.cpp +++ b/src/vcpkg/base/system.process.cpp @@ -474,6 +474,67 @@ namespace vcpkg return *this; } + Command& Command::raw_arg(StringView s) & + { + if (!buf.empty()) + { + buf.push_back(' '); + } + + buf.append(s.data(), s.size()); + return *this; + } + + Command& Command::forwarded_args(View args) & + { + for (auto&& arg : args) + { + string_arg(arg); + } + + return *this; + } + + bool Command::try_append(const Command& other) + { + if (buf.size() > maximum_allowed) + { + return false; + } + + if (other.buf.empty()) + { + return true; + } + + if (buf.empty()) + { + if (other.buf.size() > maximum_allowed) + { + return false; + } + + buf = other.buf; + return true; + } + + size_t leftover = maximum_allowed - buf.size(); + if (leftover == 0) + { + return false; + } + + --leftover; // for the space + if (other.buf.size() > leftover) + { + return false; + } + + buf.push_back(' '); + buf.append(other.buf); + return true; + } + #if defined(_WIN32) Environment get_modified_clean_environment(const std::unordered_map& extra_env, StringView prepend_to_path) @@ -1824,9 +1885,7 @@ namespace vcpkg { std::string output; return cmd_execute_and_stream_data(cmd, settings, [&](StringView sv) { Strings::append(output, sv); }) - .map([&](int exit_code) { - return ExitCodeAndOutput{exit_code, std::move(output)}; - }); + .map([&](int exit_code) { return ExitCodeAndOutput{exit_code, std::move(output)}; }); } uint64_t get_subproccess_stats() { return g_subprocess_stats.load(); } diff --git a/src/vcpkg/binarycaching.cpp b/src/vcpkg/binarycaching.cpp index 0ea770b391..347c8242f5 100644 --- a/src/vcpkg/binarycaching.cpp +++ b/src/vcpkg/binarycaching.cpp @@ -254,7 +254,6 @@ namespace { nothing, always, - on_fail, }; struct ZipResource @@ -306,13 +305,13 @@ namespace Debug::print("Failed to decompress archive package: ", zip_path.path, '\n'); } - post_decompress(zip_path, job_results[j].has_value()); + post_decompress(zip_path); } } - void post_decompress(const ZipResource& r, bool succeeded) const + void post_decompress(const ZipResource& r) const { - if ((!succeeded && r.to_remove == RemoveWhen::on_fail) || r.to_remove == RemoveWhen::always) + if (r.to_remove == RemoveWhen::always) { m_fs.remove(r.path, IgnoreErrors{}); } @@ -346,10 +345,7 @@ namespace auto archive_path = m_dir / files_archive_subpath(abi_tag); if (m_fs.exists(archive_path, IgnoreErrors{})) { - auto to_remove = actions[i]->build_options.purge_decompress_failure == PurgeDecompressFailure::Yes - ? RemoveWhen::on_fail - : RemoveWhen::nothing; - out_zip_paths[i].emplace(std::move(archive_path), to_remove); + out_zip_paths[i].emplace(std::move(archive_path), RemoveWhen::nothing); } } } @@ -443,7 +439,7 @@ namespace make_temp_archive_path(m_buildtrees, action.spec)); } - auto codes = download_files(m_fs, url_paths, m_url_template.headers); + auto codes = download_files(url_paths, m_url_template.headers, m_secrets); for (size_t i = 0; i < codes.size(); ++i) { @@ -596,7 +592,7 @@ namespace msg_sink.println(Color::warning, msgFailedVendorAuthentication, msg::vendor = "NuGet", - msg::url = docs::binarycaching_url); + msg::url = docs::troubleshoot_binary_cache_url); } else if (res.output.find("for example \"-ApiKey AzureDevOps\"") != std::string::npos) { @@ -754,8 +750,10 @@ namespace msgUploadingBinariesToVendor, msg::spec = spec, msg::vendor = "NuGet", msg::path = write_src); if (!m_cmd.push(msg_sink, nupkg_path, nuget_sources_arg({&write_src, 1}))) { - msg_sink.println( - Color::error, msgPushingVendorFailed, msg::vendor = "NuGet", msg::path = write_src); + msg_sink.println(Color::error, + msg::format(msgPushingVendorFailed, msg::vendor = "NuGet", msg::path = write_src) + .append_raw('\n') + .append(msgSeeURL, msg::url = docs::troubleshoot_binary_cache_url)); } else { @@ -771,7 +769,10 @@ namespace if (!m_cmd.push(msg_sink, nupkg_path, nuget_configfile_arg(write_cfg))) { msg_sink.println( - Color::error, msgPushingVendorFailed, msg::vendor = "NuGet config", msg::path = write_cfg); + Color::error, + msg::format(msgPushingVendorFailed, msg::vendor = "NuGet config", msg::path = write_cfg) + .append_raw('\n') + .append(msgSeeURL, msg::url = docs::troubleshoot_binary_cache_url)); } else { @@ -791,8 +792,10 @@ namespace : ZipReadBinaryProvider(std::move(zip), fs) , m_buildtrees(buildtrees) , m_url(url + "_apis/artifactcache/cache") + , m_secrets() , m_token_header("Authorization: Bearer " + token) { + m_secrets.emplace_back(token); } std::string lookup_cache_entry(StringView name, const std::string& abi) const @@ -835,7 +838,7 @@ namespace url_indices.push_back(idx); } - const auto codes = download_files(m_fs, url_paths, {}); + const auto codes = download_files(url_paths, {}, m_secrets); for (size_t i = 0; i < codes.size(); ++i) { @@ -856,6 +859,7 @@ namespace Path m_buildtrees; std::string m_url; + std::vector m_secrets; std::string m_token_header; static constexpr StringLiteral m_accept_header = "Accept: application/json;api-version=6.0-preview.1"; static constexpr StringLiteral m_content_type_header = "Content-Type: application/json"; @@ -952,14 +956,37 @@ namespace static constexpr StringLiteral m_accept_header = "Accept: application/json;api-version=6.0-preview.1"; }; + template + static ExpectedL flatten_generic(const ExpectedL& maybe_exit, + StringView tool_name, + ResultOnSuccessType result_on_success) + { + if (auto exit = maybe_exit.get()) + { + if (exit->exit_code == 0) + { + return {result_on_success}; + } + + return {msg::format_error( + msgProgramReturnedNonzeroExitCode, msg::tool_name = tool_name, msg::exit_code = exit->exit_code) + .append_raw('\n') + .append_raw(exit->output)}; + } + + return {msg::format_error(msgLaunchingProgramFailed, msg::tool_name = tool_name) + .append_raw(' ') + .append_raw(maybe_exit.error().to_string())}; + } + struct IObjectStorageTool { virtual ~IObjectStorageTool() = default; virtual LocalizedString restored_message(size_t count, std::chrono::high_resolution_clock::duration elapsed) const = 0; - virtual ExpectedL stat(StringView url) const = 0; - virtual ExpectedL download_file(StringView object, const Path& archive) const = 0; + virtual ExpectedL stat(StringView url) const = 0; + virtual ExpectedL download_file(StringView object, const Path& archive) const = 0; virtual ExpectedL upload_file(StringView object, const Path& archive) const = 0; }; @@ -991,9 +1018,12 @@ namespace const auto& abi = action.package_abi().value_or_exit(VCPKG_LINE_INFO); auto tmp = make_temp_archive_path(m_buildtrees, action.spec); auto res = m_tool->download_file(make_object_path(m_prefix, abi), tmp); - if (res) + if (auto cache_result = res.get()) { - out_zip_paths[idx].emplace(std::move(tmp), RemoveWhen::always); + if (*cache_result == RestoreResult::restored) + { + out_zip_paths[idx].emplace(std::move(tmp), RemoveWhen::always); + } } else { @@ -1008,9 +1038,10 @@ namespace { auto&& action = *actions[idx]; const auto& abi = action.package_abi().value_or_exit(VCPKG_LINE_INFO); - if (m_tool->stat(make_object_path(m_prefix, abi))) + auto maybe_res = m_tool->stat(make_object_path(m_prefix, abi)); + if (auto res = maybe_res.get()) { - cache_status[idx] = CacheAvailability::available; + cache_status[idx] = *res; } else { @@ -1078,19 +1109,21 @@ namespace return msg::format(msgRestoredPackagesFromGCS, msg::count = count, msg::elapsed = ElapsedTime(elapsed)); } - ExpectedL stat(StringView url) const override + ExpectedL stat(StringView url) const override { - return flatten( + return flatten_generic( cmd_execute_and_capture_output(Command{m_tool}.string_arg("-q").string_arg("stat").string_arg(url)), - Tools::GSUTIL); + Tools::GSUTIL, + CacheAvailability::available); } - ExpectedL download_file(StringView object, const Path& archive) const override + ExpectedL download_file(StringView object, const Path& archive) const override { - return flatten( + return flatten_generic( cmd_execute_and_capture_output( Command{m_tool}.string_arg("-q").string_arg("cp").string_arg(object).string_arg(archive)), - Tools::GSUTIL); + Tools::GSUTIL, + RestoreResult::restored); } ExpectedL upload_file(StringView object, const Path& archive) const override @@ -1117,7 +1150,7 @@ namespace return msg::format(msgRestoredPackagesFromAWS, msg::count = count, msg::elapsed = ElapsedTime(elapsed)); } - ExpectedL stat(StringView url) const override + ExpectedL stat(StringView url) const override { auto cmd = Command{m_tool}.string_arg("s3").string_arg("ls").string_arg(url); if (m_no_sign_request) @@ -1125,13 +1158,44 @@ namespace cmd.string_arg("--no-sign-request"); } - return flatten(cmd_execute_and_capture_output(cmd), Tools::AWSCLI); + auto maybe_exit = cmd_execute_and_capture_output(cmd); + + // When the file is not found, "aws s3 ls" prints nothing, and returns exit code 1. + // flatten_generic() would treat this as an error, but we want to treat it as a (silent) cache miss instead, + // so we handle this special case before calling flatten_generic(). + // See https://github.com/aws/aws-cli/issues/5544 for the related aws-cli bug report. + if (auto exit = maybe_exit.get()) + { + // We want to return CacheAvailability::unavailable even if aws-cli starts to return exit code 0 with an + // empty output when the file is missing. This way, both the current and possible future behavior of + // aws-cli is covered. + if (exit->exit_code == 0 || exit->exit_code == 1) + { + if (Strings::trim(exit->output).empty()) + { + return CacheAvailability::unavailable; + } + } + } + + // In the non-special case, simply let flatten_generic() do its job. + return flatten_generic(maybe_exit, Tools::AWSCLI, CacheAvailability::available); } - ExpectedL download_file(StringView object, const Path& archive) const override + ExpectedL download_file(StringView object, const Path& archive) const override { auto r = stat(object); - if (!r) return r; + if (auto stat_result = r.get()) + { + if (*stat_result != CacheAvailability::available) + { + return RestoreResult::unavailable; + } + } + else + { + return r.error(); + } auto cmd = Command{m_tool}.string_arg("s3").string_arg("cp").string_arg(object).string_arg(archive); if (m_no_sign_request) @@ -1139,7 +1203,7 @@ namespace cmd.string_arg("--no-sign-request"); } - return flatten(cmd_execute_and_capture_output(cmd), Tools::AWSCLI); + return flatten_generic(cmd_execute_and_capture_output(cmd), Tools::AWSCLI, RestoreResult::restored); } ExpectedL upload_file(StringView object, const Path& archive) const override @@ -1166,17 +1230,19 @@ namespace return msg::format(msgRestoredPackagesFromCOS, msg::count = count, msg::elapsed = ElapsedTime(elapsed)); } - ExpectedL stat(StringView url) const override + ExpectedL stat(StringView url) const override { - return flatten(cmd_execute_and_capture_output(Command{m_tool}.string_arg("ls").string_arg(url)), - Tools::COSCLI); + return flatten_generic(cmd_execute_and_capture_output(Command{m_tool}.string_arg("ls").string_arg(url)), + Tools::COSCLI, + CacheAvailability::available); } - ExpectedL download_file(StringView object, const Path& archive) const override + ExpectedL download_file(StringView object, const Path& archive) const override { - return flatten( + return flatten_generic( cmd_execute_and_capture_output(Command{m_tool}.string_arg("cp").string_arg(object).string_arg(archive)), - Tools::COSCLI); + Tools::COSCLI, + RestoreResult::restored); } ExpectedL upload_file(StringView object, const Path& archive) const override @@ -1602,6 +1668,30 @@ namespace { return add_error(std::move(err), segments[1].first); } + bool has_sha = false; + bool has_other = false; + api_stable_format(url_template.url_template, [&](std::string&, StringView key) { + if (key == "sha") + { + has_sha = true; + } + else + { + has_other = true; + } + }); + if (!has_sha) + { + if (has_other) + { + return add_error(msg::format(msgMissingShaVariable), segments[1].first); + } + if (url_template.url_template.back() != '/') + { + url_template.url_template.push_back('/'); + } + url_template.url_template.append("{sha}.zip"); + } if (segments.size() == 4) { url_template.headers.push_back(segments[3].second); @@ -1911,8 +2001,7 @@ namespace vcpkg if (s.gha_read || s.gha_write) { if (!args.actions_cache_url.has_value() || !args.actions_runtime_token.has_value()) - return msg::format_error(msgGHAParametersMissing, - msg::url = "https://learn.microsoft.com/vcpkg/users/binarycaching#gha"); + return msg::format_error(msgGHAParametersMissing, msg::url = docs::binarycaching_gha_url); } if (!s.archives_to_read.empty() || !s.url_templates_to_get.empty() || !s.gcs_read_prefixes.empty() || @@ -2146,7 +2235,7 @@ namespace vcpkg { } - void BinaryCache::push_success(const InstallPlanAction& action) + void BinaryCache::push_success(CleanPackages clean_packages, const InstallPlanAction& action) { if (auto abi = action.package_abi().get()) { @@ -2199,7 +2288,8 @@ namespace vcpkg msgStoredBinariesToDestinations, msg::count = num_destinations, msg::elapsed = timer.elapsed()); } } - if (action.build_options.clean_packages == CleanPackages::Yes) + + if (clean_packages == CleanPackages::Yes) { m_fs.remove_all(action.package_dir.value_or_exit(VCPKG_LINE_INFO), VCPKG_LINE_INFO); } diff --git a/src/vcpkg/cmakevars.cpp b/src/vcpkg/cmakevars.cpp index 1c321a0d78..6e9f5abbda 100644 --- a/src/vcpkg/cmakevars.cpp +++ b/src/vcpkg/cmakevars.cpp @@ -152,6 +152,7 @@ VCPKG_ENV_PASSTHROUGH_UNTRACKED=${VCPKG_ENV_PASSTHROUGH_UNTRACKED} VCPKG_LOAD_VCVARS_ENV=${VCPKG_LOAD_VCVARS_ENV} VCPKG_DISABLE_COMPILER_TRACKING=${VCPKG_DISABLE_COMPILER_TRACKING} VCPKG_HASH_ADDITIONAL_FILES=${VCPKG_HASH_ADDITIONAL_FILES} +VCPKG_POST_PORTFILE_INCLUDES=${VCPKG_POST_PORTFILE_INCLUDES} VCPKG_XBOX_CONSOLE_TARGET=${VCPKG_XBOX_CONSOLE_TARGET} Z_VCPKG_GameDKLatest=$ENV{GameDKLatest} e1e74b5c-18cb-4474-a6bd-5c1c8bc81f3f diff --git a/src/vcpkg/commands.activate.cpp b/src/vcpkg/commands.activate.cpp index 2ff4d38e01..29e48b6fba 100644 --- a/src/vcpkg/commands.activate.cpp +++ b/src/vcpkg/commands.activate.cpp @@ -20,7 +20,7 @@ namespace vcpkg constexpr CommandMetadata CommandActivateMetadata{ "activate", msgCmdActivateSynopsis, - {"vcpkg activate"}, + {"vcpkg-shell activate", "vcpkg activate --msbuild-props file.targets"}, Undocumented, AutocompletePriority::Public, 0, diff --git a/src/vcpkg/commands.add-version.cpp b/src/vcpkg/commands.add-version.cpp index 0cce9fc907..7c57ac2b97 100644 --- a/src/vcpkg/commands.add-version.cpp +++ b/src/vcpkg/commands.add-version.cpp @@ -9,6 +9,7 @@ #include #include +#include #include #include #include @@ -62,21 +63,19 @@ namespace { if (DateVersion::try_parse(version.version.text)) { - Checks::msg_exit_with_message(VCPKG_LINE_INFO, - msgAddVersionSuggestNewVersionScheme, - msg::new_scheme = JsonIdVersionDate, - msg::old_scheme = JsonIdVersionString, - msg::package_name = port_name, - msg::option = SwitchSkipVersionFormatCheck); + Checks::msg_exit_with_message( + VCPKG_LINE_INFO, + msg::format(msgAddVersionSuggestVersionDate, msg::package_name = port_name) + .append_raw("\n") + .append(msgSeeURL, msg::url = docs::version_schemes)); } if (DotVersion::try_parse_relaxed(version.version.text)) { - Checks::msg_exit_with_message(VCPKG_LINE_INFO, - msgAddVersionSuggestNewVersionScheme, - msg::new_scheme = JsonIdVersion, - msg::old_scheme = JsonIdVersionString, - msg::package_name = port_name, - msg::option = SwitchSkipVersionFormatCheck); + Checks::msg_exit_with_message( + VCPKG_LINE_INFO, + msg::format(msgAddVersionSuggestVersionRelaxed, msg::package_name = port_name) + .append_raw("\n") + .append(msgSeeURL, msg::url = docs::version_schemes)); } } } @@ -176,49 +175,41 @@ namespace const std::string& port_name, const SchemedVersion& port_version, const std::string& git_tree, - const Path& version_db_file_path, bool overwrite_version, bool print_success, bool keep_going, bool skip_version_format_check) { auto& fs = paths.get_filesystem(); - if (!fs.exists(version_db_file_path, IgnoreErrors{})) + auto maybe_maybe_versions = load_git_versions_file(fs, paths.builtin_registry_versions, port_name); + auto maybe_versions = maybe_maybe_versions.entries.get(); + if (!maybe_versions) + { + msg::println(Color::error, maybe_maybe_versions.entries.error()); + Checks::exit_fail(VCPKG_LINE_INFO); + } + + auto versions = maybe_versions->get(); + if (!versions) { if (!skip_version_format_check) { check_used_version_scheme(port_version, port_name); } std::vector new_entry{{port_version, git_tree}}; - write_versions_file(fs, new_entry, version_db_file_path); + write_versions_file(fs, new_entry, maybe_maybe_versions.versions_file_path); if (print_success) { msg::println(Color::success, msg::format(msgAddVersionAddedVersionToFile, msg::version = port_version.version, - msg::path = version_db_file_path) + msg::path = maybe_maybe_versions.versions_file_path) .append_raw(' ') .append(msgAddVersionNewFile)); } return UpdateResult::Updated; } - auto maybe_maybe_versions = get_builtin_versions(paths, port_name); - auto maybe_versions = maybe_maybe_versions.get(); - if (!maybe_versions) - { - msg::println_error(msg::format(msgAddVersionUnableToParseVersionsFile, msg::path = version_db_file_path) - .append_raw('\n') - .append(maybe_maybe_versions.error())); - Checks::exit_fail(VCPKG_LINE_INFO); - } - - auto versions = maybe_versions->get(); - if (!versions) - { - Checks::unreachable(VCPKG_LINE_INFO, "Version file existed but was still unknown"); - } - const auto& versions_end = versions->end(); auto found_same_sha = std::find_if( versions->begin(), versions_end, [&](auto&& entry) -> bool { return entry.git_tree == git_tree; }); @@ -231,7 +222,7 @@ namespace msg::println(Color::success, msgAddVersionVersionAlreadyInFile, msg::version = port_version.version, - msg::path = version_db_file_path); + msg::path = maybe_maybe_versions.versions_file_path); } return UpdateResult::NotUpdated; } @@ -242,9 +233,11 @@ namespace .append_raw(git_tree) .append_raw("\n-- ") .append(msgAddVersionCommitChangesReminder) - .append_raw("\n***") + .append_raw("\n*** ") .append(msgAddVersionNoFilesUpdated) - .append_raw("***")); + .append_raw("\n*** ") + .append(msgSeeURL, msg::url = docs::add_version_command_url) + .append_raw("\n***")); if (keep_going) return UpdateResult::NotUpdated; Checks::exit_fail(VCPKG_LINE_INFO); } @@ -269,6 +262,8 @@ namespace .append(msgAddVersionUpdateVersionReminder) .append_raw('\n') .append(msgAddVersionOverwriteOptionSuggestion, msg::option = SwitchOverwriteVersion) + .append_raw('\n') + .append(msgSeeURL, msg::url = docs::add_version_command_overwrite_version_opt_url) .append_raw("\n***") .append(msgAddVersionNoFilesUpdated) .append_raw("***")); @@ -289,13 +284,13 @@ namespace check_used_version_scheme(port_version, port_name); } - write_versions_file(fs, *versions, version_db_file_path); + write_versions_file(fs, *versions, maybe_maybe_versions.versions_file_path); if (print_success) { msg::println(Color::success, msgAddVersionAddedVersionToFile, msg::version = port_version.version, - msg::path = version_db_file_path); + msg::path = maybe_maybe_versions.versions_file_path); } return UpdateResult::Updated; } @@ -350,11 +345,12 @@ namespace vcpkg } else { - Checks::msg_check_exit(VCPKG_LINE_INFO, - add_all, - msgAddVersionUseOptionAll, - msg::command_name = "x-add-version", - msg::option = SwitchAll); + Checks::msg_check_exit( + VCPKG_LINE_INFO, + add_all, + msg::format(msgAddVersionUseOptionAll, msg::command_name = "x-add-version", msg::option = SwitchAll) + .append_raw('\n') + .append(msgSeeURL, msg::url = docs::add_version_command_url)); for (auto&& port_dir : fs.get_directories_non_recursive(paths.builtin_ports_directory(), VCPKG_LINE_INFO)) { @@ -394,11 +390,11 @@ namespace vcpkg auto port_dir = paths.builtin_ports_directory() / port_name; auto maybe_scfl = Paragraphs::try_load_port_required( - fs, port_name, PortLocation{paths.builtin_ports_directory() / port_name}); + fs, port_name, PortLocation{paths.builtin_ports_directory() / port_name}) + .maybe_scfl; auto scfl = maybe_scfl.get(); if (!scfl) { - msg::println_error(msgAddVersionLoadPortFailed, msg::package_name = port_name); msg::println(Color::error, maybe_scfl.error()); Checks::check_exit(VCPKG_LINE_INFO, !add_all); continue; @@ -422,8 +418,10 @@ namespace vcpkg .append_raw('\n') .append(msgAddVersionFormatPortSuggestion, msg::command_line = command_line) .append_raw('\n') - .append(msgAddVersionCommitResultReminder) - .append_raw('\n')); + .append(msgSeeURL, msg::url = docs::format_manifest_command_url) + .append(msgAddVersionCommitChangesReminder) + .append_raw('\n') + .append(msgSeeURL, msg::url = docs::add_version_command_url)); Checks::check_exit(VCPKG_LINE_INFO, !add_all); continue; } @@ -445,19 +443,17 @@ namespace vcpkg .append(msgAddVersionCommitChangesReminder) .append_raw("\n***") .append(msgAddVersionNoFilesUpdated) + .append_raw("\n***") + .append(msgSeeURL, msg::url = docs::add_version_command_url) .append_raw("***")); if (add_all) continue; Checks::exit_fail(VCPKG_LINE_INFO); } const auto& git_tree = git_tree_it->second; - - char prefix[] = {port_name[0], '-', '\0'}; - auto port_versions_path = paths.builtin_registry_versions / prefix / Strings::concat(port_name, ".json"); auto updated_versions_file = update_version_db_file(paths, port_name, schemed_version, git_tree, - port_versions_path, overwrite_version, verbose, add_all, diff --git a/src/vcpkg/commands.add.cpp b/src/vcpkg/commands.add.cpp index 705f48fe5f..1b6e669559 100644 --- a/src/vcpkg/commands.add.cpp +++ b/src/vcpkg/commands.add.cpp @@ -69,7 +69,10 @@ namespace vcpkg if (!manifest) { Checks::msg_exit_with_message( - VCPKG_LINE_INFO, msgAddPortRequiresManifest, msg::command_line = "vcpkg add port"); + VCPKG_LINE_INFO, + msg::format(msgAddPortRequiresManifest, msg::command_line = "vcpkg add port") + .append_raw('\n') + .append(msgSeeURL, msg::url = docs::add_command_url)); } if (Util::Maps::contains(parsed.settings, SwitchVersion)) @@ -93,8 +96,13 @@ namespace vcpkg auto pmanifest_scf = maybe_manifest_scf.get(); if (!pmanifest_scf) { - print_error_message(maybe_manifest_scf.error()); - msg::println(Color::error, msgSeeURL, msg::url = docs::manifests_url); + msg::print(Color::error, + std::move(maybe_manifest_scf) + .error() + .append_raw('\n') + .append_raw(NotePrefix) + .append(msgSeeURL, msg::url = docs::manifests_url) + .append_raw('\n')); Checks::exit_fail(VCPKG_LINE_INFO); } @@ -159,6 +167,8 @@ namespace vcpkg Checks::exit_success(VCPKG_LINE_INFO); } - Checks::msg_exit_with_message(VCPKG_LINE_INFO, msgAddFirstArgument, msg::command_line = "vcpkg add"); + Checks::msg_exit_with_message( + VCPKG_LINE_INFO, + msg::format(msgAddCommandFirstArg).append_raw('\n').append(msgSeeURL, msg::url = docs::add_command_url)); } } diff --git a/src/vcpkg/commands.autocomplete.cpp b/src/vcpkg/commands.autocomplete.cpp index bfe548e3b4..dcfedeb282 100644 --- a/src/vcpkg/commands.autocomplete.cpp +++ b/src/vcpkg/commands.autocomplete.cpp @@ -107,7 +107,7 @@ namespace vcpkg // TODO: Support autocomplete for ports in --overlay-ports auto maybe_port = Paragraphs::try_load_port_required( paths.get_filesystem(), port_name, PortLocation{paths.builtin_ports_directory() / port_name}); - if (!maybe_port) + if (!maybe_port.maybe_scfl) { Checks::exit_success(VCPKG_LINE_INFO); } @@ -163,7 +163,7 @@ namespace vcpkg { auto port_at_each_triplet = combine_port_with_triplets(results[0], paths.get_triplet_db().available_triplets); - Util::Vectors::append(&results, std::move(port_at_each_triplet)); + Util::Vectors::append(results, std::move(port_at_each_triplet)); } output_sorted_results_and_exit(VCPKG_LINE_INFO, std::move(results)); diff --git a/src/vcpkg/commands.build-external.cpp b/src/vcpkg/commands.build-external.cpp index 7cc89c14d7..9ef71a66a6 100644 --- a/src/vcpkg/commands.build-external.cpp +++ b/src/vcpkg/commands.build-external.cpp @@ -27,6 +27,18 @@ namespace vcpkg { const ParsedArguments options = args.parse_arguments(CommandBuildExternalMetadata); + static constexpr BuildPackageOptions build_options{ + BuildMissing::Yes, + AllowDownloads::Yes, + OnlyDownloads::No, + CleanBuildtrees::Yes, + CleanPackages::Yes, + CleanDownloads::No, + DownloadTool::Builtin, + BackcompatFeatures::Allow, + PrintUsage::Yes, + }; + const FullPackageSpec spec = check_and_get_full_package_spec(options.command_arguments[0], default_triplet, paths.get_triplet_db()) .value_or_exit(VCPKG_LINE_INFO); @@ -36,7 +48,7 @@ namespace vcpkg auto& fs = paths.get_filesystem(); auto registry_set = paths.make_registry_set(); - PathsPortFileProvider provider(fs, *registry_set, make_overlay_provider(fs, paths.original_cwd, overlays)); - command_build_and_exit_ex(args, spec, host_triplet, provider, null_build_logs_recorder(), paths); + PathsPortFileProvider provider(*registry_set, make_overlay_provider(fs, paths.original_cwd, overlays)); + command_build_and_exit_ex(args, paths, host_triplet, build_options, spec, provider, null_build_logs_recorder()); } } diff --git a/src/vcpkg/commands.build.cpp b/src/vcpkg/commands.build.cpp index bdd19f6ba3..1911fa561e 100644 --- a/src/vcpkg/commands.build.cpp +++ b/src/vcpkg/commands.build.cpp @@ -37,6 +37,8 @@ #include #include +#include + using namespace vcpkg; namespace @@ -57,14 +59,16 @@ namespace namespace vcpkg { void command_build_and_exit_ex(const VcpkgCmdArguments& args, - const FullPackageSpec& full_spec, + const VcpkgPaths& paths, Triplet host_triplet, + const BuildPackageOptions& build_options, + const FullPackageSpec& full_spec, const PathsPortFileProvider& provider, - const IBuildLogsRecorder& build_logs_recorder, - const VcpkgPaths& paths) + const IBuildLogsRecorder& build_logs_recorder) { - Checks::exit_with_code(VCPKG_LINE_INFO, - command_build_ex(args, full_spec, host_triplet, provider, build_logs_recorder, paths)); + Checks::exit_with_code( + VCPKG_LINE_INFO, + command_build_ex(args, paths, host_triplet, build_options, full_spec, provider, build_logs_recorder)); } constexpr CommandMetadata CommandBuildMetadata{ @@ -86,24 +90,43 @@ namespace vcpkg { // Build only takes a single package and all dependencies must already be installed const ParsedArguments options = args.parse_arguments(CommandBuildMetadata); + static constexpr BuildPackageOptions build_command_build_package_options{ + BuildMissing::Yes, + AllowDownloads::Yes, + OnlyDownloads::No, + CleanBuildtrees::No, + CleanPackages::No, + CleanDownloads::No, + DownloadTool::Builtin, + BackcompatFeatures::Allow, + PrintUsage::Yes, + }; + const FullPackageSpec spec = check_and_get_full_package_spec(options.command_arguments[0], default_triplet, paths.get_triplet_db()) .value_or_exit(VCPKG_LINE_INFO); auto& fs = paths.get_filesystem(); auto registry_set = paths.make_registry_set(); - PathsPortFileProvider provider( - fs, *registry_set, make_overlay_provider(fs, paths.original_cwd, paths.overlay_ports)); + PathsPortFileProvider provider(*registry_set, + make_overlay_provider(fs, paths.original_cwd, paths.overlay_ports)); Checks::exit_with_code(VCPKG_LINE_INFO, - command_build_ex(args, spec, host_triplet, provider, null_build_logs_recorder(), paths)); + command_build_ex(args, + paths, + host_triplet, + build_command_build_package_options, + spec, + provider, + null_build_logs_recorder())); } int command_build_ex(const VcpkgCmdArguments& args, - const FullPackageSpec& full_spec, + const VcpkgPaths& paths, Triplet host_triplet, + const BuildPackageOptions& build_options, + const FullPackageSpec& full_spec, const PathsPortFileProvider& provider, - const IBuildLogsRecorder& build_logs_recorder, - const VcpkgPaths& paths) + const IBuildLogsRecorder& build_logs_recorder) { const PackageSpec& spec = full_spec.package_spec; auto var_provider_storage = CMakeVars::make_triplet_cmake_var_provider(paths); @@ -112,7 +135,11 @@ namespace vcpkg StatusParagraphs status_db = database_load_check(paths.get_filesystem(), paths.installed()); auto action_plan = create_feature_install_plan( - provider, var_provider, {&full_spec, 1}, status_db, {host_triplet, paths.packages()}); + provider, + var_provider, + {&full_spec, 1}, + status_db, + {nullptr, host_triplet, paths.packages(), UnsupportedPortAction::Error, UseHeadVersion::No, Editable::Yes}); var_provider.load_tag_vars(action_plan, host_triplet); @@ -148,18 +175,14 @@ namespace vcpkg msg::path = spec_name); } - action->build_options = default_build_package_options; - action->build_options.editable = Editable::Yes; - action->build_options.clean_buildtrees = CleanBuildtrees::No; - action->build_options.clean_packages = CleanPackages::No; - auto binary_cache = BinaryCache::make(args, paths, out_sink).value_or_exit(VCPKG_LINE_INFO); const ElapsedTimer build_timer; - const auto result = build_package(args, paths, *action, build_logs_recorder, status_db); + const auto result = + build_package(args, paths, host_triplet, build_options, *action, build_logs_recorder, status_db); msg::print(msgElapsedForPackage, msg::spec = spec, msg::elapsed = build_timer); switch (result.code) { - case BuildResult::Succeeded: binary_cache.push_success(*action); return 0; + case BuildResult::Succeeded: binary_cache.push_success(build_options.clean_packages, *action); return 0; case BuildResult::CascadedDueToMissingDependencies: { LocalizedString errorMsg = msg::format_error(msgBuildDependenciesMissing); @@ -195,19 +218,6 @@ namespace vcpkg } } - static std::remove_const_t generate_all_policies() - { - std::remove_const_t res{}; - for (size_t i = 0; i < res.size(); ++i) - { - res[i] = static_cast(i); - } - - return res; - } - - decltype(ALL_POLICIES) ALL_POLICIES = generate_all_policies(); - StringLiteral to_string_view(BuildPolicy policy) { switch (policy) @@ -225,6 +235,21 @@ namespace vcpkg case BuildPolicy::SKIP_ARCHITECTURE_CHECK: return PolicySkipArchitectureCheck; case BuildPolicy::CMAKE_HELPER_PORT: return PolicyCMakeHelperPort; case BuildPolicy::SKIP_ABSOLUTE_PATHS_CHECK: return PolicySkipAbsolutePathsCheck; + case BuildPolicy::SKIP_ALL_POST_BUILD_CHECKS: return PolicySkipAllPostBuildChecks; + case BuildPolicy::SKIP_APPCONTAINER_CHECK: return PolicySkipAppcontainerCheck; + case BuildPolicy::SKIP_CRT_LINKAGE_CHECK: return PolicySkipCrtLinkageCheck; + case BuildPolicy::SKIP_MISPLACED_CMAKE_FILES_CHECK: return PolicySkipMisplacedCMakeFilesCheck; + case BuildPolicy::SKIP_LIB_CMAKE_MERGE_CHECK: return PolicySkipLibCMakeMergeCheck; + case BuildPolicy::ALLOW_DLLS_IN_LIB: return PolicyAllowDllsInLib; + case BuildPolicy::SKIP_MISPLACED_REGULAR_FILES_CHECK: return PolicySkipMisplacedRegularFilesCheck; + case BuildPolicy::SKIP_COPYRIGHT_CHECK: return PolicySkipCopyrightCheck; + case BuildPolicy::ALLOW_KERNEL32_FROM_XBOX: return PolicyAllowKernel32FromXBox; + case BuildPolicy::ALLOW_EXES_IN_BIN: return PolicyAllowExesInBin; + case BuildPolicy::SKIP_USAGE_INSTALL_CHECK: return PolicySkipUsageInstallCheck; + case BuildPolicy::ALLOW_EMPTY_FOLDERS: return PolicyAllowEmptyFolders; + case BuildPolicy::ALLOW_DEBUG_INCLUDE: return PolicyAllowDebugInclude; + case BuildPolicy::ALLOW_DEBUG_SHARE: return PolicyAllowDebugShare; + case BuildPolicy::SKIP_PKGCONFIG_CHECK: return PolicySkipPkgConfigCheck; default: Checks::unreachable(VCPKG_LINE_INFO); } } @@ -247,6 +272,22 @@ namespace vcpkg case BuildPolicy::SKIP_ARCHITECTURE_CHECK: return CMakeVariablePolicySkipArchitectureCheck; case BuildPolicy::CMAKE_HELPER_PORT: return CMakeVariablePolicyCMakeHelperPort; case BuildPolicy::SKIP_ABSOLUTE_PATHS_CHECK: return CMakeVariablePolicySkipAbsolutePathsCheck; + case BuildPolicy::SKIP_ALL_POST_BUILD_CHECKS: return CMakeVariablePolicySkipAllPostBuildChecks; + case BuildPolicy::SKIP_APPCONTAINER_CHECK: return CMakeVariablePolicySkipAppcontainerCheck; + case BuildPolicy::SKIP_CRT_LINKAGE_CHECK: return CMakeVariablePolicySkipCrtLinkageCheck; + case BuildPolicy::SKIP_MISPLACED_CMAKE_FILES_CHECK: return CMakeVariablePolicySkipMisplacedCMakeFilesCheck; + case BuildPolicy::SKIP_LIB_CMAKE_MERGE_CHECK: return CMakeVariablePolicySkipLibCMakeMergeCheck; + case BuildPolicy::ALLOW_DLLS_IN_LIB: return CMakeVariablePolicyAllowDllsInLib; + case BuildPolicy::SKIP_MISPLACED_REGULAR_FILES_CHECK: + return CMakeVariablePolicySkipMisplacedRegularFilesCheck; + case BuildPolicy::SKIP_COPYRIGHT_CHECK: return CMakeVariablePolicySkipCopyrightCheck; + case BuildPolicy::ALLOW_KERNEL32_FROM_XBOX: return CMakeVariablePolicyAllowKernel32FromXBox; + case BuildPolicy::ALLOW_EXES_IN_BIN: return CMakeVariablePolicyAllowExesInBin; + case BuildPolicy::SKIP_USAGE_INSTALL_CHECK: return CMakeVariablePolicySkipUsageInstallCheck; + case BuildPolicy::ALLOW_EMPTY_FOLDERS: return CMakeVariablePolicyAllowEmptyFolders; + case BuildPolicy::ALLOW_DEBUG_INCLUDE: return CMakeVariablePolicyAllowDebugInclude; + case BuildPolicy::ALLOW_DEBUG_SHARE: return CMakeVariablePolicyAllowDebugShare; + case BuildPolicy::SKIP_PKGCONFIG_CHECK: return CMakeVariablePolicySkipPkgConfigCheck; default: Checks::unreachable(VCPKG_LINE_INFO); } } @@ -722,6 +763,8 @@ namespace vcpkg static std::vector get_cmake_build_args(const VcpkgCmdArguments& args, const VcpkgPaths& paths, + Triplet host_triplet, + const BuildPackageOptions& build_options, const InstallPlanAction& action) { auto& scfl = action.source_control_file_and_location.value_or_exit(VCPKG_LINE_INFO); @@ -734,21 +777,26 @@ namespace vcpkg all_features.append(feature->name + ";"); } + auto& post_portfile_includes = action.pre_build_info(VCPKG_LINE_INFO).post_portfile_includes; + std::string all_post_portfile_includes = + Strings::join(";", Util::fmap(post_portfile_includes, [](const Path& p) { return p.generic_u8string(); })); + std::vector variables{ {CMakeVariableAllFeatures, all_features}, {CMakeVariableCurrentPortDir, scfl.port_directory()}, - {CMakeVariableHostTriplet, action.host_triplet.canonical_name()}, + {CMakeVariableHostTriplet, host_triplet.canonical_name()}, {CMakeVariableFeatures, Strings::join(";", action.feature_list)}, {CMakeVariablePort, port_name}, {CMakeVariableVersion, scf.to_version().text}, - {CMakeVariableUseHeadVersion, Util::Enum::to_bool(action.build_options.use_head_version) ? "1" : "0"}, - {CMakeVariableDownloadTool, to_string_view(action.build_options.download_tool)}, - {CMakeVariableEditable, Util::Enum::to_bool(action.build_options.editable) ? "1" : "0"}, - {CMakeVariableNoDownloads, !Util::Enum::to_bool(action.build_options.allow_downloads) ? "1" : "0"}, + {CMakeVariableUseHeadVersion, Util::Enum::to_bool(action.use_head_version) ? "1" : "0"}, + {CMakeVariableDownloadTool, to_string_view(build_options.download_tool)}, + {CMakeVariableEditable, Util::Enum::to_bool(action.editable) ? "1" : "0"}, + {CMakeVariableNoDownloads, !Util::Enum::to_bool(build_options.allow_downloads) ? "1" : "0"}, {CMakeVariableZChainloadToolchainFile, action.pre_build_info(VCPKG_LINE_INFO).toolchain_file()}, + {CMakeVariableZPostPortfileIncludes, all_post_portfile_includes}, }; - if (action.build_options.download_tool == DownloadTool::Aria2) + if (build_options.download_tool == DownloadTool::Aria2) { variables.emplace_back("ARIA2", paths.get_tool_exe(Tools::ARIA2, out_sink)); } @@ -776,7 +824,7 @@ namespace vcpkg variables.emplace_back(cmake_arg); } - if (action.build_options.backcompat_features == BackcompatFeatures::Prohibit) + if (build_options.backcompat_features == BackcompatFeatures::Prohibit) { variables.emplace_back(CMakeVariableProhibitBackcompatFeatures, "1"); } @@ -787,7 +835,7 @@ namespace vcpkg action.abi_info.value_or_exit(VCPKG_LINE_INFO).toolset.value_or_exit(VCPKG_LINE_INFO), variables); - if (Util::Enum::to_bool(action.build_options.only_downloads)) + if (Util::Enum::to_bool(build_options.only_downloads)) { variables.emplace_back(CMakeVariableDownloadMode, "true"); } @@ -876,6 +924,8 @@ namespace vcpkg static ExtendedBuildResult do_build_package(const VcpkgCmdArguments& args, const VcpkgPaths& paths, + Triplet host_triplet, + const BuildPackageOptions& build_options, const InstallPlanAction& action, bool all_dependencies_satisfied) { @@ -917,7 +967,8 @@ namespace vcpkg const auto& abi_info = action.abi_info.value_or_exit(VCPKG_LINE_INFO); const ElapsedTimer timer; - auto cmd = vcpkg::make_cmake_cmd(paths, paths.ports_cmake, get_cmake_build_args(args, paths, action)); + auto cmd = vcpkg::make_cmake_cmd( + paths, paths.ports_cmake, get_cmake_build_args(args, paths, host_triplet, build_options, action)); RedirectedProcessLaunchSettings settings; auto& env = settings.environment.emplace( @@ -946,7 +997,7 @@ namespace vcpkg if (build_failed) { // With the exception of empty or helper ports, builds in "Download Mode" result in failure. - if (action.build_options.only_downloads == OnlyDownloads::Yes) + if (build_options.only_downloads == OnlyDownloads::Yes) { // TODO: Capture executed command output and evaluate whether the failure was intended. // If an unintended error occurs then return a BuildResult::DOWNLOAD_FAILURE status. @@ -989,7 +1040,7 @@ namespace vcpkg error_count = perform_post_build_lint_checks( action.spec, paths, pre_build_info, build_info, scfl.port_directory(), combo_sink); }; - if (error_count != 0 && action.build_options.backcompat_features == BackcompatFeatures::Prohibit) + if (error_count != 0 && build_options.backcompat_features == BackcompatFeatures::Prohibit) { return ExtendedBuildResult{BuildResult::PostBuildChecksFailed}; } @@ -1002,12 +1053,14 @@ namespace vcpkg static ExtendedBuildResult do_build_package_and_clean_buildtrees(const VcpkgCmdArguments& args, const VcpkgPaths& paths, + Triplet host_triplet, + const BuildPackageOptions& build_options, const InstallPlanAction& action, bool all_dependencies_satisfied) { - auto result = do_build_package(args, paths, action, all_dependencies_satisfied); + auto result = do_build_package(args, paths, host_triplet, build_options, action, all_dependencies_satisfied); - if (action.build_options.clean_buildtrees == CleanBuildtrees::Yes) + if (build_options.clean_buildtrees == CleanBuildtrees::Yes) { auto& fs = paths.get_filesystem(); // Will keep the logs, which are regular files @@ -1023,6 +1076,8 @@ namespace vcpkg ExtendedBuildResult build_package(const VcpkgCmdArguments& args, const VcpkgPaths& paths, + Triplet host_triplet, + const BuildPackageOptions& build_options, const InstallPlanAction& action, const IBuildLogsRecorder& build_logs_recorder, const StatusParagraphs& status_db) @@ -1044,7 +1099,7 @@ namespace vcpkg } const bool all_dependencies_satisfied = missing_fspecs.empty(); - if (action.build_options.only_downloads == OnlyDownloads::No) + if (build_options.only_downloads == OnlyDownloads::No) { if (!all_dependencies_satisfied) { @@ -1067,8 +1122,8 @@ namespace vcpkg } auto& abi_info = action.abi_info.value_or_exit(VCPKG_LINE_INFO); - ExtendedBuildResult result = - do_build_package_and_clean_buildtrees(args, paths, action, all_dependencies_satisfied); + ExtendedBuildResult result = do_build_package_and_clean_buildtrees( + args, paths, host_triplet, build_options, action, all_dependencies_satisfied); if (abi_info.abi_tag_complete()) { build_logs_recorder.record_build_result(paths, spec, result.code); @@ -1097,28 +1152,33 @@ namespace vcpkg } template - static void print_build_result_summary_line(Message build_result_message, int count) + static void append_build_result_summary_line(Message build_result_message, int count, LocalizedString& str) { if (count != 0) { - msg::println(LocalizedString().append_indent().append( - msgBuildResultSummaryLine, msg::build_result = msg::format(build_result_message), msg::count = count)); + str.append_indent() + .append(msgBuildResultSummaryLine, + msg::build_result = msg::format(build_result_message), + msg::count = count) + .append_raw('\n'); } } - void BuildResultCounts::println(const Triplet& triplet) const + LocalizedString BuildResultCounts::format(const Triplet& triplet) const { - msg::println(msgBuildResultSummaryHeader, msg::triplet = triplet); - 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); + LocalizedString str; + str.append(msgBuildResultSummaryHeader, msg::triplet = triplet).append_raw('\n'); + append_build_result_summary_line(msgBuildResultSucceeded, succeeded, str); + append_build_result_summary_line(msgBuildResultBuildFailed, build_failed, str); + append_build_result_summary_line(msgBuildResultPostBuildChecksFailed, post_build_checks_failed, str); + append_build_result_summary_line(msgBuildResultFileConflicts, file_conflicts, str); + append_build_result_summary_line( + msgBuildResultCascadeDueToMissingDependencies, cascaded_due_to_missing_dependencies, str); + append_build_result_summary_line(msgBuildResultExcluded, excluded, str); + append_build_result_summary_line(msgBuildResultCacheMissing, cache_missing, str); + append_build_result_summary_line(msgBuildResultDownloaded, downloaded, str); + append_build_result_summary_line(msgBuildResultRemoved, removed, str); + return str; } StringLiteral to_string_locale_invariant(const BuildResult build_result) @@ -1172,7 +1232,7 @@ namespace vcpkg } } - return res; + return res.append_raw('\n').append(msgSeeURL, msg::url = docs::troubleshoot_build_failures_url); } void append_log(const Path& path, const std::string& log, size_t max_log_length, std::string& out) @@ -1270,11 +1330,11 @@ namespace vcpkg fmt::format_to(std::back_inserter(issue_body), "-{}\n", paths.get_toolver_diagnostics()); fmt::format_to(std::back_inserter(issue_body), - "**To Reproduce**\n\n`vcpkg {} {}`\n", + "**To Reproduce**\n\n`vcpkg {} {}`\n\n", args.get_command(), Strings::join(" ", args.get_forwardable_arguments())); fmt::format_to(std::back_inserter(issue_body), - "**Failure logs**\n\n```\n{}\n```\n", + "**Failure logs**\n\n```\n{}\n```\n\n", paths.get_filesystem().read_contents(build_result.stdoutlog.value_or_exit(VCPKG_LINE_INFO), VCPKG_LINE_INFO)); @@ -1404,8 +1464,9 @@ namespace vcpkg } std::unordered_map policies; - for (const auto& policy : ALL_POLICIES) + for (size_t policy_idx = 0; policy_idx < static_cast(BuildPolicy::COUNT); ++policy_idx) { + auto policy = static_cast(policy_idx); const auto setting = parser.optional_field_or_empty(to_string_view(policy)); if (setting.empty()) continue; if (setting == "enabled") @@ -1413,10 +1474,10 @@ namespace vcpkg else if (setting == "disabled") policies.emplace(policy, false); else - Checks::msg_exit_maybe_upgrade(VCPKG_LINE_INFO, - msgUnknownPolicySetting, - msg::option = setting, - msg::value = to_string_view(policy)); + Checks::msg_exit_with_error(VCPKG_LINE_INFO, + msgUnknownPolicySetting, + msg::value = setting, + msg::cmake_var = to_cmake_variable(policy)); } auto maybe_error = parser.error(); @@ -1490,7 +1551,7 @@ namespace vcpkg // Note that this must come after CMakeVariableEnvPassthrough since the leading values come from there if (auto value = Util::value_if_set_and_nonempty(cmakevars, CMakeVariableEnvPassthroughUntracked)) { - Util::Vectors::append(&passthrough_env_vars, Strings::split(*value, ';')); + Util::Vectors::append(passthrough_env_vars, Strings::split(*value, ';')); } Util::assign_if_set_and_nonempty(public_abi_override, cmakevars, CMakeVariablePublicAbiOverride); @@ -1499,6 +1560,13 @@ namespace vcpkg hash_additional_files = Util::fmap(Strings::split(*value, ';'), [](auto&& str) { return Path(std::move(str)); }); } + + if (auto value = Util::value_if_set_and_nonempty(cmakevars, CMakeVariablePostPortfileIncludes)) + { + post_portfile_includes = + Util::fmap(Strings::split(*value, ';'), [](auto&& str) { return Path(std::move(str)); }); + } + // Note that this value must come after CMakeVariableChainloadToolchainFile because its default depends upon it load_vcvars_env = !external_toolchain_file.has_value(); if (auto value = Util::value_if_set_and_nonempty(cmakevars, CMakeVariableLoadVcvarsEnv)) diff --git a/src/vcpkg/commands.check-support.cpp b/src/vcpkg/commands.check-support.cpp index a9dbf809c9..2d76b6a2f5 100644 --- a/src/vcpkg/commands.check-support.cpp +++ b/src/vcpkg/commands.check-support.cpp @@ -128,12 +128,13 @@ namespace vcpkg auto& fs = paths.get_filesystem(); auto registry_set = paths.make_registry_set(); - PathsPortFileProvider provider( - fs, *registry_set, make_overlay_provider(fs, paths.original_cwd, paths.overlay_ports)); + PathsPortFileProvider provider(*registry_set, + make_overlay_provider(fs, paths.original_cwd, paths.overlay_ports)); auto cmake_vars = CMakeVars::make_triplet_cmake_var_provider(paths); // for each spec in the user-requested specs, check all dependencies - CreateInstallPlanOptions create_options{host_triplet, paths.packages()}; + CreateInstallPlanOptions create_options{ + nullptr, host_triplet, paths.packages(), UnsupportedPortAction::Error, UseHeadVersion::No, Editable::No}; for (const auto& user_spec : specs) { auto action_plan = create_feature_install_plan(provider, *cmake_vars, {&user_spec, 1}, {}, create_options); diff --git a/src/vcpkg/commands.ci-verify-versions.cpp b/src/vcpkg/commands.ci-verify-versions.cpp index 0849bb4697..2fd5191cc4 100644 --- a/src/vcpkg/commands.ci-verify-versions.cpp +++ b/src/vcpkg/commands.ci-verify-versions.cpp @@ -3,6 +3,7 @@ #include #include #include +#include #include #include @@ -28,187 +29,481 @@ namespace } } - ExpectedL verify_version_in_db(const VcpkgPaths& paths, - const std::map> baseline, - StringView port_name, - const Path& port_path, - const Path& versions_file_path, - const std::string& local_git_tree, - bool verify_git_trees) + bool verify_git_tree(MessageSink& errors_sink, + MessageSink& success_sink, + const VcpkgPaths& paths, + const std::string& port_name, + const Path& versions_file_path, + const GitVersionDbEntry& version_entry) { - auto maybe_maybe_versions = vcpkg::get_builtin_versions(paths, port_name); - const auto maybe_versions = maybe_maybe_versions.get(); - if (!maybe_versions) + bool success = true; + auto maybe_extracted_tree = paths.versions_dot_git_dir().then( + [&](Path&& dot_git) { return paths.git_checkout_port(port_name, version_entry.git_tree, dot_git); }); + auto extracted_tree = maybe_extracted_tree.get(); + if (!extracted_tree) { - return {msg::format_error( - msgWhileParsingVersionsForPort, msg::package_name = port_name, msg::path = versions_file_path) - .append(std::move(maybe_maybe_versions).error()), - expected_right_tag}; + success = false; + errors_sink.print(Color::error, + LocalizedString::from_raw(versions_file_path) + .append_raw(": ") + .append(maybe_extracted_tree.error()) + .append_raw('\n') + .append_raw(NotePrefix) + .append(msgWhileValidatingVersion, msg::version = version_entry.version.version) + .append_raw('\n')); + return success; } - const auto versions = maybe_versions->get(); - if (!versions || versions->empty()) + auto load_result = + Paragraphs::try_load_port_required(paths.get_filesystem(), port_name, PortLocation{*extracted_tree}); + auto scfl = load_result.maybe_scfl.get(); + if (!scfl) { - return {msg::format_error( - msgWhileParsingVersionsForPort, msg::package_name = port_name, msg::path = versions_file_path) - .append_raw('\n') - .append(msgInvalidNoVersions), - expected_right_tag}; + success = false; + // This output is technically wrong as it prints both the versions file path and the temporary extracted + // path, like this: + // + // C:\Dev\vcpkg\versions\a-\abseil.json: + // C:\Dev\vcpkg\buildtrees\versioning_\versions\abseil\28fa609b06eec70bb06e61891e94b94f35f7d06e\vcpkg.json: + // error: $.features: mismatched type: expected a set of features note: while validating version: + // 2020-03-03#7 + // + // However including both paths likely helps investigation and there isn't an easy way to replace only that + // file path right now + errors_sink.print(Color::error, + LocalizedString::from_raw(versions_file_path) + .append_raw(": ") + .append(load_result.maybe_scfl.error()) + .append_raw('\n') + .append_raw(NotePrefix) + .append(msgWhileValidatingVersion, msg::version = version_entry.version.version) + .append_raw('\n')); + return success; } - if (verify_git_trees) + auto&& git_tree_version = scfl->source_control_file->to_schemed_version(); + auto version_entry_spec = VersionSpec{port_name, version_entry.version.version}; + auto scfl_spec = scfl->source_control_file->to_version_spec(); + if (version_entry_spec != scfl_spec) { - for (auto&& version_entry : *versions) - { - bool version_ok = false; - for (StringView control_file : {"CONTROL", "vcpkg.json"}) - { - auto treeish = Strings::concat(version_entry.git_tree, ':', control_file); - auto maybe_file = paths.git_show(Strings::concat(treeish), - paths.versions_dot_git_dir().value_or_exit(VCPKG_LINE_INFO)); - if (!maybe_file) continue; - - const auto& file = maybe_file.value_or_exit(VCPKG_LINE_INFO); - auto maybe_scf = control_file == "vcpkg.json" - ? Paragraphs::try_load_port_manifest_text(file, treeish, out_sink) - : Paragraphs::try_load_control_file_text(file, treeish); - auto scf = maybe_scf.get(); - if (!scf) - { - return {msg::format_error(msgWhileParsingVersionsForPort, - msg::package_name = port_name, - msg::path = versions_file_path) - .append_raw('\n') - .append(msgWhileValidatingVersion, msg::version = version_entry.version.version) - .append_raw('\n') - .append(msgWhileLoadingPortFromGitTree, msg::commit_sha = treeish) - .append_raw('\n') - .append(maybe_scf.error()), - expected_right_tag}; - } - - auto&& git_tree_version = (**scf).to_schemed_version(); - if (version_entry.version.version != git_tree_version.version) - { - return { - msg::format_error(msgWhileParsingVersionsForPort, - msg::package_name = port_name, - msg::path = versions_file_path) - .append_raw('\n') - .append(msgWhileValidatingVersion, msg::version = version_entry.version.version) - .append_raw('\n') - .append(msgVersionInDeclarationDoesNotMatch, msg::version = git_tree_version.version) - .append_raw('\n') - .append(msgCheckedOutGitSha, msg::commit_sha = version_entry.git_tree), - expected_right_tag}; - } - version_ok = true; - break; - } + success = false; + errors_sink.print(Color::error, + LocalizedString::from_raw(versions_file_path) + .append_raw(": ") + .append_raw(ErrorPrefix) + .append(msgVersionInDeclarationDoesNotMatch, + msg::git_tree_sha = version_entry.git_tree, + msg::expected = version_entry_spec, + msg::actual = scfl_spec) + .append_raw('\n')); + } - if (!version_ok) - { - return {msg::format_error(msgWhileParsingVersionsForPort, - msg::package_name = port_name, - msg::path = versions_file_path) - .append_raw('\n') - .append(msgWhileValidatingVersion, msg::version = version_entry.version.version) - .append_raw('\n') - .append(msgCheckedOutObjectMissingManifest) - .append_raw('\n') - .append(msgCheckedOutGitSha, msg::commit_sha = version_entry.git_tree), - expected_right_tag}; - } - } + if (version_entry.version.scheme != git_tree_version.scheme) + { + success = false; + errors_sink.print(Color::error, + LocalizedString::from_raw(versions_file_path) + .append_raw(": ") + .append_raw(ErrorPrefix) + .append(msgVersionSchemeMismatch1Old, + msg::version = version_entry.version.version, + msg::expected = get_scheme_name(version_entry.version.scheme), + msg::actual = get_scheme_name(git_tree_version.scheme), + msg::package_name = port_name, + msg::git_tree_sha = version_entry.git_tree) + .append_raw('\n') + .append_raw(scfl->control_path) + .append_raw(": ") + .append_raw(NotePrefix) + .append(msgPortDeclaredHere, msg::package_name = port_name) + .append_raw('\n') + .append_raw(NotePrefix) + .append(msgVersionSchemeMismatch2) + .append_raw('\n')); } - auto maybe_scfl = - Paragraphs::try_load_port_required(paths.get_filesystem(), port_name, PortLocation{port_path}); - auto scfl = maybe_scfl.get(); - if (!scfl) + if (success) { - return {msg::format_error(msgWhileLoadingLocalPort, msg::package_name = port_name) - .append_raw('\n') - .append(maybe_scfl.error()), - expected_right_tag}; + success_sink.print(LocalizedString::from_raw(versions_file_path) + .append_raw(": ") + .append_raw(MessagePrefix) + .append(msgVersionVerifiedOK, + msg::version_spec = VersionSpec{port_name, version_entry.version.version}, + msg::git_tree_sha = version_entry.git_tree) + .append_raw('\n')); + } + + return success; + } + + bool verify_local_port_matches_version_database(MessageSink& errors_sink, + MessageSink& success_sink, + const std::string& port_name, + const SourceControlFileAndLocation& scfl, + FullGitVersionsDatabase& versions_database, + const std::string& local_git_tree) + { + bool success = true; + const auto& versions_database_entry = versions_database.lookup(port_name); + auto maybe_entries = versions_database_entry.entries.get(); + if (!maybe_entries) + { + // exists, but parse or file I/O error happened + return success; } - const auto local_port_version = scfl->source_control_file->to_schemed_version(); + auto entries = maybe_entries->get(); + if (!entries) + { + success = false; + errors_sink.print(Color::error, + LocalizedString::from_raw(scfl.control_path) + .append_raw(": ") + .append_raw(ErrorPrefix) + .append(msgVersionDatabaseFileMissing) + .append_raw('\n') + .append_raw(versions_database_entry.versions_file_path) + .append_raw(": ") + .append_raw(NotePrefix) + .append(msgVersionDatabaseFileMissing2) + .append_raw('\n') + .append_raw(NotePrefix) + .append(msgVersionDatabaseFileMissing3, + msg::command_line = fmt::format("vcpkg x-add-version {}", port_name)) + .append_raw('\n')); + return success; + } - auto versions_end = versions->end(); - auto it = std::find_if(versions->begin(), versions_end, [&](const GitVersionDbEntry& entry) { + const auto local_port_version = scfl.source_control_file->to_schemed_version(); + const auto local_version_spec = VersionSpec{port_name, local_port_version.version}; + + auto versions_end = entries->end(); + auto it = std::find_if(entries->begin(), versions_end, [&](const GitVersionDbEntry& entry) { return entry.version.version == local_port_version.version; }); + if (it == versions_end) { - return {msg::format_error( - msgWhileParsingVersionsForPort, msg::package_name = port_name, msg::path = versions_file_path) - .append_raw('\n') - .append(msgVersionNotFoundInVersionsFile, - msg::version = local_port_version.version, - msg::package_name = port_name), - expected_right_tag}; + success = false; + errors_sink.print(Color::error, + LocalizedString::from_raw(scfl.control_path) + .append_raw(": ") + .append_raw(ErrorPrefix) + .append(msgVersionNotFoundInVersionsFile2, + msg::version_spec = VersionSpec{port_name, local_port_version.version}) + .append_raw('\n') + .append_raw(versions_database_entry.versions_file_path) + .append_raw(": ") + .append_raw(NotePrefix) + .append(msgVersionNotFoundInVersionsFile3) + .append_raw('\n') + .append_raw(NotePrefix) + .append(msgVersionNotFoundInVersionsFile4, + msg::command_line = fmt::format("vcpkg x-add-version {}", port_name)) + .append_raw('\n')); + return success; } - auto& entry = *it; - if (entry.version.scheme != local_port_version.scheme) + auto& version_entry = *it; + if (version_entry.version.scheme != local_port_version.scheme) { - return {msg::format_error( - msgWhileParsingVersionsForPort, msg::package_name = port_name, msg::path = versions_file_path) - .append_raw('\n') - .append(msgVersionSchemeMismatch, - msg::version = entry.version.version, - msg::expected = get_scheme_name(entry.version.scheme), - msg::actual = get_scheme_name(local_port_version.scheme), - msg::path = port_path, - msg::package_name = port_name), - expected_right_tag}; + success = false; + // assume the port is correct, so report the error on the version database file + errors_sink.print( + Color::error, + LocalizedString::from_raw(versions_database_entry.versions_file_path) + .append_raw(": ") + .append_raw(ErrorPrefix) + .append(msgVersionSchemeMismatch1, + msg::version = version_entry.version.version, + msg::expected = get_scheme_name(version_entry.version.scheme), + msg::actual = get_scheme_name(local_port_version.scheme), + msg::package_name = port_name) + .append_raw('\n') + .append_raw(scfl.control_path) + .append_raw(": ") + .append_raw(NotePrefix) + .append(msgPortDeclaredHere, msg::package_name = port_name) + .append_raw('\n') + .append_raw(NotePrefix) + .append(msgVersionSchemeMismatch2) + .append_raw('\n') + .append_raw(NotePrefix) + .append(msgVersionOverwriteVersion, msg::version_spec = local_version_spec) + .append_raw(fmt::format("\nvcpkg x-add-version {} --overwrite-version\n", port_name))); } - if (local_git_tree != entry.git_tree) + if (local_git_tree != version_entry.git_tree) { - return {msg::format_error( - msgWhileParsingVersionsForPort, msg::package_name = port_name, msg::path = versions_file_path) - .append_raw('\n') - .append(msgVersionShaMismatch, - msg::version = entry.version.version, - msg::expected = entry.git_tree, - msg::actual = local_git_tree, - msg::package_name = port_name), - expected_right_tag}; + success = false; + errors_sink.print(Color::error, + LocalizedString::from_raw(versions_database_entry.versions_file_path) + .append_raw(": ") + .append_raw(ErrorPrefix) + .append(msgVersionShaMismatch1, + msg::version_spec = local_version_spec, + msg::git_tree_sha = version_entry.git_tree) + .append_raw('\n') + .append_raw(scfl.port_directory()) + .append_raw(": ") + .append_raw(NotePrefix) + .append(msgVersionShaMismatch2, msg::git_tree_sha = local_git_tree) + .append_raw('\n') + .append_raw(scfl.control_path) + .append_raw(": ") + .append_raw(NotePrefix) + .append(msgVersionShaMismatch3, msg::version_spec = local_version_spec) + .append_raw('\n') + .append_indent() + .append_raw(fmt::format("vcpkg x-add-version {}\n", port_name)) + .append_indent() + .append_raw("git add versions\n") + .append_indent() + .append(msgGitCommitUpdateVersionDatabase) + .append_raw('\n') + .append_raw(NotePrefix) + .append(msgVersionShaMismatch4, msg::version_spec = local_version_spec) + .append_raw('\n') + .append_indent() + .append_raw(fmt::format("vcpkg x-add-version {} --overwrite-version\n", port_name)) + .append_indent() + .append_raw("git add versions\n") + .append_indent() + .append(msgGitCommitUpdateVersionDatabase) + .append_raw('\n')); + } + + if (success) + { + success_sink.print(LocalizedString::from_raw(scfl.port_directory()) + .append_raw(": ") + .append_raw(MessagePrefix) + .append(msgVersionVerifiedOK, + msg::version_spec = local_version_spec, + msg::git_tree_sha = version_entry.git_tree) + .append_raw('\n')); } + return success; + } + + bool verify_local_port_matches_baseline(MessageSink& errors_sink, + MessageSink& success_sink, + const std::map> baseline, + const Path& baseline_path, + const std::string& port_name, + const SourceControlFileAndLocation& scfl) + { + const auto local_port_version = scfl.source_control_file->to_schemed_version(); auto maybe_baseline = baseline.find(port_name); if (maybe_baseline == baseline.end()) { - return {msg::format_error( - msgWhileParsingVersionsForPort, msg::package_name = port_name, msg::path = versions_file_path) - .append_raw('\n') - .append(msgBaselineMissing, - msg::package_name = port_name, - msg::version = local_port_version.version), - expected_right_tag}; + errors_sink.print(Color::error, + LocalizedString::from_raw(baseline_path) + .append_raw(": ") + .append_raw(ErrorPrefix) + .append(msgBaselineMissing, msg::package_name = port_name) + .append_raw('\n') + .append_raw(scfl.control_path) + .append_raw(": ") + .append_raw(NotePrefix) + .append(msgPortDeclaredHere, msg::package_name = port_name) + .append_raw('\n') + .append_raw(NotePrefix) + .append(msgAddVersionInstructions, msg::package_name = port_name) + .append_raw('\n') + .append_indent() + .append_raw(fmt::format("vcpkg x-add-version {}\n", port_name)) + .append_indent() + .append_raw("git add versions\n") + .append_indent() + .append(msgGitCommitUpdateVersionDatabase) + .append_raw('\n')); + return false; } auto&& baseline_version = maybe_baseline->second; - if (baseline_version != entry.version.version) + if (baseline_version == local_port_version.version) { - return {msg::format_error( - msgWhileParsingVersionsForPort, msg::package_name = port_name, msg::path = versions_file_path) - .append_raw('\n') - .append(msgVersionBaselineMismatch, - msg::expected = entry.version.version, - msg::actual = baseline_version, - msg::package_name = port_name), - expected_right_tag}; + success_sink.print(LocalizedString::from_raw(baseline_path) + .append_raw(": ") + .append_raw(MessagePrefix) + .append(msgVersionBaselineMatch, + msg::version_spec = VersionSpec{port_name, local_port_version.version}) + .append_raw('\n')); + return true; + } + + // assume the port is correct, so report the error on the baseline.json file + errors_sink.print(Color::error, + LocalizedString::from_raw(baseline_path) + .append_raw(": ") + .append_raw(ErrorPrefix) + .append(msgVersionBaselineMismatch, + msg::expected = local_port_version.version, + msg::actual = baseline_version, + msg::package_name = port_name) + .append_raw('\n') + .append_raw(scfl.control_path) + .append_raw(": ") + .append_raw(NotePrefix) + .append(msgPortDeclaredHere, msg::package_name = port_name) + .append_raw('\n') + .append_raw(NotePrefix) + .append(msgAddVersionInstructions, msg::package_name = port_name) + .append_raw('\n') + .append_indent() + .append_raw(fmt::format("vcpkg x-add-version {}\n", port_name)) + .append_indent() + .append_raw("git add versions\n") + .append_indent() + .append(msgGitCommitUpdateVersionDatabase) + .append_raw('\n')); + return false; + } + + bool verify_dependency_and_version_constraint(const Dependency& dependency, + const std::string* feature_name, + MessageSink& errors_sink, + const SourceControlFileAndLocation& scfl, + FullGitVersionsDatabase& versions_database) + { + auto dependent_versions_db_entry = versions_database.lookup(dependency.name); + auto maybe_dependent_entries = dependent_versions_db_entry.entries.get(); + if (!maybe_dependent_entries) + { + // versions database parse or I/O error + return false; + } + + auto dependent_entries = maybe_dependent_entries->get(); + if (!dependent_entries) + { + auto this_error = LocalizedString::from_raw(scfl.control_path) + .append_raw(": ") + .append_raw(ErrorPrefix) + .append(msgDependencyNotInVersionDatabase, msg::package_name = dependency.name) + .append_raw('\n'); + if (feature_name) + { + this_error.append_raw(NotePrefix) + .append(msgDependencyInFeature, msg::feature = *feature_name) + .append_raw('\n'); + } + + errors_sink.print(Color::error, std::move(this_error)); + return false; + } + + auto maybe_minimum_version = dependency.constraint.try_get_minimum_version(); + auto minimum_version = maybe_minimum_version.get(); + if (minimum_version && Util::none_of(*dependent_entries, [=](const GitVersionDbEntry& entry) { + return entry.version.version == *minimum_version; + })) + { + auto this_error = LocalizedString::from_raw(scfl.control_path) + .append_raw(": ") + .append_raw(ErrorPrefix) + .append(msgVersionConstraintNotInDatabase1, + msg::package_name = dependency.name, + msg::version = *minimum_version) + .append_raw('\n') + .append_raw(dependent_versions_db_entry.versions_file_path) + .append_raw(": ") + .append_raw(NotePrefix) + .append(msgVersionConstraintNotInDatabase2) + .append_raw('\n'); + if (feature_name) + { + this_error.append_raw(NotePrefix) + .append(msgDependencyInFeature, msg::feature = *feature_name) + .append_raw('\n'); + } + + errors_sink.print(Color::error, std::move(this_error)); + return false; + } + + return true; + } + + bool verify_all_dependencies_and_version_constraints(MessageSink& errors_sink, + MessageSink& success_sink, + const SourceControlFileAndLocation& scfl, + FullGitVersionsDatabase& versions_database) + { + bool success = true; + + for (auto&& core_dependency : scfl.source_control_file->core_paragraph->dependencies) + { + success &= verify_dependency_and_version_constraint( + core_dependency, nullptr, errors_sink, scfl, versions_database); + } + + for (auto&& feature : scfl.source_control_file->feature_paragraphs) + { + for (auto&& feature_dependency : feature->dependencies) + { + success &= verify_dependency_and_version_constraint( + feature_dependency, &feature->name, errors_sink, scfl, versions_database); + } + } + + for (auto&& override_ : scfl.source_control_file->core_paragraph->overrides) + { + auto override_versions_db_entry = versions_database.lookup(override_.name); + auto maybe_override_entries = override_versions_db_entry.entries.get(); + if (!maybe_override_entries) + { + success = false; + continue; + } + + auto override_entries = maybe_override_entries->get(); + if (!override_entries) + { + success = false; + errors_sink.print( + Color::error, + LocalizedString::from_raw(scfl.control_path) + .append_raw(": ") + .append_raw(ErrorPrefix) + .append(msgVersionOverrideNotInVersionDatabase, msg::package_name = override_.name) + .append_raw('\n')); + continue; + } + + if (Util::none_of(*override_entries, [&](const GitVersionDbEntry& entry) { + return entry.version.version == override_.version; + })) + { + success = false; + errors_sink.print(Color::error, + LocalizedString::from_raw(scfl.control_path) + .append_raw(": ") + .append_raw(ErrorPrefix) + .append(msgVersionOverrideVersionNotInVersionDatabase1, + msg::package_name = override_.name, + msg::version = override_.version) + .append_raw('\n') + .append_raw(override_versions_db_entry.versions_file_path) + .append_raw(": ") + .append_raw(NotePrefix) + .append(msgVersionOverrideVersionNotInVersionDatabase2) + .append_raw('\n')); + } + } + + if (success) + { + success_sink.print(LocalizedString::from_raw(scfl.control_path) + .append_raw(": ") + .append_raw(MessagePrefix) + .append(msgVersionConstraintOk) + .append_raw('\n')); } - return { - message_prefix().append(msgVersionVerifiedOK, - msg::version_spec = Strings::concat(port_name, '@', entry.version.version), - msg::git_tree_sha = entry.git_tree), - expected_left_tag, - }; + return success; } constexpr CommandSwitch VERIFY_VERSIONS_SWITCHES[]{ @@ -216,9 +511,6 @@ namespace {SwitchVerifyGitTrees, msgCISettingsVerifyGitTree}, }; - constexpr CommandSetting VERIFY_VERSIONS_SETTINGS[] = { - {SwitchExclude, msgCISettingsExclude}, - }; } // unnamed namespace namespace vcpkg @@ -231,7 +523,7 @@ namespace vcpkg AutocompletePriority::Internal, 0, SIZE_MAX, - {VERIFY_VERSIONS_SWITCHES, VERIFY_VERSIONS_SETTINGS}, + {VERIFY_VERSIONS_SWITCHES}, nullptr, }; @@ -242,114 +534,117 @@ namespace vcpkg bool verbose = Util::Sets::contains(parsed_args.switches, SwitchVerbose); bool verify_git_trees = Util::Sets::contains(parsed_args.switches, SwitchVerifyGitTrees); - std::set exclusion_set; - auto& settings = parsed_args.settings; - auto it_exclusions = settings.find(SwitchExclude); - if (it_exclusions != settings.end()) - { - auto exclusions = Strings::split(it_exclusions->second, ','); - exclusion_set.insert(std::make_move_iterator(exclusions.begin()), - std::make_move_iterator(exclusions.end())); - } - - auto maybe_port_git_tree_map = paths.git_get_local_port_treeish_map(); - if (!maybe_port_git_tree_map) - { - Checks::msg_exit_with_error(VCPKG_LINE_INFO, - msg::format(msgFailedToObtainLocalPortGitSha) - .append_raw('\n') - .append_raw(maybe_port_git_tree_map.error())); - } + auto port_git_tree_map = paths.git_get_local_port_treeish_map().value_or_exit(VCPKG_LINE_INFO); + auto& fs = paths.get_filesystem(); + auto versions_database = + load_all_git_versions_files(fs, paths.builtin_registry_versions).value_or_exit(VCPKG_LINE_INFO); + auto baseline = get_builtin_baseline(paths).value_or_exit(VCPKG_LINE_INFO); - auto& port_git_tree_map = maybe_port_git_tree_map.value_or_exit(VCPKG_LINE_INFO); + std::map> local_ports; - // Baseline is required. - auto baseline = get_builtin_baseline(paths).value_or_exit(VCPKG_LINE_INFO); - auto& fs = paths.get_filesystem(); - std::set errors; - for (const auto& port_path : fs.get_directories_non_recursive(paths.builtin_ports_directory(), VCPKG_LINE_INFO)) + MessageSink& errors_sink = stdout_sink; + for (auto&& port_path : fs.get_directories_non_recursive(paths.builtin_ports_directory(), VCPKG_LINE_INFO)) { - auto port_name = port_path.stem(); - if (Util::Sets::contains(exclusion_set, port_name.to_string())) + auto port_name = port_path.stem().to_string(); + auto maybe_loaded_port = + Paragraphs::try_load_port_required(fs, port_name, PortLocation{port_path}).maybe_scfl; + auto loaded_port = maybe_loaded_port.get(); + if (loaded_port) { - if (verbose) - { - msg::write_unlocalized_text(Color::error, fmt::format("SKIP: {}\n", port_name)); - } - + local_ports.emplace(port_name, std::move(*loaded_port)); continue; } + + errors_sink.println(Color::error, std::move(maybe_loaded_port).error()); + } + + bool success = true; + + auto& success_sink = verbose ? stdout_sink : null_sink; + for (const auto& local_port : local_ports) + { + const auto& port_name = local_port.first; + const auto& scfl = local_port.second; auto git_tree_it = port_git_tree_map.find(port_name); if (git_tree_it == port_git_tree_map.end()) { - msg::write_unlocalized_text(Color::error, fmt::format("FAIL: {}\n", port_name)); - errors.emplace( - msg::format_error(msgVersionShaMissing, msg::package_name = port_name, msg::path = port_path)); - continue; + errors_sink.print( + Color::error, + LocalizedString::from_raw(scfl.control_path) + .append_raw(": ") + .append_raw(ErrorPrefix) + .append(msgVersionShaMissing1) + .append_raw('\n') + .append_raw(NotePrefix) + .append(msgVersionShaMissing2) + .append_raw('\n') + .append_indent() + .append_raw(fmt::format("git add \"{}\"\n", scfl.port_directory())) + .append_indent() + .append_raw(fmt::format("git commit -m {}\n", msg::format(msgVersionShaMissing3))) + .append_indent() + .append_raw(fmt::format("vcpkg x-add-version {}\n", port_name)) + .append_indent() + .append_raw("git add versions\n") + .append_indent() + .append_raw(fmt::format("git commit --amend -m \"{}\"\n", + msg::format(msgVersionShaMissing4, msg::package_name = port_name)))); } - - auto& git_tree = git_tree_it->second; - auto control_path = port_path / "CONTROL"; - auto manifest_path = port_path / "vcpkg.json"; - auto manifest_exists = fs.exists(manifest_path, IgnoreErrors{}); - auto control_exists = fs.exists(control_path, IgnoreErrors{}); - - if (manifest_exists && control_exists) + else { - msg::write_unlocalized_text(Color::error, fmt::format("FAIL: {}\n", port_name)); - errors.emplace(msg::format_error(msgControlAndManifestFilesPresent, msg::path = port_path)); - continue; + success &= verify_local_port_matches_version_database( + errors_sink, success_sink, port_name, scfl, versions_database, git_tree_it->second); } - if (!manifest_exists && !control_exists) + success &= verify_local_port_matches_baseline(errors_sink, + success_sink, + baseline, + paths.builtin_registry_versions / "baseline.json", + port_name, + scfl); + + success &= + verify_all_dependencies_and_version_constraints(errors_sink, success_sink, scfl, versions_database); + } + + // We run version database checks at the end in case any of the above created new cache entries + for (auto&& versions_cache_entry : versions_database.cache()) + { + auto&& port_name = versions_cache_entry.first; + auto maybe_entries = versions_cache_entry.second.entries.get(); + if (!maybe_entries) { - msg::write_unlocalized_text(Color::error, fmt::format("FAIL: {}\n", port_name)); - errors.emplace(LocalizedString::from_raw(port_path) - .append_raw(": ") - .append_raw(ErrorPrefix) - .append(msgPortMissingManifest2, msg::package_name = port_name)); + errors_sink.println(Color::error, versions_cache_entry.second.entries.error()); continue; } - const char prefix[] = {port_name[0], '-', '\0'}; - auto versions_file_path = paths.builtin_registry_versions / prefix / Strings::concat(port_name, ".json"); - if (!fs.exists(versions_file_path, IgnoreErrors{})) + auto entries = maybe_entries->get(); + if (!entries) { - msg::write_unlocalized_text(Color::error, fmt::format("FAIL: {}\n", port_name)); - errors.emplace(msg::format_error( - msgVersionDatabaseFileMissing, msg::package_name = port_name, msg::path = versions_file_path)); + // missing version database entry is OK; should have been reported as one of the other error + // categories by one of the other checks continue; } - auto maybe_ok = verify_version_in_db( - paths, baseline, port_name, port_path, versions_file_path, git_tree, verify_git_trees); - if (auto ok = maybe_ok.get()) + if (verify_git_trees) { - if (verbose) + for (auto&& version_entry : *entries) { - msg::println(*ok); + success &= verify_git_tree(errors_sink, + success_sink, + paths, + port_name, + versions_cache_entry.second.versions_file_path, + version_entry); } } - else - { - msg::write_unlocalized_text(Color::error, fmt::format("FAIL: {}\n", port_name)); - errors.emplace(std::move(maybe_ok).error()); - } } - if (!errors.empty()) + if (!success) { - auto message = msg::format(msgErrorsFound); - for (auto&& error : errors) - { - message.append_raw('\n').append(error); - } - - message.append_raw('\n').append( - msgSuggestResolution, msg::command_name = "x-add-version", msg::option = "all"); - msg::println_error(message); Checks::exit_fail(VCPKG_LINE_INFO); } + Checks::exit_success(VCPKG_LINE_INFO); } } // namespace vcpkg diff --git a/src/vcpkg/commands.ci.cpp b/src/vcpkg/commands.ci.cpp index 055795aba8..fc3ec8ff0b 100644 --- a/src/vcpkg/commands.ci.cpp +++ b/src/vcpkg/commands.ci.cpp @@ -227,7 +227,6 @@ namespace } else { - it->build_options = backcompat_prohibiting_package_options; to_keep.insert(it->package_dependencies.begin(), it->package_dependencies.end()); } } @@ -250,7 +249,7 @@ namespace : SortedVector(Strings::split(it_exclusions->second, ','))); } - void print_regressions(const std::vector& results, + bool print_regressions(const std::vector& results, const std::map& known, const CiBaselineData& cidata, const std::string& ci_baseline_file_name, @@ -287,12 +286,12 @@ namespace } } - if (!has_error) + if (has_error) { - return; + msg::write_unlocalized_text_to_stderr(Color::none, output); } - auto output_data = output.extract_data(); - fwrite(output_data.data(), 1, output_data.size(), stderr); + + return has_error; } } // unnamed namespace @@ -320,6 +319,19 @@ namespace vcpkg const ParsedArguments options = args.parse_arguments(CommandCiMetadata); const auto& settings = options.settings; + static constexpr BuildPackageOptions build_options{ + BuildMissing::Yes, + AllowDownloads::Yes, + OnlyDownloads::No, + CleanBuildtrees::Yes, + CleanPackages::Yes, + CleanDownloads::No, + DownloadTool::Builtin, + BackcompatFeatures::Prohibit, + PrintUsage::Yes, + KeepGoing::Yes, + }; + ExclusionsMap exclusions_map; parse_exclusions(settings, SwitchExclude, target_triplet, exclusions_map); parse_exclusions(settings, SwitchHostExclude, host_triplet, exclusions_map); @@ -365,8 +377,8 @@ namespace vcpkg build_logs_recorder_storage ? *(build_logs_recorder_storage.get()) : null_build_logs_recorder(); auto registry_set = paths.make_registry_set(); - PathsPortFileProvider provider( - filesystem, *registry_set, make_overlay_provider(filesystem, paths.original_cwd, paths.overlay_ports)); + PathsPortFileProvider provider(*registry_set, + make_overlay_provider(filesystem, paths.original_cwd, paths.overlay_ports)); auto var_provider_storage = CMakeVars::make_triplet_cmake_var_provider(paths); auto& var_provider = *var_provider_storage; @@ -380,8 +392,6 @@ namespace vcpkg InternalFeatureSet{FeatureNameCore.to_string(), FeatureNameDefault.to_string()}); } - CreateInstallPlanOptions serialize_options(host_triplet, paths.packages(), UnsupportedPortAction::Warn); - struct RandomizerInstance : GraphRandomizer { virtual int random(int i) override @@ -393,17 +403,20 @@ namespace vcpkg std::random_device e; } randomizer_instance; - + GraphRandomizer* randomizer = nullptr; if (Util::Sets::contains(options.switches, SwitchXRandomize)) { - serialize_options.randomizer = &randomizer_instance; + randomizer = &randomizer_instance; } - auto action_plan = compute_full_plan(paths, provider, var_provider, all_default_full_specs, serialize_options); + CreateInstallPlanOptions create_install_plan_options( + randomizer, host_triplet, paths.packages(), UnsupportedPortAction::Warn, UseHeadVersion::No, Editable::No); + auto action_plan = + compute_full_plan(paths, provider, var_provider, all_default_full_specs, create_install_plan_options); auto binary_cache = BinaryCache::make(args, paths, out_sink).value_or_exit(VCPKG_LINE_INFO); const auto precheck_results = binary_cache.precheck(action_plan.install_actions); auto split_specs = compute_action_statuses(ExclusionPredicate{&exclusions_map}, precheck_results, action_plan); - LocalizedString regressions; + LocalizedString not_supported_regressions; { std::string msg; for (const auto& spec : all_default_full_specs) @@ -417,7 +430,7 @@ namespace vcpkg if (cidata.expected_failures.contains(spec.package_spec)) { - regressions + not_supported_regressions .append(supp ? msgCiBaselineUnexpectedFailCascade : msgCiBaselineUnexpectedFail, msg::spec = spec.package_spec, msg::triplet = spec.package_spec.triplet()) @@ -479,11 +492,13 @@ namespace vcpkg if (is_dry_run) { - print_plan(action_plan, true, paths.builtin_ports_directory()); - if (!regressions.empty()) + print_plan(action_plan, paths.builtin_ports_directory()); + if (!not_supported_regressions.empty()) { - msg::println(Color::error, msgCiBaselineRegressionHeader); - msg::print(Color::error, regressions); + msg::write_unlocalized_text_to_stderr( + Color::error, + msg::format(msgCiBaselineRegressionHeader).append_raw('\n').append_raw(not_supported_regressions)); + Checks::exit_fail(VCPKG_LINE_INFO); } } else @@ -504,8 +519,9 @@ namespace vcpkg install_preclear_packages(paths, action_plan); binary_cache.fetch(action_plan.install_actions); + auto summary = install_execute_plan( - args, action_plan, KeepGoing::YES, paths, status_db, binary_cache, build_logs_recorder); + args, paths, host_triplet, build_options, action_plan, status_db, binary_cache, build_logs_recorder); for (auto&& result : summary.results) { @@ -516,14 +532,14 @@ namespace vcpkg .append(msgTripletLabel) .append_raw(' ') .append_raw(target_triplet) - .append_raw('\n')); - summary.print(); - print_regressions(summary.results, - split_specs->known, - cidata, - baseline_iter->second, - regressions, - allow_unexpected_passing); + .append_raw('\n') + .append(summary.format())); + const bool any_regressions = print_regressions(summary.results, + split_specs->known, + cidata, + baseline_iter->second, + not_supported_regressions, + allow_unexpected_passing); auto it_xunit = settings.find(SwitchXXUnit); if (it_xunit != settings.end()) @@ -559,6 +575,11 @@ namespace vcpkg filesystem.write_contents( it_xunit->second, xunitTestResults.build_xml(target_triplet), VCPKG_LINE_INFO); } + + if (any_regressions) + { + Checks::exit_fail(VCPKG_LINE_INFO); + } } Checks::exit_success(VCPKG_LINE_INFO); diff --git a/src/vcpkg/commands.depend-info.cpp b/src/vcpkg/commands.depend-info.cpp index 0bfbadd975..d89fc4bd8c 100644 --- a/src/vcpkg/commands.depend-info.cpp +++ b/src/vcpkg/commands.depend-info.cpp @@ -165,6 +165,18 @@ namespace namespace vcpkg { + namespace + { + const char* get_dot_element_style(const std::string& label) + { + if (!Strings::contains(label, ':')) return ""; + + if (Strings::ends_with(label, ":host")) return " [color=gray51 fontcolor=gray51]"; + + return " [color=blue fontcolor=blue]"; + } + } + std::string create_dot_as_string(const std::vector& depend_info) { int empty_node_count = 0; @@ -173,7 +185,8 @@ namespace vcpkg for (const auto& package : depend_info) { - fmt::format_to(std::back_inserter(s), "\"{}\";\n", package.package); + fmt::format_to( + std::back_inserter(s), "\"{}\"{};\n", package.package, get_dot_element_style(package.package)); if (package.dependencies.empty()) { empty_node_count++; @@ -182,7 +195,8 @@ namespace vcpkg for (const auto& d : package.dependencies) { - fmt::format_to(std::back_inserter(s), "\"{}\" -> \"{}\";\n", package.package, d); + fmt::format_to( + std::back_inserter(s), "\"{}\" -> \"{}\"{};\n", package.package, d, get_dot_element_style(d)); } } @@ -395,8 +409,8 @@ namespace vcpkg auto& fs = paths.get_filesystem(); auto registry_set = paths.make_registry_set(); - PathsPortFileProvider provider( - fs, *registry_set, make_overlay_provider(fs, paths.original_cwd, paths.overlay_ports)); + PathsPortFileProvider provider(*registry_set, + make_overlay_provider(fs, paths.original_cwd, paths.overlay_ports)); auto var_provider_storage = CMakeVars::make_triplet_cmake_var_provider(paths); auto& var_provider = *var_provider_storage; @@ -404,7 +418,11 @@ namespace vcpkg // All actions in the plan should be install actions, as there's no installed packages to remove. StatusParagraphs status_db; auto action_plan = create_feature_install_plan( - provider, var_provider, specs, status_db, {host_triplet, paths.packages(), UnsupportedPortAction::Warn}); + provider, + var_provider, + specs, + status_db, + {nullptr, host_triplet, paths.packages(), UnsupportedPortAction::Warn, UseHeadVersion::No, Editable::No}); action_plan.print_unsupported_warnings(); if (!action_plan.remove_actions.empty()) diff --git a/src/vcpkg/commands.env.cpp b/src/vcpkg/commands.env.cpp index d8104d44d3..14d6cec2f4 100644 --- a/src/vcpkg/commands.env.cpp +++ b/src/vcpkg/commands.env.cpp @@ -80,8 +80,8 @@ namespace vcpkg const ParsedArguments options = args.parse_arguments(CommandEnvMetadata); auto registry_set = paths.make_registry_set(); - PathsPortFileProvider provider( - fs, *registry_set, make_overlay_provider(fs, paths.original_cwd, paths.overlay_ports)); + PathsPortFileProvider provider(*registry_set, + make_overlay_provider(fs, paths.original_cwd, paths.overlay_ports)); auto var_provider_storage = CMakeVars::make_triplet_cmake_var_provider(paths); auto& var_provider = *var_provider_storage; diff --git a/src/vcpkg/commands.export.cpp b/src/vcpkg/commands.export.cpp index 6e8a70a095..efb28a3455 100644 --- a/src/vcpkg/commands.export.cpp +++ b/src/vcpkg/commands.export.cpp @@ -602,8 +602,8 @@ namespace vcpkg // Load ports from ports dirs auto& fs = paths.get_filesystem(); auto registry_set = paths.make_registry_set(); - PathsPortFileProvider provider( - fs, *registry_set, make_overlay_provider(fs, paths.original_cwd, paths.overlay_ports)); + PathsPortFileProvider provider(*registry_set, + make_overlay_provider(fs, paths.original_cwd, paths.overlay_ports)); // create the plan std::vector export_plan = create_export_plan(opts.specs, status_db); diff --git a/src/vcpkg/commands.find.cpp b/src/vcpkg/commands.find.cpp index 405bb7afd0..6e286e1ed9 100644 --- a/src/vcpkg/commands.find.cpp +++ b/src/vcpkg/commands.find.cpp @@ -7,6 +7,7 @@ #include #include +#include #include #include #include @@ -137,7 +138,7 @@ namespace vcpkg Checks::check_exit(VCPKG_LINE_INFO, msg::default_output_stream == OutputStream::StdErr); auto& fs = paths.get_filesystem(); auto registry_set = paths.make_registry_set(); - PathsPortFileProvider provider(fs, *registry_set, make_overlay_provider(fs, paths.original_cwd, overlay_ports)); + PathsPortFileProvider provider(*registry_set, make_overlay_provider(fs, paths.original_cwd, overlay_ports)); auto source_paragraphs = Util::fmap(provider.load_all_control_files(), [](auto&& port) -> const SourceControlFile* { return port->source_control_file.get(); }); @@ -285,6 +286,8 @@ namespace vcpkg perform_find_port_and_exit(paths, full_description, enable_json, filter, paths.overlay_ports); } - Checks::msg_exit_with_error(VCPKG_LINE_INFO, msgAddCommandFirstArg); + Checks::msg_exit_with_error( + VCPKG_LINE_INFO, + msg::format(msgFindCommandFirstArg).append_raw('\n').append(msgSeeURL, msg::url = docs::add_command_url)); } } // namespace vcpkg diff --git a/src/vcpkg/commands.format-manifest.cpp b/src/vcpkg/commands.format-manifest.cpp index 9fd96a8b75..d1199f167f 100644 --- a/src/vcpkg/commands.format-manifest.cpp +++ b/src/vcpkg/commands.format-manifest.cpp @@ -3,13 +3,12 @@ #include #include #include -#include +#include #include #include #include #include -#include #include #include @@ -19,102 +18,35 @@ namespace { struct ToWrite { - SourceControlFile scf; - Path file_to_write; - Path original_path; std::string original_source; + std::unique_ptr scf; + Path control_path; + Path file_to_write; }; - Optional read_manifest(const ReadOnlyFilesystem& fs, Path&& manifest_path) - { - const auto& path_string = manifest_path.native(); - Debug::println("Reading ", path_string); - auto contents = fs.read_contents(manifest_path, VCPKG_LINE_INFO); - auto parsed_json_opt = Json::parse(contents, manifest_path); - if (!parsed_json_opt) - { - msg::println(Color::error, parsed_json_opt.error()); - return nullopt; - } - - const auto& parsed_json = parsed_json_opt.value(VCPKG_LINE_INFO).value; - if (!parsed_json.is_object()) - { - msg::println_error(msgJsonErrorMustBeAnObject, msg::path = path_string); - return nullopt; - } - - auto parsed_json_obj = parsed_json.object(VCPKG_LINE_INFO); - - auto scf = SourceControlFile::parse_project_manifest_object(path_string, parsed_json_obj, out_sink); - if (!scf) - { - msg::println_error(msgFailedToParseManifest, msg::path = path_string); - print_error_message(scf.error()); - return nullopt; - } - - return ToWrite{ - std::move(*scf.value(VCPKG_LINE_INFO)), - manifest_path, - manifest_path, - std::move(contents), - }; - } - - Optional read_control_file(const ReadOnlyFilesystem& fs, Path&& control_path) - { - Debug::println("Reading ", control_path); - - auto manifest_path = Path(control_path.parent_path()) / "vcpkg.json"; - auto contents = fs.read_contents(control_path, VCPKG_LINE_INFO); - auto paragraphs = Paragraphs::parse_paragraphs(contents, control_path); - - if (!paragraphs) - { - msg::println_error(msg::format(msgFailedToReadParagraph, msg::path = control_path) - .append_raw(": ") - .append_raw(paragraphs.error())); - return {}; - } - auto scf_res = - SourceControlFile::parse_control_file(control_path, std::move(paragraphs).value(VCPKG_LINE_INFO)); - if (!scf_res) - { - msg::println_error(msgFailedToParseControl, msg::path = control_path); - print_error_message(scf_res.error()); - return {}; - } - - return ToWrite{ - std::move(*scf_res.value(VCPKG_LINE_INFO)), - manifest_path, - control_path, - std::move(contents), - }; - } - void open_for_write(const Filesystem& fs, const ToWrite& data) { - const auto& original_path_string = data.original_path.native(); + const auto& original_path_string = data.control_path.native(); const auto& file_to_write_string = data.file_to_write.native(); - if (data.file_to_write == data.original_path) + bool in_place = data.file_to_write == original_path_string; + if (in_place) { Debug::println("Formatting ", file_to_write_string); } else { - Debug::println("Converting ", file_to_write_string, " -> ", original_path_string); + Debug::println("Converting ", original_path_string, " -> ", file_to_write_string); } - auto res = serialize_manifest(data.scf); + auto res = serialize_manifest(*data.scf); // reparse res to ensure no semantic changes were made - auto maybe_reparsed = SourceControlFile::parse_project_manifest_object(StringView{}, res, null_sink); + auto maybe_reparsed = + SourceControlFile::parse_project_manifest_object(StringLiteral{""}, res, null_sink); bool reparse_matches; if (auto reparsed = maybe_reparsed.get()) { - reparse_matches = **reparsed == data.scf; + reparse_matches = **reparsed == *data.scf; } else { @@ -132,26 +64,10 @@ namespace Json::stringify(res, {})))); } - // the manifest scf is correct - std::error_code ec; - fs.write_contents(data.file_to_write, Json::stringify(res), ec); - if (ec) + fs.write_contents(data.file_to_write, Json::stringify(res), VCPKG_LINE_INFO); + if (!in_place) { - Checks::msg_exit_with_error(VCPKG_LINE_INFO, - msg::format(msgFailedToWriteManifest, msg::path = file_to_write_string) - .append_raw(": ") - .append_raw(ec.message())); - } - if (data.original_path != data.file_to_write) - { - fs.remove(data.original_path, ec); - if (ec) - { - Checks::msg_exit_with_error(VCPKG_LINE_INFO, - msg::format(msgFailedToRemoveControl, msg::path = original_path_string) - .append_raw(": ") - .append_raw(ec.message())); - } + fs.remove(original_path_string, VCPKG_LINE_INFO); } } @@ -197,18 +113,6 @@ namespace vcpkg } std::vector to_write; - - const auto add_file = [&to_write, &has_error](Optional&& opt) { - if (auto t = opt.get()) - { - to_write.push_back(std::move(*t)); - } - else - { - has_error = true; - } - }; - for (Path path : parsed_args.command_arguments) { if (path.is_relative()) @@ -216,13 +120,44 @@ namespace vcpkg path = paths.original_cwd / path; } + auto maybe_contents = fs.try_read_contents(path); + auto contents = maybe_contents.get(); + if (!contents) + { + has_error = true; + msg::println(maybe_contents.error()); + continue; + } + if (path.filename() == "CONTROL") { - add_file(read_control_file(fs, std::move(path))); + auto maybe_control = Paragraphs::try_load_control_file_text(contents->content, contents->origin); + if (auto control = maybe_control.get()) + { + to_write.push_back(ToWrite{contents->content, + std::move(*control), + std::move(path), + Path(path.parent_path()) / "vcpkg.json"}); + } + else + { + has_error = true; + msg::println(maybe_control.error()); + } } else { - add_file(read_manifest(fs, std::move(path))); + auto maybe_manifest = + Paragraphs::try_load_project_manifest_text(contents->content, contents->origin, stdout_sink); + if (auto manifest = maybe_manifest.get()) + { + to_write.push_back(ToWrite{contents->content, std::move(*manifest), path, path}); + } + else + { + has_error = true; + msg::println(maybe_manifest.error()); + } } } @@ -230,23 +165,32 @@ namespace vcpkg { for (const auto& dir : fs.get_directories_non_recursive(paths.builtin_ports_directory(), VCPKG_LINE_INFO)) { - auto control_path = dir / "CONTROL"; - auto manifest_path = dir / "vcpkg.json"; - auto manifest_exists = fs.exists(manifest_path, IgnoreErrors{}); - auto control_exists = fs.exists(control_path, IgnoreErrors{}); - - if (manifest_exists && control_exists) - { - Checks::msg_exit_with_error(VCPKG_LINE_INFO, msgControlAndManifestFilesPresent, msg::path = dir); - } - - if (manifest_exists) + auto maybe_manifest = Paragraphs::try_load_port_required(fs, dir.filename(), PortLocation{dir}); + if (auto manifest = maybe_manifest.maybe_scfl.get()) { - add_file(read_manifest(fs, std::move(manifest_path))); + auto original = manifest->control_path; + if (original.filename() == "CONTROL") + { + if (convert_control) + { + to_write.push_back(ToWrite{maybe_manifest.on_disk_contents, + std::move(manifest->source_control_file), + original, + Path(original.parent_path()) / "vcpkg.json"}); + } + } + else + { + to_write.push_back(ToWrite{maybe_manifest.on_disk_contents, + std::move(manifest->source_control_file), + original, + original}); + } } - if (convert_control && control_exists) + else { - add_file(read_control_file(fs, std::move(control_path))); + has_error = true; + msg::println(maybe_manifest.maybe_scfl.error()); } } } diff --git a/src/vcpkg/commands.help.cpp b/src/vcpkg/commands.help.cpp index 28aff6262e..6c29d18ef1 100644 --- a/src/vcpkg/commands.help.cpp +++ b/src/vcpkg/commands.help.cpp @@ -151,7 +151,7 @@ namespace vcpkg } } - result.append(msgSeeURL, msg::url = "https://learn.microsoft.com/vcpkg/users/triplets"); + result.append(msgSeeURL, msg::url = docs::triplets_url); result.append_raw('\n'); } diff --git a/src/vcpkg/commands.install.cpp b/src/vcpkg/commands.install.cpp index 3dff038aef..3c6270b030 100644 --- a/src/vcpkg/commands.install.cpp +++ b/src/vcpkg/commands.install.cpp @@ -54,7 +54,7 @@ namespace vcpkg fs.exists(source_dir, IgnoreErrors{}), Strings::concat("Source directory ", source_dir, "does not exist")); auto files = fs.get_files_recursive(source_dir, VCPKG_LINE_INFO); - Util::erase_remove_if(files, [](Path& path) { return path.filename() == ".DS_Store"; }); + Util::erase_remove_if(files, [](Path& path) { return path.filename() == FileDotDsStore; }); install_files_and_write_listfile(fs, source_dir, files, destination_dir); } void install_files_and_write_listfile(const Filesystem& fs, @@ -198,7 +198,7 @@ namespace vcpkg static SortedVector build_list_of_package_files(const ReadOnlyFilesystem& fs, const Path& package_dir) { std::vector package_file_paths = fs.get_files_recursive(package_dir, IgnoreErrors{}); - Util::erase_remove_if(package_file_paths, [](Path& path) { return path.filename() == ".DS_Store"; }); + Util::erase_remove_if(package_file_paths, [](Path& path) { return path.filename() == FileDotDsStore; }); const size_t package_remove_char_count = package_dir.native().size() + 1; // +1 for the slash auto package_files = Util::fmap(package_file_paths, [package_remove_char_count](const Path& target) { return std::string(target.generic_u8string(), package_remove_char_count); @@ -319,6 +319,8 @@ namespace vcpkg static ExtendedBuildResult perform_install_plan_action(const VcpkgCmdArguments& args, const VcpkgPaths& paths, + Triplet host_triplet, + const BuildPackageOptions& build_options, const InstallPlanAction& action, StatusParagraphs& status_db, BinaryCache& binary_cache, @@ -326,13 +328,9 @@ namespace vcpkg { auto& fs = paths.get_filesystem(); const InstallPlanType& plan_type = action.plan_type; - - const bool is_user_requested = action.request_type == RequestType::USER_REQUESTED; - const bool use_head_version = Util::Enum::to_bool(action.build_options.use_head_version); - if (plan_type == InstallPlanType::ALREADY_INSTALLED) { - if (use_head_version && is_user_requested) + if (action.use_head_version == UseHeadVersion::Yes) msg::println(Color::warning, msgAlreadyInstalledNotHead, msg::spec = action.spec); else msg::println(Color::success, msgAlreadyInstalled, msg::spec = action.spec); @@ -350,16 +348,17 @@ namespace vcpkg bcf = std::make_unique(std::move(maybe_bcf).value_or_exit(VCPKG_LINE_INFO)); all_dependencies_satisfied = true; } - else if (action.build_options.build_missing == BuildMissing::No) + else if (build_options.build_missing == BuildMissing::No) { return ExtendedBuildResult{BuildResult::CacheMissing}; } else { - msg::println(use_head_version ? msgBuildingFromHead : msgBuildingPackage, + msg::println(action.use_head_version == UseHeadVersion::Yes ? msgBuildingFromHead : msgBuildingPackage, msg::spec = action.display_name()); - auto result = build_package(args, paths, action, build_logs_recorder, status_db); + auto result = + build_package(args, paths, host_triplet, build_options, action, build_logs_recorder, status_db); if (BuildResult::Downloaded == result.code) { @@ -399,15 +398,15 @@ namespace vcpkg case InstallResult::FILE_CONFLICTS: code = BuildResult::FileConflicts; break; default: Checks::unreachable(VCPKG_LINE_INFO); } - binary_cache.push_success(action); + binary_cache.push_success(build_options.clean_packages, action); } else { - Checks::check_exit(VCPKG_LINE_INFO, action.build_options.only_downloads == OnlyDownloads::Yes); + Checks::check_exit(VCPKG_LINE_INFO, build_options.only_downloads == OnlyDownloads::Yes); code = BuildResult::Downloaded; } - if (action.build_options.clean_downloads == CleanDownloads::Yes) + if (build_options.clean_downloads == CleanDownloads::Yes) { for (auto& p : fs.get_regular_files_non_recursive(paths.downloads, IgnoreErrors{})) { @@ -438,14 +437,16 @@ namespace vcpkg .append_raw(result.timing.to_string()); } - void InstallSummary::print() const + LocalizedString InstallSummary::format() const { - msg::println(msgResultsHeader); + LocalizedString to_print; + to_print.append(msgResultsHeader).append_raw('\n'); for (const SpecSummary& result : this->results) { - msg::println(format_result_row(result)); + to_print.append(format_result_row(result)).append_raw('\n'); } + to_print.append_raw('\n'); std::map summary; for (const SpecSummary& r : this->results) @@ -453,27 +454,27 @@ namespace vcpkg summary[r.get_spec().triplet()].increment(r.build_result.value_or_exit(VCPKG_LINE_INFO).code); } - msg::println(); - for (auto&& entry : summary) { - entry.second.println(entry.first); + to_print.append(entry.second.format(entry.first)); } + return to_print; } void InstallSummary::print_failed() const { - msg::println(); - msg::println(msgResultsHeader); + auto output = LocalizedString::from_raw("\n"); + output.append(msgResultsHeader).append_raw('\n'); for (const SpecSummary& result : this->results) { if (result.build_result.value_or_exit(VCPKG_LINE_INFO).code != BuildResult::Succeeded) { - msg::println(format_result_row(result)); + output.append(format_result_row(result)).append_raw('\n'); } } - msg::println(); + output.append_raw('\n'); + msg::print(output); } bool InstallSummary::failed() const @@ -568,9 +569,10 @@ namespace vcpkg } InstallSummary install_execute_plan(const VcpkgCmdArguments& args, - const ActionPlan& action_plan, - const KeepGoing keep_going, const VcpkgPaths& paths, + Triplet host_triplet, + const BuildPackageOptions& build_options, + const ActionPlan& action_plan, StatusParagraphs& status_db, BinaryCache& binary_cache, const IBuildLogsRecorder& build_logs_recorder, @@ -591,16 +593,16 @@ namespace vcpkg for (auto&& action : action_plan.already_installed) { - results.emplace_back(action).build_result.emplace( - perform_install_plan_action(args, paths, action, status_db, binary_cache, build_logs_recorder)); + results.emplace_back(action).build_result.emplace(perform_install_plan_action( + args, paths, host_triplet, build_options, action, status_db, binary_cache, build_logs_recorder)); } for (auto&& action : action_plan.install_actions) { TrackedPackageInstallGuard this_install(action_index++, action_count, results, action); - auto result = - perform_install_plan_action(args, paths, action, status_db, binary_cache, build_logs_recorder); - if (result.code != BuildResult::Succeeded && keep_going == KeepGoing::NO) + auto result = perform_install_plan_action( + args, paths, host_triplet, build_options, action, status_db, binary_cache, build_logs_recorder); + if (result.code != BuildResult::Succeeded && build_options.keep_going == KeepGoing::No) { this_install.print_elapsed_time(); print_user_troubleshooting_message(action, paths, result.stdoutlog.then([&](auto&) -> Optional { @@ -981,7 +983,7 @@ namespace vcpkg msg.append_indent() .append_raw("find_path(") .append_raw(name) - .append_raw("_INCLUDE_DIRS \")") + .append_raw("_INCLUDE_DIRS \"") .append_raw(header_path) .append_raw("\")\n"); msg.append_indent() @@ -1046,7 +1048,7 @@ namespace vcpkg const bool clean_downloads_after_build = Util::Sets::contains(options.switches, (SwitchCleanDownloadsAfterBuild)); const KeepGoing keep_going = - Util::Sets::contains(options.switches, SwitchKeepGoing) || only_downloads ? KeepGoing::YES : KeepGoing::NO; + Util::Sets::contains(options.switches, SwitchKeepGoing) || only_downloads ? KeepGoing::Yes : KeepGoing::No; const bool prohibit_backcompat_features = Util::Sets::contains(options.switches, (SwitchXProhibitBackcompatFeatures)) || Util::Sets::contains(options.switches, (SwitchEnforcePortChecks)); @@ -1114,25 +1116,29 @@ namespace vcpkg DownloadTool download_tool = DownloadTool::Builtin; if (use_aria2) download_tool = DownloadTool::Aria2; - const BuildPackageOptions install_plan_options = { + const BuildPackageOptions build_package_options = { Util::Enum::to_enum(!no_build_missing), - Util::Enum::to_enum(use_head_version), Util::Enum::to_enum(!no_downloads), Util::Enum::to_enum(only_downloads), Util::Enum::to_enum(clean_after_build || clean_buildtrees_after_build), Util::Enum::to_enum(clean_after_build || clean_packages_after_build), Util::Enum::to_enum(clean_after_build || clean_downloads_after_build), download_tool, - PurgeDecompressFailure::No, - Util::Enum::to_enum(is_editable), prohibit_backcompat_features ? BackcompatFeatures::Prohibit : BackcompatFeatures::Allow, - print_cmake_usage}; + print_cmake_usage, + keep_going, + }; + + const CreateInstallPlanOptions create_options{nullptr, + host_triplet, + paths.packages(), + unsupported_port_action, + Util::Enum::to_enum(use_head_version), + Util::Enum::to_enum(is_editable)}; auto var_provider_storage = CMakeVars::make_triplet_cmake_var_provider(paths); auto& var_provider = *var_provider_storage; - const CreateInstallPlanOptions create_options{host_triplet, paths.packages(), unsupported_port_action}; - if (auto manifest = paths.get_manifest().get()) { Optional pkgsconfig; @@ -1146,9 +1152,13 @@ namespace vcpkg SourceControlFile::parse_project_manifest_object(manifest->path, manifest->manifest, out_sink); if (!maybe_manifest_scf) { - print_error_message(maybe_manifest_scf.error()); - msg::println(); - msg::println(msgExtendedDocumentationAtUrl, msg::url = docs::manifests_url); + msg::println(Color::error, + std::move(maybe_manifest_scf) + .error() + .append_raw('\n') + .append_raw(NotePrefix) + .append(msgExtendedDocumentationAtUrl, msg::url = docs::manifests_url) + .append_raw('\n')); Checks::exit_fail(VCPKG_LINE_INFO); } @@ -1227,7 +1237,7 @@ namespace vcpkg const bool add_builtin_ports_directory_as_overlay = registry_set->is_default_builtin_registry() && !paths.use_git_default_registry(); - auto verprovider = make_versioned_portfile_provider(fs, *registry_set); + auto verprovider = make_versioned_portfile_provider(*registry_set); auto baseprovider = make_baseline_provider(*registry_set); std::vector extended_overlay_ports; @@ -1251,12 +1261,6 @@ namespace vcpkg .value_or_exit(VCPKG_LINE_INFO); install_plan.print_unsupported_warnings(); - for (InstallPlanAction& action : install_plan.install_actions) - { - action.build_options = install_plan_options; - action.build_options.use_head_version = UseHeadVersion::No; - action.build_options.editable = Editable::No; - } // If the manifest refers to itself, it will be added to the install plan. Util::erase_remove_if(install_plan.install_actions, @@ -1264,20 +1268,18 @@ namespace vcpkg command_set_installed_and_exit_ex(args, paths, + host_triplet, + build_package_options, var_provider, std::move(install_plan), dry_run ? DryRun::Yes : DryRun::No, pkgsconfig, - host_triplet, - keep_going, - only_downloads, - print_cmake_usage, true); } auto registry_set = paths.make_registry_set(); - PathsPortFileProvider provider( - fs, *registry_set, make_overlay_provider(fs, paths.original_cwd, paths.overlay_ports)); + PathsPortFileProvider provider(*registry_set, + make_overlay_provider(fs, paths.original_cwd, paths.overlay_ports)); const std::vector specs = Util::fmap(options.command_arguments, [&](const std::string& arg) { return check_and_get_full_package_spec(arg, default_triplet, paths.get_triplet_db()) @@ -1292,16 +1294,6 @@ namespace vcpkg auto action_plan = create_feature_install_plan(provider, var_provider, specs, status_db, create_options); action_plan.print_unsupported_warnings(); - for (auto&& action : action_plan.install_actions) - { - action.build_options = install_plan_options; - if (action.request_type != RequestType::USER_REQUESTED) - { - action.build_options.use_head_version = UseHeadVersion::No; - action.build_options.editable = Editable::No; - } - } - var_provider.load_tag_vars(action_plan, host_triplet); // install plan will be empty if it is already installed - need to change this at status paragraph part @@ -1336,7 +1328,12 @@ namespace vcpkg } #endif // defined(_WIN32) - print_plan(action_plan, is_recursive, paths.builtin_ports_directory()); + const auto formatted = print_plan(action_plan, paths.builtin_ports_directory()); + if (!is_recursive && formatted.has_removals) + { + msg::println_warning(msgPackagesToRebuildSuggestRecurse); + Checks::exit_fail(VCPKG_LINE_INFO); + } auto it_pkgsconfig = options.settings.find(SwitchXWriteNuGetPackagesConfig); if (it_pkgsconfig != options.settings.end()) @@ -1367,12 +1364,18 @@ namespace vcpkg auto binary_cache = only_downloads ? BinaryCache(paths.get_filesystem()) : BinaryCache::make(args, paths, out_sink).value_or_exit(VCPKG_LINE_INFO); binary_cache.fetch(action_plan.install_actions); - const InstallSummary summary = install_execute_plan( - args, action_plan, keep_going, paths, status_db, binary_cache, null_build_logs_recorder()); - - if (keep_going == KeepGoing::YES) + const InstallSummary summary = install_execute_plan(args, + paths, + host_triplet, + build_package_options, + action_plan, + status_db, + binary_cache, + null_build_logs_recorder()); + + if (keep_going == KeepGoing::Yes) { - summary.print(); + msg::print(summary.format()); } auto it_xunit = options.settings.find(SwitchXXUnit); @@ -1393,7 +1396,7 @@ namespace vcpkg fs.write_contents(it_xunit->second, xwriter.build_xml(default_triplet), VCPKG_LINE_INFO); } - if (install_plan_options.print_usage == PrintUsage::Yes) + if (build_package_options.print_usage == PrintUsage::Yes) { std::set printed_usages; for (auto&& result : summary.results) diff --git a/src/vcpkg/commands.integrate.cpp b/src/vcpkg/commands.integrate.cpp index a6dcc419f2..83495fdf90 100644 --- a/src/vcpkg/commands.integrate.cpp +++ b/src/vcpkg/commands.integrate.cpp @@ -574,13 +574,16 @@ namespace vcpkg static std::vector valid_arguments(const VcpkgPaths&) { // Note that help lists all supported args, but we only want to autocomplete the ones valid on this platform - return - { - INSTALL.to_string(), REMOVE.to_string(), + return { + INSTALL.to_string(), + REMOVE.to_string(), #if defined(_WIN32) - PROJECT.to_string(), POWERSHELL.to_string(), + PROJECT.to_string(), + POWERSHELL.to_string(), #else - BASH.to_string(), FISH.to_string(), ZSH.to_string() + BASH.to_string(), + FISH.to_string(), + ZSH.to_string() #endif }; } diff --git a/src/vcpkg/commands.package-info.cpp b/src/vcpkg/commands.package-info.cpp index 27e618ff2e..70608eb521 100644 --- a/src/vcpkg/commands.package-info.cpp +++ b/src/vcpkg/commands.package-info.cpp @@ -102,8 +102,8 @@ namespace vcpkg Json::Object response; Json::Object results; auto registry_set = paths.make_registry_set(); - PathsPortFileProvider provider( - fs, *registry_set, make_overlay_provider(fs, paths.original_cwd, paths.overlay_ports)); + PathsPortFileProvider provider(*registry_set, + make_overlay_provider(fs, paths.original_cwd, paths.overlay_ports)); for (auto&& arg : options.command_arguments) { diff --git a/src/vcpkg/commands.portsdiff.cpp b/src/vcpkg/commands.portsdiff.cpp index def776f9dd..d8fdd046fc 100644 --- a/src/vcpkg/commands.portsdiff.cpp +++ b/src/vcpkg/commands.portsdiff.cpp @@ -13,19 +13,16 @@ using namespace vcpkg; namespace { - void print_name_only(StringView name) - { - msg::write_unlocalized_text(Color::none, fmt::format("\t- {:<15}\n", name)); - } + std::string format_name_only(StringView name) { return fmt::format("\t- {:<15}\n", name); } - void print_name_and_version(StringView name, const Version& version) + std::string format_name_and_version(StringView name, const Version& version) { - msg::write_unlocalized_text(Color::none, fmt::format("\t- {:<15}{:<}\n", name, version)); + return fmt::format("\t- {:<15} {:<}\n", name, version); } - void print_name_and_version_diff(StringView name, const VersionDiff& version_diff) + std::string format_name_and_version_diff(StringView name, const VersionDiff& version_diff) { - msg::write_unlocalized_text(Color::none, fmt::format("\t- {:<15}{:<}\n", name, version_diff)); + return fmt::format("\t- {:<15} {:<}\n", name, version_diff); } std::vector read_ports_from_commit(const VcpkgPaths& paths, StringView git_commit_id) @@ -172,49 +169,59 @@ namespace vcpkg const StringView git_commit_id_for_current_snapshot = parsed.command_arguments.size() < 2 ? StringLiteral{"HEAD"} : StringView{parsed.command_arguments[1]}; + if (git_commit_id_for_previous_snapshot == git_commit_id_for_current_snapshot) + { + msg::println(msgPortsNoDiff); + Checks::exit_success(VCPKG_LINE_INFO); + } + const auto portsdiff = find_portsdiff(paths, git_commit_id_for_previous_snapshot, git_commit_id_for_current_snapshot); const auto& added_ports = portsdiff.added_ports; + + LocalizedString print_msg; + if (!added_ports.empty()) { - msg::println(msgPortsAdded, msg::count = added_ports.size()); + print_msg.append(msgPortsAdded, msg::count = added_ports.size()).append_raw('\n'); for (auto&& added_port : added_ports) { - print_name_and_version(added_port.port_name, added_port.version); + print_msg.append_raw(format_name_and_version(added_port.port_name, added_port.version)); } - msg::println(); + print_msg.append_raw('\n'); } const auto& removed_ports = portsdiff.removed_ports; if (!removed_ports.empty()) { - msg::println(msgPortsRemoved, msg::count = removed_ports.size()); + print_msg.append(msgPortsRemoved, msg::count = removed_ports.size()).append_raw('\n'); for (auto&& removed_port : removed_ports) { - print_name_only(removed_port); + print_msg.append_raw(format_name_only(removed_port)); } - msg::println(); + print_msg.append_raw('\n'); } const auto& updated_ports = portsdiff.updated_ports; if (!updated_ports.empty()) { - msg::println(msgPortsUpdated, msg::count = updated_ports.size()); + print_msg.append(msgPortsUpdated, msg::count = updated_ports.size()).append_raw('\n'); for (auto&& updated_port : updated_ports) { - print_name_and_version_diff(updated_port.port_name, updated_port.version_diff); + print_msg.append_raw(format_name_and_version_diff(updated_port.port_name, updated_port.version_diff)); } - msg::println(); + print_msg.append_raw('\n'); } if (added_ports.empty() && removed_ports.empty() && updated_ports.empty()) { - msg::println(msgPortsNoDiff); + print_msg.append(msgPortsNoDiff).append_raw('\n'); } + msg::print(print_msg); Checks::exit_success(VCPKG_LINE_INFO); } } // namespace vcpkg diff --git a/src/vcpkg/commands.remove.cpp b/src/vcpkg/commands.remove.cpp index 6ce2bcf852..9b53b9cd1b 100644 --- a/src/vcpkg/commands.remove.cpp +++ b/src/vcpkg/commands.remove.cpp @@ -4,6 +4,7 @@ #include #include #include +#include #include #include #include @@ -195,8 +196,8 @@ namespace vcpkg // Load ports from ports dirs auto& fs = paths.get_filesystem(); auto registry_set = paths.make_registry_set(); - PathsPortFileProvider provider( - fs, *registry_set, make_overlay_provider(fs, paths.original_cwd, paths.overlay_ports)); + PathsPortFileProvider provider(*registry_set, + make_overlay_provider(fs, paths.original_cwd, paths.overlay_ports)); specs = Util::fmap(find_outdated_packages(provider, status_db), [](auto&& outdated) { return outdated.spec; }); @@ -239,7 +240,9 @@ namespace vcpkg if (!is_recursive) { - msg::println_warning(msgAddRecurseOption); + msg::println_warning(msg::format(msgAddRecurseOption) + .append_raw('\n') + .append(msgSeeURL, msg::url = docs::add_command_recurse_opt_url)); Checks::exit_fail(VCPKG_LINE_INFO); } } diff --git a/src/vcpkg/commands.set-installed.cpp b/src/vcpkg/commands.set-installed.cpp index 1cf4fd8146..717858d3c4 100644 --- a/src/vcpkg/commands.set-installed.cpp +++ b/src/vcpkg/commands.set-installed.cpp @@ -23,6 +23,7 @@ namespace {SwitchDryRun, msgCmdSetInstalledOptDryRun}, {SwitchNoPrintUsage, msgCmdSetInstalledOptNoUsage}, {SwitchOnlyDownloads, msgHelpTxtOptOnlyDownloads}, + {SwitchKeepGoing, msgHelpTxtOptKeepGoing}, {SwitchEnforcePortChecks, msgHelpTxtOptEnforcePortChecks}, {SwitchAllowUnsupported, msgHelpTxtOptAllowUnsupportedPort}, }; @@ -162,14 +163,12 @@ namespace vcpkg void command_set_installed_and_exit_ex(const VcpkgCmdArguments& args, const VcpkgPaths& paths, + Triplet host_triplet, + const BuildPackageOptions& build_options, const CMakeVars::CMakeVarProvider& cmake_vars, ActionPlan action_plan, DryRun dry_run, - const Optional& maybe_pkgsconfig, - Triplet host_triplet, - const KeepGoing keep_going, - const bool only_downloads, - const PrintUsage print_cmake_usage, + const Optional& maybe_pkgconfig, bool include_manifest_in_github_issue) { auto& fs = paths.get_filesystem(); @@ -211,9 +210,9 @@ namespace vcpkg auto status_db = database_load_check(fs, paths.installed()); adjust_action_plan_to_status_db(action_plan, status_db); - print_plan(action_plan, true, paths.builtin_ports_directory()); + print_plan(action_plan, paths.builtin_ports_directory()); - if (auto p_pkgsconfig = maybe_pkgsconfig.get()) + if (auto p_pkgsconfig = maybe_pkgconfig.get()) { auto pkgsconfig_path = paths.original_cwd / *p_pkgsconfig; auto pkgsconfig_contents = generate_nuget_packages_config(action_plan, args.nuget_id_prefix.value_or("")); @@ -231,29 +230,33 @@ namespace vcpkg track_install_plan(action_plan); install_preclear_packages(paths, action_plan); - auto binary_cache = only_downloads ? BinaryCache(paths.get_filesystem()) - : BinaryCache::make(args, paths, out_sink).value_or_exit(VCPKG_LINE_INFO); + auto binary_cache = build_options.only_downloads == OnlyDownloads::Yes + ? BinaryCache(paths.get_filesystem()) + : BinaryCache::make(args, paths, out_sink).value_or_exit(VCPKG_LINE_INFO); binary_cache.fetch(action_plan.install_actions); const auto summary = install_execute_plan(args, - action_plan, - keep_going, paths, + host_triplet, + build_options, + action_plan, status_db, binary_cache, null_build_logs_recorder(), include_manifest_in_github_issue); - if (keep_going == KeepGoing::YES && summary.failed()) + if (build_options.keep_going == KeepGoing::Yes && summary.failed()) { summary.print_failed(); - if (!only_downloads) + if (build_options.only_downloads == OnlyDownloads::No) { Checks::exit_fail(VCPKG_LINE_INFO); } } - if (print_cmake_usage == PrintUsage::Yes) + if (build_options.print_usage == PrintUsage::Yes) { + // Note that this differs from the behavior of `vcpkg install` in that it will print usage information for + // packages named but not installed here std::set printed_usages; for (auto&& ur_spec : user_requested_specs) { @@ -281,20 +284,38 @@ namespace vcpkg }); const bool dry_run = Util::Sets::contains(options.switches, SwitchDryRun); - const bool only_downloads = Util::Sets::contains(options.switches, SwitchOnlyDownloads); - const KeepGoing keep_going = - Util::Sets::contains(options.switches, SwitchKeepGoing) || only_downloads ? KeepGoing::YES : KeepGoing::NO; - const PrintUsage print_cmake_usage = + const auto only_downloads = + Util::Sets::contains(options.switches, SwitchOnlyDownloads) ? OnlyDownloads::Yes : OnlyDownloads::No; + const auto keep_going = + Util::Sets::contains(options.switches, SwitchKeepGoing) || only_downloads == OnlyDownloads::Yes + ? KeepGoing::Yes + : KeepGoing::No; + const auto print_usage = Util::Sets::contains(options.switches, SwitchNoPrintUsage) ? PrintUsage::No : PrintUsage::Yes; const auto unsupported_port_action = Util::Sets::contains(options.switches, SwitchAllowUnsupported) ? UnsupportedPortAction::Warn : UnsupportedPortAction::Error; - const bool prohibit_backcompat_features = Util::Sets::contains(options.switches, (SwitchEnforcePortChecks)); + const auto prohibit_backcompat_features = Util::Sets::contains(options.switches, SwitchEnforcePortChecks) + ? BackcompatFeatures::Prohibit + : BackcompatFeatures::Allow; + + const BuildPackageOptions build_options{ + BuildMissing::Yes, + AllowDownloads::Yes, + only_downloads, + CleanBuildtrees::Yes, + CleanPackages::Yes, + CleanDownloads::No, + DownloadTool::Builtin, + prohibit_backcompat_features, + print_usage, + keep_going, + }; auto& fs = paths.get_filesystem(); auto registry_set = paths.make_registry_set(); - PathsPortFileProvider provider( - fs, *registry_set, make_overlay_provider(fs, paths.original_cwd, paths.overlay_ports)); + PathsPortFileProvider provider(*registry_set, + make_overlay_provider(fs, paths.original_cwd, paths.overlay_ports)); auto cmake_vars = CMakeVars::make_triplet_cmake_var_provider(paths); Optional pkgsconfig; @@ -309,25 +330,19 @@ namespace vcpkg // We need to know all the specs which are required to fulfill dependencies for those specs. // Therefore, we see what we would install into an empty installed tree, so we can use the existing code. auto action_plan = create_feature_install_plan( - provider, *cmake_vars, specs, {}, {host_triplet, paths.packages(), unsupported_port_action}); - - for (auto&& action : action_plan.install_actions) - { - action.build_options = default_build_package_options; - action.build_options.backcompat_features = - (prohibit_backcompat_features ? BackcompatFeatures::Prohibit : BackcompatFeatures::Allow); - } - + provider, + *cmake_vars, + specs, + {}, + {nullptr, host_triplet, paths.packages(), unsupported_port_action, UseHeadVersion::No, Editable::No}); command_set_installed_and_exit_ex(args, paths, + host_triplet, + build_options, *cmake_vars, std::move(action_plan), dry_run ? DryRun::Yes : DryRun::No, pkgsconfig, - host_triplet, - keep_going, - only_downloads, - print_cmake_usage, false); } } // namespace vcpkg diff --git a/src/vcpkg/commands.update.cpp b/src/vcpkg/commands.update.cpp index 7fabfd6ae7..3aec063456 100644 --- a/src/vcpkg/commands.update.cpp +++ b/src/vcpkg/commands.update.cpp @@ -68,8 +68,8 @@ namespace vcpkg const StatusParagraphs status_db = database_load_check(fs, paths.installed()); auto registry_set = paths.make_registry_set(); - PathsPortFileProvider provider( - fs, *registry_set, make_overlay_provider(fs, paths.original_cwd, paths.overlay_ports)); + PathsPortFileProvider provider(*registry_set, + make_overlay_provider(fs, paths.original_cwd, paths.overlay_ports)); const auto outdated_packages = SortedVector( find_outdated_packages(provider, status_db), &OutdatedPackage::compare_by_name); diff --git a/src/vcpkg/commands.upgrade.cpp b/src/vcpkg/commands.upgrade.cpp index ed77caf8e6..4b5c000339 100644 --- a/src/vcpkg/commands.upgrade.cpp +++ b/src/vcpkg/commands.upgrade.cpp @@ -55,18 +55,34 @@ namespace vcpkg const bool no_dry_run = Util::Sets::contains(options.switches, SwitchNoDryRun); const KeepGoing keep_going = - Util::Sets::contains(options.switches, SwitchNoKeepGoing) ? KeepGoing::NO : KeepGoing::YES; + Util::Sets::contains(options.switches, SwitchNoKeepGoing) ? KeepGoing::No : KeepGoing::Yes; const auto unsupported_port_action = Util::Sets::contains(options.switches, SwitchAllowUnsupported) ? UnsupportedPortAction::Warn : UnsupportedPortAction::Error; + static const BuildPackageOptions build_options{ + BuildMissing::Yes, + AllowDownloads::Yes, + OnlyDownloads::No, + CleanBuildtrees::Yes, + CleanPackages::Yes, + CleanDownloads::No, + DownloadTool::Builtin, + BackcompatFeatures::Allow, + PrintUsage::Yes, + keep_going, + }; + + const CreateUpgradePlanOptions create_upgrade_plan_options{ + nullptr, host_triplet, paths.packages(), unsupported_port_action}; + StatusParagraphs status_db = database_load_check(paths.get_filesystem(), paths.installed()); // Load ports from ports dirs auto& fs = paths.get_filesystem(); auto registry_set = paths.make_registry_set(); - PathsPortFileProvider provider( - fs, *registry_set, make_overlay_provider(fs, paths.original_cwd, paths.overlay_ports)); + PathsPortFileProvider provider(*registry_set, + make_overlay_provider(fs, paths.original_cwd, paths.overlay_ports)); auto var_provider_storage = CMakeVars::make_triplet_cmake_var_provider(paths); auto& var_provider = *var_provider_storage; @@ -87,7 +103,7 @@ namespace vcpkg var_provider, Util::fmap(outdated_packages, [](const OutdatedPackage& package) { return package.spec; }), status_db, - {host_triplet, paths.packages(), unsupported_port_action}); + create_upgrade_plan_options); } else { @@ -168,22 +184,13 @@ namespace vcpkg if (to_upgrade.empty()) Checks::exit_success(VCPKG_LINE_INFO); - action_plan = create_upgrade_plan(provider, - var_provider, - to_upgrade, - status_db, - {host_triplet, paths.packages(), unsupported_port_action}); + action_plan = + create_upgrade_plan(provider, var_provider, to_upgrade, status_db, create_upgrade_plan_options); } Checks::check_exit(VCPKG_LINE_INFO, !action_plan.empty()); action_plan.print_unsupported_warnings(); - // Set build settings for all install actions - for (auto&& action : action_plan.install_actions) - { - action.build_options = default_build_package_options; - } - - print_plan(action_plan, true, paths.builtin_ports_directory()); + print_plan(action_plan, paths.builtin_ports_directory()); if (!no_dry_run) { @@ -197,11 +204,11 @@ namespace vcpkg compute_all_abis(paths, action_plan, var_provider, status_db); binary_cache.fetch(action_plan.install_actions); const InstallSummary summary = install_execute_plan( - args, action_plan, keep_going, paths, status_db, binary_cache, null_build_logs_recorder()); + args, paths, host_triplet, build_options, action_plan, status_db, binary_cache, null_build_logs_recorder()); - if (keep_going == KeepGoing::YES) + if (keep_going == KeepGoing::Yes) { - summary.print(); + msg::print(summary.format()); } Checks::exit_success(VCPKG_LINE_INFO); diff --git a/src/vcpkg/commands.use.cpp b/src/vcpkg/commands.use.cpp index 52ab549b78..a64f9cee9c 100644 --- a/src/vcpkg/commands.use.cpp +++ b/src/vcpkg/commands.use.cpp @@ -26,7 +26,7 @@ namespace vcpkg constexpr CommandMetadata CommandUseMetadata{ "use", msgCmdUseSynopsis, - {msgCmdUseExample1, "vcpkg use cmake"}, + {msgCmdUseExample1, "vcpkg-shell use cmake"}, Undocumented, AutocompletePriority::Public, 1, diff --git a/src/vcpkg/configuration.cpp b/src/vcpkg/configuration.cpp index ad7e904ba5..3c7f7155fa 100644 --- a/src/vcpkg/configuration.cpp +++ b/src/vcpkg/configuration.cpp @@ -690,9 +690,11 @@ namespace namespace vcpkg { - static ExpectedL> get_baseline_from_git_repo(const VcpkgPaths& paths, StringView url) + static ExpectedL> get_baseline_from_git_repo(const VcpkgPaths& paths, + StringView url, + std::string reference) { - auto res = paths.git_fetch_from_remote_registry(url, "HEAD"); + auto res = paths.git_fetch_from_remote_registry(url, reference); if (auto p = res.get()) { return Optional(std::move(*p)); @@ -709,13 +711,13 @@ namespace vcpkg { if (kind == JsonIdGit) { - return get_baseline_from_git_repo(paths, repo.value_or_exit(VCPKG_LINE_INFO)); + return get_baseline_from_git_repo(paths, repo.value_or_exit(VCPKG_LINE_INFO), reference.value_or("HEAD")); } else if (kind == JsonIdBuiltin) { if (paths.use_git_default_registry()) { - return get_baseline_from_git_repo(paths, builtin_registry_git_url); + return get_baseline_from_git_repo(paths, builtin_registry_git_url, reference.value_or("HEAD")); } else { @@ -1020,32 +1022,34 @@ namespace vcpkg return true; } - /*if (sv == "*") - { - return true; - }*/ - - // ([a-z0-9]+(-[a-z0-9]+)*)(\*?) + // ([a-z0-9]+-)*([a-z0-9]+[*]?|[*]) auto cur = sv.begin(); const auto last = sv.end(); + // each iteration of this loop matches either + // ([a-z0-9]+-) + // or the last + // ([a-z0-9]+[*]?|[*]) for (;;) { - // [a-z0-9]+ if (cur == last) { return false; } + // this if checks for the first matched character of [a-z0-9]+ if (!ParserBase::is_lower_digit(*cur)) { - if (*cur != '*') + // [a-z0-9]+ didn't match anything, so we must be matching + // the last [*] + if (*cur == '*') { - return false; + return ++cur == last; } - return ++cur == last; + return false; } + // match the rest of the [a-z0-9]+ do { ++cur; @@ -1058,11 +1062,11 @@ namespace vcpkg switch (*cur) { case '-': - // repeat outer [a-z0-9]+ again to match -[a-z0-9]+ + // this loop iteration matched [a-z0-9]+- once ++cur; continue; case '*': - // match last optional * + // this loop matched [a-z0-9]+[*]? (and [*] was present) ++cur; return cur == last; default: return false; diff --git a/src/vcpkg/dependencies.cpp b/src/vcpkg/dependencies.cpp index dfe47b2c8a..48c6185802 100644 --- a/src/vcpkg/dependencies.cpp +++ b/src/vcpkg/dependencies.cpp @@ -242,7 +242,7 @@ namespace vcpkg } } - Util::Vectors::append(&out_new_dependencies, std::move(dep_list)); + Util::Vectors::append(out_new_dependencies, std::move(dep_list)); } void create_install_info(std::vector& out_reinstall_requirements) @@ -344,7 +344,9 @@ namespace vcpkg void upgrade(Span specs, UnsupportedPortAction unsupported_port_action); void mark_user_requested(const PackageSpec& spec); - ActionPlan serialize(GraphRandomizer* randomizer) const; + ActionPlan serialize(GraphRandomizer* randomizer, + UseHeadVersion use_head_version_if_user_requested, + Editable editable_if_user_requested) const; void mark_for_reinstall(const PackageSpec& spec, std::vector& out_reinstall_requirements) const; @@ -430,10 +432,13 @@ namespace vcpkg }; } - static void format_plan_row(LocalizedString& out, const InstallPlanAction& action, const Path& builtin_ports_dir) + static void format_plan_ipa_row(LocalizedString& out, + bool add_head_tag, + const InstallPlanAction& action, + const Path& builtin_ports_dir) { out.append_raw(request_type_indent(action.request_type)).append_raw(action.display_name()); - if (action.build_options.use_head_version == UseHeadVersion::Yes) + if (add_head_tag && action.use_head_version == UseHeadVersion::Yes) { out.append_raw(" (+HEAD)"); } @@ -488,11 +493,26 @@ namespace vcpkg return ret; } + InstallPlanAction::InstallPlanAction(InstalledPackageView&& ipv, + RequestType request_type, + UseHeadVersion use_head_version, + Editable editable) + : PackageAction{{ipv.spec()}, ipv.dependencies(), ipv.feature_list()} + , installed_package(std::move(ipv)) + , plan_type(InstallPlanType::ALREADY_INSTALLED) + , request_type(request_type) + , use_head_version(use_head_version) + , editable(editable) + , feature_dependencies(installed_package.get()->feature_dependencies()) + { + } + InstallPlanAction::InstallPlanAction(const PackageSpec& spec, const SourceControlFileAndLocation& scfl, const Path& packages_dir, - const RequestType& request_type, - Triplet host_triplet, + RequestType request_type, + UseHeadVersion use_head_version, + Editable editable, std::map>&& dependencies, std::vector&& build_failure_messages, std::vector default_features) @@ -501,24 +521,14 @@ namespace vcpkg , default_features(std::move(default_features)) , plan_type(InstallPlanType::BUILD_AND_INSTALL) , request_type(request_type) - , build_options{} + , use_head_version(use_head_version) + , editable(editable) , feature_dependencies(std::move(dependencies)) , build_failure_messages(std::move(build_failure_messages)) - , host_triplet(host_triplet) , package_dir(packages_dir / spec.dir()) { } - InstallPlanAction::InstallPlanAction(InstalledPackageView&& ipv, const RequestType& request_type) - : PackageAction{{ipv.spec()}, ipv.dependencies(), ipv.feature_list()} - , installed_package(std::move(ipv)) - , plan_type(InstallPlanType::ALREADY_INSTALLED) - , request_type(request_type) - , build_options{} - , feature_dependencies(installed_package.get()->feature_dependencies()) - { - } - const std::string& InstallPlanAction::public_abi() const { switch (plan_type) @@ -770,7 +780,8 @@ namespace vcpkg pgraph.install(feature_specs, options.unsupported_port_action); - return pgraph.serialize(options.randomizer); + return pgraph.serialize( + options.randomizer, options.use_head_version_if_user_requested, options.editable_if_user_requested); } void PackageGraph::mark_for_reinstall(const PackageSpec& first_remove_spec, @@ -970,16 +981,18 @@ namespace vcpkg const CMakeVars::CMakeVarProvider& var_provider, const std::vector& specs, const StatusParagraphs& status_db, - const CreateInstallPlanOptions& options) + const CreateUpgradePlanOptions& options) { PackageGraph pgraph(port_provider, var_provider, status_db, options.host_triplet, options.packages_dir); pgraph.upgrade(specs, options.unsupported_port_action); - return pgraph.serialize(options.randomizer); + return pgraph.serialize(options.randomizer, UseHeadVersion::No, Editable::No); } - ActionPlan PackageGraph::serialize(GraphRandomizer* randomizer) const + ActionPlan PackageGraph::serialize(GraphRandomizer* randomizer, + UseHeadVersion use_head_version_if_user_requested, + Editable editable_if_user_requested) const { struct BaseEdgeProvider : AdjacencyProvider { @@ -1112,11 +1125,26 @@ namespace vcpkg } computed_edges[kv.first].assign(fspecs.begin(), fspecs.end()); } + + UseHeadVersion use_head_version; + Editable editable; + if (p_cluster->request_type == RequestType::USER_REQUESTED) + { + use_head_version = use_head_version_if_user_requested; + editable = editable_if_user_requested; + } + else + { + use_head_version = UseHeadVersion::No; + editable = Editable::No; + } + plan.install_actions.emplace_back(p_cluster->m_spec, p_cluster->get_scfl_or_exit(), m_packages_dir, p_cluster->request_type, - m_graph->m_host_triplet, + use_head_version, + editable, std::move(computed_edges), std::move(constraint_violations), info_ptr->default_features); @@ -1124,7 +1152,10 @@ namespace vcpkg else if (p_cluster->request_type == RequestType::USER_REQUESTED && p_cluster->m_installed.has_value()) { auto&& installed = p_cluster->m_installed.value_or_exit(VCPKG_LINE_INFO); - plan.already_installed.emplace_back(InstalledPackageView(installed.ipv), p_cluster->request_type); + plan.already_installed.emplace_back(InstalledPackageView(installed.ipv), + p_cluster->request_type, + use_head_version_if_user_requested, + editable_if_user_requested); } } plan.unsupported_features = m_unsupported_features; @@ -1178,6 +1209,29 @@ namespace vcpkg { } + static void format_plan_block(LocalizedString& msg, + msg::MessageT<> header, + bool add_head_tag, + View actions, + const Path& builtin_ports_dir) + { + msg.append(header).append_raw('\n'); + for (auto action : actions) + { + format_plan_ipa_row(msg, add_head_tag, *action, builtin_ports_dir); + msg.append_raw('\n'); + } + } + + static void format_plan_block(LocalizedString& msg, msg::MessageT<> header, const std::set& specs) + { + msg.append(header).append_raw('\n'); + for (auto&& spec : specs) + { + msg.append_raw(request_type_indent(RequestType::USER_REQUESTED)).append_raw(spec).append_raw('\n'); + } + } + FormattedPlan format_plan(const ActionPlan& action_plan, const Path& builtin_ports_dir) { FormattedPlan ret; @@ -1229,51 +1283,29 @@ namespace vcpkg std::sort(already_installed_plans.begin(), already_installed_plans.end(), &InstallPlanAction::compare_by_name); std::sort(excluded.begin(), excluded.end(), &InstallPlanAction::compare_by_name); - struct - { - void operator()(LocalizedString& msg, msg::MessageT<> header, View actions) - { - msg.append(header).append_raw('\n'); - for (auto action : actions) - { - format_plan_row(msg, *action, builtin_ports_dir); - msg.append_raw('\n'); - } - } - void operator()(LocalizedString& msg, msg::MessageT<> header, const std::set& specs) - { - msg.append(header).append_raw('\n'); - for (auto&& spec : specs) - { - msg.append_raw(request_type_indent(RequestType::USER_REQUESTED)).append_raw(spec).append_raw('\n'); - } - } - const Path& builtin_ports_dir; - } format_plan{builtin_ports_dir}; - if (!excluded.empty()) { - format_plan(ret.text, msgExcludedPackages, excluded); + format_plan_block(ret.text, msgExcludedPackages, false, excluded, builtin_ports_dir); } if (!already_installed_plans.empty()) { - format_plan(ret.text, msgInstalledPackages, already_installed_plans); + format_plan_block(ret.text, msgInstalledPackages, false, already_installed_plans, builtin_ports_dir); } if (!remove_specs.empty()) { - format_plan(ret.text, msgPackagesToRemove, remove_specs); + format_plan_block(ret.text, msgPackagesToRemove, remove_specs); } if (!rebuilt_plans.empty()) { - format_plan(ret.text, msgPackagesToRebuild, rebuilt_plans); + format_plan_block(ret.text, msgPackagesToRebuild, true, rebuilt_plans, builtin_ports_dir); } if (!new_plans.empty()) { - format_plan(ret.text, msgPackagesToInstall, new_plans); + format_plan_block(ret.text, msgPackagesToInstall, true, new_plans, builtin_ports_dir); } if (has_non_user_requested_packages) @@ -1285,15 +1317,11 @@ namespace vcpkg return ret; } - void print_plan(const ActionPlan& action_plan, const bool is_recursive, const Path& builtin_ports_dir) + FormattedPlan print_plan(const ActionPlan& action_plan, const Path& builtin_ports_dir) { auto formatted = format_plan(action_plan, builtin_ports_dir); msg::print(formatted.text); - if (!is_recursive && formatted.has_removals) - { - msg::println_warning(msgPackagesToRebuildSuggestRecurse); - Checks::exit_fail(VCPKG_LINE_INFO); - } + return formatted; } namespace @@ -1321,7 +1349,7 @@ namespace vcpkg * (pinned means there is a matching override or overlay) * * Phase 1 does not depend on the order of evaluation. The implementation below exploits this to batch calls to - * CMake for calculationg dependency resolution tags. However, the results are sensitive to the definition of + * CMake for calculating dependency resolution tags. However, the results are sensitive to the definition of * comparison. If "compares >= the baseline" changes, the set of considered constraints will change, and so will * the results. */ @@ -1332,12 +1360,14 @@ namespace vcpkg const IBaselineProvider& base_provider, const IOverlayProvider& oprovider, const CMakeVars::CMakeVarProvider& var_provider, + const PackageSpec& toplevel, Triplet host_triplet, const Path& packages_dir) : m_ver_provider(ver_provider) , m_base_provider(base_provider) , m_o_provider(oprovider) , m_var_provider(var_provider) + , m_toplevel(toplevel) , m_host_triplet(host_triplet) , m_packages_dir(packages_dir) { @@ -1345,16 +1375,18 @@ namespace vcpkg void add_override(const std::string& name, const Version& v); - void solve_with_roots(View dep, const PackageSpec& toplevel); + void solve_with_roots(View dep); - ExpectedL finalize_extract_plan(const PackageSpec& toplevel, - UnsupportedPortAction unsupported_port_action); + ExpectedL finalize_extract_plan(UnsupportedPortAction unsupported_port_action, + UseHeadVersion use_head_version_if_user_requested, + Editable editable_if_user_requested); private: const IVersionedPortfileProvider& m_ver_provider; const IBaselineProvider& m_base_provider; const IOverlayProvider& m_o_provider; const CMakeVars::CMakeVarProvider& m_var_provider; + const PackageSpec& m_toplevel; const Triplet m_host_triplet; const Path m_packages_dir; @@ -1593,10 +1625,14 @@ namespace vcpkg Optional VersionedPackageGraph::require_package(const PackageSpec& spec, const std::string& origin) { + // Implicit defaults are disabled if spec is requested from top-level spec. + const bool default_features_mask = origin != m_toplevel.name(); + auto it = m_graph.find(spec); if (it != m_graph.end()) { it->second.origins.insert(origin); + it->second.default_features &= default_features_mask; return *it; } @@ -1651,9 +1687,8 @@ namespace vcpkg } } - // Implicit defaults are disabled if spec has been mentioned at top-level. + it->second.default_features = default_features_mask; // Note that if top-level doesn't also mark that reference as `[core]`, defaults will be re-engaged. - it->second.default_features = !Util::Maps::contains(m_user_requested, spec); it->second.requested_features.insert(FeatureNameCore.to_string()); require_scfl(*it, it->second.scfl, origin); @@ -1671,19 +1706,19 @@ namespace vcpkg m_overrides.emplace(name, v); } - void VersionedPackageGraph::solve_with_roots(View deps, const PackageSpec& toplevel) + void VersionedPackageGraph::solve_with_roots(View deps) { - auto dep_to_spec = [&toplevel, this](const Dependency& d) { - return PackageSpec{d.name, d.host ? m_host_triplet : toplevel.triplet()}; + auto dep_to_spec = [this](const Dependency& d) { + return PackageSpec{d.name, d.host ? m_host_triplet : m_toplevel.triplet()}; }; auto specs = Util::fmap(deps, dep_to_spec); - specs.push_back(toplevel); + specs.push_back(m_toplevel); Util::sort_unique_erase(specs); for (auto&& dep : deps) { if (!dep.platform.is_empty() && - !dep.platform.evaluate(m_var_provider.get_or_load_dep_info_vars(toplevel, m_host_triplet))) + !dep.platform.evaluate(m_var_provider.get_or_load_dep_info_vars(m_toplevel, m_host_triplet))) { continue; } @@ -1693,7 +1728,7 @@ namespace vcpkg m_roots.push_back(DepSpec{std::move(spec), dep.constraint, dep.features}); } - m_resolve_stack.push_back({toplevel, deps}); + m_resolve_stack.push_back({m_toplevel, deps}); while (!m_resolve_stack.empty()) { @@ -1739,7 +1774,7 @@ namespace vcpkg serialize_dependency_override(example_array, DependencyOverride{on.name(), baseline.version}); doc.append_raw(Json::stringify_object_member(OVERRIDES, example_array, Json::JsonStyle::with_spaces(2), 1)); - doc.append(msgVersionIncomparable4, msg::url = docs::versioning_url); + doc.append(msgVersionIncomparable4, msg::url = docs::troubleshoot_versioning_url); return doc; } @@ -1799,7 +1834,9 @@ namespace vcpkg // This function is called after all versioning constraints have been resolved. It is responsible for // serializing out the final execution graph and performing all final validations. ExpectedL VersionedPackageGraph::finalize_extract_plan( - const PackageSpec& toplevel, UnsupportedPortAction unsupported_port_action) + UnsupportedPortAction unsupported_port_action, + UseHeadVersion use_head_version_if_user_requested, + Editable editable_if_user_requested) { if (!m_errors.empty()) { @@ -1819,7 +1856,8 @@ namespace vcpkg std::vector stack; // Adds a new Frame to the stack if the spec was not already added - auto push = [&emitted, this, &stack](const DepSpec& dep, StringView origin) -> ExpectedL { + auto push = [&emitted, this, &stack, use_head_version_if_user_requested, editable_if_user_requested]( + const DepSpec& dep, StringView origin) -> ExpectedL { auto p = emitted.emplace(dep.spec, false); // Dependency resolution should have ensured that either every node exists OR an error should have been // logged to m_errors @@ -1878,13 +1916,28 @@ namespace vcpkg } } std::vector deps; - RequestType request = Util::Sets::contains(m_user_requested, dep.spec) ? RequestType::USER_REQUESTED - : RequestType::AUTO_SELECTED; + RequestType request; + UseHeadVersion use_head_version; + Editable editable; + if (Util::Sets::contains(m_user_requested, dep.spec)) + { + request = RequestType::USER_REQUESTED; + use_head_version = use_head_version_if_user_requested; + editable = editable_if_user_requested; + } + else + { + request = RequestType::AUTO_SELECTED; + use_head_version = UseHeadVersion::No; + editable = Editable::No; + } + InstallPlanAction ipa(dep.spec, *node.second.scfl, m_packages_dir, request, - m_host_triplet, + use_head_version, + editable, compute_feature_dependencies(node, deps), {}, std::move(default_features)); @@ -1906,7 +1959,7 @@ namespace vcpkg for (auto&& root : m_roots) { - auto x = push(root, toplevel.name()); + auto x = push(root, m_toplevel.name()); if (!x.has_value()) { return std::move(x).error(); @@ -2006,13 +2059,15 @@ namespace vcpkg const CreateInstallPlanOptions& options) { VersionedPackageGraph vpg( - provider, bprovider, oprovider, var_provider, options.host_triplet, options.packages_dir); + provider, bprovider, oprovider, var_provider, toplevel, options.host_triplet, options.packages_dir); for (auto&& o : overrides) { vpg.add_override(o.name, o.version); } - vpg.solve_with_roots(deps, toplevel); - return vpg.finalize_extract_plan(toplevel, options.unsupported_port_action); + vpg.solve_with_roots(deps); + return vpg.finalize_extract_plan(options.unsupported_port_action, + options.use_head_version_if_user_requested, + options.editable_if_user_requested); } } diff --git a/src/vcpkg/export.prefab.cpp b/src/vcpkg/export.prefab.cpp index 672c905631..1759b9f178 100644 --- a/src/vcpkg/export.prefab.cpp +++ b/src/vcpkg/export.prefab.cpp @@ -18,7 +18,7 @@ namespace vcpkg::Prefab { - static std::vector find_modules(const VcpkgPaths& system, const Path& root, const std::string& ext) + static std::vector find_modules(const VcpkgPaths& system, const Path& root, StringLiteral ext) { const Filesystem& fs = system.get_filesystem(); std::error_code ec; diff --git a/src/vcpkg/paragraphs.cpp b/src/vcpkg/paragraphs.cpp index efdf97cf14..93183c7906 100644 --- a/src/vcpkg/paragraphs.cpp +++ b/src/vcpkg/paragraphs.cpp @@ -358,6 +358,16 @@ namespace vcpkg::Paragraphs fs.exists(maybe_directory / "vcpkg.json", IgnoreErrors{}); } + ExpectedL> try_load_project_manifest_text(StringView text, + StringView control_path, + MessageSink& warning_sink) + { + StatsTimer timer(g_load_ports_stats); + return Json::parse_object(text, control_path).then([&](Json::Object&& object) { + return SourceControlFile::parse_project_manifest_object(control_path, std::move(object), warning_sink); + }); + } + ExpectedL> try_load_port_manifest_text(StringView text, StringView control_path, MessageSink& warning_sink) @@ -376,9 +386,7 @@ namespace vcpkg::Paragraphs }); } - ExpectedL try_load_port(const ReadOnlyFilesystem& fs, - StringView port_name, - const PortLocation& port_location) + PortLoadResult try_load_port(const ReadOnlyFilesystem& fs, StringView port_name, const PortLocation& port_location) { StatsTimer timer(g_load_ports_stats); @@ -390,67 +398,77 @@ namespace vcpkg::Paragraphs { if (fs.exists(control_path, IgnoreErrors{})) { - return msg::format_error(msgManifestConflict, msg::path = port_location.port_directory); + return PortLoadResult{LocalizedString::from_raw(port_location.port_directory) + .append_raw(": ") + .append_raw(ErrorPrefix) + .append(msgManifestConflict2), + std::string{}}; } - return try_load_port_manifest_text(manifest_contents, manifest_path, out_sink) - .map([&](std::unique_ptr&& scf) { - return SourceControlFileAndLocation{ - std::move(scf), std::move(manifest_path), port_location.spdx_location}; - }); + return PortLoadResult{try_load_port_manifest_text(manifest_contents, manifest_path, stdout_sink) + .map([&](std::unique_ptr&& scf) { + return SourceControlFileAndLocation{ + std::move(scf), std::move(manifest_path), port_location.spdx_location}; + }), + manifest_contents}; } auto manifest_exists = ec != std::errc::no_such_file_or_directory; if (manifest_exists) { - return msg::format_error(msgFailedToParseManifest, msg::path = manifest_path) - .append_raw("\n") - .append(format_filesystem_call_error(ec, "read_contents", {manifest_path})); + return PortLoadResult{LocalizedString::from_raw(port_location.port_directory) + .append_raw(": ") + .append(format_filesystem_call_error(ec, "read_contents", {manifest_path})), + std::string{}}; } auto control_contents = fs.read_contents(control_path, ec); if (!ec) { - return try_load_control_file_text(control_contents, control_path) - .map([&](std::unique_ptr&& scf) { - return SourceControlFileAndLocation{ - std::move(scf), std::move(control_path), port_location.spdx_location}; - }); + return PortLoadResult{try_load_control_file_text(control_contents, control_path) + .map([&](std::unique_ptr&& scf) { + return SourceControlFileAndLocation{ + std::move(scf), std::move(control_path), port_location.spdx_location}; + }), + control_contents}; } if (ec != std::errc::no_such_file_or_directory) { - return LocalizedString::from_raw(port_location.port_directory) - .append_raw(": ") - .append(format_filesystem_call_error(ec, "read_contents", {control_path})); + return PortLoadResult{LocalizedString::from_raw(port_location.port_directory) + .append_raw(": ") + .append(format_filesystem_call_error(ec, "read_contents", {control_path})), + std::string{}}; } if (fs.exists(port_location.port_directory, IgnoreErrors{})) { - return LocalizedString::from_raw(port_location.port_directory) - .append_raw(": ") - .append_raw(ErrorPrefix) - .append(msgPortMissingManifest2, msg::package_name = port_name); + return PortLoadResult{LocalizedString::from_raw(port_location.port_directory) + .append_raw(": ") + .append_raw(ErrorPrefix) + .append(msgPortMissingManifest2, msg::package_name = port_name), + std::string{}}; } - return LocalizedString::from_raw(port_location.port_directory) - .append_raw(": ") - .append_raw(ErrorPrefix) - .append(msgPortDoesNotExist, msg::package_name = port_name); + return PortLoadResult{LocalizedString::from_raw(port_location.port_directory) + .append_raw(": ") + .append_raw(ErrorPrefix) + .append(msgPortDoesNotExist, msg::package_name = port_name), + std::string{}}; } - ExpectedL try_load_port_required(const ReadOnlyFilesystem& fs, - StringView port_name, - const PortLocation& port_location) + PortLoadResult try_load_port_required(const ReadOnlyFilesystem& fs, + StringView port_name, + const PortLocation& port_location) { auto load_result = try_load_port(fs, port_name, port_location); - auto maybe_res = load_result.get(); + auto maybe_res = load_result.maybe_scfl.get(); if (maybe_res) { auto res = maybe_res->source_control_file.get(); if (!res) { - load_result = msg::format_error(msgPortDoesNotExist, msg::package_name = port_name); + load_result.maybe_scfl = msg::format_error(msgPortDoesNotExist, msg::package_name = port_name); } } @@ -490,7 +508,7 @@ namespace vcpkg::Paragraphs return maybe_paragraphs.error(); } - LoadResults try_load_all_registry_ports(const ReadOnlyFilesystem& fs, const RegistrySet& registries) + LoadResults try_load_all_registry_ports(const RegistrySet& registries) { LoadResults ret; std::vector ports = registries.get_all_reachable_port_names().value_or_exit(VCPKG_LINE_INFO); @@ -512,10 +530,7 @@ namespace vcpkg::Paragraphs const auto port_entry = maybe_port_entry.get(); if (!port_entry) continue; // port is attributed to this registry, but loading it failed if (!*port_entry) continue; // port is attributed to this registry, but doesn't exist in this registry - auto maybe_port_location = (*port_entry)->get_version(*baseline_version); - const auto port_location = maybe_port_location.get(); - if (!port_location) continue; // baseline version was not in version db (registry consistency issue) - auto maybe_scfl = try_load_port_required(fs, port_name, *port_location); + auto maybe_scfl = (*port_entry)->try_load_port(*baseline_version); if (const auto scfl = maybe_scfl.get()) { ret.paragraphs.push_back(std::move(*scfl)); @@ -556,15 +571,14 @@ namespace vcpkg::Paragraphs } } - std::vector load_all_registry_ports(const ReadOnlyFilesystem& fs, - const RegistrySet& registries) + std::vector load_all_registry_ports(const RegistrySet& registries) { - auto results = try_load_all_registry_ports(fs, registries); + auto results = try_load_all_registry_ports(registries); load_results_print_error(results); return std::move(results.paragraphs); } - std::vector load_overlay_ports(const ReadOnlyFilesystem& fs, const Path& directory) + LoadResults try_load_overlay_ports(const ReadOnlyFilesystem& fs, const Path& directory) { LoadResults ret; @@ -572,12 +586,12 @@ namespace vcpkg::Paragraphs Util::sort(port_dirs); Util::erase_remove_if(port_dirs, - [&](auto&& port_dir_entry) { return port_dir_entry.filename() == ".DS_Store"; }); + [&](auto&& port_dir_entry) { return port_dir_entry.filename() == FileDotDsStore; }); for (auto&& path : port_dirs) { auto port_name = path.filename(); - auto maybe_spgh = try_load_port_required(fs, port_name, PortLocation{path}); + auto maybe_spgh = try_load_port_required(fs, port_name, PortLocation{path}).maybe_scfl; if (const auto spgh = maybe_spgh.get()) { ret.paragraphs.push_back(std::move(*spgh)); @@ -590,8 +604,14 @@ namespace vcpkg::Paragraphs } } - load_results_print_error(ret); - return std::move(ret.paragraphs); + return ret; + } + + std::vector load_overlay_ports(const ReadOnlyFilesystem& fs, const Path& directory) + { + auto results = try_load_overlay_ports(fs, directory); + load_results_print_error(results); + return std::move(results.paragraphs); } uint64_t get_load_ports_stats() { return g_load_ports_stats.load(); } diff --git a/src/vcpkg/platform-expression.cpp b/src/vcpkg/platform-expression.cpp index d21b91c46e..8441563c36 100644 --- a/src/vcpkg/platform-expression.cpp +++ b/src/vcpkg/platform-expression.cpp @@ -34,6 +34,7 @@ namespace vcpkg::PlatformExpression emscripten, ios, qnx, + vxworks, static_link, static_crt, @@ -64,6 +65,7 @@ namespace vcpkg::PlatformExpression {"emscripten", Identifier::emscripten}, {"ios", Identifier::ios}, {"qnx", Identifier::qnx}, + {"vxworks", Identifier::vxworks}, {"static", Identifier::static_link}, {"staticcrt", Identifier::static_crt}, {"native", Identifier::native}, @@ -567,7 +569,9 @@ namespace vcpkg::PlatformExpression return true_if_exists_and_equal("VCPKG_CMAKE_SYSTEM_NAME", "Emscripten"); case Identifier::ios: return true_if_exists_and_equal("VCPKG_CMAKE_SYSTEM_NAME", "iOS"); case Identifier::qnx: return true_if_exists_and_equal("VCPKG_CMAKE_SYSTEM_NAME", "QNX"); + case Identifier::vxworks: return true_if_exists_and_equal("VCPKG_CMAKE_SYSTEM_NAME", "VxWorks"); case Identifier::wasm32: return true_if_exists_and_equal("VCPKG_TARGET_ARCHITECTURE", "wasm32"); + case Identifier::mips64: return true_if_exists_and_equal("VCPKG_TARGET_ARCHITECTURE", "mips64"); case Identifier::static_link: return true_if_exists_and_equal("VCPKG_LIBRARY_LINKAGE", "static"); case Identifier::static_crt: return true_if_exists_and_equal("VCPKG_CRT_LINKAGE", "static"); @@ -581,8 +585,8 @@ namespace vcpkg::PlatformExpression return is_native->second == "1"; } - default: Checks::unreachable(VCPKG_LINE_INFO); } + Checks::unreachable(VCPKG_LINE_INFO); } else if (expr.kind == ExprKind::op_not) { diff --git a/src/vcpkg/portfileprovider.cpp b/src/vcpkg/portfileprovider.cpp index d4e3ff4c63..c2a4dd4401 100644 --- a/src/vcpkg/portfileprovider.cpp +++ b/src/vcpkg/portfileprovider.cpp @@ -12,27 +12,6 @@ using namespace vcpkg; -namespace -{ - struct OverlayRegistryEntry final : RegistryEntry - { - OverlayRegistryEntry(Path&& p, Version&& v) : root(p), version(v) { } - - ExpectedL> get_port_versions() const override { return View{&version, 1}; } - ExpectedL get_version(const Version& v) const override - { - if (v == version) - { - return PortLocation{root}; - } - return msg::format(msgVersionNotFound, msg::expected = v, msg::actual = version); - } - - Path root; - Version version; - }; -} - namespace vcpkg { MapPortFileProvider::MapPortFileProvider(const std::unordered_map& map) @@ -52,11 +31,10 @@ namespace vcpkg return Util::fmap(ports, [](auto&& kvpair) -> const SourceControlFileAndLocation* { return &kvpair.second; }); } - PathsPortFileProvider::PathsPortFileProvider(const ReadOnlyFilesystem& fs, - const RegistrySet& registry_set, + PathsPortFileProvider::PathsPortFileProvider(const RegistrySet& registry_set, std::unique_ptr&& overlay) : m_baseline(make_baseline_provider(registry_set)) - , m_versioned(make_versioned_portfile_provider(fs, registry_set)) + , m_versioned(make_versioned_portfile_provider(registry_set)) , m_overlay(std::move(overlay)) { } @@ -99,20 +77,16 @@ namespace vcpkg virtual ExpectedL get_baseline_version(StringView port_name) const override { return m_baseline_cache.get_lazy(port_name, [this, port_name]() -> ExpectedL { - auto maybe_maybe_version = registry_set.baseline_for_port(port_name); - auto maybe_version = maybe_maybe_version.get(); - if (!maybe_version) - { - return std::move(maybe_maybe_version).error(); - } - - auto version = maybe_version->get(); - if (!version) - { - return msg::format_error(msgPortNotInBaseline, msg::package_name = port_name); - } + return registry_set.baseline_for_port(port_name).then( + [&](Optional&& maybe_version) -> ExpectedL { + auto version = maybe_version.get(); + if (!version) + { + return msg::format_error(msgPortNotInBaseline, msg::package_name = port_name); + } - return std::move(*version); + return std::move(*version); + }); }); } @@ -123,10 +97,7 @@ namespace vcpkg struct VersionedPortfileProviderImpl : IFullVersionedPortfileProvider { - VersionedPortfileProviderImpl(const ReadOnlyFilesystem& fs, const RegistrySet& rset) - : m_fs(fs), m_registry_set(rset) - { - } + VersionedPortfileProviderImpl(const RegistrySet& rset) : m_registry_set(rset) { } VersionedPortfileProviderImpl(const VersionedPortfileProviderImpl&) = delete; VersionedPortfileProviderImpl& operator=(const VersionedPortfileProviderImpl&) = delete; @@ -178,39 +149,29 @@ namespace vcpkg return msg::format_error(msgPortDoesNotExist, msg::package_name = version_spec.port_name); } - auto maybe_path = ent->get()->get_version(version_spec.version); - if (auto path = maybe_path.get()) + auto maybe_scfl = ent->get()->try_load_port(version_spec.version); + if (auto scfl = maybe_scfl.get()) { - auto maybe_scfl = Paragraphs::try_load_port_required(m_fs, version_spec.port_name, *path); - if (auto scfl = maybe_scfl.get()) + auto scf_vspec = scfl->to_version_spec(); + if (scf_vspec == version_spec) { - auto scf_vspec = scfl->source_control_file->to_version_spec(); - if (scf_vspec == version_spec) - { - return std::move(*scfl); - } - else - { - return msg::format_error(msgVersionSpecMismatch, - msg::path = path->port_directory, - msg::expected_version = version_spec, - msg::actual_version = scf_vspec); - } + return std::move(*scfl); } else { - return std::move(maybe_scfl) - .error() - .append_raw('\n') - .append_raw(NotePrefix) - .append(msgWhileLoadingPortVersion, msg::version_spec = version_spec) - .append_raw('\n'); + return msg::format_error(msgVersionSpecMismatch, + msg::path = scfl->control_path, + msg::expected_version = version_spec, + msg::actual_version = scf_vspec); } } else { - get_global_metrics_collector().track_define(DefineMetric::VersioningErrorVersion); - return std::move(maybe_path).error(); + return maybe_scfl.error() + .append_raw('\n') + .append_raw(NotePrefix) + .append(msgWhileLoadingPortVersion, msg::version_spec = version_spec) + .append_raw('\n'); } } @@ -233,7 +194,7 @@ namespace vcpkg virtual void load_all_control_files( std::map& out) const override { - auto all_ports = Paragraphs::load_all_registry_ports(m_fs, m_registry_set); + auto all_ports = Paragraphs::load_all_registry_ports(m_registry_set); for (auto&& scfl : all_ports) { auto it = m_control_cache.emplace(scfl.to_version_spec(), std::move(scfl)).first; @@ -242,7 +203,6 @@ namespace vcpkg } private: - const ReadOnlyFilesystem& m_fs; const RegistrySet& m_registry_set; mutable std::unordered_map, VersionSpecHasher> m_control_cache; @@ -279,7 +239,8 @@ namespace vcpkg // Try loading individual port if (Paragraphs::is_port_directory(m_fs, ports_dir)) { - auto maybe_scfl = Paragraphs::try_load_port_required(m_fs, port_name, PortLocation{ports_dir}); + auto maybe_scfl = + Paragraphs::try_load_port_required(m_fs, port_name, PortLocation{ports_dir}).maybe_scfl; if (auto scfl = maybe_scfl.get()) { if (scfl->to_name() == port_name) @@ -300,7 +261,8 @@ namespace vcpkg auto ports_spec = ports_dir / port_name; if (Paragraphs::is_port_directory(m_fs, ports_spec)) { - auto found_scfl = Paragraphs::try_load_port_required(m_fs, port_name, PortLocation{ports_spec}); + auto found_scfl = + Paragraphs::try_load_port_required(m_fs, port_name, PortLocation{ports_spec}).maybe_scfl; if (auto scfl = found_scfl.get()) { auto& scfl_name = scfl->to_name(); @@ -350,7 +312,8 @@ namespace vcpkg if (Paragraphs::is_port_directory(m_fs, ports_dir)) { auto maybe_scfl = - Paragraphs::try_load_port_required(m_fs, ports_dir.filename(), PortLocation{ports_dir}); + Paragraphs::try_load_port_required(m_fs, ports_dir.filename(), PortLocation{ports_dir}) + .maybe_scfl; if (auto scfl = maybe_scfl.get()) { // copy name before moving *scfl @@ -370,8 +333,19 @@ namespace vcpkg } // Try loading all ports inside ports_dir - auto found_scfls = Paragraphs::load_overlay_ports(m_fs, ports_dir); - for (auto&& scfl : found_scfls) + auto results = Paragraphs::try_load_overlay_ports(m_fs, ports_dir); + if (!results.errors.empty()) + { + print_error_message(LocalizedString::from_raw(Strings::join( + "\n", + results.errors, + [](const std::pair& err) -> const LocalizedString& { + return err.second; + }))); + Checks::exit_maybe_upgrade(VCPKG_LINE_INFO); + } + + for (auto&& scfl : results.paragraphs) { auto name = scfl.to_name(); auto it = m_overlay_cache.emplace(std::move(name), std::move(scfl)).first; @@ -428,10 +402,9 @@ namespace vcpkg return std::make_unique(registry_set); } - std::unique_ptr make_versioned_portfile_provider(const ReadOnlyFilesystem& fs, - const RegistrySet& registry_set) + std::unique_ptr make_versioned_portfile_provider(const RegistrySet& registry_set) { - return std::make_unique(fs, registry_set); + return std::make_unique(registry_set); } std::unique_ptr make_overlay_provider(const ReadOnlyFilesystem& fs, diff --git a/src/vcpkg/postbuildlint.cpp b/src/vcpkg/postbuildlint.cpp index 8790b0969a..1f1b82cbbd 100644 --- a/src/vcpkg/postbuildlint.cpp +++ b/src/vcpkg/postbuildlint.cpp @@ -1,5 +1,7 @@ #include +#include #include +#include #include #include #include @@ -15,7 +17,14 @@ namespace vcpkg { - constexpr static std::array windows_system_names = { + static constexpr StringLiteral debug_lib_relative_path = "debug" VCPKG_PREFERRED_SEPARATOR "lib"; + static constexpr StringLiteral release_lib_relative_path = "lib"; + static constexpr StringLiteral lib_relative_paths[] = {debug_lib_relative_path, release_lib_relative_path}; + static constexpr StringLiteral debug_bin_relative_path = "debug" VCPKG_PREFERRED_SEPARATOR "bin"; + static constexpr StringLiteral release_bin_relative_path = "bin"; + static constexpr StringLiteral bin_relative_paths[] = {debug_bin_relative_path, release_bin_relative_path}; + + constexpr static StringLiteral windows_system_names[] = { "", "Windows", "WindowsStore", @@ -28,35 +37,60 @@ namespace vcpkg PROBLEM_DETECTED = 1 }; + static void print_relative_paths(MessageSink& msg_sink, + msg::MessageT<> kind_prefix, + const Path& relative_dir, + const std::vector& relative_paths) + { + auto ls = LocalizedString() + .append_raw('\n') + .append_raw(relative_dir) + .append_raw(": ") + .append_raw(NotePrefix) + .append(kind_prefix) + .append_raw('\n'); + for (const Path& package_relative_path : relative_paths) + { + auto as_generic = package_relative_path; + as_generic.make_generic(); + ls.append_raw(NotePrefix).append_raw(as_generic).append_raw('\n'); + } + + msg_sink.print(ls); + } + // clang-format off #define OUTDATED_V_NO_120 \ - StringLiteral{"msvcp100.dll"}, \ - StringLiteral{"msvcp100d.dll"}, \ - StringLiteral{"msvcp110.dll"}, \ - StringLiteral{"msvcp110_win.dll"}, \ - StringLiteral{"msvcp60.dll"}, \ - StringLiteral{"msvcp60.dll"}, \ - \ - StringLiteral{"msvcrt.dll"}, \ - StringLiteral{"msvcr100.dll"}, \ - StringLiteral{"msvcr100d.dll"}, \ - StringLiteral{"msvcr100_clr0400.dll"}, \ - StringLiteral{"msvcr110.dll"}, \ - StringLiteral{"msvcrt20.dll"}, \ - StringLiteral{"msvcrt40.dll"} + "msvcp100.dll", \ + "msvcp100d.dll", \ + "msvcp110.dll", \ + "msvcp110_win.dll", \ + "msvcp60.dll", \ + "msvcr60.dll", \ + \ + "msvcrt.dll", \ + "msvcr100.dll", \ + "msvcr100d.dll", \ + "msvcr100_clr0400.dll", \ + "msvcr110.dll", \ + "msvcr110d.dll", \ + "msvcrt20.dll", \ + "msvcrt40.dll" // clang-format on static View get_outdated_dynamic_crts(const Optional& toolset_version) { - static constexpr std::array V_NO_120 = {OUTDATED_V_NO_120}; + static constexpr StringLiteral V_NO_120[] = {OUTDATED_V_NO_120}; - static constexpr std::array V_NO_MSVCRT = { + static constexpr StringLiteral V_NO_MSVCRT[] = { OUTDATED_V_NO_120, - StringLiteral{"msvcp120.dll"}, - StringLiteral{"msvcp120_clr0400.dll"}, - StringLiteral{"msvcr120.dll"}, - StringLiteral{"msvcr120_clr0400.dll"}, + "msvcp120.dll", + "msvcp120d.dll", + "msvcp120_clr0400.dll", + "msvcr120.dll", + "msvcr120d.dll", + "msvcr120_clr0400.dll", }; const auto tsv = toolset_version.get(); @@ -72,33 +106,40 @@ namespace vcpkg #undef OUTDATED_V_NO_120 static LintStatus check_for_files_in_include_directory(const ReadOnlyFilesystem& fs, - const BuildPolicies& policies, const Path& package_dir, + const Path& portfile_cmake, MessageSink& msg_sink) { - if (policies.is_enabled(BuildPolicy::EMPTY_INCLUDE_FOLDER)) - { - return LintStatus::SUCCESS; - } - const auto include_dir = package_dir / "include"; - - if (policies.is_enabled(BuildPolicy::CMAKE_HELPER_PORT)) + if (!fs.exists(include_dir, IgnoreErrors{}) || fs.is_empty(include_dir, IgnoreErrors{})) { - if (fs.exists(include_dir, IgnoreErrors{})) - { - msg_sink.println_warning(msgPortBugIncludeDirInCMakeHelperPort); - return LintStatus::PROBLEM_DETECTED; - } - else - { - return LintStatus::SUCCESS; - } + msg_sink.print(Color::warning, + LocalizedString::from_raw(portfile_cmake) + .append_raw(": ") + .append_raw(WarningPrefix) + .append(msgPortBugMissingIncludeDir) + .append_raw('\n')); + + return LintStatus::PROBLEM_DETECTED; } - if (!fs.exists(include_dir, IgnoreErrors{}) || fs.is_empty(include_dir, IgnoreErrors{})) - { - msg_sink.println_warning(msgPortBugMissingIncludeDir); + return LintStatus::SUCCESS; + } + + static LintStatus check_for_no_files_in_cmake_helper_port_include_directory(const ReadOnlyFilesystem& fs, + const Path& package_dir, + const Path& portfile_cmake, + MessageSink& msg_sink) + { + const auto include_dir = package_dir / "include"; + if (fs.exists(include_dir, IgnoreErrors{})) + { + msg_sink.print(Color::warning, + LocalizedString::from_raw(portfile_cmake) + .append_raw(": ") + .append_raw(WarningPrefix) + .append(msgPortBugIncludeDirInCMakeHelperPort) + .append_raw('\n')); return LintStatus::PROBLEM_DETECTED; } @@ -106,15 +147,10 @@ namespace vcpkg } static LintStatus check_for_restricted_include_files(const ReadOnlyFilesystem& fs, - const BuildPolicies& policies, const Path& package_dir, + const Path& portfile_cmake, MessageSink& msg_sink) { - if (policies.is_enabled(BuildPolicy::ALLOW_RESTRICTED_HEADERS)) - { - return LintStatus::SUCCESS; - } - // These files are taken from the libc6-dev package on Ubuntu inside /usr/include/x86_64-linux-gnu/sys/ static constexpr StringLiteral restricted_sys_filenames[] = { "acct.h", "auxv.h", "bitypes.h", "cdefs.h", "debugreg.h", "dir.h", "elf.h", @@ -176,21 +212,37 @@ namespace vcpkg filenames_s.insert(file.filename()); } - std::vector violations; + std::vector violations; for (auto&& flist : restricted_lists) + { for (auto&& f : flist) { if (Util::Sets::contains(filenames_s, f)) { - violations.push_back(Path("include") / f); + violations.push_back(fmt::format(FMT_COMPILE("<{}>"), f)); } } + } if (!violations.empty()) { - msg_sink.println_warning(msgPortBugRestrictedHeaderPaths); - print_paths(msg_sink, violations); - msg_sink.println(msgPortBugRestrictedHeaderPaths); + Util::sort(violations); + msg_sink.print(Color::warning, + LocalizedString::from_raw(portfile_cmake) + .append_raw(": ") + .append_raw(WarningPrefix) + .append(msgPortBugRestrictedHeaderPaths) + .append_raw('\n')); + msg_sink.print(LocalizedString::from_raw(include_dir) + .append_raw(": ") + .append_raw(NotePrefix) + .append(msgPortBugRestrictedHeaderPathsNote) + .append_raw('\n')); + for (auto&& violation : violations) + { + msg_sink.print(LocalizedString::from_raw(NotePrefix).append_raw(violation).append_raw('\n')); + } + return LintStatus::PROBLEM_DETECTED; } @@ -199,9 +251,10 @@ namespace vcpkg static LintStatus check_for_files_in_debug_include_directory(const ReadOnlyFilesystem& fs, const Path& package_dir, + const Path& portfile_cmake, MessageSink& msg_sink) { - const auto debug_include_dir = package_dir / "debug" / "include"; + const auto debug_include_dir = package_dir / "debug" VCPKG_PREFERRED_SEPARATOR "include"; std::vector files_found = fs.get_regular_files_recursive(debug_include_dir, IgnoreErrors{}); @@ -209,7 +262,14 @@ namespace vcpkg if (!files_found.empty()) { - msg_sink.println_warning(msgPortBugDuplicateIncludeFiles); + msg_sink.print(Color::warning, + LocalizedString::from_raw(portfile_cmake) + .append_raw(": ") + .append_raw(WarningPrefix) + .append(msgPortBugDuplicateIncludeFiles) + .append_raw('\n')); + msg_sink.print( + LocalizedString::from_raw(NotePrefix).append(msgPortBugDuplicateIncludeFilesFixIt).append_raw('\n')); return LintStatus::PROBLEM_DETECTED; } @@ -218,33 +278,39 @@ namespace vcpkg static LintStatus check_for_files_in_debug_share_directory(const ReadOnlyFilesystem& fs, const Path& package_dir, + const Path& portfile_cmake, MessageSink& msg_sink) { - const auto debug_share = package_dir / "debug" / "share"; + const auto debug_share = package_dir / "debug" VCPKG_PREFERRED_SEPARATOR "share"; if (fs.exists(debug_share, IgnoreErrors{})) { - msg_sink.println_warning(msgPortBugDebugShareDir); + msg_sink.print(Color::warning, + LocalizedString::from_raw(portfile_cmake) + .append_raw(": ") + .append_raw(WarningPrefix) + .append(msgPortBugDebugShareDir) + .append_raw('\n')); return LintStatus::PROBLEM_DETECTED; } return LintStatus::SUCCESS; } - static LintStatus check_for_vcpkg_port_config(const ReadOnlyFilesystem& fs, - const BuildPolicies& policies, - const Path& package_dir, - const PackageSpec& spec, - MessageSink& msg_sink) + static LintStatus check_for_vcpkg_port_config_in_cmake_helper_port(const ReadOnlyFilesystem& fs, + const Path& package_dir, + StringView package_name, + const Path& portfile_cmake, + MessageSink& msg_sink) { - const auto relative_path = Path("share") / spec.name() / "vcpkg-port-config.cmake"; - const auto absolute_path = package_dir / relative_path; - if (policies.is_enabled(BuildPolicy::CMAKE_HELPER_PORT)) - { - if (!fs.exists(absolute_path, IgnoreErrors{})) - { - msg_sink.println_warning(msgPortBugMissingFile, msg::path = relative_path); - return LintStatus::PROBLEM_DETECTED; - } + if (!fs.exists(package_dir / "share" / package_name / "vcpkg-port-config.cmake", IgnoreErrors{})) + { + msg_sink.print(Color::warning, + LocalizedString::from_raw(portfile_cmake) + .append_raw(": ") + .append_raw(WarningPrefix) + .append(msgPortBugMissingCMakeHelperPortFile) + .append_raw("\n")); + return LintStatus::PROBLEM_DETECTED; } return LintStatus::SUCCESS; @@ -253,35 +319,35 @@ namespace vcpkg static LintStatus check_for_usage_forgot_install(const ReadOnlyFilesystem& fs, const Path& port_dir, const Path& package_dir, - const PackageSpec& spec, + const StringView package_name, + const Path& portfile_cmake, MessageSink& msg_sink) { static constexpr StringLiteral STANDARD_INSTALL_USAGE = R"###(file(INSTALL "${CMAKE_CURRENT_LIST_DIR}/usage" DESTINATION "${CURRENT_PACKAGES_DIR}/share/${PORT}"))###"; auto usage_path_from = port_dir / "usage"; - auto usage_path_to = package_dir / "share" / spec.name() / "usage"; + auto usage_path_to = package_dir / "share" / package_name / "usage"; if (fs.is_regular_file(usage_path_from) && !fs.is_regular_file(usage_path_to)) { - msg_sink.println_warning(msg::format(msgPortBugMissingProvidedUsage, msg::package_name = spec.name()) - .append_raw('\n') - .append_raw(STANDARD_INSTALL_USAGE)); - return LintStatus::PROBLEM_DETECTED; - } - - return LintStatus::SUCCESS; - } - - static LintStatus check_folder_lib_cmake(const ReadOnlyFilesystem& fs, - const Path& package_dir, - const PackageSpec& spec, - MessageSink& msg_sink) - { - const auto lib_cmake = package_dir / "lib" / "cmake"; - if (fs.exists(lib_cmake, IgnoreErrors{})) - { - msg_sink.println_warning(msgPortBugMergeLibCMakeDir, msg::package_name = spec.name()); + msg_sink.print(Color::warning, + LocalizedString::from_raw(portfile_cmake) + .append_raw(": ") + .append_raw(WarningPrefix) + .append(msgPortBugMissingProvidedUsage) + .append_raw('\n')); + msg_sink.print(LocalizedString::from_raw(usage_path_from) + .append_raw(": ") + .append_raw(NotePrefix) + .append(msgUsageTextHere) + .append_raw('\n') + .append_raw(NotePrefix) + .append(msgUsageInstallInstructions) + .append_raw('\n') + .append_raw(NotePrefix) + .append_raw(STANDARD_INSTALL_USAGE) + .append_raw('\n')); return LintStatus::PROBLEM_DETECTED; } @@ -290,64 +356,103 @@ namespace vcpkg static LintStatus check_for_misplaced_cmake_files(const ReadOnlyFilesystem& fs, const Path& package_dir, - const PackageSpec& spec, + const Path& portfile_cmake, MessageSink& msg_sink) { - std::vector dirs = { - package_dir / "cmake", - package_dir / "debug" / "cmake", - package_dir / "lib" / "cmake", - package_dir / "debug" / "lib" / "cmake", + static constexpr StringLiteral deny_relative_dirs[] = { + "cmake", + "debug" VCPKG_PREFERRED_SEPARATOR "cmake", + "lib" VCPKG_PREFERRED_SEPARATOR "cmake", + "debug" VCPKG_PREFERRED_SEPARATOR "lib" VCPKG_PREFERRED_SEPARATOR "cmake", }; std::vector misplaced_cmake_files; - for (auto&& dir : dirs) + for (auto&& deny_relative_dir : deny_relative_dirs) { - for (auto&& file : fs.get_regular_files_recursive(dir, IgnoreErrors{})) + for (auto&& file : + fs.get_regular_files_recursive_lexically_proximate(package_dir / deny_relative_dir, IgnoreErrors{})) { if (Strings::case_insensitive_ascii_equals(file.extension(), ".cmake")) { - misplaced_cmake_files.push_back(std::move(file)); + misplaced_cmake_files.push_back(Path(deny_relative_dir) / std::move(file)); } } } if (!misplaced_cmake_files.empty()) { - msg_sink.println_warning(msgPortBugMisplacedCMakeFiles, msg::spec = spec.name()); - print_paths(msg_sink, misplaced_cmake_files); + msg_sink.print(Color::warning, + LocalizedString::from_raw(portfile_cmake) + .append_raw(": ") + .append_raw(WarningPrefix) + .append(msgPortBugMisplacedCMakeFiles)); + print_relative_paths( + msg_sink, msgFilesRelativeToThePackageDirectoryHere, package_dir, misplaced_cmake_files); return LintStatus::PROBLEM_DETECTED; } return LintStatus::SUCCESS; } - static LintStatus check_folder_debug_lib_cmake(const ReadOnlyFilesystem& fs, - const Path& package_dir, - const PackageSpec& spec, - MessageSink& msg_sink) + static LintStatus check_lib_cmake_merge(const ReadOnlyFilesystem& fs, + const Path& package_dir, + const Path& portfile_cmake, + MessageSink& msg_sink) { - const auto lib_cmake_debug = package_dir / "debug" / "lib" / "cmake"; - if (fs.exists(lib_cmake_debug, IgnoreErrors{})) - { - msg_sink.println_warning(msgPortBugMergeLibCMakeDir, msg::package_name = spec.name()); + if (fs.exists(package_dir / "lib" VCPKG_PREFERRED_SEPARATOR "cmake", IgnoreErrors{}) || + fs.exists(package_dir / "debug" VCPKG_PREFERRED_SEPARATOR "lib" VCPKG_PREFERRED_SEPARATOR "cmake", + IgnoreErrors{})) + { + msg_sink.print(Color::warning, + LocalizedString::from_raw(portfile_cmake) + .append_raw(": ") + .append_raw(WarningPrefix) + .append(msgPortBugMergeLibCMakeDir) + .append_raw('\n')); return LintStatus::PROBLEM_DETECTED; } return LintStatus::SUCCESS; } - static LintStatus check_for_dlls_in_lib_dir(const ReadOnlyFilesystem& fs, + static void add_prefix_to_all(std::vector& paths, const Path& prefix) + { + for (auto&& path : paths) + { + path = prefix / std::move(path); + } + } + + static std::vector find_relative_dlls(const ReadOnlyFilesystem& fs, const Path& package_dir, - MessageSink& msg_sink) + StringLiteral relative_dir) { - std::vector dlls = fs.get_regular_files_recursive(package_dir / "lib", IgnoreErrors{}); - Util::erase_remove_if(dlls, NotExtensionCaseInsensitive{".dll"}); + std::vector relative_dlls = + fs.get_regular_files_recursive_lexically_proximate(package_dir / relative_dir, IgnoreErrors{}); + Util::erase_remove_if(relative_dlls, NotExtensionCaseInsensitive{".dll"}); + add_prefix_to_all(relative_dlls, relative_dir); + return relative_dlls; + } - if (!dlls.empty()) + static LintStatus check_for_dlls_in_lib_dirs(const ReadOnlyFilesystem& fs, + const Path& package_dir, + const Path& portfile_cmake, + MessageSink& msg_sink) + { + std::vector bad_dlls; + for (auto&& relative_path : lib_relative_paths) { - msg_sink.println_warning(msgPortBugDllInLibDir); - print_paths(msg_sink, dlls); + Util::Vectors::append(bad_dlls, find_relative_dlls(fs, package_dir, relative_path)); + } + + if (!bad_dlls.empty()) + { + msg_sink.print(Color::warning, + LocalizedString::from_raw(portfile_cmake) + .append_raw(": ") + .append_raw(WarningPrefix) + .append(msgPortBugDllInLibDir)); + print_relative_paths(msg_sink, msgDllsRelativeToThePackageDirectoryHere, package_dir, bad_dlls); return LintStatus::PROBLEM_DETECTED; } @@ -355,71 +460,122 @@ namespace vcpkg } static LintStatus check_for_copyright_file(const ReadOnlyFilesystem& fs, - const PackageSpec& spec, + StringView spec_name, const Path& package_dir, - const VcpkgPaths& paths, + const Path& build_dir, + const Path& portfile_cmake, MessageSink& msg_sink) { - const auto copyright_file = package_dir / "share" / spec.name() / "copyright"; + static constexpr StringLiteral copyright_filenames[] = {"COPYING", "LICENSE", "LICENSE.txt"}; + const auto copyright_file = package_dir / "share" / spec_name / "copyright"; switch (fs.status(copyright_file, IgnoreErrors{})) { case FileType::regular: return LintStatus::SUCCESS; break; - case FileType::directory: msg_sink.println_warning(msgCopyrightIsDir, msg::path = "copyright"); break; + case FileType::directory: + msg_sink.print(Color::warning, + LocalizedString::from_raw(portfile_cmake) + .append_raw(": ") + .append_raw(WarningPrefix) + .append(msgCopyrightIsDir) + .append_raw('\n')); + return LintStatus::PROBLEM_DETECTED; default: break; } - const auto current_buildtrees_dir = paths.build_dir(spec); - const auto current_buildtrees_dir_src = current_buildtrees_dir / "src"; + msg_sink.print(Color::warning, + LocalizedString::from_raw(portfile_cmake) + .append_raw(": ") + .append_raw(WarningPrefix) + .append(msgPortBugMissingLicense) + .append_raw('\n')); - std::vector potential_copyright_files; // We only search in the root of each unpacked source archive to reduce false positives - auto src_dirs = fs.get_directories_non_recursive(current_buildtrees_dir_src, IgnoreErrors{}); - for (auto&& src_dir : src_dirs) + auto src_relative_dirs = Util::fmap(fs.get_directories_non_recursive(build_dir / "src", IgnoreErrors{}), + [](Path&& full) -> Path { return Path(full.filename()); }); + + if (src_relative_dirs.size() == 1) { - for (auto&& src_file : fs.get_regular_files_non_recursive(src_dir, IgnoreErrors{})) + // only one src dir, try to explain the vcpkg_install_copyright line for the user to use + std::vector src_dir_relative_copyright_files; + for (auto&& copyright_filename : copyright_filenames) { - const auto filename = src_file.filename(); - if (Strings::case_insensitive_ascii_equals(filename, "LICENSE") || - Strings::case_insensitive_ascii_equals(filename, "LICENSE.txt") || - Strings::case_insensitive_ascii_equals(filename, "COPYING")) + if (fs.is_regular_file(build_dir / "src" / src_relative_dirs[0] / copyright_filename)) { - potential_copyright_files.push_back(src_file); + src_dir_relative_copyright_files.push_back(copyright_filename); } } + + if (!src_dir_relative_copyright_files.empty()) + { + auto args = Util::fmap(src_dir_relative_copyright_files, [](StringLiteral copyright_file) { + return fmt::format(FMT_COMPILE("\"${{SOURCE_PATH}}/{}\""), copyright_file); + }); + msg_sink.print( + LocalizedString::from_raw(portfile_cmake) + .append_raw(": ") + .append_raw(NotePrefix) + .append(msgPortBugMissingLicenseFixIt, + msg::value = fmt::format(FMT_COMPILE("vcpkg_install_copyright(FILE_LIST {})"), + fmt::join(args, " "))) + .append_raw('\n')); + } + + return LintStatus::PROBLEM_DETECTED; } - msg_sink.println_warning(msgPortBugMissingLicense, msg::package_name = spec.name()); - if (potential_copyright_files.size() == 1) + Util::sort(src_relative_dirs); + auto& build_dir_relative_dirs = src_relative_dirs; + add_prefix_to_all(build_dir_relative_dirs, "src"); + std::vector build_dir_relative_copyright_files; + for (auto&& build_dir_relative_dir : build_dir_relative_dirs) { - // if there is only one candidate, provide the cmake lines needed to place it in the proper location - const auto& found_file = potential_copyright_files[0]; - auto found_relative_native = found_file.native(); - found_relative_native.erase(current_buildtrees_dir.native().size() + - 1); // The +1 is needed to remove the "/" - const Path relative_path = found_relative_native; - msg_sink.print(Color::none, - fmt::format("\n vcpkg_install_copyright(FILE_LIST \"${{SOURCE_PATH}}/{}/{}\")\n", - relative_path.generic_u8string(), - found_file.filename())); + for (auto&& copyright_filename : copyright_filenames) + { + if (fs.is_regular_file(build_dir / build_dir_relative_dir / copyright_filename)) + { + build_dir_relative_copyright_files.push_back(build_dir_relative_dir / copyright_filename); + } + } } - else if (potential_copyright_files.size() > 1) + + if (!build_dir_relative_copyright_files.empty()) { - msg_sink.println_warning(msgPortBugFoundCopyrightFiles); - print_paths(msg_sink, potential_copyright_files); + msg_sink.print(LocalizedString::from_raw(portfile_cmake) + .append_raw(": ") + .append_raw(NotePrefix) + .append(msgPortBugFoundCopyrightFiles)); + print_relative_paths( + msg_sink, msgFilesRelativeToTheBuildDirectoryHere, build_dir, build_dir_relative_copyright_files); } + return LintStatus::PROBLEM_DETECTED; } - static LintStatus check_for_exes(const ReadOnlyFilesystem& fs, const Path& package_dir, MessageSink& msg_sink) + static LintStatus check_for_exes_in_bin_dirs(const ReadOnlyFilesystem& fs, + const Path& package_dir, + const Path& portfile_cmake, + MessageSink& msg_sink) { - std::vector exes = fs.get_regular_files_recursive(package_dir / "bin", IgnoreErrors{}); - Util::erase_remove_if(exes, NotExtensionCaseInsensitive{".exe"}); + std::vector exes; + for (auto&& bin_relative_path : bin_relative_paths) + { + auto this_bad_exes = + fs.get_regular_files_recursive_lexically_proximate(package_dir / bin_relative_path, IgnoreErrors{}); + Util::erase_remove_if(this_bad_exes, NotExtensionCaseInsensitive{".exe"}); + add_prefix_to_all(this_bad_exes, bin_relative_path); + Util::Vectors::append(exes, std::move(this_bad_exes)); + } if (!exes.empty()) { - msg_sink.println_warning(msgPortBugFoundExeInBinDir); - print_paths(msg_sink, exes); + msg_sink.print(Color::warning, + LocalizedString::from_raw(portfile_cmake) + .append_raw(": ") + .append_raw(WarningPrefix) + .append(msgPortBugFoundExeInBinDir)); + + print_relative_paths(msg_sink, msgExecutablesRelativeToThePackageDirectoryHere, package_dir, exes); return LintStatus::PROBLEM_DETECTED; } @@ -428,7 +584,7 @@ namespace vcpkg struct PostBuildCheckDllData { - Path path; + Path relative_path; MachineType machine_type; bool is_arm64_ec; bool has_exports; @@ -436,9 +592,11 @@ namespace vcpkg std::vector dependencies; }; - static ExpectedL try_load_dll_data(const ReadOnlyFilesystem& fs, const Path& path) + static ExpectedL try_load_dll_data(const ReadOnlyFilesystem& fs, + const Path& package_dir, + const Path& relative_path) { - auto maybe_file = fs.try_open_for_read(path); + auto maybe_file = fs.try_open_for_read(package_dir / relative_path); auto file = maybe_file.get(); if (!file) { @@ -479,7 +637,7 @@ namespace vcpkg return std::move(maybe_dependencies).error(); } - return PostBuildCheckDllData{path, + return PostBuildCheckDllData{relative_path, metadata->get_machine_type(), metadata->is_arm64_ec(), has_exports, @@ -487,34 +645,39 @@ namespace vcpkg std::move(*dependencies)}; } - static LintStatus check_exports_of_dlls(const BuildPolicies& policies, - const std::vector& dlls_data, + static LintStatus check_exports_of_dlls(const std::vector& dlls_data, + const Path& package_dir, + const Path& portfile_cmake, MessageSink& msg_sink) { - if (policies.is_enabled(BuildPolicy::DLLS_WITHOUT_EXPORTS)) return LintStatus::SUCCESS; - std::vector dlls_with_no_exports; for (const PostBuildCheckDllData& dll_data : dlls_data) { if (!dll_data.has_exports) { - dlls_with_no_exports.push_back(dll_data.path); + dlls_with_no_exports.push_back(dll_data.relative_path); } } if (!dlls_with_no_exports.empty()) { - msg_sink.println_warning(msgPortBugSetDllsWithoutExports); - print_paths(msg_sink, dlls_with_no_exports); + msg_sink.print(Color::warning, + LocalizedString::from_raw(portfile_cmake) + .append_raw(": ") + .append_raw(WarningPrefix) + .append(msgPortBugSetDllsWithoutExports)); + print_relative_paths(msg_sink, msgDllsRelativeToThePackageDirectoryHere, package_dir, dlls_with_no_exports); return LintStatus::PROBLEM_DETECTED; } return LintStatus::SUCCESS; } - static LintStatus check_uwp_bit_of_dlls(StringView expected_system_name, - const std::vector& dlls_data, - MessageSink& msg_sink) + static LintStatus check_appcontainer_bit_if_uwp(StringView expected_system_name, + const Path& package_dir, + const Path& portfile_cmake, + const std::vector& dlls_data, + MessageSink& msg_sink) { if (expected_system_name != "WindowsStore") { @@ -526,14 +689,19 @@ namespace vcpkg { if (!dll_data.has_appcontainer) { - dlls_with_improper_uwp_bit.push_back(dll_data.path); + dlls_with_improper_uwp_bit.push_back(dll_data.relative_path); } } if (!dlls_with_improper_uwp_bit.empty()) { - msg_sink.println_warning(msgPortBugDllAppContainerBitNotSet); - print_paths(msg_sink, dlls_with_improper_uwp_bit); + msg_sink.print(Color::warning, + LocalizedString::from_raw(portfile_cmake) + .append_raw(": ") + .append_raw(WarningPrefix) + .append(msgPortBugDllAppContainerBitNotSet)); + print_relative_paths( + msg_sink, msgDllsRelativeToThePackageDirectoryHere, package_dir, dlls_with_improper_uwp_bit); return LintStatus::PROBLEM_DETECTED; } @@ -542,7 +710,7 @@ namespace vcpkg struct FileAndArch { - Path file; + Path relative_file; std::string actual_arch; }; @@ -580,30 +748,44 @@ namespace vcpkg case MachineType::LLVM_BITCODE: return "llvm-bitcode"; case MachineType::LOONGARCH32: return "loongarch32"; case MachineType::LOONGARCH64: return "loongarch64"; - default: return fmt::format("unknown-{}", static_cast(machine_type)); + default: return fmt::format(FMT_COMPILE("unknown-{}"), static_cast(machine_type)); } } static void print_invalid_architecture_files(const std::string& expected_architecture, + const Path& package_dir, + const Path& portfile_cmake, std::vector binaries_with_invalid_architecture, MessageSink& msg_sink) { - msg_sink.println_warning(msgBuiltWithIncorrectArchitecture); + msg_sink.print(Color::warning, + LocalizedString::from_raw(portfile_cmake) + .append_raw(": ") + .append_raw(WarningPrefix) + .append(msgBuiltWithIncorrectArchitecture, msg::arch = expected_architecture) + .append_raw('\n')); + + auto msg = LocalizedString::from_raw(package_dir) + .append_raw(": ") + .append_raw(NotePrefix) + .append(msgBinariesRelativeToThePackageDirectoryHere) + .append_raw('\n'); for (const FileAndArch& b : binaries_with_invalid_architecture) { - msg_sink.println_warning(LocalizedString().append_indent().append(msgBinaryWithInvalidArchitecture, - msg::path = b.file, - msg::expected = expected_architecture, - msg::actual = b.actual_arch)); + msg.append_raw(NotePrefix) + .append(msgBinaryWithInvalidArchitecture, + msg::path = b.relative_file.generic_u8string(), + msg::arch = b.actual_arch) + .append_raw('\n'); } + + msg_sink.print(msg); } - static LintStatus check_dll_architecture(const std::string& expected_architecture, - const std::vector& dlls_data, - MessageSink& msg_sink) + static void check_dll_architecture(const std::string& expected_architecture, + const std::vector& dlls_data, + std::vector& binaries_with_invalid_architecture) { - std::vector binaries_with_invalid_architecture; - for (const PostBuildCheckDllData& dll_data : dlls_data) { const std::string actual_architecture = get_printable_architecture(dll_data.machine_type); @@ -611,226 +793,261 @@ namespace vcpkg { if (dll_data.machine_type != MachineType::AMD64 || !dll_data.is_arm64_ec) { - binaries_with_invalid_architecture.push_back({dll_data.path, actual_architecture}); + binaries_with_invalid_architecture.push_back({dll_data.relative_path, actual_architecture}); } } else if (expected_architecture != actual_architecture) { - binaries_with_invalid_architecture.push_back({dll_data.path, actual_architecture}); + binaries_with_invalid_architecture.push_back({dll_data.relative_path, actual_architecture}); } } + } - if (!binaries_with_invalid_architecture.empty()) - { - print_invalid_architecture_files(expected_architecture, binaries_with_invalid_architecture, msg_sink); - return LintStatus::PROBLEM_DETECTED; - } - - return LintStatus::SUCCESS; + static std::vector> get_lib_info(const Filesystem& fs, + const Path& relative_root, + View libs) + { + std::vector> maybe_lib_infos(libs.size()); + std::transform(libs.begin(), + libs.end(), + maybe_lib_infos.begin(), + [&](const Path& relative_lib) -> Optional { + auto maybe_rfp = fs.try_open_for_read(relative_root / relative_lib); + + if (auto file_handle = maybe_rfp.get()) + { + auto maybe_lib_info = read_lib_information(*file_handle); + if (auto lib_info = maybe_lib_info.get()) + { + return std::move(*lib_info); + } + return nullopt; + } + return nullopt; + }); + return maybe_lib_infos; } - static LintStatus check_lib_architecture(const std::string& expected_architecture, - const std::string& cmake_system_name, - const std::vector& files, - const ReadOnlyFilesystem& fs, - MessageSink& msg_sink) + // lib_infos[n] is the lib info for libs[n] for all n in [0, libs.size()) + static void check_lib_architecture(const std::string& expected_architecture, + View relative_libs, + View> lib_infos, + std::vector& binaries_with_invalid_architecture) { - std::vector binaries_with_invalid_architecture; - if (Util::Vectors::contains(windows_system_names, cmake_system_name)) + for (size_t i = 0; i < relative_libs.size(); ++i) { - for (const Path& file : files) - { - if (!Strings::case_insensitive_ascii_equals(file.extension(), ".lib")) - { - continue; - } - - auto maybe_lib_information = fs.try_open_for_read(file).then( - [](ReadFilePointer&& file_handle) { return read_lib_information(file_handle); }); + auto& maybe_lib_information = lib_infos[i]; + auto& relative_lib = relative_libs[i]; - if (!maybe_lib_information.has_value()) - { - continue; - } + if (!maybe_lib_information.has_value()) + { + continue; + } - auto&& machine_types = maybe_lib_information.value_or_exit(VCPKG_LINE_INFO).machine_types; + auto machine_types = maybe_lib_information.value_or_exit(VCPKG_LINE_INFO).machine_types; + { + auto llvm_bitcode = std::find(machine_types.begin(), machine_types.end(), MachineType::LLVM_BITCODE); + if (llvm_bitcode != machine_types.end()) { - auto llvm_bitcode = - std::find(machine_types.begin(), machine_types.end(), MachineType::LLVM_BITCODE); - if (llvm_bitcode != machine_types.end()) - { - machine_types.erase(llvm_bitcode); - } + machine_types.erase(llvm_bitcode); } + } - auto printable_machine_types = - Util::fmap(machine_types, [](MachineType mt) { return get_printable_architecture(mt); }); - // Either machine_types is empty (meaning this lib is architecture independent), or - // we need at least one of the machine types to match. - // Agnostic example: Folly's debug library, LLVM LTO libraries - // Multiple example: arm64x libraries - if (!printable_machine_types.empty() && - !Util::Vectors::contains(printable_machine_types, expected_architecture)) - { - binaries_with_invalid_architecture.push_back({file, Strings::join(",", printable_machine_types)}); - } + auto printable_machine_types = + Util::fmap(machine_types, [](MachineType mt) { return get_printable_architecture(mt); }); + // Either machine_types is empty (meaning this lib is architecture independent), or + // we need at least one of the machine types to match. + // Agnostic example: Folly's debug library, LLVM LTO libraries + // Multiple example: arm64x libraries + if (!printable_machine_types.empty() && + !Util::Vectors::contains(printable_machine_types, expected_architecture)) + { + binaries_with_invalid_architecture.push_back( + {relative_lib, Strings::join(",", printable_machine_types)}); } } - else if (cmake_system_name == "Darwin") + } + + static LintStatus check_no_dlls_present(const Path& package_dir, + const std::vector& relative_dlls, + const Path& portfile_cmake, + MessageSink& msg_sink) + { + if (relative_dlls.empty()) { - const auto requested_arch = expected_architecture == "x64" ? "x86_64" : expected_architecture; - for (const Path& file : files) - { - auto cmd = Command{"lipo"}.string_arg("-archs").string_arg(file); - auto maybe_output = flatten_out(cmd_execute_and_capture_output(cmd), "lipo"); - if (const auto output = maybe_output.get()) - { - if (!Util::Vectors::contains(Strings::split(Strings::trim(*output), ' '), requested_arch)) - { - binaries_with_invalid_architecture.push_back({file, std::move(*output)}); - } - } - else - { - msg_sink.println_error(msg::format(msgFailedToDetermineArchitecture, - msg::path = file, - msg::command_line = cmd.command_line()) - .append_raw('\n') - .append(maybe_output.error())); - } - } + return LintStatus::SUCCESS; } - if (!binaries_with_invalid_architecture.empty()) + msg_sink.print(Color::warning, + LocalizedString::from_raw(portfile_cmake) + .append_raw(": ") + .append_raw(WarningPrefix) + .append(msgPortBugFoundDllInStaticBuild)); + print_relative_paths(msg_sink, msgDllsRelativeToThePackageDirectoryHere, package_dir, relative_dlls); + return LintStatus::PROBLEM_DETECTED; + } + + static size_t total_size(View> path_sets) + { + size_t result = 0; + for (auto&& paths : path_sets) { - print_invalid_architecture_files(expected_architecture, binaries_with_invalid_architecture, msg_sink); - return LintStatus::PROBLEM_DETECTED; + result += paths.size(); } - return LintStatus::SUCCESS; + return result; } - static LintStatus check_no_dlls_present(const std::vector& dlls, MessageSink& msg_sink) + static void append_binary_set(LocalizedString& ls, View> relative_binary_sets) { - if (dlls.empty()) + for (auto&& binary_set : relative_binary_sets) { - return LintStatus::SUCCESS; + for (auto&& binary : binary_set) + { + auto as_generic = binary; + as_generic.make_generic(); + ls.append_raw(NotePrefix).append_raw(as_generic).append_raw('\n'); + } } - msg_sink.println_warning(msgPortBugFoundDllInStaticBuild); - print_paths(msg_sink, dlls); - return LintStatus::PROBLEM_DETECTED; } - static LintStatus check_matching_debug_and_release_binaries(const std::vector& debug_binaries, - const std::vector& release_binaries, + static LintStatus check_matching_debug_and_release_binaries(const Path& package_dir, + View> relative_debug_binary_sets, + View> relative_release_binary_sets, + const Path& portfile_cmake, MessageSink& msg_sink) { - const size_t debug_count = debug_binaries.size(); - const size_t release_count = release_binaries.size(); + const size_t debug_count = total_size(relative_debug_binary_sets); + const size_t release_count = total_size(relative_release_binary_sets); if (debug_count == release_count) { return LintStatus::SUCCESS; } - msg_sink.println_warning(msgPortBugMismatchedNumberOfBinaries); + msg_sink.print(Color::warning, + LocalizedString::from_raw(portfile_cmake) + .append_raw(": ") + .append_raw(WarningPrefix) + .append(msgPortBugMismatchingNumberOfBinaries) + .append_raw('\n')); + LocalizedString ls = LocalizedString::from_raw(package_dir) + .append_raw(": ") + .append_raw(NotePrefix) + .append(msgBinariesRelativeToThePackageDirectoryHere) + .append_raw('\n'); if (debug_count == 0) { - msg_sink.println(msgPortBugMissingDebugBinaries); + ls.append_raw(NotePrefix).append(msgPortBugMissingDebugBinaries).append_raw('\n'); } else { - msg_sink.println(msgPortBugFoundDebugBinaries, msg::count = debug_count); - print_paths(msg_sink, debug_binaries); + ls.append_raw(NotePrefix).append(msgPortBugFoundDebugBinaries).append_raw('\n'); + append_binary_set(ls, relative_debug_binary_sets); } if (release_count == 0) { - msg_sink.println(msgPortBugMissingReleaseBinaries); + ls.append_raw(NotePrefix).append(msgPortBugMissingReleaseBinaries).append_raw('\n'); } else { - msg_sink.println(msgPortBugFoundReleaseBinaries, msg::count = release_count); - print_paths(msg_sink, release_binaries); + ls.append_raw(NotePrefix).append(msgPortBugFoundReleaseBinaries).append_raw('\n'); + append_binary_set(ls, relative_release_binary_sets); } + msg_sink.print(ls); return LintStatus::PROBLEM_DETECTED; } - static LintStatus check_lib_files_are_available_if_dlls_are_available(const BuildPolicies& policies, - const size_t lib_count, + static LintStatus check_lib_files_are_available_if_dlls_are_available(const size_t lib_count, const size_t dll_count, - const Path& lib_dir, + const Path& portfile_cmake, MessageSink& msg_sink) { - if (policies.is_enabled(BuildPolicy::DLLS_WITHOUT_LIBS)) return LintStatus::SUCCESS; - if (lib_count == 0 && dll_count != 0) { - msg_sink.println_warning(msgPortBugMissingImportedLibs, msg::path = lib_dir); + msg_sink.print(LocalizedString::from_raw(portfile_cmake) + .append_raw(": ") + .append_raw(WarningPrefix) + .append(msgPortBugMissingImportedLibs) + .append_raw('\n')); return LintStatus::PROBLEM_DETECTED; } return LintStatus::SUCCESS; } - static LintStatus check_bin_folders_are_not_present_in_static_build(const ReadOnlyFilesystem& fs, - const Path& package_dir, - MessageSink& msg_sink) + static size_t check_bin_folders_are_not_present_in_static_build(const ReadOnlyFilesystem& fs, + const Path& package_dir, + const Path& portfile_cmake, + MessageSink& msg_sink) { - const auto bin = package_dir / "bin"; - const auto debug_bin = package_dir / "debug" / "bin"; - - const bool bin_exists = fs.exists(bin, IgnoreErrors{}); - const bool debug_bin_exists = fs.exists(debug_bin, IgnoreErrors{}); - if (!bin_exists && !debug_bin_exists) + std::vector bad_dirs; + for (auto&& bin_relative_path : bin_relative_paths) { - return LintStatus::SUCCESS; + if (fs.exists(package_dir / bin_relative_path, IgnoreErrors{})) + { + bad_dirs.push_back(Path(bin_relative_path).generic_u8string()); + } } - if (bin_exists) + if (bad_dirs.empty()) { - msg_sink.println_warning(msgPortBugBinDirExists, msg::path = bin); + return 0; } - if (debug_bin_exists) + for (auto&& bad_dir : bad_dirs) { - msg_sink.println_warning(msgPortBugDebugBinDirExists, msg::path = debug_bin); + msg_sink.print(Color::warning, + LocalizedString::from_raw(portfile_cmake) + .append_raw(": ") + .append_raw(WarningPrefix) + .append(msgPortBugBinDirExists, msg::path = bad_dir) + .append_raw('\n')); } - msg_sink.println_warning(msgPortBugRemoveBinDir); + auto args = Util::fmap(bad_dirs, [](const Path& bad_dir) { + return fmt::format(FMT_COMPILE("\"${{CURRENT_PACKAGES_DIR}}/{}\""), bad_dir); + }); msg_sink.print( - Color::warning, - R"###( if(VCPKG_LIBRARY_LINKAGE STREQUAL "static"))###" - "\n" - R"###( file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/bin" "${CURRENT_PACKAGES_DIR}/debug/bin"))###" - "\n" - R"###( endif())###" - "\n\n"); - - return LintStatus::PROBLEM_DETECTED; + LocalizedString::from_raw(NotePrefix) + .append(msgPortBugRemoveBinDir) + .append_raw('\n') + .append_raw("if(VCPKG_LIBRARY_LINKAGE STREQUAL \"static\")\n") + .append_indent() + .append_raw(fmt::format(FMT_COMPILE("file(REMOVE_RECURSE {})\nendif()\n"), fmt::join(args, " ")))); + return bad_dirs.size(); } - static LintStatus check_no_empty_folders(const ReadOnlyFilesystem& fs, const Path& dir, MessageSink& msg_sink) + static LintStatus check_no_empty_folders(const ReadOnlyFilesystem& fs, + const Path& package_dir, + const Path& portfile_cmake, + MessageSink& msg_sink) { - std::vector empty_directories = fs.get_directories_recursive(dir, IgnoreErrors{}); - Util::erase_remove_if(empty_directories, - [&fs](const Path& current) { return !fs.is_empty(current, IgnoreErrors{}); }); - - if (!empty_directories.empty()) - { - msg_sink.println_warning(msgPortBugFoundEmptyDirectories, msg::path = dir); - print_paths(msg_sink, empty_directories); - - std::string dirs = " file(REMOVE_RECURSE"; - for (auto&& empty_dir : empty_directories) - { - Strings::append(dirs, - " \"${CURRENT_PACKAGES_DIR}", - empty_dir.generic_u8string().substr(dir.generic_u8string().size()), - '"'); - } - dirs += ")\n"; - msg_sink.println_warning(msg::format(msgPortBugRemoveEmptyDirectories).append_raw('\n').append_raw(dirs)); - + std::vector relative_empty_directories = + fs.get_directories_recursive_lexically_proximate(package_dir, IgnoreErrors{}); + Util::erase_remove_if(relative_empty_directories, + [&](const Path& current) { return !fs.is_empty(package_dir / current, IgnoreErrors{}); }); + if (!relative_empty_directories.empty()) + { + Util::sort(relative_empty_directories); + msg_sink.print(Color::warning, + LocalizedString::from_raw(portfile_cmake) + .append_raw(": ") + .append_raw(WarningPrefix) + .append(msgPortBugFoundEmptyDirectories) + .append_raw('\n')); + + auto args = Util::fmap(relative_empty_directories, [](const Path& empty_dir) { + return fmt::format(FMT_COMPILE("\"${{CURRENT_PACKAGES_DIR}}/{}\""), empty_dir.generic_u8string()); + }); + msg_sink.print( + LocalizedString::from_raw(package_dir) + .append_raw(": ") + .append_raw(NotePrefix) + .append(msgDirectoriesRelativeToThePackageDirectoryHere) + .append_raw('\n') + .append_raw(NotePrefix) + .append_raw(fmt::format(FMT_COMPILE("file(REMOVE_RECURSE {})\n"), fmt::join(args, " ")))); return LintStatus::PROBLEM_DETECTED; } @@ -838,12 +1055,14 @@ namespace vcpkg } static LintStatus check_pkgconfig_dir_only_in_lib_dir(const ReadOnlyFilesystem& fs, - const Path& dir_raw, + const Path& package_dir, + View relative_all_files, + const Path& portfile_cmake, MessageSink& msg_sink) { struct MisplacedFile { - Path path; + Path relative_path; enum class Type { Release, @@ -856,20 +1075,23 @@ namespace vcpkg bool contains_debug = false; bool contains_share = false; - auto dir = dir_raw.lexically_normal().generic_u8string(); // force /s + static constexpr StringLiteral share_dir = "share" VCPKG_PREFERRED_SEPARATOR "pkgconfig"; + static constexpr StringLiteral lib_dir = "lib" VCPKG_PREFERRED_SEPARATOR "pkgconfig"; + static constexpr StringLiteral debug_dir = + "debug" VCPKG_PREFERRED_SEPARATOR "lib" VCPKG_PREFERRED_SEPARATOR "pkgconfig"; - const auto share_dir = Path(dir) / "share" / "pkgconfig"; - const auto lib_dir = Path(dir) / "lib" / "pkgconfig"; - const auto debug_dir = Path(dir) / "debug" / "lib" / "pkgconfig"; - for (Path& path : fs.get_regular_files_recursive(dir, IgnoreErrors{})) + static constexpr StringLiteral generic_share_dir = "share/pkgconfig"; + static constexpr StringLiteral generic_lib_dir = "lib/pkgconfig"; + static constexpr StringLiteral generic_debug_dir = "debug/lib/pkgconfig"; + for (const Path& path : relative_all_files) { if (!Strings::ends_with(path, ".pc")) continue; - const auto parent_path = Path(path.parent_path()); + const auto parent_path = path.parent_path(); // Always allow .pc files at 'lib/pkgconfig' and 'debug/lib/pkgconfig' if (parent_path == lib_dir || parent_path == debug_dir) continue; - const bool contains_libs = - Util::any_of(fs.read_lines(path).value_or_exit(VCPKG_LINE_INFO), [](const std::string& line) { + const bool contains_libs = Util::any_of( + fs.read_lines(package_dir / path).value_or_exit(VCPKG_LINE_INFO), [](const std::string& line) { if (Strings::starts_with(line, "Libs")) { // only consider "Libs:" or "Libs.private:" directives when they have a value @@ -884,71 +1106,86 @@ namespace vcpkg { if (parent_path == share_dir) continue; contains_share = true; - misplaced_pkgconfig_files.push_back({std::move(path), MisplacedFile::Type::Share}); + misplaced_pkgconfig_files.push_back({path, MisplacedFile::Type::Share}); continue; } - const bool is_debug = Strings::starts_with(path, Path(dir) / "debug"); + const bool is_debug = Strings::starts_with(path, "debug" VCPKG_PREFERRED_SEPARATOR); if (is_debug) { - misplaced_pkgconfig_files.push_back({std::move(path), MisplacedFile::Type::Debug}); + misplaced_pkgconfig_files.push_back({path, MisplacedFile::Type::Debug}); contains_debug = true; } else { - misplaced_pkgconfig_files.push_back({std::move(path), MisplacedFile::Type::Release}); + misplaced_pkgconfig_files.push_back({path, MisplacedFile::Type::Release}); contains_release = true; } } if (!misplaced_pkgconfig_files.empty()) { - msg_sink.println_warning(msgPortBugMisplacedPkgConfigFiles); - for (const auto& item : misplaced_pkgconfig_files) - { - msg_sink.print(Color::warning, fmt::format(" {}\n", item.path)); - } - msg_sink.println(Color::warning, msgPortBugMovePkgConfigFiles); - - std::string create_directory_line(" file(MAKE_DIRECTORY"); - if (contains_release) + msg_sink.print(Color::warning, + LocalizedString::from_raw(portfile_cmake) + .append_raw(": ") + .append_raw(WarningPrefix) + .append(msgPortBugMisplacedPkgConfigFiles)); + print_relative_paths(msg_sink, + msgFilesRelativeToThePackageDirectoryHere, + package_dir, + Util::fmap(misplaced_pkgconfig_files, + [](const MisplacedFile& mf) -> Path { return mf.relative_path; })); + + msg_sink.print(LocalizedString::from_raw(NotePrefix).append(msgPortBugMovePkgConfigFiles).append_raw('\n')); { - create_directory_line += R"###( "${CURRENT_PACKAGES_DIR}/lib/pkgconfig")###"; - } + auto create_directory_line = LocalizedString::from_raw("file(MAKE_DIRECTORY"); + std::vector directories; + if (contains_debug) + { + directories.push_back(generic_debug_dir); + } - if (contains_debug) - { - create_directory_line += R"###( "${CURRENT_PACKAGES_DIR}/lib/debug/pkgconfig")###"; - } + if (contains_release) + { + directories.push_back(generic_lib_dir); + } - if (contains_share) - { - create_directory_line += R"###( "${CURRENT_PACKAGES_DIR}/share/pkgconfig")###"; - } + if (contains_share) + { + directories.push_back(generic_share_dir); + } - create_directory_line.append(")\n"); + for (auto&& directory : directories) + { + create_directory_line.append_raw( + fmt::format(FMT_COMPILE(R"###( "${{CURRENT_PACKAGES_DIR}}/{}")###"), directory)); + } - msg_sink.print(Color::warning, create_directory_line); + create_directory_line.append_raw(")\n"); + msg_sink.print(create_directory_line); + } // destroy create_directory_line for (const auto& item : misplaced_pkgconfig_files) { - auto relative = item.path.native().substr(dir.size()); - std::string rename_line(R"###( file(RENAME "${CURRENT_PACKAGES_DIR})###"); - rename_line.append(relative); - rename_line.append(R"###(" "${CURRENT_PACKAGES_DIR}/)###"); + const StringLiteral* dir; switch (item.type) { - case MisplacedFile::Type::Debug: rename_line.append("debug/lib/pkgconfig/"); break; - case MisplacedFile::Type::Release: rename_line.append("lib/pkgconfig/"); break; - case MisplacedFile::Type::Share: rename_line.append("share/pkgconfig/"); break; + case MisplacedFile::Type::Debug: dir = &generic_debug_dir; break; + case MisplacedFile::Type::Release: dir = &generic_lib_dir; break; + case MisplacedFile::Type::Share: dir = &generic_share_dir; break; + default: Checks::unreachable(VCPKG_LINE_INFO); } - rename_line.append(item.path.filename().to_string()); - rename_line.append("\")\n"); - msg_sink.print(Color::warning, rename_line); + + msg_sink.print(LocalizedString::from_raw(fmt::format( + FMT_COMPILE(R"###(file(RENAME "${{CURRENT_PACKAGES_DIR}}/{}" "${{CURRENT_PACKAGES_DIR}}/{}/{}"))###" + "\n"), + item.relative_path.generic_u8string(), + *dir, + item.relative_path.filename()))); } - msg_sink.print(Color::warning, " vcpkg_fixup_pkgconfig()\n "); - msg_sink.println(Color::warning, msgPortBugRemoveEmptyDirs); + msg_sink.print(LocalizedString::from_raw("vcpkg_fixup_pkgconfig()\n")); + msg_sink.println(msgPortBugRemoveEmptyDirs); return LintStatus::PROBLEM_DETECTED; } @@ -956,21 +1193,43 @@ namespace vcpkg return LintStatus::SUCCESS; } - struct BuildTypeAndFile + // lib_infos[n] is the lib info for libs[n] for all n in [0, libs.size()) + struct LinkageAndBuildType { - Path file; - bool has_static_release = false; - bool has_static_debug = false; - bool has_dynamic_release = false; - bool has_dynamic_debug = false; + LinkageType kind; + bool release; + + friend bool operator==(const LinkageAndBuildType& lhs, const LinkageAndBuildType& rhs) noexcept + { + return lhs.kind == rhs.kind && lhs.release == rhs.release; + } + friend bool operator!=(const LinkageAndBuildType& lhs, const LinkageAndBuildType& rhs) noexcept + { + return !(lhs == rhs); + } + + bool operator<(const LinkageAndBuildType& other) const noexcept + { + if (static_cast(kind) < static_cast(other.kind)) + { + return true; + } + + if (static_cast(kind) > static_cast(other.kind)) + { + return false; + } + + return release < other.release; + } }; - static LocalizedString format_linkage(LinkageType linkage, bool release) + static LocalizedString to_string(const LinkageAndBuildType& linkage) { - switch (linkage) + switch (linkage.kind) { case LinkageType::Dynamic: - if (release) + if (linkage.release) { return msg::format(msgLinkageDynamicRelease); } @@ -980,7 +1239,7 @@ namespace vcpkg } break; case LinkageType::Static: - if (release) + if (linkage.release) { return msg::format(msgLinkageStaticRelease); } @@ -993,17 +1252,23 @@ namespace vcpkg } } - static LintStatus check_crt_linkage_of_libs(const ReadOnlyFilesystem& fs, - const BuildInfo& build_info, - bool expect_release, - const std::vector& libs, - MessageSink& msg_sink) + struct FileAndLinkages + { + Path relative_file; + std::vector linkages; + }; + + static void check_crt_group_linkage_of_libs( + LinkageAndBuildType expected, + const Path& relative_root, + const std::vector& relative_libs, + View> lib_infos, + std::map>& groups_of_invalid_crt) { - std::vector libs_with_invalid_crt; - for (const Path& lib : libs) + for (size_t i = 0; i < relative_libs.size(); ++i) { - auto maybe_lib_info = fs.try_open_for_read(lib).then( - [](ReadFilePointer&& lib_file) { return read_lib_information(lib_file); }); + auto& maybe_lib_info = lib_infos[i]; + auto& relative_lib = relative_libs[i]; if (!maybe_lib_info.has_value()) { @@ -1011,106 +1276,87 @@ namespace vcpkg } auto&& lib_info = maybe_lib_info.value_or_exit(VCPKG_LINE_INFO); - Debug::println( - "The lib ", lib.native(), " has directives: ", Strings::join(" ", lib_info.linker_directives)); + Debug::println("The lib ", + (relative_root / relative_lib).native(), + " has directives: ", + Strings::join(" ", lib_info.linker_directives)); - BuildTypeAndFile this_lib{lib}; - constexpr static StringLiteral static_release_crt = "/DEFAULTLIB:LIBCMT"; - constexpr static StringLiteral static_debug_crt = "/DEFAULTLIB:LIBCMTd"; - constexpr static StringLiteral dynamic_release_crt = "/DEFAULTLIB:MSVCRT"; + FileAndLinkages this_lib{relative_lib}; constexpr static StringLiteral dynamic_debug_crt = "/DEFAULTLIB:MSVCRTd"; + constexpr static StringLiteral dynamic_release_crt = "/DEFAULTLIB:MSVCRT"; + constexpr static StringLiteral static_debug_crt = "/DEFAULTLIB:LIBCMTd"; + constexpr static StringLiteral static_release_crt = "/DEFAULTLIB:LIBCMT"; for (auto&& directive : lib_info.linker_directives) { - if (Strings::case_insensitive_ascii_equals(directive, static_release_crt)) + if (Strings::case_insensitive_ascii_equals(directive, dynamic_debug_crt)) { - this_lib.has_static_release = true; + this_lib.linkages.push_back(LinkageAndBuildType{LinkageType::Dynamic, false}); } - else if (Strings::case_insensitive_ascii_equals(directive, static_debug_crt)) + else if (Strings::case_insensitive_ascii_equals(directive, dynamic_release_crt)) { - this_lib.has_static_debug = true; + this_lib.linkages.push_back(LinkageAndBuildType{LinkageType::Dynamic, true}); } - else if (Strings::case_insensitive_ascii_equals(directive, dynamic_release_crt)) + else if (Strings::case_insensitive_ascii_equals(directive, static_debug_crt)) { - this_lib.has_dynamic_release = true; + this_lib.linkages.push_back(LinkageAndBuildType{LinkageType::Static, false}); } - else if (Strings::case_insensitive_ascii_equals(directive, dynamic_debug_crt)) + else if (Strings::case_insensitive_ascii_equals(directive, static_release_crt)) { - this_lib.has_dynamic_debug = true; + this_lib.linkages.push_back(LinkageAndBuildType{LinkageType::Static, true}); } } - bool fail = false; - if (expect_release) - { - fail |= this_lib.has_static_debug; - fail |= this_lib.has_dynamic_debug; - } - else - { - fail |= this_lib.has_static_release; - fail |= this_lib.has_dynamic_release; - } - - switch (build_info.crt_linkage) + Util::sort_unique_erase(this_lib.linkages); + if (this_lib.linkages.size() > 1 || (this_lib.linkages.size() == 1 && this_lib.linkages[0] != expected)) { - case LinkageType::Dynamic: - fail |= this_lib.has_static_debug; - fail |= this_lib.has_static_release; - break; - case LinkageType::Static: - fail |= this_lib.has_dynamic_debug; - fail |= this_lib.has_dynamic_release; - break; - default: Checks::unreachable(VCPKG_LINE_INFO); - } - - if (fail) - { - libs_with_invalid_crt.push_back(std::move(this_lib)); + groups_of_invalid_crt[expected].push_back(std::move(this_lib)); } } + } - if (!libs_with_invalid_crt.empty()) + static LintStatus check_crt_linkage_of_libs( + const Path& package_dir, + const Path& portfile_cmake, + std::map>& groups_of_invalid_crt, + MessageSink& msg_sink) + { + if (groups_of_invalid_crt.empty()) { - msg_sink.println_warning(msgPortBugInvalidCrtLinkage, - msg::expected = format_linkage(build_info.crt_linkage, expect_release)); - std::vector printed_linkages; - for (const BuildTypeAndFile& btf : libs_with_invalid_crt) - { - printed_linkages.clear(); - LocalizedString this_entry; - this_entry.append_indent().append(msgPortBugInvalidCrtLinkageEntry, msg::path = btf.file); - if (btf.has_dynamic_debug) - { - printed_linkages.push_back(msg::format(msgLinkageDynamicDebug)); - } - - if (btf.has_dynamic_release) - { - printed_linkages.push_back(msg::format(msgLinkageDynamicRelease)); - } - - if (btf.has_static_debug) - { - printed_linkages.push_back(msg::format(msgLinkageStaticDebug)); - } + return LintStatus::SUCCESS; + } - if (btf.has_static_release) + msg_sink.print(Color::warning, + LocalizedString::from_raw(portfile_cmake) + .append_raw(": ") + .append_raw(WarningPrefix) + .append(msgPortBugInvalidCrtLinkageHeader) + .append_raw('\n')); + + msg_sink.print(LocalizedString::from_raw(package_dir) + .append_raw(": ") + .append_raw(NotePrefix) + .append(msgBinariesRelativeToThePackageDirectoryHere) + .append_raw('\n')); + for (auto&& group : groups_of_invalid_crt) + { + msg_sink.print(LocalizedString::from_raw(NotePrefix) + .append(msgPortBugInvalidCrtLinkageCrtGroup, msg::expected = to_string(group.first)) + .append_raw('\n')); + for (auto&& file : group.second) + { + for (auto&& linkage : file.linkages) { - printed_linkages.push_back(msg::format(msgLinkageStaticRelease)); + msg_sink.print(LocalizedString::from_raw(NotePrefix) + .append(msgPortBugInvalidCrtLinkageEntry, + msg::path = file.relative_file.generic_u8string(), + msg::actual = to_string(linkage)) + .append_raw('\n')); } - - this_entry.append_floating_list(2, printed_linkages); - msg_sink.println(this_entry); } - - msg_sink.println(msg::format(msgPortBugInspectFiles, msg::extension = "lib") - .append_raw("\n dumpbin.exe /directives mylibfile.lib")); - return LintStatus::PROBLEM_DETECTED; } - return LintStatus::SUCCESS; + return LintStatus::PROBLEM_DETECTED; } struct OutdatedDynamicCrtAndFile @@ -1120,12 +1366,11 @@ namespace vcpkg }; static LintStatus check_outdated_crt_linkage_of_dlls(const std::vector& dlls_data, - const BuildInfo& build_info, + const Path& package_dir, const PreBuildInfo& pre_build_info, + const Path& portfile_cmake, MessageSink& msg_sink) { - if (build_info.policies.is_enabled(BuildPolicy::ALLOW_OBSOLETE_MSVCRT)) return LintStatus::SUCCESS; - const auto outdated_crts = get_outdated_dynamic_crts(pre_build_info.platform_toolset); std::vector dlls_with_outdated_crt; @@ -1136,7 +1381,7 @@ namespace vcpkg if (Util::Vectors::contains( dll_data.dependencies, outdated_crt, Strings::case_insensitive_ascii_equals)) { - dlls_with_outdated_crt.push_back({dll_data.path, outdated_crt}); + dlls_with_outdated_crt.push_back({dll_data.relative_path, outdated_crt}); break; } } @@ -1144,13 +1389,18 @@ namespace vcpkg if (!dlls_with_outdated_crt.empty()) { - msg_sink.println_warning(msgPortBugOutdatedCRT); - for (const OutdatedDynamicCrtAndFile& btf : dlls_with_outdated_crt) - { - msg_sink.print(Color::warning, fmt::format(" {}:{}\n", btf.file, btf.outdated_crt)); - } - msg_sink.println(msg::format(msgPortBugInspectFiles, msg::extension = "dll") - .append_raw("\n dumpbin.exe /dependents mylibfile.dll")); + msg_sink.print(Color::warning, + LocalizedString::from_raw(portfile_cmake) + .append_raw(": ") + .append_raw(WarningPrefix) + .append(msgPortBugOutdatedCRT)); + + print_relative_paths( + msg_sink, + msgDllsRelativeToThePackageDirectoryHere, + package_dir, + Util::fmap(std::move(dlls_with_outdated_crt), + [](OutdatedDynamicCrtAndFile&& btf) -> Path { return std::move(btf.file); })); return LintStatus::PROBLEM_DETECTED; } @@ -1158,7 +1408,9 @@ namespace vcpkg } static LintStatus check_bad_kernel32_from_xbox(const std::vector& dlls_data, + const Path& package_dir, const PreBuildInfo& pre_build_info, + const Path& portfile_cmake, MessageSink& msg_sink) { if (!pre_build_info.target_is_xbox) @@ -1171,7 +1423,6 @@ namespace vcpkg { for (auto&& dependency : dll_data.dependencies) { - Debug::println("Dependency: ", dependency); if (Strings::case_insensitive_ascii_equals("kernel32.dll", dependency)) { bad_dlls.push_back(&dll_data); @@ -1185,30 +1436,62 @@ namespace vcpkg return LintStatus::SUCCESS; } - msg_sink.println(msgPortBugKernel32FromXbox); - for (auto&& bad_dll : bad_dlls) - { - msg_sink.println(LocalizedString{}.append_indent().append_raw(bad_dll->path)); - } + msg_sink.print(Color::warning, + LocalizedString::from_raw(portfile_cmake) + .append_raw(": ") + .append_raw(WarningPrefix) + .append(msgPortBugKernel32FromXbox)); + print_relative_paths( + msg_sink, + msgDllsRelativeToThePackageDirectoryHere, + package_dir, + Util::fmap(bad_dlls, [](const PostBuildCheckDllData* btf) -> Path { return btf->relative_path; })); - msg_sink.println(msg::format(msgPortBugInspectFiles, msg::extension = "dll") - .append_raw("\n dumpbin.exe /dependents mylibfile.dll")); return LintStatus::PROBLEM_DETECTED; } - static LintStatus check_no_files_in_dir(const ReadOnlyFilesystem& fs, const Path& dir, MessageSink& msg_sink) + static LintStatus check_no_regular_files_in_relative_path(const ReadOnlyFilesystem& fs, + const Path& package_dir, + const Path& portfile_cmake, + View relative_paths, + MessageSink& msg_sink) { - std::vector misplaced_files = fs.get_regular_files_non_recursive(dir, IgnoreErrors{}); - Util::erase_remove_if(misplaced_files, [](const Path& target) { - const auto filename = target.filename(); - return filename == "CONTROL" || filename == "BUILD_INFO" || filename == ".DS_Store"; - }); + std::vector misplaced_files; + for (auto&& relative_path : relative_paths) + { + auto start_in = package_dir; + if (!relative_path.empty()) + { + start_in /= relative_path; + } + + for (auto&& absolute_path : fs.get_regular_files_non_recursive(start_in, IgnoreErrors{})) + { + auto filename = absolute_path.filename(); + if (filename == "CONTROL" || filename == "BUILD_INFO" || filename == FileDotDsStore) + { + continue; + } + + if (relative_path.empty()) + { + misplaced_files.emplace_back(filename); + } + else + { + misplaced_files.emplace_back(Path(relative_path) / filename); + } + } + } if (!misplaced_files.empty()) { - msg_sink.println_warning(msg::format(msgPortBugMisplacedFiles, msg::path = dir).append_raw('\n')); - print_paths(msg_sink, misplaced_files); - msg_sink.println_warning(msgPortBugMisplacedFilesCont); + msg_sink.print(Color::warning, + LocalizedString::from_raw(portfile_cmake) + .append_raw(": ") + .append_raw(WarningPrefix) + .append(msgPortBugMisplacedFiles)); + print_relative_paths(msg_sink, msgFilesRelativeToThePackageDirectoryHere, package_dir, misplaced_files); return LintStatus::PROBLEM_DETECTED; } @@ -1232,7 +1515,7 @@ namespace vcpkg } if (extension == ".py" || extension == ".sh" || extension == ".cmake" || extension == ".pc" || - extension == ".conf") + extension == ".conf" || extension == ".csh" || extension == ".pl") { const auto contents = fs.read_contents(file, IgnoreErrors{}); return Strings::contains_any_ignoring_hash_comments(contents, searcher_paths); @@ -1248,12 +1531,14 @@ namespace vcpkg } static LintStatus check_no_absolute_paths_in(const ReadOnlyFilesystem& fs, - const Path& dir, - Span absolute_paths, + const Path& package_dir, + View prohibited_absolute_paths, + View relative_all_files, + const Path& portfile_cmake, MessageSink& msg_sink) { std::vector string_paths; - for (const auto& path : absolute_paths) + for (const auto& path : prohibited_absolute_paths) { #if defined(_WIN32) // As supplied, all /s, and all \s @@ -1273,15 +1558,23 @@ namespace vcpkg Util::fmap(string_paths, [](std::string& s) { return Strings::vcpkg_searcher(s.begin(), s.end()); }); std::vector failing_files; + bool any_pc_file_fails = false; { std::mutex mtx; - auto files = fs.get_regular_files_recursive(dir, IgnoreErrors{}); - - parallel_for_each(files, [&](const Path& file) { - if (file_contains_absolute_paths(fs, file, searcher_paths)) + parallel_for_each(relative_all_files, [&](const Path& file) { + if (file_contains_absolute_paths(fs, package_dir / file, searcher_paths)) { - std::lock_guard lock{mtx}; - failing_files.push_back(file); + if (Strings::ends_with(file, ".pc")) + { + std::lock_guard lock{mtx}; + any_pc_file_fails = true; + failing_files.push_back(file); + } + else + { + std::lock_guard lock{mtx}; + failing_files.push_back(file); + } } }); } // destroy mtx @@ -1292,19 +1585,36 @@ namespace vcpkg } Util::sort(failing_files); - auto error_message = msg::format(msgFilesContainAbsolutePath1); - for (auto&& absolute_path : absolute_paths) + msg_sink.print(Color::warning, + LocalizedString::from_raw(portfile_cmake) + .append_raw(": ") + .append_raw(WarningPrefix) + .append(msgFilesContainAbsolutePath1) + .append_raw('\n')); + for (auto&& absolute_path : prohibited_absolute_paths) { - error_message.append_raw('\n').append_indent().append_raw(absolute_path); + msg_sink.print(LocalizedString::from_raw(NotePrefix).append_raw(absolute_path).append_raw('\n')); } - error_message.append_raw('\n').append(msgFilesContainAbsolutePath2); - for (auto&& failure : failing_files) + if (any_pc_file_fails) { - error_message.append_raw('\n').append_indent().append_raw(failure); + msg_sink.print(LocalizedString::from_raw(portfile_cmake) + .append_raw(": ") + .append_raw(NotePrefix) + .append(msgFilesContainAbsolutePathPkgconfigNote) + .append_raw('\n')); + } + + for (auto&& failing_file : failing_files) + { + failing_file.make_preferred(); + msg_sink.print(LocalizedString::from_raw(package_dir / failing_file) + .append_raw(": ") + .append_raw(NotePrefix) + .append(msgFilesContainAbsolutePath2) + .append_raw('\n')); } - msg_sink.println_warning(error_message); return LintStatus::PROBLEM_DETECTED; } @@ -1312,13 +1622,14 @@ namespace vcpkg static size_t perform_post_build_checks_dll_loads(const ReadOnlyFilesystem& fs, std::vector& dlls_data, - const std::vector& dll_files, + const Path& package_dir, + const std::vector& relative_dll_files, MessageSink& msg_sink) { size_t error_count = 0; - for (const Path& dll : dll_files) + for (const Path& relative_dll : relative_dll_files) { - auto maybe_dll_data = try_load_dll_data(fs, dll); + auto maybe_dll_data = try_load_dll_data(fs, package_dir, relative_dll); if (auto dll_data = maybe_dll_data.get()) { dlls_data.emplace_back(std::move(*dll_data)); @@ -1333,136 +1644,278 @@ namespace vcpkg return error_count; } + static std::vector find_relative_static_libs(const ReadOnlyFilesystem& fs, + const bool windows_target, + const Path& package_dir, + const Path& relative_path) + { + View lib_extensions; + if (windows_target) + { + static constexpr StringLiteral windows_lib_extensions[] = {".lib"}; + lib_extensions = windows_lib_extensions; + } + else + { + static constexpr StringLiteral unix_lib_extensions[] = {".so", ".a", ".dylib"}; + lib_extensions = unix_lib_extensions; + } + + std::vector relative_libs = + fs.get_regular_files_recursive_lexically_proximate(package_dir / relative_path, IgnoreErrors{}); + Util::erase_remove_if(relative_libs, NotExtensionsCaseInsensitive{lib_extensions}); + add_prefix_to_all(relative_libs, relative_path); + return relative_libs; + } + static size_t perform_all_checks_and_return_error_count(const PackageSpec& spec, const VcpkgPaths& paths, const PreBuildInfo& pre_build_info, const BuildInfo& build_info, const Path& port_dir, + const Path& portfile_cmake, MessageSink& msg_sink) { + const bool windows_target = Util::Vectors::contains(windows_system_names, pre_build_info.cmake_system_name); const auto& fs = paths.get_filesystem(); + const auto build_dir = paths.build_dir(spec); const auto package_dir = paths.package_dir(spec); + const bool not_release_only = !pre_build_info.build_type; size_t error_count = 0; - if (build_info.policies.is_enabled(BuildPolicy::EMPTY_PACKAGE)) + auto& policies = build_info.policies; + if (policies.is_enabled(BuildPolicy::CMAKE_HELPER_PORT)) { - return error_count; + // no suppression for these because CMAKE_HELPER_PORT is opt-in + error_count += + check_for_no_files_in_cmake_helper_port_include_directory(fs, package_dir, portfile_cmake, msg_sink); + error_count += check_for_vcpkg_port_config_in_cmake_helper_port( + fs, package_dir, spec.name(), portfile_cmake, msg_sink); + } + else if (!policies.is_enabled(BuildPolicy::EMPTY_INCLUDE_FOLDER)) + { + error_count += check_for_files_in_include_directory(fs, package_dir, portfile_cmake, msg_sink); } - error_count += check_for_files_in_include_directory(fs, build_info.policies, package_dir, msg_sink); - error_count += check_for_restricted_include_files(fs, build_info.policies, package_dir, msg_sink); - error_count += check_for_files_in_debug_include_directory(fs, package_dir, msg_sink); - error_count += check_for_files_in_debug_share_directory(fs, package_dir, msg_sink); - error_count += check_for_vcpkg_port_config(fs, build_info.policies, package_dir, spec, msg_sink); - error_count += check_folder_lib_cmake(fs, package_dir, spec, msg_sink); - error_count += check_for_misplaced_cmake_files(fs, package_dir, spec, msg_sink); - error_count += check_folder_debug_lib_cmake(fs, package_dir, spec, msg_sink); - error_count += check_for_dlls_in_lib_dir(fs, package_dir, msg_sink); - error_count += check_for_dlls_in_lib_dir(fs, package_dir / "debug", msg_sink); - error_count += check_for_copyright_file(fs, spec, package_dir, paths, msg_sink); - error_count += check_for_exes(fs, package_dir, msg_sink); - error_count += check_for_exes(fs, package_dir / "debug", msg_sink); - error_count += check_for_usage_forgot_install(fs, port_dir, package_dir, spec, msg_sink); - - const auto debug_lib_dir = package_dir / "debug" / "lib"; - const auto release_lib_dir = package_dir / "lib"; - const auto debug_bin_dir = package_dir / "debug" / "bin"; - const auto release_bin_dir = package_dir / "bin"; + if (!policies.is_enabled(BuildPolicy::ALLOW_RESTRICTED_HEADERS)) + { + error_count += check_for_restricted_include_files(fs, package_dir, portfile_cmake, msg_sink); + } + if (!policies.is_enabled(BuildPolicy::ALLOW_DEBUG_INCLUDE)) + { + error_count += check_for_files_in_debug_include_directory(fs, package_dir, portfile_cmake, msg_sink); + } + if (!policies.is_enabled(BuildPolicy::ALLOW_DEBUG_SHARE)) + { + error_count += check_for_files_in_debug_share_directory(fs, package_dir, portfile_cmake, msg_sink); + } + if (!policies.is_enabled(BuildPolicy::SKIP_MISPLACED_CMAKE_FILES_CHECK)) + { + error_count += check_for_misplaced_cmake_files(fs, package_dir, portfile_cmake, msg_sink); + } + if (!policies.is_enabled(BuildPolicy::SKIP_LIB_CMAKE_MERGE_CHECK)) + { + error_count += check_lib_cmake_merge(fs, package_dir, portfile_cmake, msg_sink); + } - NotExtensionsCaseInsensitive lib_filter; - const bool windows_target = Util::Vectors::contains(windows_system_names, pre_build_info.cmake_system_name); - if (windows_target) + if (windows_target && !policies.is_enabled(BuildPolicy::ALLOW_DLLS_IN_LIB)) { - lib_filter = NotExtensionsCaseInsensitive{{".lib"}}; + error_count += check_for_dlls_in_lib_dirs(fs, package_dir, portfile_cmake, msg_sink); } - else + if (!policies.is_enabled(BuildPolicy::SKIP_COPYRIGHT_CHECK)) + { + error_count += check_for_copyright_file(fs, spec.name(), package_dir, build_dir, portfile_cmake, msg_sink); + } + if (windows_target && !policies.is_enabled(BuildPolicy::ALLOW_EXES_IN_BIN)) { - lib_filter = NotExtensionsCaseInsensitive{{".so", ".a", ".dylib"}}; + error_count += check_for_exes_in_bin_dirs(fs, package_dir, portfile_cmake, msg_sink); } + if (!policies.is_enabled(BuildPolicy::SKIP_USAGE_INSTALL_CHECK)) + { + error_count += + check_for_usage_forgot_install(fs, port_dir, package_dir, spec.name(), portfile_cmake, msg_sink); + } + + std::vector relative_debug_libs = + find_relative_static_libs(fs, windows_target, package_dir, debug_lib_relative_path); + std::vector relative_release_libs = + find_relative_static_libs(fs, windows_target, package_dir, release_lib_relative_path); + std::vector relative_debug_dlls; + std::vector relative_release_dlls; - std::vector debug_libs = fs.get_regular_files_recursive(debug_lib_dir, IgnoreErrors{}); - Util::erase_remove_if(debug_libs, lib_filter); - std::vector release_libs = fs.get_regular_files_recursive(release_lib_dir, IgnoreErrors{}); - Util::erase_remove_if(release_libs, lib_filter); + if (windows_target) + { + relative_debug_dlls = find_relative_dlls(fs, package_dir, debug_bin_relative_path); + relative_release_dlls = find_relative_dlls(fs, package_dir, release_bin_relative_path); + } - if (!pre_build_info.build_type && !build_info.policies.is_enabled(BuildPolicy::MISMATCHED_NUMBER_OF_BINARIES)) + if (not_release_only && !policies.is_enabled(BuildPolicy::MISMATCHED_NUMBER_OF_BINARIES)) { - error_count += check_matching_debug_and_release_binaries(debug_libs, release_libs, msg_sink); + View relative_debug_binary_sets[] = {relative_debug_libs, relative_debug_dlls}; + View relative_release_binary_sets[] = {relative_release_libs, relative_release_dlls}; + error_count += check_matching_debug_and_release_binaries( + package_dir, relative_debug_binary_sets, relative_release_binary_sets, portfile_cmake, msg_sink); } if (windows_target) { - Debug::println("Running windows targeting post-build checks"); - if (!build_info.policies.is_enabled(BuildPolicy::SKIP_ARCHITECTURE_CHECK)) + Optional>> debug_lib_info; + Optional>> release_lib_info; + + // Note that this condition is paired with the guarded calls to check_crt_linkage_of_libs below + if (!policies.is_enabled(BuildPolicy::SKIP_ARCHITECTURE_CHECK) || + !policies.is_enabled(BuildPolicy::SKIP_CRT_LINKAGE_CHECK)) { - std::vector libs; - libs.insert(libs.cend(), debug_libs.cbegin(), debug_libs.cend()); - libs.insert(libs.cend(), release_libs.cbegin(), release_libs.cend()); - error_count += check_lib_architecture( - pre_build_info.target_architecture, pre_build_info.cmake_system_name, libs, fs, msg_sink); + debug_lib_info.emplace(get_lib_info(fs, package_dir, relative_debug_libs)); + release_lib_info.emplace(get_lib_info(fs, package_dir, relative_release_libs)); } - std::vector debug_dlls = fs.get_regular_files_recursive(debug_bin_dir, IgnoreErrors{}); - Util::erase_remove_if(debug_dlls, NotExtensionCaseInsensitive{".dll"}); - std::vector release_dlls = fs.get_regular_files_recursive(release_bin_dir, IgnoreErrors{}); - Util::erase_remove_if(release_dlls, NotExtensionCaseInsensitive{".dll"}); + std::vector binaries_with_invalid_architecture; + if (!policies.is_enabled(BuildPolicy::SKIP_ARCHITECTURE_CHECK)) + { + check_lib_architecture(pre_build_info.target_architecture, + relative_debug_libs, + debug_lib_info.value_or_exit(VCPKG_LINE_INFO), + binaries_with_invalid_architecture); + check_lib_architecture(pre_build_info.target_architecture, + relative_release_libs, + release_lib_info.value_or_exit(VCPKG_LINE_INFO), + binaries_with_invalid_architecture); + } std::vector dlls_data; - dlls_data.reserve(debug_dlls.size() + release_dlls.size()); - error_count += perform_post_build_checks_dll_loads(fs, dlls_data, debug_dlls, msg_sink); - error_count += perform_post_build_checks_dll_loads(fs, dlls_data, release_dlls, msg_sink); - error_count += check_bad_kernel32_from_xbox(dlls_data, pre_build_info, msg_sink); - - if (!pre_build_info.build_type && - !build_info.policies.is_enabled(BuildPolicy::MISMATCHED_NUMBER_OF_BINARIES)) - error_count += check_matching_debug_and_release_binaries(debug_dlls, release_dlls, msg_sink); - - error_count += check_lib_files_are_available_if_dlls_are_available( - build_info.policies, debug_libs.size(), debug_dlls.size(), debug_lib_dir, msg_sink); - error_count += check_lib_files_are_available_if_dlls_are_available( - build_info.policies, release_libs.size(), release_dlls.size(), release_lib_dir, msg_sink); - - error_count += check_exports_of_dlls(build_info.policies, dlls_data, msg_sink); - error_count += check_uwp_bit_of_dlls(pre_build_info.cmake_system_name, dlls_data, msg_sink); - error_count += check_outdated_crt_linkage_of_dlls(dlls_data, build_info, pre_build_info, msg_sink); - if (!build_info.policies.is_enabled(BuildPolicy::SKIP_ARCHITECTURE_CHECK)) + dlls_data.reserve(relative_debug_dlls.size() + relative_release_dlls.size()); + error_count += + perform_post_build_checks_dll_loads(fs, dlls_data, package_dir, relative_debug_dlls, msg_sink); + error_count += + perform_post_build_checks_dll_loads(fs, dlls_data, package_dir, relative_release_dlls, msg_sink); + if (!policies.is_enabled(BuildPolicy::ALLOW_KERNEL32_FROM_XBOX)) { - error_count += check_dll_architecture(pre_build_info.target_architecture, dlls_data, msg_sink); + error_count += + check_bad_kernel32_from_xbox(dlls_data, package_dir, pre_build_info, portfile_cmake, msg_sink); + } + if (!policies.is_enabled(BuildPolicy::DLLS_WITHOUT_LIBS)) + { + if (check_lib_files_are_available_if_dlls_are_available( + relative_debug_libs.size(), relative_debug_dlls.size(), portfile_cmake, msg_sink) == + LintStatus::PROBLEM_DETECTED) + { + ++error_count; + } + else + { + error_count += check_lib_files_are_available_if_dlls_are_available( + relative_release_libs.size(), relative_release_dlls.size(), portfile_cmake, msg_sink); + } + } + if (!policies.is_enabled(BuildPolicy::DLLS_WITHOUT_EXPORTS)) + { + error_count += check_exports_of_dlls(dlls_data, package_dir, portfile_cmake, msg_sink); + } + if (!policies.is_enabled(BuildPolicy::SKIP_APPCONTAINER_CHECK)) + { + error_count += check_appcontainer_bit_if_uwp( + pre_build_info.cmake_system_name, package_dir, portfile_cmake, dlls_data, msg_sink); + } + if (!policies.is_enabled(BuildPolicy::ALLOW_OBSOLETE_MSVCRT)) + { + error_count += check_outdated_crt_linkage_of_dlls( + dlls_data, package_dir, pre_build_info, portfile_cmake, msg_sink); + } + if (!policies.is_enabled(BuildPolicy::SKIP_ARCHITECTURE_CHECK)) + { + check_dll_architecture( + pre_build_info.target_architecture, dlls_data, binaries_with_invalid_architecture); + } + if (!binaries_with_invalid_architecture.empty()) + { + ++error_count; + print_invalid_architecture_files(pre_build_info.target_architecture, + package_dir, + portfile_cmake, + binaries_with_invalid_architecture, + msg_sink); } - if (build_info.library_linkage == LinkageType::Static && !build_info.policies.is_enabled(BuildPolicy::DLLS_IN_STATIC_LIBRARY)) { - auto& dlls = debug_dlls; - dlls.insert(dlls.end(), - std::make_move_iterator(release_dlls.begin()), - std::make_move_iterator(release_dlls.end())); - error_count += check_no_dlls_present(dlls, msg_sink); - error_count += check_bin_folders_are_not_present_in_static_build(fs, package_dir, msg_sink); + auto& relative_dlls = relative_debug_dlls; + Util::Vectors::append(relative_dlls, std::move(relative_release_dlls)); + error_count += check_no_dlls_present(package_dir, relative_dlls, portfile_cmake, msg_sink); + error_count += + check_bin_folders_are_not_present_in_static_build(fs, package_dir, portfile_cmake, msg_sink); } - if (!build_info.policies.is_enabled(BuildPolicy::ONLY_RELEASE_CRT)) + // Note that this condition is paired with the possible initialization of `debug_lib_info` above + if (!policies.is_enabled(BuildPolicy::SKIP_CRT_LINKAGE_CHECK)) { - error_count += check_crt_linkage_of_libs(fs, build_info, false, debug_libs, msg_sink); + std::map> groups_of_invalid_crt; + check_crt_group_linkage_of_libs( + LinkageAndBuildType{build_info.crt_linkage, + build_info.policies.is_enabled(BuildPolicy::ONLY_RELEASE_CRT)}, + package_dir, + relative_debug_libs, + debug_lib_info.value_or_exit(VCPKG_LINE_INFO), + groups_of_invalid_crt); + check_crt_group_linkage_of_libs(LinkageAndBuildType{build_info.crt_linkage, true}, + package_dir, + relative_release_libs, + release_lib_info.value_or_exit(VCPKG_LINE_INFO), + groups_of_invalid_crt); + + error_count += check_crt_linkage_of_libs(package_dir, portfile_cmake, groups_of_invalid_crt, msg_sink); } + } - error_count += check_crt_linkage_of_libs(fs, build_info, true, release_libs, msg_sink); + if (!policies.is_enabled(BuildPolicy::ALLOW_EMPTY_FOLDERS)) + { + error_count += check_no_empty_folders(fs, package_dir, portfile_cmake, msg_sink); + } + if (!policies.is_enabled(BuildPolicy::SKIP_MISPLACED_REGULAR_FILES_CHECK)) + { + static constexpr StringLiteral bad_dirs[] = {"debug", ""}; + error_count += check_no_regular_files_in_relative_path(fs, package_dir, portfile_cmake, bad_dirs, msg_sink); } - error_count += check_no_empty_folders(fs, package_dir, msg_sink); - error_count += check_no_files_in_dir(fs, package_dir, msg_sink); - error_count += check_no_files_in_dir(fs, package_dir / "debug", msg_sink); - error_count += check_pkgconfig_dir_only_in_lib_dir(fs, package_dir, msg_sink); - if (!build_info.policies.is_enabled(BuildPolicy::SKIP_ABSOLUTE_PATHS_CHECK)) + std::vector relative_all_files; + if (!policies.is_enabled(BuildPolicy::SKIP_PKGCONFIG_CHECK) || + !policies.is_enabled(BuildPolicy::SKIP_ABSOLUTE_PATHS_CHECK)) { - Path tests[] = {package_dir, paths.installed().root(), paths.build_dir(spec), paths.downloads}; - error_count += check_no_absolute_paths_in(fs, package_dir, tests, msg_sink); + relative_all_files = fs.get_regular_files_recursive_lexically_proximate(package_dir, IgnoreErrors{}); + Util::sort(relative_all_files); + } + + if (!policies.is_enabled(BuildPolicy::SKIP_PKGCONFIG_CHECK)) + { + error_count += + check_pkgconfig_dir_only_in_lib_dir(fs, package_dir, relative_all_files, portfile_cmake, msg_sink); + } + if (!policies.is_enabled(BuildPolicy::SKIP_ABSOLUTE_PATHS_CHECK)) + { + Path prohibited_absolute_paths[] = { + paths.packages(), paths.installed().root(), paths.buildtrees(), paths.downloads}; + error_count += check_no_absolute_paths_in( + fs, package_dir, prohibited_absolute_paths, relative_all_files, portfile_cmake, msg_sink); } return error_count; } + static bool should_skip_all_post_build_checks(const BuildPolicies& policies, + BuildPolicy tested_policy, + MessageSink& msg_sink) + { + if (policies.is_enabled(tested_policy)) + { + msg_sink.println(LocalizedString::from_raw("-- ").append( + msgSkippingPostBuildValidationDueTo, msg::cmake_var = to_cmake_variable(tested_policy))); + return true; + } + + return false; + } + size_t perform_post_build_lint_checks(const PackageSpec& spec, const VcpkgPaths& paths, const PreBuildInfo& pre_build_info, @@ -1470,15 +1923,27 @@ namespace vcpkg const Path& port_dir, MessageSink& msg_sink) { - msg_sink.println(msgPerformingPostBuildValidation); - const size_t error_count = - perform_all_checks_and_return_error_count(spec, paths, pre_build_info, build_info, port_dir, msg_sink); + auto& policies = build_info.policies; + if (should_skip_all_post_build_checks(policies, BuildPolicy::EMPTY_PACKAGE, msg_sink) || + should_skip_all_post_build_checks(policies, BuildPolicy::SKIP_ALL_POST_BUILD_CHECKS, msg_sink)) + { + return 0; + } + msg_sink.println(LocalizedString::from_raw("-- ").append(msgPerformingPostBuildValidation)); + const auto portfile_cmake = port_dir / FilePortfileDotCMake; + const size_t error_count = perform_all_checks_and_return_error_count( + spec, paths, pre_build_info, build_info, port_dir, portfile_cmake, msg_sink); if (error_count != 0) { - const auto portfile = port_dir / "portfile.cmake"; - msg_sink.println_error(msgFailedPostBuildChecks, msg::count = error_count, msg::path = portfile); + msg_sink.print(Color::warning, + LocalizedString::from_raw(portfile_cmake) + .append_raw(": ") + .append_raw(WarningPrefix) + .append(msgFailedPostBuildChecks, msg::count = error_count) + .append_raw('\n')); } + return error_count; } } diff --git a/src/vcpkg/registries.cpp b/src/vcpkg/registries.cpp index 2ab0267639..104e007989 100644 --- a/src/vcpkg/registries.cpp +++ b/src/vcpkg/registries.cpp @@ -246,7 +246,7 @@ namespace std::vector&& version_entries); ExpectedL> get_port_versions() const override; - ExpectedL get_version(const Version& version) const override; + ExpectedL try_load_port(const Version& version) const override; private: ExpectedL ensure_not_stale() const; @@ -282,7 +282,7 @@ namespace ExpectedL> get_baseline_version(StringView) const override; private: - friend struct GitRegistryEntry; + friend GitRegistryEntry; const ExpectedL& get_lock_entry() const { @@ -401,28 +401,27 @@ namespace struct BuiltinPortTreeRegistryEntry final : RegistryEntry { - BuiltinPortTreeRegistryEntry(StringView name_, Path root_, Version version_) - : name(name_.to_string()), root(root_), version(version_) + BuiltinPortTreeRegistryEntry(const SourceControlFileAndLocation& load_result_) : load_result(load_result_) { } + + ExpectedL> get_port_versions() const override { + return View{&load_result.source_control_file->to_version(), 1}; } - - ExpectedL> get_port_versions() const override { return View{&version, 1}; } - ExpectedL get_version(const Version& v) const override + ExpectedL try_load_port(const Version& v) const override { - if (v == version) + auto& core_paragraph = load_result.source_control_file->core_paragraph; + if (v == core_paragraph->version) { - return PortLocation{root, "git+https://github.com/Microsoft/vcpkg#ports/" + name}; + return load_result.clone(); } return msg::format_error(msgVersionBuiltinPortTreeEntryMissing, - msg::package_name = name, + msg::package_name = core_paragraph->name, msg::expected = v.to_string(), - msg::actual = version.to_string()); + msg::actual = core_paragraph->version.to_string()); } - std::string name; - Path root; - Version version; + const SourceControlFileAndLocation& load_result; }; struct BuiltinGitRegistryEntry final : RegistryEntry @@ -433,7 +432,7 @@ namespace { return View{port_versions_soa.port_versions()}; } - ExpectedL get_version(const Version& version) const override; + ExpectedL try_load_port(const Version& version) const override; const VcpkgPaths& m_paths; @@ -444,12 +443,23 @@ namespace struct FilesystemRegistryEntry final : RegistryEntry { - explicit FilesystemRegistryEntry(std::string&& port_name) : port_name(port_name) { } + explicit FilesystemRegistryEntry(const ReadOnlyFilesystem& fs, + StringView port_name, + std::vector&& version_entries) + : fs(fs), port_name(port_name.data(), port_name.size()) + { + for (auto&& version_entry : version_entries) + { + port_versions.push_back(std::move(version_entry.version.version)); + version_paths.push_back(std::move(version_entry.p)); + } + } ExpectedL> get_port_versions() const override { return View{port_versions}; } - ExpectedL get_version(const Version& version) const override; + ExpectedL try_load_port(const Version& version) const override; + const ReadOnlyFilesystem& fs; std::string port_name; // these two map port versions to paths // these shall have the same size, and paths[i] shall be the path for port_versions[i] @@ -481,10 +491,15 @@ namespace DelayedInit m_baseline; private: - const ExpectedL& get_scfl(StringView port_name, const Path& path) const - { - return m_scfls.get_lazy( - path, [&, this]() { return Paragraphs::try_load_port(m_fs, port_name, PortLocation{path}); }); + const ExpectedL& get_scfl(StringView port_name) const + { + auto path = m_builtin_ports_directory / port_name; + return m_scfls.get_lazy(path, [&, this]() { + std::string spdx_location = "git+https://github.com/Microsoft/vcpkg#ports/"; + spdx_location.append(port_name.data(), port_name.size()); + return Paragraphs::try_load_port(m_fs, port_name, PortLocation{path, std::move(spdx_location)}) + .maybe_scfl; + }); } const ReadOnlyFilesystem& m_fs; @@ -579,12 +594,6 @@ namespace }; Path relative_path_to_versions(StringView port_name); - ExpectedL>> load_git_versions_file(const ReadOnlyFilesystem& fs, - const Path& registry_versions, - StringView port_name); - - ExpectedL>> load_filesystem_versions_file( - const ReadOnlyFilesystem& fs, const Path& registry_versions, StringView port_name, const Path& registry_root); // returns nullopt if the baseline is valid, but doesn't contain the specified baseline, // or (equivalently) if the baseline does not exist. @@ -699,49 +708,38 @@ namespace // { BuiltinFilesRegistry::RegistryImplementation ExpectedL> BuiltinFilesRegistry::get_port_entry(StringView port_name) const { - auto port_directory = m_builtin_ports_directory / port_name; - const auto& maybe_maybe_scfl = get_scfl(port_name, port_directory); - const auto maybe_scfl = maybe_maybe_scfl.get(); - if (!maybe_scfl) - { - return maybe_maybe_scfl.error(); - } - - auto scf = maybe_scfl->source_control_file.get(); - if (!scf) - { - return std::unique_ptr(); - } + return get_scfl(port_name).then( + [&](const SourceControlFileAndLocation& scfl) -> ExpectedL> { + auto scf = scfl.source_control_file.get(); + if (!scf) + { + return std::unique_ptr(); + } - if (scf->core_paragraph->name == port_name) - { - return std::make_unique( - scf->core_paragraph->name, port_directory, scf->to_version()); - } + if (scf->core_paragraph->name == port_name) + { + return std::make_unique(scfl); + } - return msg::format_error(msgUnexpectedPortName, - msg::expected = scf->core_paragraph->name, - msg::actual = port_name, - msg::path = port_directory); + return msg::format_error(msgUnexpectedPortName, + msg::expected = scf->core_paragraph->name, + msg::actual = port_name, + msg::path = scfl.port_directory()); + }); } ExpectedL> BuiltinFilesRegistry::get_baseline_version(StringView port_name) const { // if a baseline is not specified, use the ports directory version - const auto& maybe_maybe_scfl = get_scfl(port_name, m_builtin_ports_directory / port_name); - auto maybe_scfl = maybe_maybe_scfl.get(); - if (!maybe_scfl) - { - return maybe_maybe_scfl.error(); - } - - auto scf = maybe_scfl->source_control_file.get(); - if (!scf) - { - return Optional(); - } + return get_scfl(port_name).then([&](const SourceControlFileAndLocation& scfl) -> ExpectedL> { + auto scf = scfl.source_control_file.get(); + if (!scf) + { + return Optional(); + } - return scf->to_version(); + return scf->to_version(); + }); } ExpectedL BuiltinFilesRegistry::append_all_port_names(std::vector& out) const @@ -752,7 +750,7 @@ namespace for (auto&& port_directory : *port_directories) { auto filename = port_directory.filename(); - if (filename == ".DS_Store") continue; + if (filename == FileDotDsStore) continue; out.emplace_back(filename.data(), filename.size()); } @@ -775,40 +773,31 @@ namespace const auto& fs = m_paths.get_filesystem(); auto versions_path = m_paths.builtin_registry_versions / relative_path_to_versions(port_name); - auto maybe_maybe_version_entries = load_git_versions_file(fs, m_paths.builtin_registry_versions, port_name); - auto maybe_version_entries = maybe_maybe_version_entries.get(); - if (!maybe_version_entries) - { - return std::move(maybe_maybe_version_entries).error(); - } - - auto version_entries = maybe_version_entries->get(); - if (!version_entries) - { - return m_files_impl->get_port_entry(port_name); - } + return load_git_versions_file(fs, m_paths.builtin_registry_versions, port_name) + .entries.then([this, &port_name](Optional>&& maybe_version_entries) + -> ExpectedL> { + auto version_entries = maybe_version_entries.get(); + if (!version_entries) + { + return m_files_impl->get_port_entry(port_name); + } - auto res = std::make_unique(m_paths); - res->port_name.assign(port_name.data(), port_name.size()); - res->port_versions_soa.assign(std::move(*version_entries)); - return res; + auto res = std::make_unique(m_paths); + res->port_name.assign(port_name.data(), port_name.size()); + res->port_versions_soa.assign(std::move(*version_entries)); + return res; + }); } - ExpectedL> BuiltinGitRegistry::get_baseline_version(StringView port_name) const + ExpectedL> lookup_in_maybe_baseline(const ExpectedL& maybe_baseline, + StringView port_name) { - const auto& maybe_baseline = m_baseline.get([this]() -> ExpectedL { - return git_checkout_baseline(m_paths, m_baseline_identifier) - .then([&](Path&& path) { return load_baseline_versions(m_paths.get_filesystem(), path); }) - .map_error([&](LocalizedString&& error) { - return std::move(error).append(msgWhileCheckingOutBaseline, - msg::commit_sha = m_baseline_identifier); - }); - }); - auto baseline = maybe_baseline.get(); if (!baseline) { - return maybe_baseline.error(); + return LocalizedString(maybe_baseline.error()) + .append_raw('\n') + .append(msgWhileLoadingBaselineVersionForPort, msg::package_name = port_name); } auto it = baseline->find(port_name); @@ -820,6 +809,19 @@ namespace return Optional(); } + ExpectedL> BuiltinGitRegistry::get_baseline_version(StringView port_name) const + { + return lookup_in_maybe_baseline(m_baseline.get([this]() -> ExpectedL { + return git_checkout_baseline(m_paths, m_baseline_identifier) + .then([&](Path&& path) { return load_baseline_versions(m_paths.get_filesystem(), path); }) + .map_error([&](LocalizedString&& error) { + return std::move(error).append(msgWhileCheckingOutBaseline, + msg::commit_sha = m_baseline_identifier); + }); + }), + port_name); + } + ExpectedL BuiltinGitRegistry::append_all_port_names(std::vector& out) const { const auto& fs = m_paths.get_filesystem(); @@ -843,45 +845,25 @@ namespace // { FilesystemRegistry::RegistryImplementation ExpectedL> FilesystemRegistry::get_baseline_version(StringView port_name) const { - return m_baseline - .get([this]() { - return load_baseline_versions(m_fs, m_path / FileVersions / FileBaselineDotJson, m_baseline_identifier); - }) - .then([&](const Baseline& baseline) -> ExpectedL> { - auto it = baseline.find(port_name); - if (it != baseline.end()) - { - return it->second; - } - - return Optional(); - }); + return lookup_in_maybe_baseline(m_baseline.get([this]() { + return load_baseline_versions(m_fs, m_path / FileVersions / FileBaselineDotJson, m_baseline_identifier); + }), + port_name); } ExpectedL> FilesystemRegistry::get_port_entry(StringView port_name) const { - auto maybe_maybe_version_entries = - load_filesystem_versions_file(m_fs, m_path / FileVersions, port_name, m_path); - auto maybe_version_entries = maybe_maybe_version_entries.get(); - if (!maybe_version_entries) - { - return std::move(maybe_maybe_version_entries).error(); - } - - auto version_entries = maybe_version_entries->get(); - if (!version_entries) - { - return std::unique_ptr{}; - } - - auto res = std::make_unique(port_name.to_string()); - for (auto&& version_entry : *version_entries) - { - res->port_versions.push_back(std::move(version_entry.version.version)); - res->version_paths.push_back(std::move(version_entry.p)); - } + return load_filesystem_versions_file(m_fs, m_path / FileVersions, port_name, m_path) + .then([&](Optional>&& maybe_version_entries) + -> ExpectedL> { + auto version_entries = maybe_version_entries.get(); + if (!version_entries) + { + return std::unique_ptr{}; + } - return res; + return std::make_unique(m_fs, port_name, std::move(*version_entries)); + }); } ExpectedL FilesystemRegistry::append_all_port_names(std::vector& out) const @@ -908,7 +890,7 @@ namespace { // try to load using "stale" version database auto maybe_maybe_version_entries = - load_git_versions_file(m_paths.get_filesystem(), stale_vtp->p, port_name); + load_git_versions_file(m_paths.get_filesystem(), stale_vtp->p, port_name).entries; auto maybe_version_entries = maybe_maybe_version_entries.get(); if (!maybe_version_entries) { @@ -929,30 +911,20 @@ namespace return std::unique_ptr(); } - auto maybe_live_vdb = get_versions_tree_path(); - auto live_vcb = maybe_live_vdb.get(); - if (!live_vcb) - { - return std::move(maybe_live_vdb).error(); - } - - { - auto maybe_maybe_version_entries = load_git_versions_file(m_paths.get_filesystem(), *live_vcb, port_name); - auto maybe_version_entries = maybe_maybe_version_entries.get(); - if (!maybe_version_entries) - { - return std::move(maybe_maybe_version_entries).error(); - } + return get_versions_tree_path().then([this, &port_name](const Path& live_vcb) { + return load_git_versions_file(m_paths.get_filesystem(), live_vcb, port_name) + .entries.then([this, &port_name](Optional>&& maybe_version_entries) + -> ExpectedL> { + auto version_entries = maybe_version_entries.get(); + if (!version_entries) + { + // data is already live but we don't know of this port + return std::unique_ptr(); + } - auto version_entries = maybe_version_entries->get(); - if (!version_entries) - { - // data is already live but we don't know of this port - return std::unique_ptr(); - } - - return std::make_unique(port_name, *this, false, std::move(*version_entries)); - } + return std::make_unique(port_name, *this, false, std::move(*version_entries)); + }); + }); } GitRegistryEntry::GitRegistryEntry(StringView port_name, @@ -968,7 +940,7 @@ namespace ExpectedL> GitRegistry::get_baseline_version(StringView port_name) const { - const auto& maybe_baseline = m_baseline.get([this, port_name]() -> ExpectedL { + return lookup_in_maybe_baseline(m_baseline.get([this, port_name]() -> ExpectedL { // We delay baseline validation until here to give better error messages and suggestions if (!is_git_commit_sha(m_baseline_identifier)) { @@ -1045,21 +1017,8 @@ namespace .append_raw('\n') .append(error); }); - }); - - auto baseline = maybe_baseline.get(); - if (!baseline) - { - return maybe_baseline.error(); - } - - auto it = baseline->find(port_name); - if (it != baseline->end()) - { - return it->second; - } - - return Optional(); + }), + port_name); } ExpectedL GitRegistry::append_all_port_names(std::vector& out) const @@ -1097,14 +1056,15 @@ namespace error_msg.append_indent().append_raw(version.to_string()).append_raw('\n'); } - error_msg.append(msgVersionIncomparable4, msg::url = docs::versioning_url); + error_msg.append(msgVersionIncomparable4, msg::url = docs::versioning_url).append_raw('\n'); + error_msg.append(msgSeeURL, msg::url = docs::troubleshoot_versioning_url); return error_msg; } // { RegistryEntry // { BuiltinRegistryEntry::RegistryEntry - ExpectedL BuiltinGitRegistryEntry::get_version(const Version& version) const + ExpectedL BuiltinGitRegistryEntry::try_load_port(const Version& version) const { auto& port_versions = port_versions_soa.port_versions(); auto it = std::find(port_versions.begin(), port_versions.end(), version); @@ -1118,18 +1078,28 @@ namespace const auto& git_tree = port_versions_soa.git_trees()[it - port_versions.begin()]; return m_paths.versions_dot_git_dir() - .then([&, this](Path&& dot_git) { return m_paths.git_checkout_port(port_name, git_tree, dot_git); }) - .map([&git_tree](Path&& p) -> PortLocation { - return { - std::move(p), - "git+https://github.com/Microsoft/vcpkg@" + git_tree, - }; + .then([&, this](Path&& dot_git) { + return m_paths.git_checkout_port(port_name, git_tree, dot_git).map_error([](LocalizedString&& err) { + return std::move(err) + .append_raw('\n') + .append_raw(NotePrefix) + .append(msgSeeURL, msg::url = docs::troubleshoot_versioning_url); + }); + }) + .then([this, &git_tree](Path&& p) -> ExpectedL { + return Paragraphs::try_load_port_required(m_paths.get_filesystem(), + port_name, + PortLocation{ + std::move(p), + "git+https://github.com/Microsoft/vcpkg@" + git_tree, + }) + .maybe_scfl; }); } // } BuiltinRegistryEntry::RegistryEntry // { FilesystemRegistryEntry::RegistryEntry - ExpectedL FilesystemRegistryEntry::get_version(const Version& version) const + ExpectedL FilesystemRegistryEntry::try_load_port(const Version& version) const { auto it = std::find(port_versions.begin(), port_versions.end(), version); if (it == port_versions.end()) @@ -1138,7 +1108,8 @@ namespace msgVersionDatabaseEntryMissing, msg::package_name = port_name, msg::version = version); } - return PortLocation{version_paths[it - port_versions.begin()]}; + const auto& load_path = version_paths[it - port_versions.begin()]; + return Paragraphs::try_load_port_required(fs, port_name, PortLocation{load_path}).maybe_scfl; } // } FilesystemRegistryEntry::RegistryEntry @@ -1155,7 +1126,7 @@ namespace } auto maybe_maybe_version_entries = - load_git_versions_file(parent.m_paths.get_filesystem(), *live_vdb, port_name); + load_git_versions_file(parent.m_paths.get_filesystem(), *live_vdb, port_name).entries; auto maybe_version_entries = maybe_maybe_version_entries.get(); if (!maybe_version_entries) { @@ -1190,7 +1161,7 @@ namespace return std::move(maybe_not_stale).error(); } - ExpectedL GitRegistryEntry::get_version(const Version& version) const + ExpectedL GitRegistryEntry::try_load_port(const Version& version) const { auto it = std::find(last_loaded.port_versions().begin(), last_loaded.port_versions().end(), version); if (it == last_loaded.port_versions().end() && stale) @@ -1211,12 +1182,15 @@ namespace } const auto& git_tree = last_loaded.git_trees()[it - last_loaded.port_versions().begin()]; - return parent.m_paths.git_extract_tree_from_remote_registry(git_tree).map( - [this, &git_tree](Path&& p) -> PortLocation { - return { - std::move(p), - Strings::concat("git+", parent.m_repo, "@", git_tree), - }; + return parent.m_paths.git_extract_tree_from_remote_registry(git_tree).then( + [this, &git_tree](Path&& p) -> ExpectedL { + return Paragraphs::try_load_port_required(parent.m_paths.get_filesystem(), + port_name, + PortLocation{ + p, + Strings::concat("git+", parent.m_repo, "@", git_tree), + }) + .maybe_scfl; }); } @@ -1261,113 +1235,17 @@ namespace return Path(prefix) / port_name.to_string() + ".json"; } - ExpectedL>> load_git_versions_file(const ReadOnlyFilesystem& fs, - const Path& registry_versions, - StringView port_name) - { - auto versions_file_path = registry_versions / relative_path_to_versions(port_name); - std::error_code ec; - auto contents = fs.read_contents(versions_file_path, ec); - if (ec) - { - if (ec == std::errc::no_such_file_or_directory) - { - return Optional>{}; - } - - return format_filesystem_call_error(ec, "read_contents", {versions_file_path}); - } - - auto maybe_versions_json = Json::parse_object(contents, versions_file_path); - auto versions_json = maybe_versions_json.get(); - if (!versions_json) - { - return std::move(maybe_versions_json).error(); - } - - auto maybe_versions_array = versions_json->get(JsonIdVersions); - if (!maybe_versions_array || !maybe_versions_array->is_array()) - { - return msg::format_error(msgFailedToParseNoVersionsArray, msg::path = versions_file_path); - } - - std::vector db_entries; - GitVersionDbEntryArrayDeserializer deserializer{}; - Json::Reader r(versions_file_path); - r.visit_in_key(*maybe_versions_array, JsonIdVersions, db_entries, deserializer); - if (!r.errors().empty()) - { - return msg::format_error(msgFailedToParseVersionsFile, msg::path = versions_file_path) - .append_raw(Strings::join("\n", r.errors())); - } - - return db_entries; - } - - ExpectedL>> load_filesystem_versions_file( - const ReadOnlyFilesystem& fs, const Path& registry_versions, StringView port_name, const Path& registry_root) - { - if (registry_root.empty()) - { - Checks::unreachable(VCPKG_LINE_INFO, "type should never = Filesystem when registry_root is empty."); - } - - auto versions_file_path = registry_versions / relative_path_to_versions(port_name); - std::error_code ec; - auto contents = fs.read_contents(versions_file_path, ec); - if (ec) - { - if (ec == std::errc::no_such_file_or_directory) - { - return Optional>{}; - } - - return format_filesystem_call_error(ec, "read_contents", {versions_file_path}); - } - - auto maybe_versions_json = Json::parse_object(contents, versions_file_path); - auto versions_json = maybe_versions_json.get(); - if (!versions_json) - { - return std::move(maybe_versions_json).error(); - } - - auto maybe_versions_array = versions_json->get(JsonIdVersions); - if (!maybe_versions_array || !maybe_versions_array->is_array()) - { - return msg::format_error(msgFailedToParseNoVersionsArray, msg::path = versions_file_path); - } - - std::vector db_entries; - FilesystemVersionDbEntryArrayDeserializer deserializer{registry_root}; - Json::Reader r(versions_file_path); - r.visit_in_key(*maybe_versions_array, JsonIdVersions, db_entries, deserializer); - if (!r.errors().empty()) - { - return msg::format_error(msgFailedToParseVersionsFile, msg::path = versions_file_path) - .append_raw(Strings::join("\n", r.errors())); - } - - return db_entries; - } - ExpectedL parse_baseline_versions(StringView contents, StringView baseline, StringView origin) { - auto maybe_value = Json::parse(contents, origin); - if (!maybe_value) + auto maybe_object = Json::parse_object(contents, origin); + auto object = maybe_object.get(); + if (!object) { - return std::move(maybe_value).error(); - } - - auto& value = *maybe_value.get(); - if (!value.value.is_object()) - { - return msg::format_error(msgFailedToParseNoTopLevelObj, msg::path = origin); + return std::move(maybe_object).error(); } auto real_baseline = baseline.size() == 0 ? StringView{JsonIdDefault} : baseline; - const auto& obj = value.value.object(VCPKG_LINE_INFO); - auto baseline_value = obj.get(real_baseline); + auto baseline_value = object->get(real_baseline); if (!baseline_value) { return LocalizedString::from_raw(origin) @@ -1385,12 +1263,8 @@ namespace { return std::move(result); } - else - { - return msg::format_error(msgFailedToParseBaseline, msg::path = origin) - .append_raw('\n') - .append_raw(Strings::join("\n", r.errors())); - } + + return msg::format_error(msgFailedToParseBaseline, msg::path = origin).append_raw('\n').append_raw(r.join()); } ExpectedL load_baseline_versions(const ReadOnlyFilesystem& fs, @@ -1634,11 +1508,195 @@ namespace vcpkg Util::sort_unique_erase(result); return result; } +} // namespace vcpkg + +namespace +{ + ExpectedL>> load_git_versions_file_impl(const ReadOnlyFilesystem& fs, + const Path& versions_file_path) + { + std::error_code ec; + auto contents = fs.read_contents(versions_file_path, ec); + if (ec) + { + if (ec == std::errc::no_such_file_or_directory) + { + return nullopt; + } + + return format_filesystem_call_error(ec, "read_contents", {versions_file_path}); + } + + return Json::parse_object(contents, versions_file_path) + .then([&](Json::Object&& versions_json) -> ExpectedL>> { + auto maybe_versions_array = versions_json.get(JsonIdVersions); + if (!maybe_versions_array || !maybe_versions_array->is_array()) + { + return msg::format_error(msgFailedToParseNoVersionsArray, msg::path = versions_file_path); + } + + std::vector db_entries; + GitVersionDbEntryArrayDeserializer deserializer{}; + Json::Reader r(versions_file_path); + r.visit_in_key(*maybe_versions_array, JsonIdVersions, db_entries, deserializer); + if (!r.errors().empty() != 0) + { + return msg::format_error(msgFailedToParseVersionFile, msg::path = versions_file_path) + .append_raw('\n') + .append_raw(r.join()); + } + + return db_entries; + }); + } - ExpectedL>> get_builtin_versions(const VcpkgPaths& paths, - StringView port_name) + ExpectedL>> load_filesystem_versions_file_impl( + const ReadOnlyFilesystem& fs, const Path& versions_file_path, const Path& registry_root) { - return load_git_versions_file(paths.get_filesystem(), paths.builtin_registry_versions, port_name); + std::error_code ec; + auto contents = fs.read_contents(versions_file_path, ec); + if (ec) + { + if (ec == std::errc::no_such_file_or_directory) + { + return nullopt; + } + + return format_filesystem_call_error(ec, "read_contents", {versions_file_path}); + } + + return Json::parse_object(contents, versions_file_path) + .then([&](Json::Object&& versions_json) -> ExpectedL>> { + auto maybe_versions_array = versions_json.get(JsonIdVersions); + if (!maybe_versions_array || !maybe_versions_array->is_array()) + { + return msg::format_error(msgFailedToParseNoVersionsArray, msg::path = versions_file_path); + } + + std::vector db_entries; + FilesystemVersionDbEntryArrayDeserializer deserializer{registry_root}; + Json::Reader r(versions_file_path); + r.visit_in_key(*maybe_versions_array, JsonIdVersions, db_entries, deserializer); + if (!r.errors().empty() != 0) + { + return msg::format_error(msgFailedToParseVersionFile, msg::path = versions_file_path) + .append_raw('\n') + .append_raw(r.join()); + } + + return db_entries; + }); + } +} // unnamed namespace + +namespace vcpkg +{ + GitVersionsLoadResult load_git_versions_file(const ReadOnlyFilesystem& fs, + const Path& registry_versions, + StringView port_name) + { + auto versions_file_path = registry_versions / relative_path_to_versions(port_name); + auto result = load_git_versions_file_impl(fs, versions_file_path); + if (!result) + { + result.error() + .append_raw('\n') + .append_raw(NotePrefix) + .append(msgWhileParsingVersionsForPort, msg::package_name = port_name, msg::path = versions_file_path); + } + + return {std::move(result), std::move(versions_file_path)}; + } + + FullGitVersionsDatabase::FullGitVersionsDatabase( + const ReadOnlyFilesystem& fs, + const Path& registry_versions, + std::map>&& initial) + : m_fs(&fs), m_registry_versions(registry_versions), m_cache(std::move(initial)) + { + } + + FullGitVersionsDatabase::FullGitVersionsDatabase(FullGitVersionsDatabase&&) = default; + FullGitVersionsDatabase& FullGitVersionsDatabase::operator=(FullGitVersionsDatabase&&) = default; + + const GitVersionsLoadResult& FullGitVersionsDatabase::lookup(StringView port_name) + { + auto it = m_cache.lower_bound(port_name); + if (it != m_cache.end() && port_name >= it->first) + { + return it->second; + } + + return m_cache.emplace_hint(it, port_name, load_git_versions_file(*m_fs, m_registry_versions, port_name)) + ->second; + } + + const std::map>& FullGitVersionsDatabase::cache() const + { + return m_cache; + } + + ExpectedL load_all_git_versions_files(const ReadOnlyFilesystem& fs, + const Path& registry_versions) + { + auto maybe_letter_directories = fs.try_get_directories_non_recursive(registry_versions); + auto letter_directories = maybe_letter_directories.get(); + if (!letter_directories) + { + return std::move(maybe_letter_directories).error(); + } + + std::map> initial_result; + for (auto&& letter_directory : *letter_directories) + { + auto maybe_versions_files = fs.try_get_files_non_recursive(letter_directory); + auto versions_files = maybe_versions_files.get(); + if (!versions_files) + { + return std::move(maybe_versions_files).error(); + } + + for (auto&& versions_file : *versions_files) + { + auto port_name_json = versions_file.filename(); + static constexpr StringLiteral dot_json = ".json"; + if (!Strings::ends_with(port_name_json, dot_json)) + { + continue; + } + + StringView port_name{port_name_json.data(), port_name_json.size() - dot_json.size()}; + auto maybe_port_versions = load_git_versions_file_impl(fs, versions_file); + if (!maybe_port_versions) + { + maybe_port_versions.error() + .append_raw('\n') + .append_raw(NotePrefix) + .append( + msgWhileParsingVersionsForPort, msg::package_name = port_name, msg::path = versions_file); + } + + initial_result.emplace(port_name, GitVersionsLoadResult{std::move(maybe_port_versions), versions_file}); + } + } + + return FullGitVersionsDatabase{fs, registry_versions, std::move(initial_result)}; + } + + ExpectedL>> load_filesystem_versions_file( + const ReadOnlyFilesystem& fs, const Path& registry_versions, StringView port_name, const Path& registry_root) + { + auto versions_file_path = registry_versions / relative_path_to_versions(port_name); + auto result = load_filesystem_versions_file_impl(fs, versions_file_path, registry_root); + if (!result) + { + result.error() + .append_raw('\n') + .append_raw(NotePrefix) + .append(msgWhileParsingVersionsForPort, msg::package_name = port_name, msg::path = versions_file_path); + } + + return result; } ExpectedL get_builtin_baseline(const VcpkgPaths& paths) diff --git a/src/vcpkg/sourceparagraph.cpp b/src/vcpkg/sourceparagraph.cpp index 10ed210821..52ecabaf94 100644 --- a/src/vcpkg/sourceparagraph.cpp +++ b/src/vcpkg/sourceparagraph.cpp @@ -1339,6 +1339,8 @@ namespace vcpkg { ret.feature_paragraphs.push_back(std::make_unique(*feat_ptr)); } + + ret.extra_features_info = extra_features_info; return ret; } diff --git a/src/vcpkg/spdx.cpp b/src/vcpkg/spdx.cpp index bfd65d27ba..21c335661b 100644 --- a/src/vcpkg/spdx.cpp +++ b/src/vcpkg/spdx.cpp @@ -158,7 +158,7 @@ std::string vcpkg::create_spdx_sbom(const InstallPlanAction& action, { auto& cinfo = doc.insert(SpdxCreationInfo, Json::Object()); auto& creators = cinfo.insert(JsonIdCreators, Json::Array()); - creators.push_back(Strings::concat("Tool: vcpkg-", VCPKG_VERSION_AS_STRING)); + creators.push_back(Strings::concat("Tool: vcpkg-", VCPKG_BASE_VERSION_AS_STRING, '-', VCPKG_VERSION_AS_STRING)); cinfo.insert(JsonIdCreated, std::move(created_time)); } diff --git a/src/vcpkg/tools.cpp b/src/vcpkg/tools.cpp index 9181632fda..a5eecef261 100644 --- a/src/vcpkg/tools.cpp +++ b/src/vcpkg/tools.cpp @@ -9,6 +9,7 @@ #include #include #include +#include #include #include @@ -303,7 +304,7 @@ namespace vcpkg #if !defined(_WIN32) cmd.string_arg(cache.get_tool_path(Tools::MONO, status_sink)); #endif // ^^^ !_WIN32 - cmd.string_arg(exe_path); + cmd.string_arg(exe_path).string_arg("help").string_arg("-ForceEnglishOutput"); return run_to_extract_version(Tools::NUGET, exe_path, std::move(cmd)) #if !defined(_WIN32) .map_error([](LocalizedString&& error) { @@ -677,12 +678,6 @@ namespace vcpkg const auto download_path = downloads / tool_data.download_subpath; if (!fs.exists(download_path, IgnoreErrors{})) { - status_sink.println(Color::none, - msgDownloadingTool, - msg::tool_name = tool_data.name, - msg::url = tool_data.url, - msg::path = download_path); - downloader->download_file(fs, tool_data.url, {}, download_path, tool_data.sha512, null_sink); } else diff --git a/src/vcpkg/vcpkgpaths.cpp b/src/vcpkg/vcpkgpaths.cpp index cce08586f1..d7a71eca8a 100644 --- a/src/vcpkg/vcpkgpaths.cpp +++ b/src/vcpkg/vcpkgpaths.cpp @@ -1,5 +1,6 @@ #include +#include #include #include #include @@ -653,9 +654,13 @@ namespace vcpkg , community_triplets(filesystem.almost_canonical(triplets / "community", VCPKG_LINE_INFO)) { Debug::print("Using vcpkg-root: ", root, '\n'); - Debug::print("Using scripts-root: ", scripts, '\n'); Debug::print("Using builtin-registry: ", builtin_registry_versions, '\n'); Debug::print("Using downloads-root: ", downloads, '\n'); + m_pimpl->m_download_manager->get_block_origin() + ? Debug::println("External asset downloads are blocked (x-block-origin is enabled)..") + : Debug::println("External asset downloads are allowed (x-block-origin is disabled)..."); + m_pimpl->m_download_manager->asset_cache_configured() ? Debug::println("Asset caching is enabled.") + : Debug::println("Asset cache is not configured."); { const auto config_path = m_pimpl->m_config_dir / "vcpkg-configuration.json"; @@ -763,7 +768,10 @@ namespace vcpkg return *i; } - Checks::msg_exit_with_error(VCPKG_LINE_INFO, msgVcpkgDisallowedClassicMode); + Checks::msg_exit_with_error(VCPKG_LINE_INFO, + msg::format(msgVcpkgDisallowedClassicMode) + .append_raw('\n') + .append(msgSeeURL, msg::url = docs::troubleshoot_build_failures_url)); } const Path& VcpkgPaths::buildtrees() const @@ -773,7 +781,10 @@ namespace vcpkg return *i; } - Checks::msg_exit_with_error(VCPKG_LINE_INFO, msgVcpkgDisallowedClassicMode); + Checks::msg_exit_with_error(VCPKG_LINE_INFO, + msg::format(msgVcpkgDisallowedClassicMode) + .append_raw('\n') + .append(msgSeeURL, msg::url = docs::troubleshoot_build_failures_url)); } const Path& VcpkgPaths::packages() const @@ -783,7 +794,10 @@ namespace vcpkg return *i; } - Checks::msg_exit_with_error(VCPKG_LINE_INFO, msgVcpkgDisallowedClassicMode); + Checks::msg_exit_with_error(VCPKG_LINE_INFO, + msg::format(msgVcpkgDisallowedClassicMode) + .append_raw('\n') + .append(msgSeeURL, msg::url = docs::troubleshoot_build_failures_url)); } Path VcpkgPaths::baselines_output() const { return buildtrees() / "versioning_" / "baselines"; } @@ -949,14 +963,14 @@ namespace vcpkg ExpectedL>> VcpkgPaths::git_get_local_port_treeish_map() const { - const auto local_repo = this->root / ".git"; - auto cmd = git_cmd_builder({}, {}) - .string_arg("-C") - .string_arg(this->builtin_ports_directory()) - .string_arg("ls-tree") - .string_arg("-d") - .string_arg("HEAD") - .string_arg("--"); + const auto cmd = git_cmd_builder({}, {}) + .string_arg("-C") + .string_arg(this->builtin_ports_directory()) + .string_arg("ls-tree") + .string_arg("-d") + .string_arg("HEAD") + .string_arg("--"); + auto maybe_output = flatten_out(cmd_execute_and_capture_output(cmd), Tools::GIT); if (const auto output = maybe_output.get()) { diff --git a/src/vcpkg/visualstudio.cpp b/src/vcpkg/visualstudio.cpp index 8df820b598..78ddf629c2 100644 --- a/src/vcpkg/visualstudio.cpp +++ b/src/vcpkg/visualstudio.cpp @@ -168,6 +168,7 @@ namespace vcpkg::VisualStudio // VS 2017 changed the installer such that cl.exe cannot be found by path navigation and // the env variable is only set when vcvars has been run. Therefore we close the safety valves. + maybe_append_comntools("vs170comntools", "17.0", false); maybe_append_comntools("vs160comntools", "16.0", false); maybe_append_legacy_vs("vs140comntools", "Microsoft Visual Studio 14.0", "14.0"); maybe_append_legacy_vs("vs120comntools", "Microsoft Visual Studio 12.0", "12.0"); diff --git a/vcpkg-artifacts/artifacts/activation.ts b/vcpkg-artifacts/artifacts/activation.ts index df60cf7155..262e57bb4a 100644 --- a/vcpkg-artifacts/artifacts/activation.ts +++ b/vcpkg-artifacts/artifacts/activation.ts @@ -39,7 +39,7 @@ function findCaseInsensitiveOnWindows(map: Map, key: string): V | export type Tuple = [K, V]; function displayNoPostScriptError(channels: Channels) { - channels.error(i`no postscript file: rerun with the vcpkg shell function rather than executable`); + channels.error(i`no postscript file: run vcpkg-shell with the same arguments`); } export class Activation { diff --git a/vcpkg-artifacts/cli/commands/add.ts b/vcpkg-artifacts/cli/commands/add.ts index c5ae4f0411..4d6460c366 100644 --- a/vcpkg-artifacts/cli/commands/add.ts +++ b/vcpkg-artifacts/cli/commands/add.ts @@ -77,7 +77,7 @@ export class AddCommand extends Command { // write the file out. await projectManifest.metadata.save(); - session.channels.message(i`Run \`vcpkg activate\` to apply to the current terminal`); + session.channels.message(i`Run \`vcpkg-shell activate\` to apply to the current terminal`); return true; } } diff --git a/vcpkg-artifacts/locales/messages.json b/vcpkg-artifacts/locales/messages.json index 744263abb2..238d25b1d4 100644 --- a/vcpkg-artifacts/locales/messages.json +++ b/vcpkg-artifacts/locales/messages.json @@ -39,7 +39,7 @@ "_optionsShouldBeASequenceFound$.comment": "\n'${p0}' is a parameter of type 'string'\n", "DuplicateKeysDetectedInManifest$": "Duplicate keys detected in manifest: '${p0}'", "_DuplicateKeysDetectedInManifest$.comment": "\n'${p0}' is a parameter of type 'string'\n", - "noPostscriptFileRerunWithTheVcpkgShellFunctionRatherThanExecutable": "no postscript file: rerun with the vcpkg shell function rather than executable", + "noPostscriptFileRunVcpkgshellWithTheSameArguments": "no postscript file: run vcpkg-shell with the same arguments", "DuplicateDefine$DuringActivationNewValueWillReplaceOld": "Duplicate define ${p0} during activation. New value will replace old.", "_DuplicateDefine$DuringActivationNewValueWillReplaceOld.comment": "\n'${p0}' is a parameter of type 'string'\n", "DuplicateToolDeclared$DuringActivationNewValueWillReplaceOld": "Duplicate tool declared ${p0} during activation. New value will replace old.", @@ -195,7 +195,7 @@ "_TriedToAddAnArtifact$$ButCouldNotDetermineTheRegistryToUse.comment": "\n'${p0}' is a parameter of type 'string'\n\n'${p1}' (aka 'artifact.id') is a parameter of type 'string'\n", "TriedToAddRegistry$As$ButItWasAlready$PleaseAdd$ToThisProjectManuallyAndReattempt": "Tried to add registry ${p0} as ${p1}, but it was already ${p2}. Please add ${p3} to this project manually and reattempt.", "_TriedToAddRegistry$As$ButItWasAlready$PleaseAdd$ToThisProjectManuallyAndReattempt.comment": "\n'${p0}' is a parameter of type 'string | undefined'\n\n'${p1}' is a parameter of type 'string'\n\n'${p2}' is a parameter of type 'string'\n\n'${p3}' is a parameter of type 'string'\n", - "RunvcpkgActivateToApplyToTheCurrentTerminal": "Run \\`vcpkg activate\\` to apply to the current terminal", + "RunvcpkgshellActivateToApplyToTheCurrentTerminal": "Run \\`vcpkg-shell activate\\` to apply to the current terminal", "DownloadsFolderCleared$": "Downloads folder cleared (${p0}) ", "_DownloadsFolderCleared$.comment": "\n'${p0}' (aka 'session.downloads.fsPath') is a parameter of type 'string'\n", "InstalledArtifactFolderCleared$": "Installed Artifact folder cleared (${p0}) ", diff --git a/vcpkg-artifacts/package-lock.json b/vcpkg-artifacts/package-lock.json index deaa50aede..02ee7de243 100644 --- a/vcpkg-artifacts/package-lock.json +++ b/vcpkg-artifacts/package-lock.json @@ -697,13 +697,13 @@ } }, "node_modules/braces": { - "version": "3.0.2", - "resolved": "https://pkgs.dev.azure.com/vcpkg/public/_packaging/vcpkg-ecmascript-dependencies/npm/registry/braces/-/braces-3.0.2.tgz", - "integrity": "sha1-NFThpGLujVmeI23zNs2epPiv4Qc=", + "version": "3.0.3", + "resolved": "https://pkgs.dev.azure.com/vcpkg/public/_packaging/vcpkg-ecmascript-dependencies/npm/registry/braces/-/braces-3.0.3.tgz", + "integrity": "sha1-SQMy9AkZRSJy1VqEgK3AxEE1h4k=", "dev": true, "license": "MIT", "dependencies": { - "fill-range": "^7.0.1" + "fill-range": "^7.1.1" }, "engines": { "node": ">=8" @@ -1365,9 +1365,9 @@ } }, "node_modules/fill-range": { - "version": "7.0.1", - "resolved": "https://pkgs.dev.azure.com/vcpkg/public/_packaging/vcpkg-ecmascript-dependencies/npm/registry/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha1-GRmmp8df44ssfHflGYU12prN2kA=", + "version": "7.1.1", + "resolved": "https://pkgs.dev.azure.com/vcpkg/public/_packaging/vcpkg-ecmascript-dependencies/npm/registry/fill-range/-/fill-range-7.1.1.tgz", + "integrity": "sha1-RCZdPKwH4+p9wkdRY4BkN1SgUpI=", "dev": true, "license": "MIT", "dependencies": { @@ -3449,12 +3449,12 @@ } }, "braces": { - "version": "3.0.2", - "resolved": "https://pkgs.dev.azure.com/vcpkg/public/_packaging/vcpkg-ecmascript-dependencies/npm/registry/braces/-/braces-3.0.2.tgz", - "integrity": "sha1-NFThpGLujVmeI23zNs2epPiv4Qc=", + "version": "3.0.3", + "resolved": "https://pkgs.dev.azure.com/vcpkg/public/_packaging/vcpkg-ecmascript-dependencies/npm/registry/braces/-/braces-3.0.3.tgz", + "integrity": "sha1-SQMy9AkZRSJy1VqEgK3AxEE1h4k=", "dev": true, "requires": { - "fill-range": "^7.0.1" + "fill-range": "^7.1.1" } }, "browser-stdout": { @@ -3910,9 +3910,9 @@ } }, "fill-range": { - "version": "7.0.1", - "resolved": "https://pkgs.dev.azure.com/vcpkg/public/_packaging/vcpkg-ecmascript-dependencies/npm/registry/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha1-GRmmp8df44ssfHflGYU12prN2kA=", + "version": "7.1.1", + "resolved": "https://pkgs.dev.azure.com/vcpkg/public/_packaging/vcpkg-ecmascript-dependencies/npm/registry/fill-range/-/fill-range-7.1.1.tgz", + "integrity": "sha1-RCZdPKwH4+p9wkdRY4BkN1SgUpI=", "dev": true, "requires": { "to-regex-range": "^5.0.1" diff --git a/vcpkg-init/mint-standalone-bundle.ps1 b/vcpkg-init/mint-standalone-bundle.ps1 index 8183794fbd..0b9816311d 100644 --- a/vcpkg-init/mint-standalone-bundle.ps1 +++ b/vcpkg-init/mint-standalone-bundle.ps1 @@ -52,7 +52,8 @@ $scripts_dependencies = @( $scripts_exclusions = @( 'buildsystems/msbuild/applocal.ps1', - 'posh-vcpkg/0.0.1/posh-vcpkg.psm1' + 'posh-vcpkg/0.0.1/posh-vcpkg.psm1', + 'posh-vcpkg/0.0.1/posh-vcpkg.psd1' ) if (Test-Path $TempDir) { @@ -102,6 +103,7 @@ try { Copy-Item -Path "$PSScriptRoot/vcpkg.targets" -Destination 'out/scripts/buildsystems/msbuild/vcpkg.targets' New-Item -Path 'out/scripts/posh-vcpkg/0.0.1' -ItemType 'Directory' -Force Copy-Item -Path "$ArchIndependentSignedFilesRoot/scripts/posh-vcpkg.psm1" -Destination 'out/scripts/posh-vcpkg/0.0.1/posh-vcpkg.psm1' + Copy-Item -Path "$ArchIndependentSignedFilesRoot/scripts/posh-vcpkg.psd1" -Destination 'out/scripts/posh-vcpkg/0.0.1/posh-vcpkg.psd1' Copy-Item -Path "$ArchIndependentSignedFilesRoot/vcpkg-artifacts" -Destination 'out/vcpkg-artifacts' -Recurse diff --git a/vcpkg-init/vcpkg-init b/vcpkg-init/vcpkg-init index dc95b5d0ea..3583e63c6b 100644 --- a/vcpkg-init/vcpkg-init +++ b/vcpkg-init/vcpkg-init @@ -4,7 +4,7 @@ # Licensed under the MIT License. # wrapper script for vcpkg -# this is intended to be dot-sourced and then you can use the vcpkg() function. +# this is intended to be dot-sourced and then you can use the vcpkg-shell() function. # check to see if we've been dot-sourced (should work for most POSIX shells) sourced=0 @@ -82,7 +82,7 @@ if [ $? -eq 1 ]; then fi # So, we're the real script then. -vcpkg() { +vcpkg-shell() { # set the response file # Generate 32 bits of randomness, to avoid clashing with concurrent executions. export Z_VCPKG_POSTSCRIPT="$(mktemp).sh" @@ -104,7 +104,7 @@ vcpkg() { # did they dotsource and have args go ahead and run it then! if [ "$#" -gt "0" ]; then - vcpkg $@ + vcpkg-shell $@ fi Z_VCPKG_cleanup diff --git a/vcpkg-init/vcpkg-init.ps1 b/vcpkg-init/vcpkg-init.ps1 index 788f04b51b..dee073d2ef 100644 --- a/vcpkg-init/vcpkg-init.ps1 +++ b/vcpkg-init/vcpkg-init.ps1 @@ -6,7 +6,7 @@ if #ftw NEQ '' goto :init # Licensed under the MIT License. # wrapper script for vcpkg -# this is intended to be dot-sourced and then you can use the vcpkg() function +# this is intended to be dot-sourced and then you can use the vcpkg-shell() function # Workaround for $IsWindows not existing in Windows PowerShell if (-Not (Test-Path variable:IsWindows)) { @@ -80,7 +80,7 @@ if(-Not (bootstrap-vcpkg)) { # Export vcpkg to the current shell. New-Module -name vcpkg -ArgumentList @($VCPKG) -ScriptBlock { param($VCPKG) - function vcpkg() { + function vcpkg-shell() { # setup the postscript file # Generate 31 bits of randomness, to avoid clashing with concurrent executions. $env:Z_VCPKG_POSTSCRIPT = Join-Path ([System.IO.Path]::GetTempPath()) "VCPKG_tmp_$(Get-Random -SetSeed $PID).ps1" @@ -92,13 +92,15 @@ New-Module -name vcpkg -ArgumentList @($VCPKG) -ScriptBlock { iex $postscr } - Remove-Item -Force -ea 0 $env:Z_VCPKG_POSTSCRIPT,env:Z_VCPKG_POSTSCRIPT + Remove-Item -Force -ea 0 $env:Z_VCPKG_POSTSCRIPT } + + Remove-Item env:Z_VCPKG_POSTSCRIPT } } | Out-Null if ($args.Count -ne 0) { - return vcpkg @args + return vcpkg-shell @args } return @@ -140,7 +142,7 @@ IF ERRORLEVEL 1 ( SET Z_POWERSHELL_EXE= :: Install the doskey -DOSKEY vcpkg="%VCPKG_ROOT%\vcpkg-cmd.cmd" $* +DOSKEY vcpkg-shell="%VCPKG_ROOT%\vcpkg-cmd.cmd" $* :: If there were any arguments, also invoke vcpkg with them IF "%1"=="" GOTO fin diff --git a/vcpkg-init/vcpkg-scripts-sha.txt b/vcpkg-init/vcpkg-scripts-sha.txt index 25f44751a2..967f07d431 100644 --- a/vcpkg-init/vcpkg-scripts-sha.txt +++ b/vcpkg-init/vcpkg-scripts-sha.txt @@ -1 +1 @@ -95bfe3a7666ad5436ca0b3bb71074693852be2a2 +5c7d3a872dd861817fc812647176d5076085a7eb From d39dea7798e4621c81cf0fa3d4f5b86c248183b4 Mon Sep 17 00:00:00 2001 From: Thomas1664 <46387399+Thomas1664@users.noreply.github.com> Date: Mon, 26 Aug 2024 00:23:15 +0200 Subject: [PATCH 57/60] format --- src/vcpkg/abi.cpp | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/vcpkg/abi.cpp b/src/vcpkg/abi.cpp index 44e308842b..6943b76be9 100644 --- a/src/vcpkg/abi.cpp +++ b/src/vcpkg/abi.cpp @@ -301,8 +301,7 @@ namespace vcpkg View common_abi, View cmake_script_hashes) { - if (action.use_head_version == UseHeadVersion::Yes || - action.editable == Editable::Yes) + if (action.use_head_version == UseHeadVersion::Yes || action.editable == Editable::Yes) { return nullopt; } From a2de0c1cf6febe8b8be12a4bcc7d8692cf21d633 Mon Sep 17 00:00:00 2001 From: Thomas1664 <46387399+Thomas1664@users.noreply.github.com> Date: Mon, 26 Aug 2024 00:30:42 +0200 Subject: [PATCH 58/60] Try fix merge --- azure-pipelines/end-to-end-tests-dir/hash-additional.ps1 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/azure-pipelines/end-to-end-tests-dir/hash-additional.ps1 b/azure-pipelines/end-to-end-tests-dir/hash-additional.ps1 index 56837a19c3..192a8fa9cc 100644 --- a/azure-pipelines/end-to-end-tests-dir/hash-additional.ps1 +++ b/azure-pipelines/end-to-end-tests-dir/hash-additional.ps1 @@ -1,6 +1,6 @@ . $PSScriptRoot/../end-to-end-tests-prelude.ps1 -Run-Vcpkg @directoryArgs "--overlay-triplets=$PSScriptRoot/../e2e-ports/hash-additional" "--overlay-ports=$PSScriptRoot/../e2e-ports/hash-additional" x-set-installed vcpkg-test-hash-additional --triplet hash-additional-e2e --binarysource=clear +Run-Vcpkg "--overlay-triplets=$PSScriptRoot/../e2e_ports/hash-additional" "--overlay-ports=$PSScriptRoot/../e2e_ports/hash-additional" install vcpkg-test-hash-additional --triplet hash-additional-e2e Throw-IfFailed $output = Run-VcpkgAndCaptureOutput @directoryArgs "--overlay-triplets=$PSScriptRoot/../e2e-ports/hash-additional-fail" "--overlay-ports=$PSScriptRoot/../e2e-ports/hash-additional-fail" x-set-installed vcpkg-test-hash-additional --triplet hash-additional-e2e --binarysource=clear From 4b84a33c9b531ad84b5cc3029d5ebd5ccc64ab5c Mon Sep 17 00:00:00 2001 From: Thomas1664 <46387399+Thomas1664@users.noreply.github.com> Date: Mon, 26 Aug 2024 00:33:56 +0200 Subject: [PATCH 59/60] Fix paths --- azure-pipelines/end-to-end-tests-dir/hash-additional.ps1 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/azure-pipelines/end-to-end-tests-dir/hash-additional.ps1 b/azure-pipelines/end-to-end-tests-dir/hash-additional.ps1 index 192a8fa9cc..30e8a961af 100644 --- a/azure-pipelines/end-to-end-tests-dir/hash-additional.ps1 +++ b/azure-pipelines/end-to-end-tests-dir/hash-additional.ps1 @@ -1,6 +1,6 @@ . $PSScriptRoot/../end-to-end-tests-prelude.ps1 -Run-Vcpkg "--overlay-triplets=$PSScriptRoot/../e2e_ports/hash-additional" "--overlay-ports=$PSScriptRoot/../e2e_ports/hash-additional" install vcpkg-test-hash-additional --triplet hash-additional-e2e +Run-Vcpkg "--overlay-triplets=$PSScriptRoot/../e2e-ports/hash-additional" "--overlay-ports=$PSScriptRoot/../e2e-ports/hash-additional" install vcpkg-test-hash-additional --triplet hash-additional-e2e Throw-IfFailed $output = Run-VcpkgAndCaptureOutput @directoryArgs "--overlay-triplets=$PSScriptRoot/../e2e-ports/hash-additional-fail" "--overlay-ports=$PSScriptRoot/../e2e-ports/hash-additional-fail" x-set-installed vcpkg-test-hash-additional --triplet hash-additional-e2e --binarysource=clear From e9c9ab61767096c93dd2e7e0136dadb8d89ba760 Mon Sep 17 00:00:00 2001 From: Thomas1664 <46387399+Thomas1664@users.noreply.github.com> Date: Mon, 26 Aug 2024 00:41:04 +0200 Subject: [PATCH 60/60] Restore fixes from upstream/main --- azure-pipelines/end-to-end-tests-dir/hash-additional.ps1 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/azure-pipelines/end-to-end-tests-dir/hash-additional.ps1 b/azure-pipelines/end-to-end-tests-dir/hash-additional.ps1 index 30e8a961af..56837a19c3 100644 --- a/azure-pipelines/end-to-end-tests-dir/hash-additional.ps1 +++ b/azure-pipelines/end-to-end-tests-dir/hash-additional.ps1 @@ -1,6 +1,6 @@ . $PSScriptRoot/../end-to-end-tests-prelude.ps1 -Run-Vcpkg "--overlay-triplets=$PSScriptRoot/../e2e-ports/hash-additional" "--overlay-ports=$PSScriptRoot/../e2e-ports/hash-additional" install vcpkg-test-hash-additional --triplet hash-additional-e2e +Run-Vcpkg @directoryArgs "--overlay-triplets=$PSScriptRoot/../e2e-ports/hash-additional" "--overlay-ports=$PSScriptRoot/../e2e-ports/hash-additional" x-set-installed vcpkg-test-hash-additional --triplet hash-additional-e2e --binarysource=clear Throw-IfFailed $output = Run-VcpkgAndCaptureOutput @directoryArgs "--overlay-triplets=$PSScriptRoot/../e2e-ports/hash-additional-fail" "--overlay-ports=$PSScriptRoot/../e2e-ports/hash-additional-fail" x-set-installed vcpkg-test-hash-additional --triplet hash-additional-e2e --binarysource=clear